我们开发了一个跨平台的多媒体播放器。它使用OpenAL播放音频。在iOS上,我们希望使用MPNowPlayingInfoCenter和远程控制事件的功能。
设置当前位置,已用时间,其他曲目信息效果很好。但是,不幸的是,当按下信息中心播放器中的暂停按钮暂停时,暂停按钮不会改变其状态。信息中心继续显示播放未暂停(时间标签继续计数)。
我们以这种方式处理UIEventSubtypeRemoteControlPause事件:
[self.player pause]; // Pause playback
// Update MPNowPlayingInfoCenter
NSMutableDictionary *mediaInformation = [NSMutableDictionary dictionaryWithDictionary:[MPNowPlayingInfoCenter defaultCenter].nowPlayingInfo];
mediaInformation[MPNowPlayingInfoPropertyPlaybackRate] = @0.0;
mediaInformation[MPNowPlayingInfoPropertyElapsedPlaybackTime] = @(self.player.currentTime);
[MPNowPlayingInfoCenter defaultCenter].nowPlayingInfo = mediaInformation;
MPNowPlayingInfoCenter是否支持通过OpenAL播放音频,或者我们错过了什么。
答案 0 :(得分:0)
我遇到了同样的问题,结果发现它与OpenAL无关,但是AVAudioSession
的播放类别,请参阅此堆栈溢出帖子:Is MPNowPlayingInfoCenter compatible with AVAudioPlayer?。
我使用以下代码设置了正确的类别:
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
NSError *setCategoryError = nil;
BOOL success = [audioSession setCategory:AVAudioSessionCategoryPlayback error:&setCategoryError];
我最初将withOptions: AVAudioSessionCategoryOptionMixWithOthers
与setCategory:AVAudioSessionCategoryPlayback
一起使用,导致锁定屏幕播放控件不起作用。