在我的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
);
但这不是一起工作。我的意思是,如果蓝牙处于打开状态,我会听到来自BT耳机的声音,如果蓝牙处于关闭状态,则我不会听到来自扬声器的声音。我该如何解决这个问题?
最佳答案
您是否尝试过使用changeDefaultRoute
代替扬声器的audioRouteOverride
?
UInt32 doChangeDefaultRoute = 1;
AudioSessionSetProperty(
kAudioSessionProperty_OverrideCategoryDefaultToSpeaker
, sizeof(doChangeDefaultRoute)
, &doChangeDefaultRoute);
这样可以解决输出到扬声器而不是接收器的问题,但是我无法测试蓝牙输入端(没有蓝牙设备!)。可能不是因为我可以收集的
OverrideCategoryEnableBluetoothInput
实际上控制了输入和输出。苹果说:
通常,Apple不希望应用程序以可能违反用户直觉的方式来操纵路由。这个想法是,路由应该是用户感到可以控制的东西。