4

私の iPhone アプリケーションでは、ラウド スピーカーを有効にし、Bluetooth を有効にする必要があります。

[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayAndRecord error: nil];
    UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
    AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,
                             sizeof (audioRouteOverride), &audioRouteOverride);

    UInt32 allowBluetoothInput = 1;

    AudioSessionSetProperty (
                             kAudioSessionProperty_OverrideCategoryEnableBluetoothInput,
                             sizeof (allowBluetoothInput),
                             &allowBluetoothInput
                             );

しかし、それは連携していません。つまり、Bluetooth がオンの場合は BT ヘッドセットから音声が聞こえ、オフの場合はラウド スピーカーからではなく音声が聞こえます。この問題を解決するにはどうすればよいですか?

4

1 に答える 1

2

スピーカーのchangeDefaultRoute代わりに試しましたか?audioRouteOverride

UInt32 doChangeDefaultRoute = 1;
AudioSessionSetProperty(
                       kAudioSessionProperty_OverrideCategoryDefaultToSpeaker
                     , sizeof(doChangeDefaultRoute)
                     , &doChangeDefaultRoute);

これにより、レシーバーの問題ではなくスピーカーへの出力が修正されますが、Bluetooth 入力側をテストできません (Bluetooth デバイスがありません!)。私が収集できるものから、実際に入力出力を制御しているとは限りません。OverrideCategoryEnableBluetoothInput

アップルは次のように述べています。

このプロパティは、次のように kAudioSessionCategory_PlayAndRecord カテゴリに影響します: デバイスへのオーディオ入力が Bluetooth ヘッドセットから来ている場合、このプロパティを TRUE に設定すると、オーディオ出力も Bluetooth ヘッドセットに送られます。(オーディオ セッション サービス リファレンス)

一般に、Apple は、アプリがユーザーの直感に反する方法でルーティングを操作することを望んでいません。ルーティングは、ユーザーが制御できると感じるものであるべきだという考えです。

于 2013-04-24T14:39:47.313 に答える