版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】怎么在iOS中獲取系統(tǒng)iTunes音樂(lè)
這篇文章將為大家詳細(xì)講解有關(guān)怎么在iOS中獲取系統(tǒng)iTunes音樂(lè),文章內(nèi)容質(zhì)量較高,因此在下分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。一、創(chuàng)建MPMediaPickerController
*mpc
=
[[MPMediaPickerControlleralloc]initWithMediaTypes:MPMediaTypeMusic];
mpc.delegate
=
self;//委托
mpt
=@"Please
select
a
music";//提示文字
mpc.allowsPickingMultipleItems=NO;//是否允許一次選擇多個(gè)上述代碼創(chuàng)建了一個(gè)MPMediaPickerController并設(shè)置了相關(guān)屬性。其中初始化的時(shí)候有一個(gè)參數(shù)是媒體類型,媒體類型可以是下面這些值: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;二、委托函數(shù)-
(void)mediaPicker:(MPMediaPickerController
*)mediaPicker
didPickMediaItems:(MPMediaItemCollection
*)mediaItemCollection{
/*insert
your
code*/
for
(
MPMediaItem*
itemin
[mediaItemCollection
items])
{
}
[selfdismissModalViewControllerAnimated:YES];
[mediaPicker
release];
}在上面這個(gè)函數(shù)里你可以處理所選取的內(nèi)容。下面這個(gè)函數(shù)負(fù)責(zé)處理選中后取消的動(dòng)作:-(void)mediaPickerDidCancel:(MPMediaPickerController
*)mediaPicker{
/*insert
your
code*/
[selfdismissModalViewControllerAnimated:YES];
[mediaPicker
release];
}三、顯示你可以在任何需要顯示的時(shí)候調(diào)用下面代碼:[selfpresentModalViewController:mpc
animated:YES];使用系統(tǒng)自帶的控制器選擇iTunes歌曲#pragma
mark
-使用系統(tǒng)自帶的控制器
-
(void)presentiTunesMediaPickerController
{
//1.創(chuàng)建媒體選擇器
/**MPMediaType(大概有13種,這里只列出比較常用的幾種)
MPMediaTypeMusic:音樂(lè)歌曲
MPMediaTypePodcast:博客(有聲雜志)
MPMediaTypeAudioITunesU:iTuneU中的有聲讀物
MPMediaTypeMovie:電影
*/
MPMediaPickerController
*controller
=
[[MPMediaPickerController
alloc]
initWithMediaTypes:MPMediaTypeMusic];
//2.是否支持多選,默認(rèn)為no
controller.allowsPickingMultipleItems
=
YES;
//在導(dǎo)航欄的上方添加一個(gè)提示文本
mpt
=
@"傳智播客-黑馬程序員";
//3.設(shè)置代理(代理比較簡(jiǎn)單,只有兩個(gè)方法,完成選取和取消選?。?/p>
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)
{
//解析數(shù)據(jù)
[self
resolverMediaItem:song];
}
//解除媒體選擇器器
[mediaPicker
dismissViewControllerAnimated:YES
completion:nil];
}
//取消選取
-
(void)mediaPickerDidCancel:(MPMediaPickerController
*)mediaPicker
{
//解除媒體選擇器器
[mediaPicker
dismissViewControllerAnimated:YES
completion:nil];
}2、解析iTunes歌曲數(shù)據(jù)#pragma
mark
-解析iTune音樂(lè)數(shù)據(jù)
-
(void)resolverMediaItem:(MPMediaItem
*)song
{
//歌名
NSString
*name
=
[song
valueForProperty:
MPMediaItemPropertyTitle];
//歌曲路徑
NSString
*url
=
[song
valueForProperty:
MPMediaItemPropertyAssetURL];
//歌手名字
NSString
*songer
=
[song
valueForProperty:
MPMediaItemPropertyArtist];
//歌曲時(shí)長(zhǎng)(單位:秒)
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
=
@"未知歌手";
}
//歌曲插圖(如果沒(méi)有插圖,則返回nil)
MPMediaItemArtwork
*artwork
=
[song
valueForProperty:
MPMediaItemPropertyArtwork];
//從插圖中獲取圖像,參數(shù)size是圖像的大小
UIImage
*image
=
[artwork
imageWithSize:CGSizeMake(50,
50)];
self.label.text
=
[NSString
stringWithFormat:@"歌名:%@
\n
歌曲路徑:%@
\n
歌手名字:%@
\n
歌曲時(shí)長(zhǎng)%@
\n
歌曲插圖:%@",name,url,songer,time,image];
}只獲取iTunes中的數(shù)據(jù),自定義界面解析數(shù)組的操作與使用系統(tǒng)自帶控制器的方式一致//
1.創(chuàng)建媒體選擇隊(duì)列(從ipod庫(kù)中讀出音樂(lè)文件)
MPMediaQuery
*everything
=
[[MPMediaQuery
alloc]
init];
//
2.創(chuàng)建讀取條件(類似于對(duì)數(shù)據(jù)做一個(gè)篩選)
Value:作用等同于MPMediaType枚舉值
MPMediaPropertyPredicate
*albumNamePredicate
=
[MPMediaPropertyPredicate
predicateWithValue:[NSNumber
numberWithInt:MPMediaTypeMusic
]
forProperty:
MPMediaItemPropertyMediaType];
//3.給隊(duì)列添加讀取條件
[everything
addFilterPredicate:albumNamePredicate];
//4.從隊(duì)列中獲取符合條件的數(shù)組集合
NSArray
*itemsFromGenericQuery
=
[everything
items];
//5.便利解析數(shù)據(jù)
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
-使用系統(tǒng)自帶的控制器
-
(void)presentiTunesMediaPickerController
{
//1.創(chuàng)建媒體選擇器
/**MPMediaType(大概有13種,這里只列出比較常用的幾種)
MPMediaTypeMusic:音樂(lè)歌曲
MPMediaTypePodcast:博客(有聲雜志)
MPMediaTypeAudioITunesU:iTuneU中的有聲讀物
MPMediaTypeMovie:電影
*/
MPMediaPickerController
*controller
=
[[MPMediaPickerController
alloc]
initWithMediaTypes:MPMediaTypeMusic];
//2.是否支持多選,默認(rèn)為no
controller.allowsPickingMultipleItems
=
YES;
//在導(dǎo)航欄的上方添加一個(gè)提示文本
mpt
=
@"傳智播客-黑馬程序員";
//3.設(shè)置代理(代理比較簡(jiǎn)單,只有兩個(gè)方法,完成選取和取消選取)
controller.delegate
=
self;
//4.彈出媒體選擇器
[self
presentViewController:controller
animated:YES
completion:nil];
}
#pragma
mark
-只獲取iTunes中的數(shù)據(jù),界面自定義
-
(void)getiTuneLibrary
{
//
1.創(chuàng)建媒體選擇隊(duì)列(從ipod庫(kù)中讀出音樂(lè)文件)
MPMediaQuery
*everything
=
[[MPMediaQuery
alloc]
init];
//
2.創(chuàng)建讀取條件(類似于對(duì)數(shù)據(jù)做一個(gè)篩選)
Value:作用等同于MPMediaType枚舉值
MPMediaPropertyPredicate
*albumNamePredicate
=
[MPMediaPropertyPredicate
predicateWithValue:[NSNumber
numberWithInt:MPMediaTypeMusic
]
forProperty:
MPMediaItemPropertyMediaType];
//3.給隊(duì)列添加讀取條件
[everything
addFilterPredicate:albumNamePredicate];
//4.從隊(duì)列中獲取符合條件的數(shù)組集合
NSArray
*itemsFromGenericQuery
=
[everything
items];
//5.便利解析數(shù)據(jù)
for
(MPMediaItem
*song
in
itemsFromGenericQuery)
{
[self
resolverMediaItem:song];
}
}
#pragma
mark
-解析iTune音樂(lè)數(shù)據(jù)
-
(void)resolverMediaItem:(MPMediaItem
*)song
{
//歌名
NSString
*name
=
[song
valueForProperty:
MPMediaItemPropertyTitle];
//歌曲路徑
NSString
*url
=
[song
valueForProperty:
MPMediaItemPropertyAssetURL];
//歌手名字
NSString
*songer
=
[song
valueForProperty:
MPMediaItemPropertyArtist];
//歌曲時(shí)長(zhǎng)(單位:秒)
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
=
@"未知歌手";
}
//歌曲插圖(如果沒(méi)有插圖,則返回nil)
MPMediaItemArtwork
*artwork
=
[song
valueForProperty:
MPMediaItemPropertyArtwork];
//從插圖中獲取圖像,參數(shù)size是圖像的大小
UIImage
*image
=
[artwork
imageWithSize:CGSizeMake(50,
50)];
self.label.text
=
[NSString
stringWithFormat:@"歌名:%@
\n
歌曲路徑:%@
\n
歌手名字:%@
\n
歌曲
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 磁羅盤相關(guān)行業(yè)項(xiàng)目建議書(shū)
- 高中數(shù)學(xué) 第二章 點(diǎn)、直線、平面之間的位置關(guān)系 2.2 直線、平面平行的判定及其性質(zhì) 2.2.2 平面與平面平行的判定教案 新人教A版必修2
- 高考地理大一輪復(fù)習(xí) 第一冊(cè) 第四單元 第1-2講自然資源 自然災(zāi)害與人類
- 2025年江西省九江同文中學(xué)下學(xué)期高三生物試題高考仿真考試試卷含解析
- 2025年黑龍江省黑河市遜克縣一中高三年級(jí)五校聯(lián)考(一)生物試題含解析
- 2025年廣西南寧市三中高三下學(xué)期第一次統(tǒng)測(cè)考試生物試題含解析
- 2021年度保險(xiǎn)代理人資格考試復(fù)習(xí)要點(diǎn)
- 2022年人教版八年級(jí)數(shù)學(xué)下冊(cè)第十八章-平行四邊形難點(diǎn)解析試題(含詳細(xì)解析)
- 跌落試驗(yàn)機(jī)行業(yè)相關(guān)項(xiàng)目可行性研究報(bào)告
- 液晶聚合物L(fēng)CP行業(yè)相關(guān)項(xiàng)目可行性研究報(bào)告
- 2024商業(yè)保理居間服務(wù)合同
- 2024年4月自考00155中級(jí)財(cái)務(wù)會(huì)計(jì)試題及答案
- 新高考數(shù)學(xué)大一輪復(fù)習(xí)講義之方法技巧專題04基本不等式及其應(yīng)用(原卷版+解析)
- 2024年全國(guó)高考體育單招考試語(yǔ)文試卷試題(含答案詳解) (二)
- 學(xué)生研究性課題研究
- 2024年發(fā)展對(duì)象考試測(cè)試題庫(kù)附含答案
- 2024-2030年國(guó)內(nèi)油井水泥行業(yè)市場(chǎng)發(fā)展分析及發(fā)展前景與投資機(jī)會(huì)研究報(bào)告
- 工業(yè)級(jí)海綿鋯市場(chǎng)現(xiàn)狀研究分析與發(fā)展前景預(yù)測(cè)報(bào)告
- 2024年湖南汽車工程職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)及答案解析
- (正式版)JBT 7122-2024 交流真空接觸器 基本要求
- 幼兒園小學(xué)化專項(xiàng)整治方案
評(píng)論
0/150
提交評(píng)論