6

我正在开发音乐应用程序,但对于锁屏控制,我无法指定持续时间和经过的时间

这是我的代码

let commandCenter = MPRemoteCommandCenter.shared()

        commandCenter.previousTrackCommand.isEnabled = true;
        commandCenter.previousTrackCommand.addTarget(self, action:#selector(home_ViewController.btn_rewind(_:)))

        commandCenter.nextTrackCommand.isEnabled = true
        commandCenter.nextTrackCommand.addTarget(self, action:#selector(home_ViewController.btn_fast(_:)))

        commandCenter.playCommand.isEnabled = true
        commandCenter.playCommand.addTarget(self, action:#selector(home_ViewController.play_player))

        commandCenter.pauseCommand.isEnabled = true
        commandCenter.pauseCommand.addTarget(self, action:#selector(home_ViewController.pause_player))

        commandCenter.togglePlayPauseCommand.isEnabled = true
        commandCenter.togglePlayPauseCommand.addTarget(self, action:#selector(home_ViewController.togglePlay_Pause))

        commandCenter.skipBackwardCommand.isEnabled = false
        commandCenter.skipForwardCommand.isEnabled = false

        if #available(iOS 9.1, *) {
            commandCenter.changePlaybackPositionCommand.isEnabled = true
        } else {
            // Fallback on earlier versions
            return
        }

和媒体信息

func setLockInfo()
    {
        let url = URL(string: song_UrlString)
        let data = try? Data(contentsOf: url!)
        let art = MPMediaItemArtwork.init(image: UIImage(data: data!)!)



        let songInfo :[String : Any] = [MPMediaItemPropertyTitle :st_title,MPMediaItemPropertyArtwork : art]

        MPNowPlayingInfoCenter.default().nowPlayingInfo = songInfo


    }

我正在获取标题和图像,但锁定屏幕不显示时间

我正在使用 SWIFT 3 编码

4

2 回答 2

4

它没有显示时间,因为您没有告诉它显示时间。

要显示播放时间,您的nowPlayingInfo字典需要包含键的值:

如果您希望播放时间栏是交互式的(也就是说,允许跳转到不同的时间而不是只显示当前时间,changePlaybackPositionCommand请在远程命令中心注册 a。

于 2016-11-03T18:43:09.407 回答
1

包含所有命令的Swift 3示例,包括changePlaybackPositionCommand

func remotePlayerInit() {
    UIApplication.shared.beginReceivingRemoteControlEvents()
    let commandCenter = MPRemoteCommandCenter.shared()

    commandCenter.pauseCommand.addTarget(self, action: #selector(self.pauseSongTouch(_:)))
    commandCenter.playCommand.addTarget(self, action: #selector(self.playSongTouch(_:)))
    commandCenter.nextTrackCommand.addTarget(self, action: #selector(self.nextSongTouch(_:)))
    commandCenter.previousTrackCommand.addTarget(self, action: #selector(self.previousSongTouch(_:)))
    commandCenter.changePlaybackPositionCommand.addTarget(self, action: #selector(self.changedThumbSlider(_:)))

    setLockInfo()
}

func changedThumbSlider(_ event: MPChangePlaybackPositionCommandEvent) -> MPRemoteCommandHandlerStatus {
    audioPlayer.currentTime = event.positionTime
    setLockInfo()
    return .success
}

func setLockInfo()
{
    let image = PlayerVC.songs[PlayerVC.currentSelection].image
    let artwork = MPMediaItemArtwork.init(boundsSize: image.size, requestHandler: { (size) -> UIImage in
        return image
    })

    let songInfo: [String: Any] = [MPMediaItemPropertyTitle:  PlayerVC.songs[PlayerVC.currentSelection].name, 
                                   MPMediaItemPropertyArtwork: artwork, 
                                   MPNowPlayingInfoPropertyElapsedPlaybackTime: TimeInterval(audioPlayer.currentTime),
                                   MPNowPlayingInfoPropertyPlaybackRate: 1,
                                   MPMediaItemPropertyPlaybackDuration: audioPlayer.duration,
                                   MPMediaItemPropertyArtist: "Artist"]

    MPNowPlayingInfoCenter.default().nowPlayingInfo = songInfo
}
于 2018-01-07T09:15:48.597 回答