场景
在接收到音频文件的字节数组之后,需要将其临时存储在手机的某个路径下并将其转换为
FileOutpurStream和FileInputStream提供给MediaPlayer进行播放。
如果指定音频文件的存储路径时就会设计到权限问题、路径问题的设置等。
可以将其存储在临时文件目录下,只供临时播放用,不进行永久存储。
注:
博客:
https://blog.csdn.net/badao_liumang_qizhi
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。
实现
代码如下
try { byte[] mp3SoundByteArray = Base64.decode(content, Base64.DEFAULT);// 将字符串转换为byte数组 // create temp file that will hold byte array File tempMp3 = File.createTempFile("badao", ".mp3"); tempMp3.deleteOnExit(); FileOutputStream fos = new FileOutputStream(tempMp3); fos.write(mp3SoundByteArray); fos.close(); // Tried reusing instance of media player // but that resulted in system crashes... MediaPlayer mediaPlayer = new MediaPlayer(); // Tried passing path directly, but kept getting // "Prepare failed.: status=0x1" // so using file descriptor instead FileInputStream fis = new FileInputStream(tempMp3); mediaPlayer.setDataSource(fis.getFD()); mediaPlayer.prepare(); mediaPlayer.start(); } catch (IOException ex) { String s = ex.toString(); ex.printStackTrace(); }
其中相关引入
import android.media.MediaPlayer;
import android.os.Environment;
import android.util.Base64;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
可以看到调用File.createTempFile将其转换为临时文件后
然后将其转换为FileOutputStream后
然后将其转换为FileInputStream后
博客园:
https://www.cnblogs.com/badaoliumangqizhi/
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。