我正在尝试使用 AudioTrack 播放音频缓冲声音(.wav)。请参阅下面的代码。我需要在Thread下调用这个函数来支持同时播放。在线程下很好。正常播放声音效果很好。但是,如果我连续使用 AudioTrack 执行播放声音(即在完成第一个播放声音之前执行第二个播放),则会产生设备崩溃(强制关闭意外错误)。
有没有人遇到过这样的问题并以某种方式解决它?
private void PlayAudioTrack(String filePath) throws IOException
{
if (filePath==null)
return;
byte[] byteData = null;
File file = null;
file = new File(filePath); // sdcard path
byteData = new byte[(int) file.length()];
FileInputStream in = null;
try {
in = new FileInputStream( file );
in.read( byteData );
in.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
int intSize = android.media.AudioTrack.getMinBufferSize(8000, AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_8BIT);
at = new AudioTrack(AudioManager.STREAM_MUSIC, 8000, AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_8BIT, intSize, AudioTrack.MODE_STREAM);
at.play();
at.write(byteData, 0, byteData.length);
at.stop();
}
感谢您的回复。
Thanks.
您必须释放 AudioTracks 资源并停止它
at.release();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)