2

正如标题所说,我需要检测用户在播放音乐时是否摘下 Airpods。由于某些原因,我必须使用 AVAudioplayer 而不是 MPMusicPlayer 来播放音乐,并且 AVAudioSession 只能在所有 airpods 都被取下时才能接收暂停事件。

有没有什么方法可以用 AVFoundation 检测单个 Airpod 是否被取下?或者Apple没有在AVFoundation中实现这个?

4

1 回答 1

1

最后我通过使用MPRemoteCommandCenter接收暂停事件解决了这个问题。暂停事件可能由起飞的一个或多个 Airpods 触发。收到事件后,我可以在处理程序块中暂停 AVAudioplayer 播放的音乐。

[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
[[MPRemoteCommandCenter sharedCommandCenter].pauseCommand addTargetWithHandler:^MPRemoteCommandHandlerStatus(MPRemoteCommandEvent * _Nonnull event) {

    // Paused by one or more Airpods taken off !
    return MPRemoteCommandHandlerStatusSuccess;
}];
于 2019-06-24T04:25:06.840 回答