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
上一篇:Android媒体播放器:如何从分离的文件中播放视频
下一篇:Android媒体播放引擎ExoPlayer中的MediaController发送虚假消息来触发Player.Listener监听器。