Я пытаюсь воспроизвести звук с буферизацией звука (.wav) с помощью AudioTrack. Пожалуйста, смотрите код ниже. Мне нужно вызвать эту функцию в потоке для поддержки одновременной игры. Это хорошо, находясь под нитью. Работает нормально, воспроизводит звук нормально. Но если я выполняю воспроизведение звука, используя 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();
}
Ценю ваш ответ.
Спасибо.