对于我正在开发的应用程序,我有一个audioManager类,其中包括我处理AVAudioPlayer和AVAudioSession .

这个类是 AVAudioSessionRouteChangeNotification 的观察者 . 当我通过 AVAudioPlayer 播放音频时,我连接了一个蓝牙耳机,我得到一个通知 AVAudioSessionRouteChangeReasonNewDeviceAvailable ,当它断开 AVAudioSessionRouteChangeReasonOldDeviceUnavailable 时应该是 .

奇怪的部分来了,当我设置 AVAudioSessionCategoryPlayAndRecord :启用蓝牙耳机授予我通常的 AVAudioSessionRouteChangeReasonNewDeviceAvailable 但是当断开它我得到的是 AVAudioSessionRouteChangeReasonOverride .

我正在搜索Apple的文档,搜索它并搜索它,但没有找到这种行为的原因 .

我在我的应用程序中允许的一件事是使用 AVAudioSessionPortOverrideSpeaker 将音频路由到扬声器 . 当我在通知中达到该原因覆盖时,我有一个案例来处理一些变化 . 所以到那里因为我已经断开蓝牙是远远不是最佳的 .

有没有人知道为什么会这样?