2012-04-08 9 views
2

Ich habe MPMusicPlayerController implementiert, um Musik aus der Bibliothek abzuspielen. Wenn die App in den Hintergrund eintritt, halte ich sie an und wenn sie wieder im Vordergrund ist, möchte ich sie fortsetzen. Es pausiert gut, aber beginnt von Anfang an. Heres der Code ...MPMusicPlayerController im Hintergrund anhalten und fortsetzen, wenn App in den Vordergrund tritt

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]; 
} 

Irgendwelche Ideen, wie man es wieder aufnehmen, wenn app Vordergrund tritt?

+0

Ich würde die Suchzeit des Songs, den Sie versuchen, in WillEnterForeground zu spielen. Ich nehme an, dass es zurückgesetzt wird, also speichern Sie es einfach auf didEnterBackground und setzen Sie es in WillEnterForeground – jmstone617

Antwort

2

Ich würde in der currentPlaybackTime der Spur schauen. MPMusicPlayerController verfügt über eine currentPlaybackTime-Eigenschaft. Wenn die App in den Hintergrund tritt, speichern Sie einfach diesen Wert (da eine Eigenschaft problemlos funktionieren sollte) und verwenden Sie in WillEnterForeground denselben Wert für die Eigenschaft, um die currentPlaybackTime beim Fortsetzen festzulegen.

+0

tolle Idee, wird versuchen und wieder zurück. Was ich gestern getan habe, war iPodMusicPlayer anstelle von applicationMusicPlayer zu verwenden und ihn im Hintergrund bzw. im Vordergrund zu pausieren und wieder aufzunehmen. –

+0

Ich hatte meine Hoffnungen, dass es nicht dazu kommen würde, aber es ist immer noch eine brauchbare Lösung dank 'NSNotificationCenter'. – Eugene

Verwandte Themen