我正在为音乐开发 iPhone 应用程序。我想为用户提供一些选项,以便他们可以通过流媒体收听歌曲/音乐,或者他们可以在应用程序中下载音乐。我知道如何以编程方式在应用程序中流式传输音频文件。但是,我不知道如何在应用程序中下载音频文件并在下载后播放音频。用户还可以在下载时暂停下载。有可能吗?谁能指导我并为我分享任何示例代码或教程?我还有一个疑问:您能帮我在应用程序内创建一个文件夹吗?请帮我。提前致谢。
问问题
44390 次
2 回答
52
创建文件夹
对于每个应用程序,您都有一个Documents Folder
. 您在应用程序中使用的任何文件都存储在这里。如果你想在这里创建更多目录,那么你会做这样的事情:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0]; // Get documents folder
NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"MyNewFolder"];
if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath])
[[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:&error]; //Create folder if it doesn't already exist
下载
如果你想从互联网上下载音频文件,那么你想看看一种异步方法。这意味着应用程序可以在您的下载在后台进行时继续执行操作。
为此,我建议您使用ASIHTTPREQUEST。它非常适合执行任何下载请求,为您提供许多选项,例如暂停下载(根据您的要求)。
该网站提供了大量有关下载和存储文件的文档。查看此页面上的“下载文件”部分。
您只需执行以下操作:
NSURL *url = [NSURL URLWithString:@"http://www.fileurl.com/example.mp3"];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setDownloadDestinationPath:[NSString stringWithFormat:@"%@",dataPath]]; //use the path from earlier
[request setDelegate:self];
[request startAsynchronous];
然后只需通过 ASIHTTPRequest 提供的委托方法来处理进度和完成。
播放
播放文件非常简单。一旦它在设备上并且您知道它在哪里,只需将其加载到音频播放器中即可。
这里有一个关于使用AVAudioPlayer播放声音的很棒的教程。在您的情况下使用它的一个非常简单的示例是:
NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/audiofile.mp3",dataPath];
NSError *error;
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
if (audioPlayer == nil)
NSLog([error description]);
else
[audioPlayer play];
于 2012-04-20T12:10:21.310 回答
0
是的,您可以通过 AVAudioPlayer 下载音频文件和播放下载的文件。我不完全知道下载时如何暂停,但我已经下载了音频并播放了。您可以从 ASIHTTP Request 或其他下载。
您可以点击这些链接。
于 2012-04-20T12:12:22.577 回答