对于我正在开发的应用程序,我有一个audioManager类,其中包括我处理AVAudioPlayer和AVAudioSession .
这个类是 AVAudioSessionRouteChangeNotification
的观察者 . 当我通过 AVAudioPlayer
播放音频时,我连接了一个蓝牙耳机,我得到一个通知 AVAudioSessionRouteChangeReasonNewDeviceAvailable
,当它断开 AVAudioSessionRouteChangeReasonOldDeviceUnavailable
时应该是 .
奇怪的部分来了,当我设置 AVAudioSessionCategoryPlayAndRecord
:启用蓝牙耳机授予我通常的 AVAudioSessionRouteChangeReasonNewDeviceAvailable
但是当断开它我得到的是 AVAudioSessionRouteChangeReasonOverride
.
我正在搜索Apple的文档,搜索它并搜索它,但没有找到这种行为的原因 .
我在我的应用程序中允许的一件事是使用 AVAudioSessionPortOverrideSpeaker
将音频路由到扬声器 . 当我在通知中达到该原因覆盖时,我有一个案例来处理一些变化 . 所以到那里因为我已经断开蓝牙是远远不是最佳的 .
有没有人知道为什么会这样?