iOS播放手機本地音樂庫的歌曲

注意:這個本地音樂并不是說將歌曲放到項目中的歌曲文件,而且放在手機本地音樂庫(ipod)的音樂.
因為比較簡單,所以就直接上代碼了.

使用之前需要添加 - MediaPlayer.framework

導入頭文件
#import <MediaPlayer/MediaPlayer.h>

#import <AVFoundation/AVFoundation.h>

//獲取本地音樂文件,返回歌曲列表

-(NSArray*) findArtistList {

NSMutableArray *artistList = [[NSMutableArray alloc]init];

NSMutableDictionary *dict = [NSMutableDictionary dictionary];

MPMediaQuery *listQuery = [MPMediaQuery playlistsQuery];//播放列表

NSArray *playlist = [listQuery collections];//播放列表數(shù)組

for (MPMediaPlaylist * list in playlist) {

NSArray *songs = [list items];//歌曲數(shù)組

for (MPMediaItem *song in songs) {

//歌曲名

NSString *title =[song valueForProperty:MPMediaItemPropertyTitle];

//歌手名

NSString *artist =[[song valueForProperty:MPMediaItemPropertyArtist] uppercaseString];

//鏈接    注意: 如果后面不調(diào)用 absoluteString ,播放會崩潰

NSString *url = [[song valueForProperty: MPMediaItemPropertyAssetURL] absoluteString];

//將歌曲保存到字典中, 并將字典轉(zhuǎn)成模型

[dict setObject:title forKey:@"songName"];

[dict setObject:artist forKey:@"singer"];

[dict setObject:url forKey:@"url"];

HFLocalMusicItem *item = [HFLocalMusicItem itemWithDictionary:dict];

if(artist!=nil&&![artistList containsObject:artist]){

[artistList addObject: item];

  }

}

}

return artistList;

}

以上的方法是獲取手機本地音樂庫中的列表,

將列表添加數(shù)據(jù)源中

- (NSArray *)musicsList {

if (!_musicsList) {

_musicsList = [self  findArtistList];

[self.tableView reloadData];

}

return _musicsList;

}

將這些數(shù)據(jù)展示到tablview中,在 tableView的代理方法didSelectRowAtIndexPath中點擊播放

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
HFLocalMusicItem *item = self.musicsList[indexPath.row];

self.audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL URLWithString:item.url] error:nil];

[self.audioPlayer play];
}

注意:播放器一定要強引用.

另外網(wǎng)上還有另外一種方法是使用MPMediaPickerController的,但是這個方法會modal出一個自帶的界面.一般情況下不會使用到.
點擊歌曲就可以播放了.
效果圖:


FullSizeRender.jpg
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容