MPMusicPlayerController приостанавливает работу в фоновом режиме и возобновляет работу, когда приложение выходит на передний план.

Я реализовал 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]; 
}

Есть идеи о том, как возобновить его, когда приложение выходит на передний план?


person Akash Malhotra    schedule 08.04.2012    source источник
comment
Я бы проверил время поиска песни, которую вы пытаетесь воспроизвести, в WillEnterForeground. Я предполагаю, что он сбрасывается, поэтому просто сохраните его на didEnterBackground и установите его в WillEnterForeground   -  person jmstone617    schedule 09.04.2012


Ответы (1)


Я бы посмотрел на currentPlaybackTime трека. MPMusicPlayerController имеет свойство currentPlaybackTime. Когда приложение собирается перейти в фоновый режим, просто сохраните это значение (поскольку свойство должно работать нормально), а в WillEnterForeground используйте то же значение свойства, чтобы установить currentPlaybackTime при возобновлении работы.

person jmstone617    schedule 09.04.2012
comment
отличная идея, постараюсь вернуться обратно. Вчера я закончил тем, что использовал iPodMusicPlayer вместо applicationMusicPlayer, а также приостанавливал и возобновлял его в фоновых и передних методах соответственно. - person Akash Malhotra; 09.04.2012
comment
Я надеялся, что до этого не дойдет, но благодаря NSNotificationCenter это все еще жизнеспособное решение. - person Eugene; 15.11.2012