Hi, I am trying to implement a MPMediaPicker into my cocos2d game. I am able to get the mediapicker to open, however I can not get it to respond to the done button. Here is my code...
musicController.h
#include <MediaPlayer/MediaPlayer.h>
#include "cocos2d.h"
@protocol MusicTableViewControllerDelegate; // forward declaration
@interface musicController : UIViewController <MPMediaPickerControllerDelegate> {
id <MusicTableViewControllerDelegate> delegate;
}
@property (nonatomic, assign) id <MusicTableViewControllerDelegate> delegate;
@property (nonatomic, retain) MPMediaItemCollection *userMediaItemCollection;
@property (nonatomic, retain) MPMusicPlayerController *musicPlayer;
+(void)showMediaPicker;
@end
@protocol MusicTableViewControllerDelegate
- (void) updatePlayerQueueWithMediaCollection: (MPMediaItemCollection *) mediaItemCollection;
@end
musicController.mm
#import "musicController.h"
@implementation musicController
@synthesize delegate;
@synthesize userMediaItemCollection;
@synthesize musicPlayer;
+(void)showMediaPicker
{
[[Director sharedDirector] pause];
self = [[UIViewController alloc] init];
[self setView:[[Director sharedDirector] openGLView]];
[self setModalTransitionStyle: UIModalTransitionStyleCoverVertical];
MPMediaPickerController *mediaPicker = [[MPMediaPickerController alloc] initWithMediaTypes:MPMediaTypeMusic];
mediaPicker.delegate = self;
mediaPicker.allowsPickingMultipleItems = YES;
mediaPicker.prompt = @"Select songs to play";
// The media item picker uses the default UI style, so it needs a default-style
// status bar to match it visually
[[UIApplication sharedApplication] setStatusBarHidden:NO animated: YES];
[self presentModalViewController: mediaPicker animated: YES];
[mediaPicker release];
}
// Responds to the user tapping Done after choosing music.
- (void) mediaPicker: (MPMediaPickerController *) mediaPicker didPickMediaItems: (MPMediaItemCollection *) mediaItemCollection {
NSLog(@"ondone");
[self dismissModalViewControllerAnimated: YES];
[self.delegate updatePlayerQueueWithMediaCollection: mediaItemCollection];
[[UIApplication sharedApplication] setStatusBarStyle: UIStatusBarStyleBlackOpaque animated:YES];
}
// Responds to the user tapping done having chosen no music.
- (void) mediaPickerDidCancel: (MPMediaPickerController *) mediaPicker
{
[self dismissModalViewControllerAnimated: YES];
[[UIApplication sharedApplication] setStatusBarStyle: UIStatusBarStyleBlackOpaque animated:YES];
}
- (void) updatePlayerQueueWithCollection: (MPMediaItemCollection *) mediaItemCollection{
// Add 'collection' to the music player's playback queue, but only if
// the user chose at least one song to play.
if (mediaItemCollection) {
MPMusicPlayerController *musicPlayer =
[MPMusicPlayerController applicationMusicPlayer];
[musicPlayer setQueueWithItemCollection: mediaItemCollection];
[musicPlayer play];
}
}
@end
In my menu scene I have a function that calls [musicController showMediaPicker];
I would appreciate any help I can get here.