2013-04-30 1 views
2

У нас есть рабочее приложение, которое использует AU-граф - CoreAudio API - для воспроизведения звука. График всегда работает, а состояние воспроизведения/паузы в исходном материале управляется функциями обработки обратного вызова графика. Мы успешно отвечаем на события UIEventTypeRemoteControl, и мы успешно обновляем экран блокировки метаданными для воспроизводимого в данный момент контента с использованием MPNowPlayingInfoCenter.iOS - обновление состояния воспроизведения мультимедиа/паузы в многозадачном баре

Один недостающий кусок - это обновление состояния кнопки воспроизведения/паузы в многозадачной панели iOS. Он всегда находится в режиме «пауза» (||), даже когда звук приложения уже приостановлен. Он никогда не переключается в состояние «play» (>).

Какой API используется для обновления состояния кнопки воспроизведения/паузы?

ответ

3

Я понял, что при использовании графика CoreAudio AU AUGraphStart() отобразит индикатор воспроизведения в строке состояния iOS и многозадачной панели iOS, а AUGraphStop() очистит их.

+0

Такая же проблема, когда используя AVAudioPlayer, но, похоже, нет способа заставить его работать правильно. – openfrog

+0

@openfrog: Вы нашли какое-нибудь решение? –

+0

Увидеть ту же проблему. Есть ли какое-нибудь решение? – jerry

3
словарь

Изменение MPNowPlayingInfo, установите новый параметр

MPNowPlayingInfoPropertyPlaybackRate to 1.0f to show pause button 

MPNowPlayingInfoPropertyPlaybackRate to 0.0f to show play button 

С кнопку воспроизведения - до - кнопка паузы

Class playingInfoCenter = NSClassFromString(@"MPNowPlayingInfoCenter"); 
     if (playingInfoCenter) { 

      NSMutableDictionary *songInfo = [NSMutableDictionary dictionaryWithDictionary:[MPNowPlayingInfoCenter defaultCenter].nowPlayingInfo]; 
      //[songInfo setObject:songTitle forKey:MPMediaItemPropertyTitle]; 
      //[songInfo setObject:songArtist forKey:MPMediaItemPropertyArtist]; 
      [songInfo setObject:[NSNumber numberWithFloat:1.0f] forKey:MPNowPlayingInfoPropertyPlaybackRate]; 
      [MPNowPlayingInfoCenter defaultCenter].nowPlayingInfo = songInfo; 

     } 

От кнопки паузы - на - играть кнопку

Class playingInfoCenter = NSClassFromString(@"MPNowPlayingInfoCenter"); 
     if (playingInfoCenter) { 

      NSMutableDictionary *songInfo = [NSMutableDictionary dictionaryWithDictionary:[MPNowPlayingInfoCenter defaultCenter].nowPlayingInfo]; 
      //[songInfo setObject:songTitle forKey:MPMediaItemPropertyTitle]; 
      //[songInfo setObject:songArtist forKey:MPMediaItemPropertyArtist]; 
      [songInfo setObject:[NSNumber numberWithFloat:0.0f] forKey:MPNowPlayingInfoPropertyPlaybackRate]; 
      [MPNowPlayingInfoCenter defaultCenter].nowPlayingInfo = songInfo; 

     } 
+0

Я использую AVPlayer и получаю такую ​​же ошибку. И я стараюсь ваше решение, и оно работает в симуляторе и не работает в реальном устройстве. Пожалуйста, помогите мне решить эту проблему, если вы знаете любое другое решение. Заранее спасибо. –

+0

Это ответ в целом, но не в отношении вопроса. Вопрос в том, что основной аудио API не работает должным образом с MPNowPlayingInfoCenter. – jerry