如何告诉MPNowPlayingInfoCenter是否正在播放或暂停音乐?
我似乎无法让iOS在远程audio控件中显示正确的播放/暂停button。 我收到远程控制事件并设置nowPlayingInfo
字典的所有值。
一切工作正常,我甚至看到锁屏上的封面照片。 除了暂停/播放button。 即使我的AVAudioPlayer
正在播放,它总是看起来像暂停。 无论播放状态如何,它都会发送一个暂停事件。
如何通知iOS AVAudioPlayer已暂停,现在应该在遥控器button栏中显示播放button?
确保你正在设置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]];
我今天遇到了这个问题:我发现我录制audio以及播放它的事实导致button显示暂停符号。
当我停止录制AVAudioRecorder
,暂停button变成了播放button。
这个问题通常只是iPhone模拟器。 只要使用AVAudioPlayer
实例的play()
函数,远程控制栏应该自动切换暂停/播放。 如果遇到这种情况,请尝试在设备上运行程序。
要切换button,您不需要设置playingInfo
的任何playingInfo
MPNowPlayingInfoCenter
,也不需要保存活动的AVAudioSession
。
下面是代码示例,其中updateMetadata是一个将这些更改应用于MPNowPlayingInfoCenter.nowPlayingInfo字典的函数。 这会向中心表明玩家已经暂停
self.updateMetadata(NSDictionary.dictionaryWithValuesForKeys(NSNumber(Double(audioFile.player.currentTime))),MPNowPlayingInfoPropertyElapsedPlaybackTime,NSNumber(numberWithFloat:0.0f),MPNowPlayingInfoPropertyPlaybackRate,nil)