我开发了一个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 就是控制输入和输出的。