我开发音乐的iPhone应用程序。 我想给一些选项给用户,使他们能够通过收听流式播放的歌曲/音乐或他们可以下载音乐的应用程序 。 我知道如何编程流中的应用程序的音频文件。 但是,我不知道如何下载音频文件的应用程序,下载后播放音频。 而且用户可以暂停下载,而它在下载。 是否有可能呢? 任何人都可以请指导我,请分享任何代码示例或教程给我吗? 我还有一个疑问:能否请你帮我创建应用程序的一个文件夹里面? 请帮我。 提前致谢。
Answer 1:
创建文件夹
对于每一个应用程序,你有一个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];
Answer 2:
是的,你可以下载的音频文件,并通过AVAudioPlayer播放下载的文件。 我不知道究竟如何下载时暂停,但是我已经下载音频和播放。 您可以从ASIHTTP请求或其他下载。
您可以按照这些链接。
- http://allseeing-i.com/ASIHTTPRequest/How-to-use#tracking_progress
- 关于使用ASIHttpRequest下载文件
文章来源: How to download audio/video files from internet and store in iPhone app?