6

いくつかのBluetoothタスクに関連するCoreAudioAudioSessionフレームワークにいくつか質問があります。誰かがこれらの問題を解決してくれるか、少なくとも私の最新の調査結果を確認できることを願っています。ユースケースは、HFPとA2DPの両方をサポートするBluetooth対応のラジオに接続したいナビゲーションアプリです。AudioSessionプログラミングガイドライン全体を読みましたが、特にBluetoothを介したオーディオ出力の使用に関してはまだいくつかの未解決の問題があります。

  1. Bluetooth HFPオーディオ出力(kAudioSessionOutputRoute_BluetoothHFP)は、AudioSession kAudioSessionCategory_PlayAndRecordが設定されていて、次のプロパティをオーバーライドしている場合にのみ可能です:kAudioSessionProperty_OverrideCategoryEnableBluetoothInput。これは本当ですか?そうでない場合は、MediaPlaybackセッションを使用して例としてkAudioSessionOutputRoute_BluetoothHFPルートにルーティングする方法を説明します。

  2. カテゴリkAudioSessionCategory_PlayAndRecordでは、バックグラウンドモードでのオーディオ出力はできません。そのため、バックグラウンドにいると、BluetoothHFPルートでサウンドを再生できません。これは本当ですか?アプリがバックグラウンドにある場合、Bluetooth HFPプロトコルを介してオーディオを送信する方法はありますか?

  3. 利用可能なA2DP対応デバイスがある場合、私のオーディオルートは常に自動的にkAudioSessionOutputRoute_BluetoothA2DPルートに切り替わります。このルート変更を防ぐにはどうすればよいですか?さらに、現時点で必要な出力ルートを指定するにはどうすればよいですか。iOS5では、kAudioSessionProperty_AudioRouteDescriptionフラグを介してこれらすべてのルートの宛先を照会することができますが、必要に応じてどのように設定できるかわかりません。どういうわけかこれを達成することは可能ですか?

皆さんの何人かがこれらの質問で私を助けてくれることを願っています。CoreAudio、特にAudioSessionフレームワークの全体的な理解に本当に役立ちます。

4

2 に答える 2

11

AudioSessionはトリッキーなビジネスです。

1.Bluetooth HFPオーディオ出力(kAudioSessionOutputRoute_BluetoothHFP)は、AudioSession kAudioSessionCategory_PlayAndRecordが設定されていて、次のプロパティをオーバーライドしている場合にのみ可能です:kAudioSessionProperty_OverrideCategoryEnableBluetoothInput。これは本当ですか?そうでない場合は、MediaPlaybackセッションを使用して例としてkAudioSessionOutputRoute_BluetoothHFPルートにルーティングする方法を説明します。

Bluetoothヘッドセットを接続している場合、それは真実です。Bluetoothヘッドセットからオーディオを再生するには、kAudioSessionCategory_PlayAndRecordオーディオセッションセットとkAudioSessionProperty_OverrideCategoryEnableBluetoothInputセットの両方が必要です。EnableBluetoothInputは、これに従って入力と出力の両方に影響します。また、Bluetooth入力デバイスの制限により、オーディオは8000Hzで再生されることを忘れないでください。A2DPをサポートする接続されたデバイスの場合、オーディオセッションkAudioSessionCategoryMediaPlaybackのままにしておくと、44100Hzのサンプルレートで再生されます。

2.カテゴリkAudioSessionCategory_PlayAndRecordでは、バックグラウンドモードでのオーディオ出力はできません。そのため、バックグラウンドにいると、BluetoothHFPルートでサウンドを再生できません。これは本当ですか?アプリがバックグラウンドにある場合、Bluetooth HFPプロトコルを介してオーディオを送信する方法はありますか?

アプリのplistでバックグラウンドオーディオモードキーを設定している限り、BluetoothHFPを介してオーディオを再生することはバックグラウンドで可能です。詳しくはこちらをご覧ください

3. A2DP対応デバイスが利用可能な場合、オーディオルートは常に自動的にkAudioSessionOutputRoute_BluetoothA2DPルートに切り替わります。このルート変更を防ぐにはどうすればよいですか?さらに、現時点で必要な出力ルートを指定するにはどうすればよいですか。iOS5では、kAudioSessionProperty_AudioRouteDescriptionフラグを介してこれらすべてのルートの宛先を照会することができますが、必要に応じてどのように設定できるかわかりません。どういうわけかこれを達成することは可能ですか?

代わりにオーディオをどこに行きたいですか?オーディオセッションをPlayAndRecordに設定して、A2DPに送信されないようにすることができます。ただし、これは制御できない場合がありますが、Audio Sessionは、ユーザーにとって直感的であると見なされるものを使用します。彼らがA2DPデバイスを接続したばかりで、音声のみを出力している場合は、A2DPデバイスが使用されます。

于 2013-08-30T21:41:52.480 に答える
0

彼らは、それがUSBアクセサリのみに適用されると述べています。

http://developer.apple.com/library/ios/#documentation/AudioToolbox/Reference/AudioSessionServicesReference/Reference/reference.html

于 2013-02-13T07:14:33.227 に答える