正如标题所说,我需要检测用户在播放音乐时是否摘下 Airpods。由于某些原因,我必须使用 AVAudioplayer 而不是 MPMusicPlayer 来播放音乐,并且 AVAudioSession 只能在所有 airpods 都被取下时才能接收暂停事件。
有没有什么方法可以用 AVFoundation 检测单个 Airpod 是否被取下?或者Apple没有在AVFoundation中实现这个?
正如标题所说,我需要检测用户在播放音乐时是否摘下 Airpods。由于某些原因,我必须使用 AVAudioplayer 而不是 MPMusicPlayer 来播放音乐,并且 AVAudioSession 只能在所有 airpods 都被取下时才能接收暂停事件。
有没有什么方法可以用 AVFoundation 检测单个 Airpod 是否被取下?或者Apple没有在AVFoundation中实现这个?
最后我通过使用MPRemoteCommandCenter
接收暂停事件解决了这个问题。暂停事件可能由起飞的一个或多个 Airpods 触发。收到事件后,我可以在处理程序块中暂停 AVAudioplayer 播放的音乐。
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
[[MPRemoteCommandCenter sharedCommandCenter].pauseCommand addTargetWithHandler:^MPRemoteCommandHandlerStatus(MPRemoteCommandEvent * _Nonnull event) {
// Paused by one or more Airpods taken off !
return MPRemoteCommandHandlerStatusSuccess;
}];