UIwebview 檔案的下載與儲存,以及mp3檔案的播放

來源:互聯網
上載者:User

標籤:style   blog   http   io   ar   color   os   使用   sp   

http://blog.csdn.net/a6472953/article/details/7866033 [cpp] view plaincopy
  1. 這裡只是說說非同步 單線程下載與檔案的儲存  
  2. 以下載一個mp3檔案並儲存為例:  
  3.   
  4. -(void)loading  
  5. {  
  6.     //設定檔案   
  7.     NSString *urlString = [NSString stringWithFormat:@"http://zhangmenshiting2.baidu.com/data2/music/14893666/14893666.mp3?xcode=f7e142418de081ff52f81344843b869a&mid=0.73830637514858"];//這裡設定的是一個mp3的  
  8.     NSString * encodedString = (NSString *)CFURLCreateStringByAddingPercentEscapes( kCFAllocatorDefault, (CFStringRef)urlString, NULL, NULL,  kCFStringEncodingUTF8 );  
  9.     NSURL *url =[NSURL URLWithString:encodedString];  
  10.       
  11.     //建立NSURLRequest和NSURLConnection,並立即啟動串連  
  12.     NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:5.0f];  
  13.     NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:YES];  
  14.    if (connection)   
  15.     {              
  16.           self.receivedData = [NSMutableData data];//初始化接收資料的緩衝  
  17.     }   
  18.      else   
  19.      {  
  20.                       NSLog(@"Bad Connection!");  
  21.       }  
  22.   
  23.     [request release];  
  24.     [connection release];  
  25. }  
  26. - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response  
  27. {  
  28.     [receivedData setLength:0];//置空資料  
  29.     long long mp3Size = [response expectedContentLength];//擷取要下載的檔案的長度  
  30.     NSLog(@"%lld",mp3Size);  
  31.   
  32.  }  
  33.   
  34. //接收NSMutableData資料  
  35. - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data   
  36. {  
  37.     [receivedData appendData:data];  
  38. }  
  39.   
  40. //接收完畢  
  41. - (void)connectionDidFinishLoading:(NSURLConnection *)connection   
  42. {  
  43.     [connection cancel];  
  44.  //在儲存檔案和播放檔案之前可以做一些判斷,保證程式的健壯行:例如:檔案是否存在,接收的資料是否完整等處理,此處沒加,使用時注意  
  45.     NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);      
  46.     NSString *documentsDirectory = [paths objectAtIndex:0];  
  47.     NSLog(@"mp3 path=%@",documentsDirectory);      
  48.     NSString *filePath = [documentsDirectory stringByAppendingPathComponent: mp3Name];//mp3Name:你要儲存的檔案名稱,包括檔案類型。如果你知道檔案類型的話,可以指定檔案類型;如果事先不知道檔案類型,可以在- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response中擷取要下載的檔案類型  
  49.       
  50.     //在document下建立檔案  
  51.     NSFileManager *fileManager = [NSFileManager defaultManager];   
  52.     [fileManager createFileAtPath:filePath contents:nil attributes:nil];  
  53.     NSLog(@"mp3 path=%@",filePath);  
  54.     //將下載的資料,寫入檔案中  
  55.     [receivedData writeToFile:filePath atomically:YES];  
  56.   
  57.    //播放下載下來的mp3檔案  
  58.     [self playVoice:filePath];  
  59.   
  60.      
  61.   //如果下載的是圖片則可以用下面的方法產生圖片並顯示 create image from data and set it to ImageView  
  62.    /* 
  63.      UIImage *image = [[UIImage alloc] initWithData:recvData]; 
  64.     [imgView setImage:image]; 
  65.     */  
  66. }     
  67.   
  68. 簡單的播放mp3檔案的方法:  
  69. 使用前要添加庫:AudioToolbox.framework和AVFoundation.framework,  
  70. //添加標頭檔  
  71. #import <AVFoundation/AVFoundation.h>  
  72. #import <AudioToolbox/AudioToolbox.h>  
  73. -(void)playVoice:(NSString *)filePath  
  74. {  
  75.     //播放檔案的路徑  
  76.     NSURL * musicURL= [[NSURL alloc] initFileURLWithPath:filePath];    
  77.   
  78.     //建立音頻 播放器  
  79.     AVAudioPlayer * voicePlayer  = [[AVAudioPlayer alloc] initWithContentsOfURL:musicURL error:nil];  
  80.     self.thePlayer = voicePlayer;  
  81.     [voicePlayer release];  
  82.     
  83.     [musicURL release];  
  84.     [thePlayer setVolume:1];   //設定音量大小  
  85.     thePlayer.numberOfLoops = -1;//設定音樂播放次數  -1為一直迴圈  
  86.       
  87.    //播放mp3,如果想要實現一些別的功能,可以看看AVAudioPlayer這個類,這裡只是實現播放功能  
  88.      [thePlayer play];  
  89. }  

UIwebview 檔案的下載與儲存,以及mp3檔案的播放

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.