我的数据库有很多简短的音频,这些音频格式化了base64。我要在单击按钮时播放音频。基本上,我写了这段代码,但是它不起作用。(如果可能,最好不要将文件写入存储,因为此过程会有延迟)
playButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try{
String url = "data:audio/mp3;base64,"+base64FormattedString;
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource(url);
mediaPlayer.prepare();
mediaPlayer.start();
}
catch(Exception e){
e.printStackTrace();
}
}
});
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪在这里:https : //gist.github.com/AliAtes/aa46261aba3d755fbbd1eba300356a5f
根据您的API约束,您可以使用AudioTrack。此外,这很容易。有了AudioTrack你可以玩byte[],因为API 3音频数据。
您只需要AudioTrack使用音频样本特性来初始化您的对象:
AudioTrack audioTrack = new AudioTrack(...);
Run Code Online (Sandbox Code Playgroud)
并致电:
audioTrack.play();
Run Code Online (Sandbox Code Playgroud)
然后,对Base64数据进行解码:
byte[] data = Base64.decode(yourBase64AudioSample, Base64.DEFAULT);
Run Code Online (Sandbox Code Playgroud)
并放回audioTrack播放:
int iRes = audioTrack.write(data, 0, data.length);
Run Code Online (Sandbox Code Playgroud)
和TADAAA :)
...别忘了玩后释放:
audioTrack.release();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2099 次 |
| 最近记录: |