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

Posted 公羽寒

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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.   
  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 - 音乐播放器之怎么获取音乐列表的主要内容,如果未能解决你的问题,请参考以下文章

IOS开发之——音乐播放器-资源和Model(02)

iOS音频播放之AudioQueue:播放本地音乐

iOS音频播放之AudioQueue:播放本地音乐

许嵩音乐智能问答系统微信小程序之音乐播放器

Audio Ducking 后音乐更柔和?

android中怎么样能获取正在播放的音乐名?