【移动应用开发技术】怎么在iOS中获取系统iTunes音乐_第1页
【移动应用开发技术】怎么在iOS中获取系统iTunes音乐_第2页
【移动应用开发技术】怎么在iOS中获取系统iTunes音乐_第3页
【移动应用开发技术】怎么在iOS中获取系统iTunes音乐_第4页
【移动应用开发技术】怎么在iOS中获取系统iTunes音乐_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【移动应用开发技术】怎么在iOS中获取系统iTunes音乐

这篇文章将为大家详细讲解有关怎么在iOS中获取系统iTunes音乐,文章内容质量较高,因此在下分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、创建MPMediaPickerController

*mpc

=

[[MPMediaPickerControlleralloc]initWithMediaTypes:MPMediaTypeMusic];

mpc.delegate

=

self;//委托

mpt

=@"Please

select

a

music";//提示文字

mpc.allowsPickingMultipleItems=NO;//是否允许一次选择多个上述代码创建了一个MPMediaPickerController并设置了相关属性。其中初始化的时候有一个参数是媒体类型,媒体类型可以是下面这些值:enum

{

//

audio

MPMediaTypeMusic

=

1

<<

0,

MPMediaTypePodcast

=

1

<<

1,

MPMediaTypeAudioBook

=

1

<<

2,

MPMediaTypeAudioITunesU

=

1

<<

3,

//

available

in

iOS

5.0

MPMediaTypeAnyAudio

=

0x00ff,

//

video

(available

in

iOS

5.0)

MPMediaTypeMovie

=

1

<<

8,

MPMediaTypeTVShow

=

1

<<

9,

MPMediaTypeVideoPodcast

=

1

<<

10,

MPMediaTypeMusicVideo

=

1

<<

11,

MPMediaTypeVideoITunesU

=

1

<<

12,

MPMediaTypeAnyVideo

=

0xff00,

MPMediaTypeAny

=

~0

};

typedef

NSInteger

MPMediaType;二、委托函数-

(void)mediaPicker:(MPMediaPickerController

*)mediaPicker

didPickMediaItems:(MPMediaItemCollection

*)mediaItemCollection{

/*insert

your

code*/

for

(

MPMediaItem*

itemin

[mediaItemCollection

items])

{

}

[selfdismissModalViewControllerAnimated:YES];

[mediaPicker

release];

}在上面这个函数里你可以处理所选取的内容。下面这个函数负责处理选中后取消的动作:-(void)mediaPickerDidCancel:(MPMediaPickerController

*)mediaPicker{

/*insert

your

code*/

[selfdismissModalViewControllerAnimated:YES];

[mediaPicker

release];

}三、显示你可以在任何需要显示的时候调用下面代码:[selfpresentModalViewController:mpc

animated:YES];使用系统自带的控制器选择iTunes歌曲#pragma

mark

-使用系统自带的控制器

-

(void)presentiTunesMediaPickerController

{

//1.创建媒体选择器

/**MPMediaType(大概有13种,这里只列出比较常用的几种)

MPMediaTypeMusic:音乐歌曲

MPMediaTypePodcast:博客(有声杂志)

MPMediaTypeAudioITunesU:iTuneU中的有声读物

MPMediaTypeMovie:电影

*/

MPMediaPickerController

*controller

=

[[MPMediaPickerController

alloc]

initWithMediaTypes:MPMediaTypeMusic];

//2.是否支持多选,默认为no

controller.allowsPickingMultipleItems

=

YES;

//在导航栏的上方添加一个提示文本

mpt

=

@"传智播客-黑马程序员";

//3.设置代理(代理比较简单,只有两个方法,完成选取和取消选取)

controller.delegate

=

self;

//4.弹出媒体选择器

[self

presentViewController:controller

animated:YES

completion:nil];

}1、MPMediaPickerControllerDelegate代理#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];

}2、解析iTunes歌曲数据#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];

}只获取iTunes中的数据,自定义界面解析数组的操作与使用系统自带控制器的方式一致//

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];

}完整代码#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.是否支持多选,默认为no

controller.allowsPickingMultipleItems

=

YES;

//在导航栏的上方添加一个提示文本

mpt

=

@"传智播客-黑马程序员";

//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

歌曲

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论