iPhone: что такое MPMusicPlaybackStateInterrupted? И в чем разница между ним и MPMusicPlaybackStatePaused

У меня есть несколько вопросов о playbackState свойствах MPMusicPlayerController.

В документе MPMusicPlaybackStateInterrupted и MPMusicPlaybackStatePaused определяются следующим образом:

MPMusicPlaybackStateInterrupted
Работа музыкального проигрывателя была прервана, например, из-за входящего телефонного звонка.

MPMusicPlaybackStatePaused
Музыкальный проигрыватель приостановлен.

Я не могу проверить входящий звонок, потому что сейчас у меня нет iPhone.
Но лишь несколько раз я получал состояние MPMusicPlaybackStateInterrupted, просто проигрывая музыку на iPod touch.

(Я не знаю, почему произошло прерванное состояние. Не было ни входящего звонка, ни других операций, кроме воспроизведения музыки).

И в это время MPMusicPlayerController просто приостанавливал воспроизведение музыки.

Вопрос1
В чем разница между MPMusicPlaybackStateInterrupted и MPMusicPlaybackStatePaused?

Вопрос 2
Когда происходит MPMusicPlaybackStateInterrupted, кроме входящего телефонного звонка?

Вопрос 3
Что делать, если я получаю MPMusicPlaybackStateInterrupted?
Например, когда я получаю MPMusicPlaybackStatePaused или MPMusicPlaybackStateStopped, мне нужно изменить кнопку воспроизведения/паузы.


person js_    schedule 18.07.2012    source источник


Ответы (1)


Я подтвердил следующую информацию с iOS 5.1.1.

Вопрос1
В чем разница между MPMusicPlaybackStateInterrupted и MPMusicPlaybackStatePaused?

MPMusicPlaybackStatePaused происходит, когда проигрыватель поставлен на паузу.
MPMusicPlaybackStateInterrupted происходит, когда проигрыватель прерывается другим звуковым сигналом, например входящим телефонным звонком или таймером приложения Apple Clock.

Вопрос 2
Когда происходит MPMusicPlaybackStateInterrupted, кроме входящего телефонного звонка?

MPMusicPlaybackStateInterrupted происходит, когда звонит таймер приложения "Часы".
-applicationWillResignActive: также вызывается, когда звонит таймер.
Но MPMusicPlaybackStatePaused не происходит, и воспроизведение музыки автоматически возобновляется после окончания прерывания (будильника таймера).

Другими примерами прерывания являются Siri/Голосовое управление (удерживайте нажатой кнопку «Домой»), дистанционное управление наушниками (если вы используете приложение MusicPlayer), входящий телефонный звонок.
Нажатие кнопки воспроизведения на пульте дистанционного управления наушниками не делает приложение активным. . И прерывание никогда не закончится.

MPMusicPlaybackStateInterrupted не происходит, и состояние воспроизведения не меняется, когда баннер с уведомлением появляется в верхней части экрана.
VoiceOver также не прерывает работу.

Вопрос 3
Что делать, если я получаю MPMusicPlaybackStateInterrupted?
Например, когда я получаю MPMusicPlaybackStatePaused или MPMusicPlaybackStateStopped, мне нужно изменить кнопку воспроизведения/паузы.

Вам не нужно ничего делать в обратном вызове MPMusicPlayerControllerPlaybackStateDidChangeNotification, когда происходит MPMusicPlaybackStateInterrupted.
Потому что воспроизведение музыки автоматически возобновляется после прерывания.

РЕДАКТИРОВАНИЕ
Я обнаружил, что воспроизведение музыки не возобновляется автоматически (это означает, что вы не можете полагаться на автоматическое возобновление).

А в следующих случаях воспроизведение музыки не возобновляется автоматически.

  • Когда была нажата кнопка дистанционного управления наушниками. (если вы используете приложение MusicPlayer)

  • Когда прозвенел таймер, вы дважды нажимаете кнопку «Домой», переключаете приложение, останавливаете таймер и снова переключаетесь на приложение.

  • Когда вы снова переключились на приложение во время звонка после того, как приняли входящий вызов.

person js_    schedule 24.07.2012