2012-04-08 99 views
2

我已经实现了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]; 
} 

如何恢复它时,应用程序进入前景任何想法?

+0

我会在WillEnterForeground中检查您尝试播放的歌曲的查找时间。我认为它正在重置,所以只需将它保存在didEnterBackground并将其设置在WillEnterForeground – jmstone617 2012-04-09 00:00:34

回答

2

我会查看曲目的当前播放时间。 MPMusicPlayerController具有currentPlaybackTime属性。当应用程序要进入后台时,只需保存该值(因为属性应该可以正常工作);在WillEnterForeground中,恢复时使用相同的属性值设置currentPlaybackTime。

+0

好主意,将尝试并恢复。我昨天最终做的是使用iPodMusicPlayer代替applicationMusicPlayer,并分别在后台和前台方法中暂停和恢复它。 – 2012-04-09 05:27:49

+0

我曾希望它不会出现这种情况,但归功于'NSNotificationCenter',它仍然是一个可行的解决方案。 – Eugene 2012-11-15 19:57:27

相关问题