Android媒体播放器:如何通过URL离线播放音频?
创始人
2024-10-09 02:32:09
0
  1. 将音频文件下载到本地存储器:
private void downloadFile(String fileUrl) {
  try {
    URL url = new URL(fileUrl);
    HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
    urlConnection.setRequestMethod("GET");
    urlConnection.setDoOutput(true);
    urlConnection.connect();

    File audioFile = null;

    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.Q) {
      ContentResolver resolver = getContentResolver();

      ContentValues values = new ContentValues();
      values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3");
      values.put(MediaStore.MediaColumns.DISPLAY_NAME, "audio.mp3");
      values.put(MediaStore.Downloads.IS_PENDING, true);

      Uri audioUri = resolver.insert(MediaStore.Downloads.EXTERNAL_CONTENT_URI, values);

      if (audioUri != null) {
        OutputStream outputStream = resolver.openOutputStream(audioUri);
        if (outputStream != null) {
          InputStream inputStream = urlConnection.getInputStream();
          byte[] buffer = new byte[1024];
          int len;
          while ((len = inputStream.read(buffer)) != -1) {
            outputStream.write(buffer, 0, len);
          }
          inputStream.close();
          outputStream.close();
          values.clear();
          values.put(MediaStore.Downloads.IS_PENDING, false);
          resolver.update(audioUri, values, null, null);
          audioFile = new File(audioUri.getPath());
        }
      }
    } else {
      File storageDir = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/audio");
      if (!storageDir.exists()) {
        storageDir.mkdirs();
      }
      File outputFile = new File(storageDir, "audio.mp3");
      FileOutputStream fos = new FileOutputStream(outputFile);

      BufferedInputStream bis = new BufferedInputStream(urlConnection.getInputStream());

      byte[] buffer = new byte[1024];
      int len;
      while ((len = bis.read(buffer)) != -1) {
        fos.write(buffer, 0, len);
      }

      fos.flush();
      fos.close();
      bis.close();

      audioFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/audio/audio.mp3");
    }

    if (audioFile != null) {
      playAudio(audioFile.getPath());
    }
  } catch

相关内容

热门资讯

总算清楚!We poker辅助... 总算清楚!We poker辅助器下载(辅助挂)其实是真的有挂(的确有挂辅助插件)1、进入到是否有挂之...
必看攻略!hh poker插件... 必看攻略!hh poker插件下载(辅助挂)都是真的有挂(有挂方针辅助攻略)1、全新机制【ai辅助工...
信息共享!hhpoker俱乐部... 信息共享!hhpoker俱乐部是干嘛的(辅助挂)一贯存在有挂(有挂方略辅助脚本)1、下载好正确养号方...
一分钟了解!wepoker私人... 一分钟了解!wepoker私人局透视插件(辅助挂)都是存在有挂(新版有挂辅助app)1、上手简单,内...
盘点一款!wepoker私人局... 盘点一款!wepoker私人局透视教程(辅助挂)一直是有挂(存在有挂辅助方法)1、辅助软件下载优化,...
玩家必备科普!竞技联盟透视插件... 玩家必备科普!竞技联盟透视插件(辅助挂)好像真的有挂(有挂教学辅助攻略)1. 选牌创建新账号,点击进...
终于懂了!aapoker怎么拿... 终于懂了!aapoker怎么拿好牌(辅助挂)其实是真的有挂(确实有挂辅助技巧)终于懂了!aapoke...
玩家必看分享!wepoker有... 玩家必看分享!wepoker有脚本吗(辅助挂)本来存在有挂(有挂规律辅助工具)1)有没有挂:进一步探...
9分钟了解!we-poker软... 9分钟了解!we-poker软件(辅助挂)果然有挂(真实有挂辅助方法)1、全新机制【ai辅助工具激活...
推荐十款!wepoker有什么... 推荐十款!wepoker有什么规律(辅助挂)其实有挂(有挂工具辅助脚本)1、打开软件启动之后找到中间...