AVPlayer и addPeriodicTimeObserverForInterval не работают, когда приложение переходит в фоновый режим - PullRequest
2 голосов
/ 27 февраля 2012

Вопрос 1. Я вижу следующее поведение на iphone 4 и iOS 5.0.1

  • зарегистрируйтесь, используя addPeriodicTimeObserverForInterval, чтобы получать обновления каждые 250 мс и обновлять пользовательский интерфейс.

  • хорошо работает, пока приложение не перейдет в фоновый режим. Например, нажмите кнопку «Домой» или заблокируйте экран,

  • Когда приложение возвращается на передний план, проигрыватель снова начинает воспроизведение, но обновления не запускаются снова. Если пользователь снова нажмет кнопку «Воспроизвести паузу» в обновлениях пользовательского интерфейса, снова начнется выстрел. Это можно увидеть и в приложении demo от Apple.

Вопрос 2

Разве мы не можем смешивать API аудио сеанса на основе C с базовыми классами AV? Например, У меня есть мой слушатель на основе C зарегистрировано, когда AudioInterruptions Но когда я использую AVPlayer с kAudioSessionCategory_PlayAndRecord, они не вызываются. Когда приложение переходит в фоновый режим, AVPlayer делает паузу без вызова вызывающего слушателя на языке C.

Это ожидается или я могу что-то сделать? Обратите внимание, что после удаления экземпляра AVPlayer мое приложение снова переходит в фоновый режим с помощью kAudioSessionCategory_PlayAndRecord установить в качестве категории функцию слушателя.

1 Ответ

0 голосов
/ 02 марта 2012

Для вашей первой проблемы, скорее всего, вы не выпускаете addPeriodicTimeObserverForInterval, как предложено. Попробуйте добавить что-то подобное в ваш AppDelegate:

- (void)applicationDidEnterBackground:(UIApplication *)application
{
    [_audioManager.audioPlayer removeTimeObserver:_audioManager.timeObserver];
    _audioManager.isUIActive = NO;
}

и соответствующий метод перезапуска наблюдателя периодического времени:

- (void)applicationDidBecomeActive:(UIApplication *)application
{
    [_audioManager setUpTransportUI];
    _audioManager.isUIActive = YES;
}

где setUpTransportUI воссоздает вашего наблюдателя времени.

...