我正在使用MPRemoteCommandCenter和MPNowPlayingInfoCenter来控制后台音频的播放。设置命令回调:

let commandCenter = MPRemoteCommandCenter.sharedCommandCenter()

commandCenter.pauseCommand.enabled = true
commandCenter.pauseCommand.addTarget(self, action: #selector(AudioPlayer.remoteCmdPause))

commandCenter.playCommand.enabled = true
commandCenter.playCommand.addTarget(self, action: #selector(AudioPlayer.remoteCmdplay))

并更新音频数据:
let artWork = MPMediaItemArtwork(image: image)
MPNowPlayingInfoCenter.defaultCenter().nowPlayingInfo = [
   MPMediaItemPropertyTitle: self.title,
   MPMediaItemPropertyArtwork: artWork,
   MPMediaItemPropertyPlaybackDuration: self.duration,
   //MPNowPlayingInfoPropertyElapsedPlaybackTime: 0
]

这显示了我可以在remoteCmdPause和remoteCmdPlay回调中处理的暂停/播放按钮。它还显示了要隐藏或注册处理程序的音量条,以便我可以对音量更改做出反应。

是否可以注册一个用于音量更改的回叫,以便执行除(或除此之外)增大/减小音量以外的操作?
如果不是,在后台播放音频时是否可以从锁定屏幕隐藏音量控制栏?

最佳答案

至于我的问题的回调部分,似乎没有任何特定的远程命令来处理锁定屏幕上的音量更改。只要观察“outputVolume”(通过observeValueForKeyPath)就可以了。
隐藏音量条仍然是一个问题,但现在不再是必需的(至少就我而言)。

10-06 10:31