最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android 使用URLConnection下載音頻文件的方法

 更新時(shí)間:2019年09月25日 09:05:34   作者:返回主頁(yè) RF-Dev  
有時(shí)候我們會(huì)需要下載音頻文件。這里提供一種思路,將在線音頻文件通過流寫到本地文件中。需要的朋友可以參考下

使用MediaPlayer播放在線音頻,請(qǐng)參考Android MediaPlayer 播放音頻

有時(shí)候我們會(huì)需要下載音頻文件。這里提供一種思路,將在線音頻文件通過流寫到本地文件中。

使用URLConnection來建立連接,獲取到的數(shù)據(jù)寫到文件中。

URLConnection建立連接后,可以獲取到數(shù)據(jù)長(zhǎng)度。由此我們可以計(jì)算出下載進(jìn)度。

 public class DownloadStreamThread extends Thread {
  String urlStr;
  final String targetFileAbsPath;
  public DownloadStreamThread(String urlStr, String targetFileAbsPath) {
   this.urlStr = urlStr;
   this.targetFileAbsPath = targetFileAbsPath;
  }
  @Override
  public void run() {
   super.run();
   int count;
   File targetFile = new File(targetFileAbsPath);
   try {
    boolean n = targetFile.createNewFile();
    Log.d(TAG, "Create new file: " + n + ", " + targetFile);
   } catch (IOException e) {
    Log.e(TAG, "run: ", e);
   }
   try {
    URL url = new URL(urlStr);
    URLConnection connection = url.openConnection();
    connection.connect();
    int contentLength = connection.getContentLength();
    InputStream input = new BufferedInputStream(url.openStream());
    OutputStream output = new FileOutputStream(targetFileAbsPath);
    byte[] buffer = new byte[1024];
    long total = 0;
    while ((count = input.read(buffer)) != -1) {
     total += count;
     Log.d(TAG, String.format(Locale.CHINA, "Download progress: %.2f%%", 100 * (total / (double) contentLength)));
     output.write(buffer, 0, count);
    }
    output.flush();
    output.close();
    input.close();
   } catch (Exception e) {
    Log.e(TAG, "run: ", e);
   }
  }
 }

啟動(dòng)下載,即啟動(dòng)線程。

new DownloadStreamThread(urlStr, targetFileAbsPath).start();

值得注意的是,如果本地已經(jīng)有了文件,需要做一些邏輯判斷。例如是否刪掉舊文件,重新下載?;蚴桥袛喑鲆延形募?,中止此次下載任務(wù)。

例如可以用connection.getContentLength()與當(dāng)前文件長(zhǎng)度來比較,如果不一致,則刪掉本地文件,重新下載。

實(shí)際上,URLConnection能處理很多流媒體。在這里是用來下載音頻文件??梢詫?shí)現(xiàn)下載功能和類似“邊下邊播”的功能。

代碼可以參考示例工程: https://github.com/RustFisher/android-MediaPlayer

總結(jié)

以上所述是小編給大家介紹的Android 使用URLConnection下載音頻文件的方法,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!

相關(guān)文章

  • Android仿搜狐視頻、微視等列表播放視頻功能

    Android仿搜狐視頻、微視等列表播放視頻功能

    這篇文章主要為大家詳細(xì)介紹了Android仿搜狐視頻、微視等列表播放視頻功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • Android消息機(jī)制原理深入分析

    Android消息機(jī)制原理深入分析

    這篇文章主要介紹了Android消息機(jī)制原理,Android的消息機(jī)制主要是指Handler的運(yùn)行機(jī)制以及Handler所附帶的MessageQueue和Looper的工作過程
    2022-12-12
  • Flutter構(gòu)建自定義Widgets的全過程記錄

    Flutter構(gòu)建自定義Widgets的全過程記錄

    在Flutter實(shí)際開發(fā)中,大家可能會(huì)遇到flutter框架中提供的widget達(dá)不到我們想要的效果,這時(shí)就需要我們?nèi)プ远xwidget,下面這篇文章主要給大家介紹了關(guān)于Flutter構(gòu)建自定義Widgets的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • Android CameraX打開攝像頭預(yù)覽教程

    Android CameraX打開攝像頭預(yù)覽教程

    大家好,本篇文章主要講的是Android CameraX打開攝像頭預(yù)覽教程,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下
    2021-12-12
  • Android創(chuàng)建和使用數(shù)據(jù)庫(kù)SQLIte

    Android創(chuàng)建和使用數(shù)據(jù)庫(kù)SQLIte

    這篇文章主要為大家詳細(xì)介紹了Android創(chuàng)建和使用數(shù)據(jù)庫(kù)SQLIte的相關(guān)資料,感興趣的小伙伴們可以參考一下
    2016-05-05
  • Android基礎(chǔ)知識(shí)之tween動(dòng)畫效果

    Android基礎(chǔ)知識(shí)之tween動(dòng)畫效果

    Android基礎(chǔ)知識(shí)之tween動(dòng)畫效果,Android一共提供了兩種動(dòng)畫,這篇文章主要介紹了Android動(dòng)畫效果之tween動(dòng)畫,感興趣的小伙伴們可以參考一下
    2016-06-06
  • Android事件處理的兩種方式詳解

    Android事件處理的兩種方式詳解

    事件是一種有用來收集用戶與應(yīng)用程序互動(dòng)數(shù)據(jù)的互動(dòng)組件,如按鍵或觸摸屏等放置事件,因?yàn)槊總€(gè)事件從Android框架維護(hù)事件隊(duì)列先入先出(FIFO)基礎(chǔ)上的隊(duì)列??梢栽诔绦蛑胁东@這些事件,按要求并采取適當(dāng)?shù)膭?dòng)作
    2023-02-02
  • Android實(shí)現(xiàn)退出時(shí)關(guān)閉所有Activity的方法

    Android實(shí)現(xiàn)退出時(shí)關(guān)閉所有Activity的方法

    這篇文章主要介紹了Android實(shí)現(xiàn)退出時(shí)關(guān)閉所有Activity的方法,主要通過自定義類CloseActivityClass實(shí)現(xiàn)這一功能,需要的朋友可以參考下
    2014-09-09
  • android viewpager實(shí)現(xiàn)豎直滑動(dòng)效果

    android viewpager實(shí)現(xiàn)豎直滑動(dòng)效果

    這篇文章主要為大家詳細(xì)介紹了android viewpager實(shí)現(xiàn)豎直滑動(dòng)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • Android中AsyncTask的用法實(shí)例分享

    Android中AsyncTask的用法實(shí)例分享

    AsyncTask的特點(diǎn)是任務(wù)在主線程之外運(yùn)行,而回調(diào)方法是在主線程中執(zhí)行, 這就有效地避免了使用Handler帶來的麻煩
    2014-02-02

最新評(píng)論

渭南市| 古丈县| 西和县| 新密市| 南川市| 延边| 漳平市| 黄龙县| 抚顺县| 黔江区| 巴马| 称多县| 北京市| 溧阳市| 青岛市| 古丈县| 通化市| 长丰县| 都昌县| 泰顺县| 永吉县| 色达县| 湘阴县| 鹰潭市| 大名县| 阿克苏市| 通海县| 营山县| 奉新县| 鄯善县| 土默特左旗| 威信县| 美姑县| 曲周县| 喜德县| 遂川县| 九龙城区| 淮滨县| 延庆县| 毕节市| 万安县|