2012-04-08 2 views
2

라이브러리에서 음악을 재생하기 위해 MPMusicPlayerController를 구현했습니다. 앱이 배경을 입력하면 일시 중지하고 전경으로 돌아올 때 다시 시작합니다. 일시 중지되었지만 처음부터 시작됩니다. Heres는 코드 ...MPMusicPlayerController 백그라운드에서 잠시 멈추고 앱이 포 그라운드로 들어갈 때 다시 시작

AppDelegate.m

- (void)applicationDidEnterBackground:(UIApplication *)application 
{ 
    [self.appMusicPlayer pause]; 
} 

- (void)applicationWillEnterForeground:(UIApplication *)application 
{ 
    [self.appMusicPlayer play]; 
} 

MainViewController.m

- (void) mediaPicker: (MPMediaPickerController *) mediaPicker didPickMediaItems: (MPMediaItemCollection *) mediaItemCollection 
{ 
    [self dismissModalViewControllerAnimated: YES]; 
    appdelegate.selectedSongCollection=mediaItemCollection; 
    appdelegate.appMusicPlayer = [MPMusicPlayerController applicationMusicPlayer]; 

    [appdelegate.appMusicPlayer setQueueWithItemCollection:appdelegate.selectedSongCollection]; 
    [appdelegate.appMusicPlayer play]; 
    [btnStop setHidden:NO]; 
    [btnMusic setHidden:YES]; 
} 

- (void) mediaPickerDidCancel: (MPMediaPickerController *) mediaPicker 
{ 
    [self dismissModalViewControllerAnimated: YES]; 
} 

응용 프로그램이 전경에 들어갈 때 그것을 다시 시작하는 방법에 어떤 아이디어가?

+0

WillEnterForeground에서 재생하려고하는 노래의 검색 시간을 확인합니다. 리셋이되었다고 가정하고, 그냥 didEnterBackground에 저장하고 WillEnterForeground에 설정하십시오. – jmstone617

답변

2

트랙의 currentPlaybackTime을 조사합니다. MPMusicPlayerController에는 currentPlaybackTime 속성이 있습니다. 앱이 백그라운드로 들어갈 때이 값을 저장하면됩니다 (속성이 잘 작동 함). WillEnterForeground에서 다시 시작할 때 currentPlaybackTime을 설정하기 위해 동일한 속성 값을 사용합니다.

+0

좋은 아이디어는 다시 시도하고 되돌릴 것입니다. 어제 한 일은 결국 applicationMusicPlayer 대신에 iPodMusicPlayer를 사용하고 백그라운드 및 포 그라운드 메서드에서 각각 일시 중지했다가 다시 시작하는 것입니다. –

+0

나는이 일이 필요 없을 것이라는 희망을 가지고 있었지만 NSNotificationCenter 덕분에 여전히 실행 가능한 해결책이되었다. – Eugene

관련 문제