我有一个名为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
答案 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
}