当我使用MPMusicPlayerController再次打开应用程序时,如何恢复音乐

时间:2014-07-16 21:09:12

标签: ios objective-c playback mpmusicplayercontroller

我有一个名为music的按钮,当我点击它时,MPMediaPickerController会弹出并选择要播放的歌曲。它在应用程序中运行良好,但当我退出应用程序并再次进入它时音乐停止。有什么想法吗?

ViewController.h:

#import <UIKit/UIKit.h>
#import <MediaPlayer/MediaPlayer.h>
#import <AVFoundation/AVFoundation.h>

@interface ViewController : UIViewController <MPMediaPickerControllerDelegate> 
{    
    MPMusicPlayerController *musicPlayer;
    IBOutlet UIButton *music;
    IBOutlet UIButton *stopmusic;   
}

- (IBAction)music:(id)sender;

@end

ViewController.m:

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (IBAction)stopmusic:(id)sender
{    
    [musicPlayer stop];
}

- (IBAction)music:(id)sender
{
    MPMediaPickerController *musicSelect;
    musicSelect = [[MPMediaPickerController alloc] initWithMediaTypes:MPMediaTypeAnyAudio];
    musicSelect.delegate = self;
    [self presentViewController:musicSelect animated:YES completion: nil];
}

- (void)mediaPicker:(MPMediaPickerController *)mediaPicker
  didPickMediaItems:(MPMediaItemCollection *)mediaItemCollection
{
    musicPlayer = [MPMusicPlayerController applicationMusicPlayer];
    [musicPlayer setQueueWithItemCollection:(MPMediaItemCollection *)mediaItemCollection];
    [self dismissViewControllerAnimated:YES completion:nil];
    [musicPlayer play];
}

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

- (void)viewDidLoad
{
    [super viewDidLoad];
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
}

@end

1 个答案:

答案 0 :(得分:0)

在viewDidLoad方法中注册应用程序何时进入前台的通知:

[[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(notification:)
                                                 name:UIApplicationWillEnterForegroundNotification
                                               object:nil];

然后有一个方法,只要app再次进入前台就会执行。使用instance属性重新播放音乐。

- (void)notification:(id)sender {
    NSLog(@"Notification: %@", sender);
    // add code to play again        

}