01-iOS获取系统iTunes音乐
生活随笔
收集整理的這篇文章主要介紹了
01-iOS获取系统iTunes音乐
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
iOS獲取系統iTunes音樂
- 1.1-簡介
- 1.2-使用系統自帶的控制器選擇iTunes歌曲
- 1.3-只獲取iTunes中的數據,自定義界面
- 1.4—完整代碼
1.1-簡介
獲取類型iTune音樂非常類似于UIKit框架中UIImagePickerController圖片選取器的用法,既可以直接使用系統自帶的媒體選擇器也可以只獲取系統的數據加載到自定義界面中
與UIImagePickerController不同的是,MPMediaPickerController媒體選擇器是放在<MediaPlayer/MediaPlayer.h>框架中的
1.2-使用系統自帶的控制器選擇iTunes歌曲
#pragma mark -使用系統自帶的控制器- (void)presentiTunesMediaPickerController {//1.創建媒體選擇器/**MPMediaType(大概有13種,這里只列出比較常用的幾種)MPMediaTypeMusic:音樂歌曲MPMediaTypePodcast:博客(有聲雜志)MPMediaTypeAudioITunesU:iTuneU中的有聲讀物MPMediaTypeMovie:電影*/MPMediaPickerController *controller = [[MPMediaPickerController alloc] initWithMediaTypes:MPMediaTypeMusic];//2.是否支持多選,默認為nocontroller.allowsPickingMultipleItems = YES;//在導航欄的上方添加一個提示文本controller.prompt = @"傳智播客-黑馬程序員";//3.設置代理(代理比較簡單,只有兩個方法,完成選取和取消選取)controller.delegate = self;//4.彈出媒體選擇器[self presentViewController:controller animated:YES completion:nil]; }- MPMediaPickerControllerDelegate代理
- 解析iTunes歌曲數據
1.3-只獲取iTunes中的數據,自定義界面
- 解析數組的操作與使用系統自帶控制器的方式一致
1.4—完整代碼
#import "ViewController.h"#import <MediaPlayer/MediaPlayer.h> #import <CoreFoundation/CoreFoundation.h> @interface ViewController ()<MPMediaPickerControllerDelegate> @property (weak, nonatomic) IBOutlet UILabel *label;@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view, typically from a nib. }- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {[self presentiTunesMediaPickerController]; }#pragma mark -使用系統自帶的控制器- (void)presentiTunesMediaPickerController {//1.創建媒體選擇器/**MPMediaType(大概有13種,這里只列出比較常用的幾種)MPMediaTypeMusic:音樂歌曲MPMediaTypePodcast:博客(有聲雜志)MPMediaTypeAudioITunesU:iTuneU中的有聲讀物MPMediaTypeMovie:電影*/MPMediaPickerController *controller = [[MPMediaPickerController alloc] initWithMediaTypes:MPMediaTypeMusic];//2.是否支持多選,默認為nocontroller.allowsPickingMultipleItems = YES;//在導航欄的上方添加一個提示文本controller.prompt = @"傳智播客-黑馬程序員";//3.設置代理(代理比較簡單,只有兩個方法,完成選取和取消選取)controller.delegate = self;//4.彈出媒體選擇器[self presentViewController:controller animated:YES completion:nil]; }#pragma mark -只獲取iTunes中的數據,界面自定義 - (void)getiTuneLibrary {// 1.創建媒體選擇隊列(從ipod庫中讀出音樂文件)MPMediaQuery *everything = [[MPMediaQuery alloc] init];// 2.創建讀取條件(類似于對數據做一個篩選) Value:作用等同于MPMediaType枚舉值MPMediaPropertyPredicate *albumNamePredicate =[MPMediaPropertyPredicate predicateWithValue:[NSNumber numberWithInt:MPMediaTypeMusic ] forProperty: MPMediaItemPropertyMediaType];//3.給隊列添加讀取條件[everything addFilterPredicate:albumNamePredicate];//4.從隊列中獲取符合條件的數組集合NSArray *itemsFromGenericQuery = [everything items];//5.便利解析數據for (MPMediaItem *song in itemsFromGenericQuery) {[self resolverMediaItem:song];} }#pragma mark -解析iTune音樂數據 - (void)resolverMediaItem:(MPMediaItem *)song {//歌名NSString *name = [song valueForProperty: MPMediaItemPropertyTitle];//歌曲路徑NSString *url = [song valueForProperty: MPMediaItemPropertyAssetURL];//歌手名字NSString *songer = [song valueForProperty: MPMediaItemPropertyArtist];//歌曲時長(單位:秒)NSTimeInterval INW = [[song valueForProperty: MPMediaItemPropertyPlaybackDuration] doubleValue];NSString *time;if((int)INW%60<10){time = [NSString stringWithFormat:@"%d:0%d",(int)INW/60,(int)INW%60];}else{time = [NSString stringWithFormat:@"%d:%d",(int)INW/60,(int)INW%60];}if(songer == nil){songer = @"未知歌手";}//歌曲插圖(如果沒有插圖,則返回nil)MPMediaItemArtwork *artwork = [song valueForProperty: MPMediaItemPropertyArtwork];//從插圖中獲取圖像,參數size是圖像的大小UIImage *image = [artwork imageWithSize:CGSizeMake(50, 50)];self.label.text = [NSString stringWithFormat:@"歌名:%@ \n 歌曲路徑:%@ \n 歌手名字:%@ \n 歌曲時長%@ \n 歌曲插圖:%@",name,url,songer,time,image]; }#pragma mark -MPMediaPickerControllerDelegate//完成選取 - (void)mediaPicker:(MPMediaPickerController *)mediaPicker didPickMediaItems:(MPMediaItemCollection *)mediaItemCollection {for (MPMediaItem *song in mediaItemCollection.items) {//解析數據[self resolverMediaItem:song];}//解除媒體選擇器器[mediaPicker dismissViewControllerAnimated:YES completion:nil]; }//取消選取 - (void)mediaPickerDidCancel:(MPMediaPickerController *)mediaPicker {//解除媒體選擇器器[mediaPicker dismissViewControllerAnimated:YES completion:nil]; }- (void)didReceiveMemoryWarning {[super didReceiveMemoryWarning];// Dispose of any resources that can be recreated. }@end 與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的01-iOS获取系统iTunes音乐的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 16-CoreData之多表关联(存储自
- 下一篇: AppleWatch开发-AlertCo