2013-09-09 3 views
10

Я не могу показать, что iOS показывает правильную кнопку воспроизведения/паузы в дистанционном управлении аудио. Я получаю события дистанционного управления и устанавливаю все значения словаря nowPlayingInfo.Как сказать MPNowPlayingInfoCenter, или нет, музыка играет или приостанавливается?

Все работает нормально, и я даже вижу обложку на экране блокировки. За исключением кнопки паузы/воспроизведения. Он всегда выглядит как пауза, даже если мой AVAudioPlayer играет. Он отправляет событие паузы независимо от состояния воспроизведения.

Как я могу уведомить iOS о том, что AVAudioPlayer приостановлен и что теперь он должен показать кнопку воспроизведения на панели кнопок пульта ДУ?

+1

Если вы это поняли, разместите свое разрешение. – SG1

+0

Вы обновляете MPNowPlayingInfoCenter при изменении состояния воспроизведения (например, пауза)? – chris

ответ

0

У меня была эта проблема сегодня: я обнаружил, что факт, что я записывал звук, а также воспроизводить его, заставил кнопку отображать символ паузы.

Когда я остановил AVAudioRecorder от записи, кнопка паузы стала кнопкой воспроизведения.

6

Убедитесь, что вы устанавливаете свойство 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]]; 
0

Довольно часто проблема заключается в просто симуляторе iPhone. Как только вы используете функцию play() вашего экземпляра AVAudioPlayer, пульт дистанционного управления должен автоматически переключать паузу/воспроизведение. Если у вас возникают проблемы, когда этого не происходит, попробуйте запустить свою программу на устройстве.

Чтобы переключить кнопку, вы не нужно установить любой playingInfo из MPNowPlayingInfoCenter, ни вам нужно провести активную AVAudioSession.

0

Вот пример кода, где updateMetadata - это функция, которая применяет эти изменения в словаре MPNowPlayingInfoCenter.nowPlayingInfo. Это указывает на то, что игрок остановлен. В быстром

self.updateMetadata(NSDictionary.dictionaryWithValuesForKeys(NSNumber(Double(audioFile.player.currentTime))),MPNowPlayingInfoPropertyElapsedPlaybackTime,NSNumber(numberWithFloat:0.0f),MPNowPlayingInfoPropertyPlaybackRate,nil) 
Смежные вопросы