Access device music files from iPhone app programmatically

后端 未结 3 1844
面向向阳花
面向向阳花 2020-12-15 01:56

I want to access music files which are available on the iPhone and get it listed (or) get the file into my iPhone application some delegats and start playing it. Is it possi

3条回答
  •  天命终不由人
    2020-12-15 02:27

    -(void)loadDeviceMusic{
         MPMediaQuery *everything = [[MPMediaQuery alloc] init];
        [everything addFilterPredicate:[MPMediaPropertyPredicate predicateWithValue:[NSNumber numberWithBool:NO] forProperty:MPMediaItemPropertyIsCloudItem]];
        NSArray *itemsFromGenericQuery = [everything items];
        for (MPMediaItem *song in itemsFromGenericQuery) {
        NSURL *assetURL = [song valueForProperty:MPMediaItemPropertyAssetURL];
        AVAsset *asset = [AVAsset assetWithURL:assetURL];
        NSLog(@"SONGS URL=%@",assetURL);
        if ([asset hasProtectedContent] == NO) {
            MP3ObjectsClass *objMp3=[[MP3ObjectsClass alloc] init];
            objMp3.mp3Url=[song valueForProperty:MPMediaItemPropertyAssetURL];
    
            objMp3.mp3Duration=[song valueForProperty: MPMediaItemPropertyPlaybackDuration];
    
            if([song valueForProperty: MPMediaItemPropertyTitle]){
                objMp3.mp3Name=[song valueForProperty: MPMediaItemPropertyTitle];
            }else{
                objMp3.mp3Name=@"Unknown";
            }
            if([song valueForProperty: MPMediaItemPropertyArtist]){
                objMp3.mp3ArtistName=[song valueForProperty: MPMediaItemPropertyArtist];
            }else{
                objMp3.mp3ArtistName=@"Unknown";
            }
            if([song valueForProperty: MPMediaItemPropertyAlbumTitle]){
                objMp3.mp3AlbumTitle=[song valueForProperty: MPMediaItemPropertyAlbumTitle];
            }else{
                objMp3.mp3AlbumTitle=@"Unknown";
            }
            UIImage *mp3Image=[self getAlbumnArtWorkImage:assetURL];
            if(mp3Image){
                objMp3.mp3Image=mp3Image;
            }else{
                objMp3.mp3Image=[UIImage imageNamed:@"DefaultImage"];
            }
            [mp3Array addObject:objMp3];
        }
    }
    }
    
    -(UIImage *)getAlbumnArtWorkImage :(NSURL *)mp3Url{
    
    AVAsset *asset = [AVURLAsset URLAssetWithURL:mp3Url options:nil];
    UIImage *img = nil;
    for (NSString *format in [asset availableMetadataFormats]) {
        for (AVMetadataItem *item in [asset metadataForFormat:format]) {
            if ([[item commonKey] isEqualToString:@"artwork"]) {
                img = [UIImage imageWithData:[item.value copyWithZone:nil]];
            }
        }
    }
    return img;
    }
    

    *** MP3ObjectsClass is a NSObject class. Using above function you can access device music files from iPhone.

提交回复
热议问题