iphone/ipad/ipodにどのオーディオデバイスが接続されているかを検出する方法を見つけようとしています。私は音声ルートの呼び出しとルートの変更のコールバックについてはすべて知っていますが、これらは添付されているものについて何も教えてくれません。オーディオが現在ルーティングされている場所のみを報告します。たとえば、オーディオがスピーカーを経由しているときに、ヘッドフォンやBluetoothが接続されているかどうかを知る必要があります。例えば、Bluetoothを使用してヘッドセットを接続した後、Bluetoothを切断すると判断した場合、音声がまだヘッドフォン経由でルーティングされている場合でも、Bluetoothが切断されていることがわかります。添付のオーディオデバイスを検出するiOS
7
A
答えて
0
InputSourceとOutputDestinationsのリストをAudioSessionプロパティから取得できます。
kAudioSessionProperty_InputSources
kAudioSessionProperty_OutputDestinations
そして、それぞれの詳細を照会するために、あなたが使用することができます: は、これらのセッションプロパティをチェック
kAudioSessionProperty_InputSource
kAudioSessionProperty_OutputDestination
1
あなたが使用する必要があるのiOS 5の場合:
残念ながらCFStringRef newRoute;
size = sizeof(CFStringRef);
XThrowIfError(AudioSessionGetProperty(kAudioSessionProperty_AudioRoute, &size, &newRoute), "couldn't get new audio route");
if (newRoute)
{
CFShow(newRoute);
if (CFStringCompare(newRoute, CFSTR("HeadsetInOut"), NULL) == kCFCompareEqualTo) // headset plugged in
{
colorLevels[0] = .3;
colorLevels[5] = .5;
}
else if (CFStringCompare(newRoute, CFSTR("SpeakerAndMicrophone"), NULL) == kCFCompareEqualTo)
}
0
現在iOS11の時点で、現在接続されている出力デバイスのリストを確実に取得するAPIはないようです - 現在のルートが変更されると、AVAu経由で(現在ルーティングされている)1つのデバイスしか表示されませんdioSessionのcurrentRoute.outputs
には、複数のデバイスが接続されている可能性があります。適切なオーディオセッションモードは、(例えばAVAudioSessionModeVoiceChat
またはAVAudioSessionModeVideoChat
)を使用している場合
ただし、入力のために、そしてそれは、HFPプロファイルを持つBluetoothデバイスを含み、一つはAVAudioSessionのavailableInputs
、およびそれらを経由して利用可能な入力のリストを取得することができますそのデバイスがアクティブなルートでない場合でも入力が一覧表示されます。これは、たとえばBluetoothからスピーカーへのMPVolumeView
経由の手動オーバーライドや、HFPは双方向IO(両方向入力出力を見る)、入力を見ることで出力HFP Bluetoothがまだ利用可能かどうか判断できます。
関連する問題
- 1. オーディオデバイスの到着/切断の検出
- 2. 現在のオーディオデバイスのボリュームを検出する方法
- 3. 要素に添付されているプラグインを検出する
- 4. 背景-添付ファイル:私は、iOS
- 5. iOSのメール添付サイズを計算する
- 6. ペーパークリップ、複数の添付ファイルと検証
- 7. 検出iOSデバイス
- 8. 魅力の添付ファイルの添付ファイル
- 9. iOSゲームセンターのログインを検出する
- 10. iOSアプリのAppStoreインストールを検出する
- 11. iOSの言語を検出する
- 12. 添付ファイルがあるメールをGmailで検索するIMAP
- 13. SMTPに添付するメールの添付ファイルの最大サイズは?
- 14. Rails Viewpointメッセージを添付して添付する
- 15. 電子メールの添付ファイルからTo:ヘッダーを抽出する
- 16. Unix上の電子メール添付ファイルを抽出する
- 17. Outlookのメールからmsg添付ファイルを抽出する
- 18. iOS UITextViewリンク検出
- 19. タグを添付する
- 20. iOSアプリが背景を検出する
- 21. 検出する心拍信号 - iOSの
- 22. iosでのコールイベントの検出
- 23. Sweaveを使用してソースファイルを添付ファイルに出力する
- 24. VBAを使用してLotus Notes添付ファイルを抽出する
- 25. 「添付ファイル付きサービス」のMIME添付ファイルの解析
- 26. 衝突検出のiOS
- 27. IMAPメッセージから添付ファイルを抽出する方法は?
- 28. のiOS:添付ファイル付きの電子メールを送信すると、別の添付ファイル(.txt)を追加し、自動的に
- 29. EWS - 添付ファイルが添付されていない添付ファイルを取得する
- 30. RailsとPaperclipによる添付ファイルと処理の検証エラー
私のアプリではストリームが正しく再生されていますが、オーディオ出力(ヘッドフォンが抜かれている)を変更すると、再生が停止します..オーディオ出力が変更されたときを検出する方法は? –
はい、ルート変更を検出することは、AudioSessionPropertyListenerコールバックを使用して行われます。プロパティリスナーは、AudioSessionAddPropertyListener関数を介して登録されます。しかし、それは私が上でやろうとしたことではありません。私のアプリでは、使用可能なルーティングオプションを正しく表示するためにどのデバイスが接続されているかを検出する必要があります。 – Cliff