美文网首页音、視頻編解碼iOS程序猿
iOS播放手机本地音乐库的歌曲

iOS播放手机本地音乐库的歌曲

作者: Mir_Crazy | 来源:发表于2016-12-16 13:44 被阅读867次

注意:这个本地音乐并不是说将歌曲放到项目中的歌曲文件,而且放在手机本地音乐库(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];//播放列表数组

for (MPMediaPlaylist * list in playlist) {

NSArray *songs = [list items];//歌曲数组

for (MPMediaItem *song in songs) {

//歌曲名

NSString *title =[song valueForProperty:MPMediaItemPropertyTitle];

//歌手名

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

//链接    注意: 如果后面不调用 absoluteString ,播放会崩溃

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

//将歌曲保存到字典中, 并将字典转成模型

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

}

以上的方法是获取手机本地音乐库中的列表,

将列表添加数据源中

- (NSArray *)musicsList {

if (!_musicsList) {

_musicsList = [self  findArtistList];

[self.tableView reloadData];

}

return _musicsList;

}

将这些数据展示到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];
}

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

另外网上还有另外一种方法是使用MPMediaPickerController的,但是这个方法会modal出一个自带的界面.一般情况下不会使用到.
点击歌曲就可以播放了.
效果图:


FullSizeRender.jpg

相关文章

网友评论

  • zdl:这个iPod音乐库中的音乐是怎么来的 ??? 能添加qq音乐下载的音频文件吗
  • __阳阳:大神, 请教一下, 获取到音乐地址以后怎么将其转换成数据流呢? 我用dataWithContentsOfURL 和 dataWithContentsOfFile 两个方法都不行, 获取的数据流一直是空的

本文标题:iOS播放手机本地音乐库的歌曲

本文链接:https://www.haomeiwen.com/subject/utynmttx.html