我正在使用 AVAudioSession 开发一个快速的音频/视频和文本聊天 iOS 应用程序。
每当我选择使用某些蓝牙设备时,设备上播放的声音不是应用程序音频流。每当发送/接收消息时,它们仅播放文本聊天库发送的系统声音。并非所有蓝牙设备都会发生这种情况,其中一些设备一切正常。在内置麦克风和扬声器上,该应用程序也可以正常工作。
以下是我的班级中管理设备的最重要的方法:
class MyAudioSession
{
private var mAudioSession: AVAudioSession;
init!()
{
self.mAudioSession = AVAudioSession.sharedInstance();
do {
try self.mAudioSession.setActive(false);
try self.mAudioSession.setCategory(AVAudioSessionCategoryPlayAndRecord, withOptions: .AllowBluetooth);
try self.mAudioSession.setMode(AVAudioSessionModeVideoChat);
try self.mAudioSession.setActive(true);
}
catch {
return nil;
}
}
func switchToDevice(device: AVAudioSessionPortDescription!) -> Bool
{
var ret = false;
if (device != nil) {
do {
try self.mAudioSession.setPreferredInput(device);
ret = true;
}
catch {
self.logSwitch(device, error: error);
}
}
return ret;
}
}
我想了解为什么我的应用程序仅在某些蓝牙设备上无法正常工作。这些相同的设备在我的 Cel 上的其他应用程序上正常工作。
我做了另一个测试:我为 MPVolumeView 更改了所有这些,并且发生了完全相同的问题,因此问题似乎出在音频播放器上。
有人能给我一个解决这个问题的建议吗?
Thx.
约格,
虽然这可能不是最好的答案,但我已经能够克服奇怪的蓝牙问题。我的问题似乎与你的类似,因为我也正在使用:
AVAudioSessionCategoryPlayAndRecord
这导致我在某些蓝牙设备(不是全部,而是某些)上出现问题。
我最后做的是将类别设置为:
AVAudioSessionCategoryPlayback
然后,当我需要录制时,我会将类别切换为:
AVAudioSessionCategoryRecord
完成录音后返回播放。
这是此时我可以通过在不同输出(扬声器、耳机、蓝牙)之间切换获得一致结果的唯一方法。
希望对一些人有所帮助。猜测这是“AVAudioSessionCategoryPlayAndRecord”中的错误
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)