如何告诉MPNowPlayingInfoCenter是否正在播放或暂停音乐?

时间:2013-09-09 19:59:48

标签: iphone ios audio avaudioplayer mpnowplayinginfocenter

我似乎无法让iOS在远程音频控件中显示正确的播放/暂停按钮。我收到了远程控制事件并设置了nowPlayingInfo字典的所有值。

一切正常,我甚至在锁屏上看到封面照片。暂停/播放按钮除外。即使我的AVAudioPlayer正在播放,它总是看起来像暂停。无论播放状态如何,它都会发送暂停事件。

如何通知iOS AVAudioPlayer已暂停,现在应该在遥控器按钮栏中显示播放按钮?

4 个答案:

答案 0 :(得分:6)

确保您正在设置MPNowPlayingInfoPropertyPlaybackRate属性。 0.0f表示暂停,1.0f表示正在播放。更改这些值时,您还需要设置MPNowPlayingInfoPropertyElapsedPlaybackTime。

以下是示例代码,其中updateMetadata是将这些更改应用于MPNowPlayingInfoCenter.nowPlayingInfo字典的函数。这将向中心表明玩家已暂停。

[self updateMetadata:[NSDictionary dictionaryWithObjectsAndKeys:
     [NSNumber numberWithDouble:audioFile.player.currentTime], 
      MPNowPlayingInfoPropertyElapsedPlaybackTime,
     [NSNumber numberWithFloat:0.0f],  
      MPNowPlayingInfoPropertyPlaybackRate,
      nil]];

答案 1 :(得分:0)

我今天遇到了这个问题:我发现我录制音频以及播放音频这一事实导致按钮显示暂停符号。

当我停止录制AVAudioRecorder时,暂停按钮变为播放按钮。

答案 2 :(得分:0)

通常,问题只是iPhone模拟器。只要您使用play()实例的AVAudioPlayer功能,遥控器就会自动切换暂停/播放。如果遇到问题,请尝试在设备上运行程序。

要切换按钮,您不需要设置playingInfo的任何MPNowPlayingInfoCenter,您也不需要保持有效AVAudioSession。< / p>

答案 3 :(得分:0)

以下是示例代码,其中up​​dateMetadata是将这些更改应用于MPNowPlayingInfoCenter.nowPlayingInfo字典的函数。这将向中心表明玩家已暂停。快速

self.updateMetadata(NSDictionary.dictionaryWithValuesForKeys(NSNumber(Double(audioFile.player.currentTime))),MPNowPlayingInfoPropertyElapsedPlaybackTime,NSNumber(numberWithFloat:0.0f),MPNowPlayingInfoPropertyPlaybackRate,nil)