场景
在接收到音频文件的字节数组之后,需要将其临时存储在手机的某个路径下并将其转换为
FileOutpurStream和FileInputStream提供给MediaPlayer进行播放。
如果指定音频文件的存储路径时就会设计到权限问题、路径问题的设置等。
可以将其存储在临时文件目录下,只供临时播放用,不进行永久存储。
注:
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。
实现
代码如下
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后
标签:java,tempMp3,createTempFile,FileOutputStream,io,import,FileInputStream From: https://blog.51cto.com/BADAOLIUMANGQZ/6127849