Проблема с фоновым звуком MPMoviePlayerController в iOS5

У меня есть приложение, которое выполняет довольно стандартную операцию: Оно воспроизводит звук (в потоковом режиме или в файловой системе), когда приложение находится в 1) режиме переднего плана, 2) состоянии блокировки экрана 3) фоновом режиме. Это нормально работало во всех iOS до iOS5.

Я использую MPMoviePlayerController (потому что он может воспроизводить потоковое аудио и аудио из локальной файловой системы) У меня следующие настройки:

  1. в файле info.plist для фонового режима установлено значение «Аудио»
  2. У меня есть Настройте аудиосессию, как показано на http://developer.apple.com / library / ios / # qa / qa1668 / _index.html

     NSError * ActivationError = nil; 
    AVAudioSession * mySession = [AVAudioSession sharedInstance]; 
     [mySession setCategory: AVAudioSessionCategoryPlayback error: & activationEression error ]; 
    if (activateError) {/ * обработать условие ошибки * /} 
     [mySession setActive: YES error: & activationError]; 
    if (activateError) {/ * обработать условие ошибки * /} 
     
  3. У меня включен фоновый таймер, который останавливается в конце воспроизведения звука UIBackgroundTaskIdentifier newId = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler: NULL];

  4. У меня есть useApplicationAudioSession = NO в Moveplayer.
  5. Я подписался на следующие события, чтобы определять и обрабатывать различные состояния воспроизведения и запускать новый аудиофайл в конце текущего файла. MPMoviePlayerLoadStateDidChangeNotification {{1 }} MPMoviePlayerPlaybackDidFinishNotification MPMoviePlayerPlaybackStateDidChangeNotification MPMoviePlaye rNowPlayingMovieDidChangeNotification

Проблема:

При этом начинает воспроизводиться звук, и когда приложение переводится в фоновое состояние или если телефон заблокирован, звук продолжает воспроизводиться.Но после того, как я запустил другой аудиофайл, я сразу же начинаю получать PlaybackDidFinishNotification с состоянием, установленным на Воспроизведение завершено (но файл никогда не воспроизводился)

Тот же код воспроизводит аудиофайлы в режиме переднего плана (после текущий аудиофайл заканчивается, следующий файл запускается без проблем)

Есть ли что-нибудь новое в iOS5, что я должен сделать, чтобы это заработало? Я прочитал ссылку на класс MPMoviePlayerController и не нашел ничего особенного для iOS5.

Заранее спасибо.

6
задан rydgaze 17 November 2011 в 03:45
поделиться