在我的应用程序中,如果iPhone已连接到蓝牙耳机,请使用蓝牙播放声音。否则使用默认扬声器。

这是我的代码

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback withOptions:AVAudioSessionCategoryOptionAllowBluetooth error:nil];
[[AVAudioSession sharedInstance] setMode:AVAudioSessionModeVoiceChat error:nil];
[[AVAudioSession sharedInstance] overrideOutputAudioPort:AVAudioSessionPortOverrideNone error:nil];
[[AVAudioSession sharedInstance] setActive:YES error:nil];

但是,当我尝试使用类别setCategory:AVAudioSessionCategoryPlayAndRecord时。到蓝牙设备的路由停止工作。。我不知道为什么。因为正确的说,蓝牙选项应该只适用于Record或PlayAndRecord类别...



另外:我可以仅将蓝牙用于输出(输入仍使用手机的默认麦克风)吗?

更新

我先调用setMode,然后调用setCategory来更改顺序。它首次运行该应用程序(调用)。当我尝试再次执行相同的操作时,currentRoute仍然给我输出=蓝牙,但实际输出返回到默认的电话前置扬声器。

最佳答案

自从我发布这个问题以来已经有一段时间了,我有点忘记了问题出在什么地方...如果我没记错的话,那是由于另一个lib一直在重写输出路由。我以某种方式修复了它并使它按照我想要的方式工作。

我将代码贡献给Jawbone的AudioSessionManager lib。希望能有所帮助。

关于ios - iOS 7蓝牙输出不适用于AVAudioSessionCategoryPlayAndRecord,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20596756/

10-14 22:18