iOS - 音乐播放器之怎么获取音乐列表

方法一:

这个方法是通过获取到沙盒路径,来得到音乐的路径(使用这个方法需要把音乐放进沙盒)

  1. NSFileManager *manager = [NSFileManager defaultManager];
  2. NSString *Documents = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
  3. NSLog(@"%@",Documents);
  4. NSString *LocalStr = [[NSString alloc] initWithFormat:@"%@/Music",Documents];
  5. NSLog(@"%@",LocalStr);
  6. NSArray *LocalArr = [[NSArray alloc] init];
  7. LocalArr = [manager contentsOfDirectoryAtPath:LocalStr error:nil];
  8. for(int i = 0;i < LocalArr.count;i++){
  9. NSString *str1 = [[NSString alloc] init];
  10. str1 = [LocalArr objectAtIndex:i];
  11. MyMusic *music = [[MyMusic alloc] init];
  12. music.path = [NSString stringWithFormat:@"%@/%@",LocalStr,str1];
  13. NSLog(@"%@",music.path);
  14. if([[str1 pathExtension] isEqualToString:@"mp3"]){
  15. NSUInteger a = str1.length-4;
  16. NSRange range = {0,a};
  17. str1 = [str1 substringWithRange:range];
  18. music.name = str1;
  19. [self.musicArray addObject:music];
  20. }
  21. }

方法二:

通过访问ipod音乐库(此方法好像必须要真机调试的,因为模拟器上没有ipod音乐库)

  1. MPMediaQuery *listQuery = [MPMediaQuery songsQuery];//playlistsQuery
  2. NSArray *playlist = [listQuery collections];
  3. MPMediaQuery *listQuery = [[MPMediaQuery alloc] init];
  4. NSArray *playlist = [listQuery items];
  5. for(MPMediaPlaylist *list in playlist){
  6. NSArray *songs = [list items];
  7. for(MPMediaItem *song in songs){
  8. NSString *title = [song valueForProperty:MPMediaItemPropertyTitle];
  9. NSString *artlist = [song valueForProperty:MPMediaItemPropertyArtist];
  10. if(artlist != nil && ![self.musicArray containsObject:title]){
  11. [self.musicArray addObject:title];
  12. }
  13. }
  14. }

方法三:

扫描本地的音乐路径(这个方法直接把音乐放进xcode就好)

  1. NSString *song = [[NSString alloc] init];
  2. NSString *singer = [[NSString alloc] init];
  3. UIImage *img;
  4. NSString *resourcePath = [[NSBundle mainBundle] resourcePath];
  5. NSLog(@"resourcePath = %@",resourcePath);
  6. //取出资源目录下所有mp3文件
  7. //    NSArray *fileArray = [[NSBundle mainBundle] pathsForResourcesOfType:@"mp3" inDirectory:resourcePath];
  8. NSArray *mp3Array = [NSBundle pathsForResourcesOfType:@"mp3" inDirectory:[[NSBundle mainBundle] resourcePath]];
  9. for(NSString *filePath in mp3Array){
  10. NSLog(@"%@",filePath);
  11. NSURL *fileURL = [NSURL fileURLWithPath:filePath];
  12. AVURLAsset *mp3Asset = [AVURLAsset URLAssetWithURL:fileURL options:nil];
  13. for(NSString *format in [mp3Asset availableMetadataFormats]){
  14. NSLog(@"%@",format);
  15. for(AVMetadataItem *metadataItem in [mp3Asset metadataForFormat:format]){
  16. NSLog(@"%@",metadataItem);
  17. img = nil;
  18. if([metadataItem.commonKey isEqualToString:@"title"]){
  19. song = (NSString *)metadataItem.value;
  20. }else if([metadataItem.commonKey isEqualToString:@"artist"]){
  21. singer = (NSString *)metadataItem.value;
  22. }
  23. else if([metadataItem.commonKey isEqualToString:@"artwork"]){
  24. NSData *data = (NSData*)(metadataItem.value);
  25. img = [UIImage imageWithData:data];
  26. }
  27. //                else if([metadataItem.commonKey isEqualToString:@"albumName"]){
  28. //                    albumName = (NSString *)metadataItem.value;
  29. //                }
  30. //            else if([metadataItem.commonKey isEqualToString:@"artwork"]){
  31. //                NSDictionary *dict = (NSDictionary *)metadataItem.value;
  32. //                NSData *data = [dict objectForKey:@"data"];
  33. //   <pre name="code" class="html">if([metadataItem.commonKey isEqualToString:@"artwork"]){
  34. NSDictionary *dict = (NSDictionary *)metadataItem.value;
  35. NSData *data = [dict objectForKey:@"data"];
  36. image = [UIImage imageWithData:data];
  37. self.albumImage.image = image;

image = [UIImage imageWithData:data]; // self.albumImage.image = image; //} } MyMusic *music = [[MyMusic alloc] init]; music.name = song; music.singerName = singer; music.path = filePath; music.image = img; NSLog(@"%@,%@",music.name ,music.singerName); [self.musicArray addObject:music]; } }}


这个方法关于获取音乐的专辑图片我找晚上找到的方法都是下面这句

if([metadataItem.commonKey isEqualToString:@"artwork"]){

  1. NSDictionary *dict = (NSDictionary *)metadataItem.value;
  2. NSData *data = [dict objectForKey:@"data"];//@"value"
  3. image = [UIImage imageWithData:data];
  4. self.albumImage.image = image;
时间: 2024-07-29 11:44:36

iOS - 音乐播放器之怎么获取音乐列表的相关文章

音乐播放器之myeclipse项目

音乐播放器: 这个音乐播放器是用myeclipse打开的项目.假设有问题记得改掉文件的路径名.还有假设图片不显示也可能是图片的路径名不正确,如音乐无法播放也可能是路径名不正确.总之这个游戏有文件的引用,一旦文件找不到,程序不会挂,可是没结果. 注意:用myeclipse导入这个项目,就不会有问题. 假设还是有问题.请留言. 地址链接:点击打开链接

Ubuntu 14.04 用户如何安装深度音乐播放器和百度音乐插件

播放本地音乐或者收听国外的音乐电台,Ubuntu 14.04 自带的音乐播放器 Rhythmbox 完全能够满足,但是如果你想有像酷狗那样的国内播放器就需要折腾一下,还好有深度音乐播放器,这是一款完全为中国人开发的音乐播放器,深度音乐播放器(Dmusic)+ 百度音乐插件=酷狗,但是如果是deepin系统用户就完全不需要折腾了.先截图一下: 安装方法 (注释:我的系统是Ubuntu 14.04 其他系统没有实验,所以不保证是否成功) 先安装深度音乐播放器,安装很方便,有PPA可用,不过安装之前需

C#简单音乐播放器ListBox歌单列表

简单的音乐播放器实现其实并不难,直接用axWindowsmediaplayer来做,这里没有什么技术含量的,但是axWindowsmediaplayer是不会生成歌单列表的,也就是说,在每次添加音乐后axWindowsmediaplayer是没有记录的,那么我就来简单的做下歌单列表. axWindowsmediaplayer的工作原理其实就是根据Path来加载的,在写歌单时我们需要先来做两件事,1.存储歌曲Path 2.存储歌曲名字 这里暂且不考虑数据库,我使用IO操作通过txt文件来存储这两种

兼容IE7音乐播放器之jplayer的使用

首先列出为何要写这篇随笔的原因: 1:兼容IE7 2:音乐播放器 3:任意控制播放器 1: 最近做的网站需要兼容IE7,在此之前已经写好了关于音乐播放的插件,火狐,IE8以上,以及谷歌浏览器等都可以随意播放,但是IE7以及IE8浏览器却无法正常播放,真是恼火至极啊!网上收了一大箩筐音乐播放器都不满足我的要求,基本上都是基于XML配置文件式的,而我的网站需要动态播放音乐,控制音乐单曲循环,我自定义的音乐列表顺序播放等,因此不能满足我的要求,这些播放器要么是html5的要么是纯flash的(无法控制

android音乐播放器之在线播放功能的实现

转发请注明出处:http://blog.csdn.net/qq_28055429/article/details/51327171 前言:由于最近在做一个音乐播放器,需实现在线播放功能的实现,故而找了一些资料,看了别人的一些博客,现在终于可以实现了 需求:根据用户输入歌曲名+歌手名 返回:从百度音乐api查询,若有该曲则播放该曲,若无这里没做异常处理 一,前提解说: (1)百度音乐api提供一个接口地址: http://box.zhangmen.baidu.com/x?op=12&count=1

C#Spring音乐播放器之登录界面编程

Spring音乐播放器,我们小组设计其启动时有一个登录界面,用户初次可以注册,输入用户名和密码,点击注册即将输入信息保存到register文本文件中:如果已有用户名,输入用户名和密码,点击登录,程序会将输入的用户名和密码与已有的用户信息进行比较,如果找到完全匹配的用户名和密码,则进入音乐播放界面:若不匹配,则弹出消息框:用户名或密码错误. 首先建立一个登录界面窗口,添加button,label,和textbox,更改了窗体背景,如下图. 然后对注册和登录按钮进行消息响应编程. C#编程内容主要涉

在线音乐播放器-----酷狗音乐api接口抓取

首先身为一个在线音乐播放器,需要前端和数据库的搭配使用. 在数据库方面,我们没有办法制作,首先是版权问题,再加上数据量.所以我们需要借用其他网络播放器的数据库. 但是这些在线播放器,如百度,酷狗,酷我等在线音乐播放器,是不会提供他们的数据库接口的,所以这个我们需要,在线抓取这些在线音乐播放器的接口,首先,这个事情,是属于违规的.是属于侵犯这些公司的版权的.所以,不能用于商业用途 我们以酷狗音乐为例子,抓取他的连接数据库的API接口 我是用的是谷歌,进入私密模式,因为在这种模式下,不会缓存歌曲 1

ubuntu 14.04 安装 深度音乐播放器与百度音乐插件

从window转到ubuntu真有点不习惯,之前玩玩虚拟机感觉还挺好,但看到ubuntu的界面感觉还蛮好看的,一狠心把硬盘给格了.我,从此IT男!!!囧 罗嗦完了,转正题,刚刚搞好的音乐播放器,把步骤写出来,以后重装少花点时间: 1: 更新源和安装deepin-music-player sudo add-apt-repository ppa:mc3man/trusty-media sudo add-apt-repository ppa:noobslab/deepin-sc sudo apt-ge

委托实现音乐播放器 | 委托实现音乐播放器的缺点 | 事件实现音乐播放器

1,使用委托实现一个音乐播放器的功能呢.(模拟事件) using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; namespace 模拟事件 { /// <summary> /// 音乐播放器类 /// </summary> public class MusicP