출처 : http://adolchristin.tistory.com/41
기본 적인 문서는 애플 개발자 페이지의
http://developer.apple.com/library/ios/#documentation/Audio/Conceptual/iPodLibraryAccess_Guide/Introduction/Introduction.html
이곳을 참조 하였다.
-(void) selectMp3 { NSLog(@"selectMp3"); MPMediaPickerController *picker = [[MPMediaPickerController alloc] initWithMediaTypes:MPMediaTypeMusic]; //MPMediaPickerController *picker = [[MPMediaPickerController alloc] initWithMediaTypes:MPMediaTypeAnyAudio]; [picker setDelegate:self]; [picker setAllowsPickingMultipleItems:NO]; [picker setPrompt:@"Select Song to Play!"]; [[[CCDirector sharedDirector] openGLView] addSubview:tempVC.view]; [tempVC presentModalViewController:picker animated:YES]; [picker release]; [[UIApplication sharedApplication] setStatusBarHidden:NO animated:YES]; } -(void) mediaPicker:(MPMediaPickerController *)mediaPicker didPickMediaItems:(MPMediaItemCollection *)mediaItemCollection { NSLog(@"mediaPicker"); [APP_DEL SetFreeMp3:mediaItemCollection]; [[UIApplication sharedApplication] setStatusBarHidden:YES animated:YES]; [tempVC dismissModalViewControllerAnimated:YES]; [tempVC.view removeFromSuperview]; [APP_DEL Set_Playing:YES]; [APP_DEL Set_iPod:YES]; [SceneManager goPlay]; } -(void) mediaPickerDidCancel:(MPMediaPickerController *)mediaPicker { NSLog(@"mediaPickerDidCancel"); [[UIApplication sharedApplication] setStatusBarHidden:YES animated:YES]; [tempVC dismissModalViewControllerAnimated:YES]; [tempVC.view removeFromSuperview]; }
아이팟 라이브러리가 호출 되면 앞서 게임센터의 리더보드나 업적창을 띄웠을때처럼 임시 뷰 컨트롤러를 만들어서 모달뷰로 아이팟 라이브러리를 호출 하였다.
-(void) mediaPicker:(MPMediaPickerController *)mediaPicker didPickMediaItems:(MPMediaItemCollection *)mediaItemCollection
함수는 피커에서 노래가 선택되었을 때 호출되는 함수 이고
-(void) mediaPickerDidCancel:(MPMediaPickerController *)mediaPicker
이 함수는 아무것도 선택안하고 닫기를 눌렀을 때 호출 되는 함수이다
아이팟 라이브러리에서 선택된 노래 정보(MPMediaItemCollection *)mediaItemCollection는 AppDelegate에 보내준다
-(void) FreeMp3Stop { [myPlayer stop]; } -(void) FreeMp3Pause { [myPlayer pause]; } -(float) Get_FreeMp3Time { return [myPlayer currentPlaybackTime]; } -(void) Set_FreeMp3Time:(float)_time { [myPlayer setCurrentPlaybackTime:_time]; } - (void)Set_iPod:(BOOL)_ipod { ipodMode = _ipod; } - (BOOL)Get_iPod { return ipodMode; } - (float) Get_FreeMp3Duration { NSString *temp_Time = [myPlayer.nowPlayingItem valueForProperty:@"playbackDuration"]; g_Duration = [temp_Time floatValue]; return g_Duration; } - (NSString*) Get_FreeMp3Title { g_FreeSongTitle = [myPlayer.nowPlayingItem valueForProperty:@"title"]; NSLog(@"아이팟에서 선택된 노래 제목 : %@", g_FreeSongTitle); return g_FreeSongTitle; }
AppDelegate에 이렇게 아이팟 노래를 재생시킬수 있는 뮤직플레이어 컨트롤러를 만든다
MPMusicPlayerController *myPlayer = [MPMusicPlayerController applicationMusicPlayer];
AppDelegate에서는 myPlayer의 노래 제목, 재생 시간, 총 재생 시간의 정보를 가져오며 우리는 이 정보들을 게임에 이용한다.
MPMediaItem으로 Jump to Define 해보면 아이팟 라이브러리에서 가져올 수 있는 정보들이 정리되어있다
// Media properties
MP_EXTERN NSString *const MPMediaItemPropertyPersistentID; // @"persistentID", NSNumber of uint64_t (unsigned long long), filterable
MP_EXTERN NSString *const MPMediaItemPropertyMediaType; // @"mediaType", NSNumber of MPMediaType (NSInteger), filterable
MP_EXTERN NSString *const MPMediaItemPropertyTitle; // @"title", NSString, filterable
MP_EXTERN NSString *const MPMediaItemPropertyAlbumTitle; // @"albumTitle", NSString, filterable
MP_EXTERN NSString *const MPMediaItemPropertyArtist; // @"artist", NSString, filterable
MP_EXTERN NSString *const MPMediaItemPropertyAlbumArtist; // @"albumArtist", NSString, filterable
MP_EXTERN NSString *const MPMediaItemPropertyGenre; // @"genre", NSString, filterable
MP_EXTERN NSString *const MPMediaItemPropertyComposer; // @"composer", NSString, filterable
MP_EXTERN NSString *const MPMediaItemPropertyPlaybackDuration; // @"playbackDuration", NSNumber of NSTimeInterval (double)
MP_EXTERN NSString *const MPMediaItemPropertyAlbumTrackNumber; // @"albumTrackNumber", NSNumber of NSUInteger
MP_EXTERN NSString *const MPMediaItemPropertyAlbumTrackCount; // @"albumTrackCount", NSNumber of NSUInteger
MP_EXTERN NSString *const MPMediaItemPropertyDiscNumber; // @"discNumber", NSNumber of NSUInteger
MP_EXTERN NSString *const MPMediaItemPropertyDiscCount; // @"discCount", NSNumber of NSUInteger
MP_EXTERN NSString *const MPMediaItemPropertyArtwork; // @"artwork", MPMediaItemArtwork
MP_EXTERN NSString *const MPMediaItemPropertyLyrics; // @"lyrics", NSString
MP_EXTERN NSString *const MPMediaItemPropertyIsCompilation; // @"isCompilation", NSNumber of BOOL, filterable
MP_EXTERN NSString *const MPMediaItemPropertyReleaseDate NS_AVAILABLE_IPHONE(4_0);
// @"releaseDate", NSDate
MP_EXTERN NSString *const MPMediaItemPropertyBeatsPerMinute NS_AVAILABLE_IPHONE(4_0);
// @"beatsPerMinute", NSNumber of NSUInteger
MP_EXTERN NSString *const MPMediaItemPropertyComments NS_AVAILABLE_IPHONE(4_0);
// @"comments", NSString
MP_EXTERN NSString *const MPMediaItemPropertyAssetURL NS_AVAILABLE_IPHONE(4_0);
// @"assetURL", NSURL
// Podcast properties
MP_EXTERN NSString *const MPMediaItemPropertyPodcastTitle; // @"podcastTitle", NSString, filterable
// User properties
MP_EXTERN NSString *const MPMediaItemPropertyPlayCount; // @"playCount", NSNumber of NSUInteger
MP_EXTERN NSString *const MPMediaItemPropertySkipCount; // @"skipCount", NSNumber of NSUInteger
MP_EXTERN NSString *const MPMediaItemPropertyRating; // @"rating", NSNumber of NSUInteger, 0...5
MP_EXTERN NSString *const MPMediaItemPropertyLastPlayedDate; // @"lastPlayedDate", NSDate
MP_EXTERN NSString *const MPMediaItemPropertyUserGrouping NS_AVAILABLE_IPHONE(4_0);
// @"userGrouping", NSString
대충 title이 노래 제목 albumTitle이 앨범 타이틀 artist가 가수, playbackDuration이 총 재생 시간 등으로 읽어보고 필요한 것들을 위에 사용한 것처럼 NSString *temp_Time = [myPlayer.nowPlayingItem valueForProperty:@"playbackDuration"];
이렇게 가져다가 쓰면 된다.
'프로그래밍 > iOS' 카테고리의 다른 글
NSLog 업그레이드 + Debug 모드에서만 로깅하기 (0) | 2012.07.17 |
---|---|
Build Acrhive 시 icon관련 에러가 발생할때 (0) | 2012.07.11 |
코어데이터 사용시 마이그레이션 문제가 발생할 경우 (0) | 2012.07.04 |
Xcode에서 커스텀 템플릿 만들기 (0) | 2012.06.22 |
프로젝트에 자신의 커스텀 프로젝트를 추가하자(예제 cocos2d) (0) | 2012.06.22 |