如何告诉 MPNowPlayingInfoCenter 音乐是不是正在播放或暂停?
Posted
技术标签:
【中文标题】如何告诉 MPNowPlayingInfoCenter 音乐是不是正在播放或暂停?【英文标题】:How to tell the MPNowPlayingInfoCenter wether or not the music is playing or paused?如何告诉 MPNowPlayingInfoCenter 音乐是否正在播放或暂停? 【发布时间】:2013-09-13 09:38:40 【问题描述】:我似乎无法让 ios 在远程音频控件中显示正确的播放/暂停按钮。我确实收到了远程控制事件并设置了nowPlayingInfo
字典的所有值。
一切正常,我什至在锁定屏幕上看到了封面照片。除了暂停/播放按钮。即使我的AVAudioPlayer
正在播放,它看起来总是像暂停一样。无论播放状态如何,它都会发送暂停事件。
如何通知 iOS AVAudioPlayer 已暂停,并且它现在应该在遥控器按钮栏中显示一个播放按钮?
【问题讨论】:
如果您发现了这一点,请发布您的解决方案。 您是否在播放状态更改(例如暂停)时更新 MPNowPlayingInfoCenter? 【参考方案1】:确保您正在设置 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]];
【讨论】:
【参考方案2】:我今天遇到了这个问题:我发现我正在录制音频以及播放它的事实导致按钮显示暂停符号。
当我停止AVAudioRecorder
录制时,暂停按钮变成了播放按钮。
【讨论】:
【参考方案3】:很多时候,问题只是 iPhone 模拟器。一旦您使用AVAudioPlayer
实例的play()
功能,远程控制栏应该会自动切换暂停/播放。如果您遇到的问题没有发生,请尝试在设备上运行您的程序。
要切换按钮,您不需要设置MPNowPlayingInfoCenter
中的任何playingInfo
,也不需要保持活动的AVAudioSession
。
【讨论】:
【参考方案4】:这里是示例代码,其中 updateMetadata 是将这些更改应用到 MPNowPlayingInfoCenter.nowPlayingInfo 字典的函数。这将向中心指示播放器已暂停。在 swift 中
self.updateMetadata(NSDictionary.dictionaryWithValuesForKeys(NSNumber(Double(audioFile.player.currentTime))),MPNowPlayingInfoPropertyElapsedPlaybackTime,NSNumber(numberWithFloat:0.0f),MPNowPlayingInfoPropertyPlaybackRate,nil)
【讨论】:
以上是关于如何告诉 MPNowPlayingInfoCenter 音乐是不是正在播放或暂停?的主要内容,如果未能解决你的问题,请参考以下文章