我已经使用 AVAudioPlayer (不是 AVPlayer )实现了一个音频播放器。我可以使用以下方法处理远程控制事件。到目前为止它工作得很好,但是我看到这些事件还有两个 subtypes : UIEventSubtypeRemoteControlEndSeekingForwardUIEventSubtypeRemoteControlEndSeekingBackward

- (void)remoteControlReceivedWithEvent:(UIEvent *)event {
    //if it is a remote control event handle it correctly
    if (event.type == UIEventTypeRemoteControl)
    {
        if (event.subtype == UIEventSubtypeRemoteControlPlay)
        {
            [self playAudio];
        }
        else if (event.subtype == UIEventSubtypeRemoteControlPause)
        {
            [self pauseAudio];
        }
        else if (event.subtype == UIEventSubtypeRemoteControlTogglePlayPause)
        {
            [self togglePlayPause];
        }
        else if (event.subtype == UIEventSubtypeRemoteControlBeginSeekingBackward)
        {
            [self rewindTheAudio]; //this method rewinds the audio by 15 seconds.
        }
        else if (event.subtype == UIEventSubtypeRemoteControlBeginSeekingForward)
        {
            [self fastForwardTheAudio]; //this method fast-forwards the audio by 15 seconds.
        }

}

所以问题是:
  • 为了让事情正常进行,我是否也应该实现这两个子类型?
  • 此方法只启用锁屏上的 rewindplay/pausefast forward 按钮,但不显示文件标题、插图和持续时间。如何使用 AVAudioPlayerAVAudioSession 显示该信息(我真的不想再使用一个库/API 来实现这一点)?

    2-a。我在搜索时发现了 MPNowPlayingInfoCenter,但我对此知之甚少。我必须用它来实现上面的那些东西吗? :-[
  • 最佳答案

    你是对的,MPNowPlayingInfoCenter 是唯一的方法。所以继续链接 MediaPlayer.framework 。在处理播放轨道的类中,导入 <MediaPlayer/MediaPlayer.h> 。每当您的轨道更改时,请执行以下操作:

    NSDictionary *info = @{ MPMediaItemPropertyArtist: artistName,
                                MPMediaItemPropertyAlbumTitle: albumName,
                                MPMediaItemPropertyTitle: songName };
    
        [MPNowPlayingInfoCenter defaultCenter].nowPlayingInfo = info;
    

    关于ios - 锁定屏幕上的 AVAudioPlayer,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20363058/

    10-13 09:03