MPNowPlayingInfoCenter在播放音频时始终处于“播放”状态

时间:2015-02-12 12:05:25

标签: ios objective-c audio openal audio-player

我们开发了一个跨平台的多媒体播放器。它使用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播放音频,或者我们错过了什么。

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,结果发现它与OpenAL无关,但是AVAudioSession的播放类别,请参阅此堆栈溢出帖子:Is MPNowPlayingInfoCenter compatible with AVAudioPlayer?

我使用以下代码设置了正确的类别:

AVAudioSession *audioSession = [AVAudioSession sharedInstance];
NSError *setCategoryError = nil;
BOOL success = [audioSession setCategory:AVAudioSessionCategoryPlayback error:&setCategoryError];

我最初将withOptions: AVAudioSessionCategoryOptionMixWithOtherssetCategory:AVAudioSessionCategoryPlayback一起使用,导致锁定屏幕播放控件不起作用。