AVAudioPlayer на экране блокировки

Я реализовал аудиоплеер, используя AVAudioPlayer (а не AVPlayer). Я могу обрабатывать события удаленного управления следующим методом. Пока все работает нормально, однако я вижу еще два subtypes для этих событий: UIEventSubtypeRemoteControlEndSeekingForward и UIEventSubtypeRemoteControlEndSeekingBackward.

- (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.
        }

}

Итак, вопросы:

  1. Должен ли я реализовать эти два подтипа, чтобы все работало правильно?

  2. Этот метод включает только кнопки rewind, play/pause и fast forward на экране блокировки, но не отображает название файла, обложку и продолжительность. Как я могу отобразить эту информацию, используя AVAudioPlayer или AVAudioSession (мне действительно не нужна еще одна библиотека/API для реализации этого)?

    2-а. Я обнаружил MPNowPlayingInfoCenter во время поиска и почти ничего о нем не знаю. Должен ли я использовать его для реализации вышеперечисленных вещей? :-[


person Neeku    schedule 03.12.2013    source источник
comment
За что именно проголосовали против??   -  person Neeku    schedule 25.06.2014


Ответы (1)


Вы правы, MPNowPlayingInfoCenter это единственный способ сделать это. Так что давай, свяжись с MediaPlayer.framework. В классе, который обрабатывает воспроизводимые треки, импортируйте <MediaPlayer/MediaPlayer.h>. Всякий раз, когда ваш трек меняется, делайте следующее:

NSDictionary *info = @{ MPMediaItemPropertyArtist: artistName,
                            MPMediaItemPropertyAlbumTitle: albumName,
                            MPMediaItemPropertyTitle: songName };

    [MPNowPlayingInfoCenter defaultCenter].nowPlayingInfo = info;
person Patrick Goley    schedule 03.12.2013
comment
Спасибо, Патрик; а как же первый вопрос? Их тоже предполагается реализовать? - person Neeku; 04.12.2013