iphone中AudioSessionProperty

我开发了一个iphone应用,需要用到扬声器和蓝牙。

[[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
                             );

但是扬声器和蓝牙不能同时用,如果打开蓝牙,声音只能从耳机听。如果蓝牙关闭,扬声器就可以。不知道为什么?

可以在扬声器用changeDefaultRoute代替audioRouteOverride

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

不确定能不能修复蓝牙的问题,不过OverrideCategoryEnableBluetoothInput 就是控制输入和输出的。