iOS 7蓝牙输出不适用于AVAudioSessionCategoryPlayAndRecord

xia*_*lin 7 iphone bluetooth objective-c ios ios7

在我的应用程序中,如果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];
Run Code Online (Sandbox Code Playgroud)

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

/*仅对AVAudioSessionCategoryRecord和AVAudioSessionCategoryPlayAndRecord*/有效

另外:我是否可以只使用蓝牙输出(输入仍然使用手机默认的麦克风)?

UPDATE

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

xia*_*lin 2

自从我发布这个问题以来已经有一段时间了,我有点忘记了问题到底是什么......如果我没记错的话,这是由于另一个库不断重写输出路由。不知何故,我修复了它并使其按照我想要的方式工作。

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