2013-04-30 2 views
2

AU 그래프 (CoreAudio API)를 사용하여 오디오를 재생하는 작업 앱이 있습니다. 그래프는 항상 실행 중이며 다양한 소스 자료의 재생/일시 중지 상태는 그래프 렌더링 콜백 함수에서 관리됩니다. UIEventTypeRemoteControl 이벤트에 성공적으로 응답하고 MPNowPlayingInfoCenter를 사용하여 현재 재생중인 콘텐츠의 메타 데이터로 잠금 화면을 성공적으로 업데이트합니다.iOS - 멀티 태스킹 막대에서 미디어 재생/일시 중지 상태 업데이트

누락 된 부분은 iOS 멀티 태스킹 막대에서 재생/일시 중지 버튼의 상태를 업데이트하는 것입니다. 앱 오디오가 이미 일시 중지 된 경우에도 항상 "일시 중지"(||) 모드입니다. 결코 "재생"(>) 상태로 전환되지 않습니다.

재생/일시 중지 버튼 상태를 업데이트하는 데 사용되는 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