有没有办法使用iPhone SDK将iPod音乐文件保存到iPhone App?
答案 0 :(得分:2)
我在桌面视图上显示音频列表,当我点击音频tableview然后我在nsdata中保存的歌曲上传
-(void)startVideoStart:(NSNumber*)number
{
MPMediaItem *song = [miPodSongsArray objectAtIndex:[number intValue]];
songTitle = [song valueForProperty: MPMediaItemPropertyTitle];
NSURL *url = [song valueForProperty:MPMediaItemPropertyAssetURL];
[NSThread detachNewThreadSelector:@selector(loadAudioInBackground:) toTarget:self withObject:url];
[self performSelector:@selector(UploadSong:) withObject:songDict afterDelay:10];
}
-(void)loadAudioInBackground:(NSURL*)url
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc]init];
NSLog(@"%@",url);
AVURLAsset *songAsset = [AVURLAsset URLAssetWithURL: url options:nil];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSLog (@"compatible presets for songAsset: %@",[AVAssetExportSession exportPresetsCompatibleWithAsset:songAsset]);
AVAssetExportSession *exporter = [[AVAssetExportSession alloc]
initWithAsset: songAsset
presetName: AVAssetExportPresetPassthrough];
NSLog (@"created exporter. supportedFileTypes: %@", exporter.supportedFileTypes);
exporter.outputFileType = @"com.apple.m4a-audio";
NSString *exportFile = [documentsDirectory stringByAppendingPathComponent: @"item.m4a"];
NSError *error1;
if([[NSFileManager defaultManager] fileExistsAtPath:exportFile])
{
[[NSFileManager defaultManager] removeItemAtPath:exportFile error:&error1];
}
NSURL* exportURL = [[NSURL fileURLWithPath:exportFile] retain];
exporter.outputURL = exportURL;
// do the export
[exporter exportAsynchronouslyWithCompletionHandler:^{
NSData *data1 = [NSData dataWithContentsOfFile: [documentsDirectory stringByAppendingPathComponent: @"item.m4a"]];
//NSLog(@"%@",data1);
if (songDict) {
[songDict release];
songDict=nil;
}
songDict= [[NSMutableDictionary alloc]init];
[songDict setValue:data1 forKey:@"AudioData"];
[songDict setValue:songTitle forKey:@"AudioName"];
[songDict setValue:[[mAppDelegate.userInfoArray objectAtIndex:1]valueForKey:@"user_id"] forKey:@"user_id"];
//NSLog(@"%@",infoDict);
mAppDelegate.uploadType = @"Audio";
int exportStatus = exporter.status;
switch (exportStatus) {
case AVAssetExportSessionStatusFailed: {
// log error to text view
NSError *exportError = exporter.error;
NSLog (@"AVAssetExportSessionStatusFailed: %@", exportError);
// errorView.text = exportError ? [exportError description] : @"Unknown failure";
//errorView.hidden = NO;
break;
}
case AVAssetExportSessionStatusCompleted: {
NSLog (@"AVAssetExportSessionStatusCompleted");
break;
}
case AVAssetExportSessionStatusUnknown: { NSLog (@"AVAssetExportSessionStatusUnknown");
break; } case AVAssetExportSessionStatusExporting: { NSLog (@"AVAssetExportSessionStatusExporting"); break; }
case AVAssetExportSessionStatusCancelled: { NSLog (@"AVAssetExportSessionStatusCancelled");
break; }
case AVAssetExportSessionStatusWaiting: { NSLog (@"AVAssetExportSessionStatusWaiting"); break; }
default:
{ NSLog (@"didn't get export status"); break; } }
}];
[pool release];
}