版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】怎么在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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 遗传病的诊断和咨询终板
- 肺炎的经验性抗菌治疗
- 骨质疏松诊疗
- 【高一下】浙江省浙南名校联盟2023-2024学年高一下期中联考语文试题含答案
- 初三下学期班主任工作总结(12篇)
- 初二英语作文(5篇)
- 小班综合教案:红绿灯3篇
- 广东省深圳市南澳中学高三数学理期末试卷含解析
- 酒店员工辞职申请书11篇
- 哈佛家训读后感五百字10篇
- 【关于高中地理课堂有效提问的问卷调研探析报告(含问卷)17000字(论文)】
- 2024蓝帽子国内保健品消费趋势报告
- 小学生的生日礼仪课件教案
- 2024年区域经济一体化的新起点
- 机械基础 第三版 课件 (郁志纯) 模块八 液压传动
- 《慢性呼吸道疾病》课件
- 妊娠期急腹症课件
- 天津小学生诗词大赛备考试题库400题(一二年级适用)
- 传染病的传染性评估和风险分级
- 临床级人体组织来源间充质干细胞质量控制管理规范
- 等腰三角形(讲义)
评论
0/150
提交评论