码迷,mamicode.com
首页 > 移动开发 > 详细

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

时间:2017-06-14 14:26:11      阅读:268      评论:0      收藏:0      [点我收藏+]

标签:目录   name   elf   沙盒   pre   type   com   url   ber   

 

方法一:

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

  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.   
  10. for(NSString *filePath in mp3Array){  
  11.     NSLog(@"%@",filePath);  
  12.     NSURL *fileURL = [NSURL fileURLWithPath:filePath];  
  13.     AVURLAsset *mp3Asset = [AVURLAsset URLAssetWithURL:fileURL options:nil];  
  14.     for(NSString *format in [mp3Asset availableMetadataFormats]){  
  15.         NSLog(@"%@",format);  
  16.         for(AVMetadataItem *metadataItem in [mp3Asset metadataForFormat:format]){  
  17.             NSLog(@"%@",metadataItem);  
  18.             img = nil;  
  19.             if([metadataItem.commonKey isEqualToString:@"title"]){  
  20.                 song = (NSString *)metadataItem.value;  
  21.             }else if([metadataItem.commonKey isEqualToString:@"artist"]){  
  22.                 singer = (NSString *)metadataItem.value;  
  23.             }  
  24.             else if([metadataItem.commonKey isEqualToString:@"artwork"]){  
  25.                 NSData *data = (NSData*)(metadataItem.value);  
  26.                 img = [UIImage imageWithData:data];  
  27.             }  
  28.               
  29.             //                else if([metadataItem.commonKey isEqualToString:@"albumName"]){  
  30.             //                    albumName = (NSString *)metadataItem.value;  
  31.             //                }  
  32.             //            else if([metadataItem.commonKey isEqualToString:@"artwork"]){  
  33.             //                NSDictionary *dict = (NSDictionary *)metadataItem.value;  
  34.             //                NSData *data = [dict objectForKey:@"data"];  
  35.             //   <pre name="code" class="html">if([metadataItem.commonKey isEqualToString:@"artwork"]){  
  36.                             NSDictionary *dict = (NSDictionary *)metadataItem.value;  
  37.                             NSData *data = [dict objectForKey:@"data"];  
  38.                             image = [UIImage imageWithData:data];  
  39.                             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;  

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

标签:目录   name   elf   沙盒   pre   type   com   url   ber   

原文地址:http://www.cnblogs.com/gongyuhonglou/p/7008243.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!