AVAudioSession setCategory始终返回错误

gojuced7  于 2022-11-19  发布在  iOS
关注(0)|答案(3)|浏览(105)

我正在开发的音乐应用程序,只是播放歌曲的应用程序。现在我连接蓝牙扬声器播放。所以我设置AVAudioSession类别,但它总是会返回错误。

代码:

func setupSessionForPlaying() {
    let audioSession = AVAudioSession.sharedInstance()
    do {
        try audioSession.setCategory(AVAudioSessionCategoryPlayback, with: [.allowBluetooth])
        try audioSession.setActive(true)
    } catch {
        fatalError("Error Setting Up Audio Session")
    }
}

我在AppDelegate中调用这个函数。
但是如果我把setCategory改成audioSession.setCategory(AVAudioSessionCategoryPlayback),它的工作就很好了。
有人知道这个代码有什么问题吗?
谢谢

58wvjzkj

58wvjzkj1#

根据文件https://developer.apple.com/documentation/avfoundation/avaudiosession/categoryoptions/1616518-allowbluetooth
仅当音频会话类别为playAndRecord或record时,才可以设置此选项。
如果使用allowBluetooth,则无法使用AVAudioSessionCategoryPlayback
希望对大家有帮助

wbgh16ku

wbgh16ku2#

您不能将所有类别与所有选项混合使用。如here所述,您只能将.allowBluetoothplayAndRecordrecord类别一起使用。因此,我建议您尝试

try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayAndRecord,
                                                        with: [.allowBluetooth,
                                                               .allowBluetoothA2DP])

得双曲余切值.

sshcrbum

sshcrbum3#

虽然answer above在此特定情况下是正确的(由于.allowBluetooth选项),但出现'what'错误还有另一个可能的原因:
呼叫setCategory时,AVAudioSession可能正在播放或录制。请确定工作阶段已停止,然后再设定类别。

相关问题