3

Bluetoothを出力として設定するための私のiOS6と作業コード:

// create and set up the audio session
AVAudioSession* audioSession = [AVAudioSession sharedInstance];
[audioSession setCategory: AVAudioSessionCategoryPlayAndRecord error: nil];
[audioSession setActive: YES error: nil];

// set up for bluetooth microphone input
UInt32 allowBluetoothInput = 1;
OSStatus stat = 0;
stat = AudioSessionSetProperty (
                                         kAudioSessionProperty_OverrideCategoryEnableBluetoothInput,
                                         sizeof (allowBluetoothInput),
                                         &allowBluetoothInput
                                         );

メソッド AudioSessionSetProperty は iOS7 以降非推奨です。このスレッドに従って、AudioSessionSetProperty を使用せずにオーディオをスピーカーにルーティングするにはどうすればよいですか? 出力を AVAudioSessionPortOverrideSpeaker または AVAudioSessionPortOverrideNone に変更できますが、ここでは Bluetooth オプションは変更できません。

私の実際の目標は、A2DP ではなく HFP を使用している Bluetooth デバイスをサポートすることです。

では、非推奨のメソッドを使用せずにこれを達成するにはどうすればよいでしょうか?

4

2 に答える 2

2

この回答を参照して、次のことを思いつきました。

    [audioSession setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionAllowBluetooth error:&error];
    NSArray* routes = [audioSession availableInputs];
    for (AVAudioSessionPortDescription* route in routes)
    {
        if (route.portType == AVAudioSessionPortBluetoothHFP)
        {
            [audioSession setPreferredInput:route error:nil];
        }
    }

古いプロパティ オーバーライドと同じように機能し、入力と出力の両方をハンズ フリー デバイスにリダイレクトします。

于 2016-10-25T21:18:33.253 に答える