Я пытаюсь воспроизвести звуковой файл WAV большего размера (который составляет> 20 МБ) , используя следующий код (AudioTrack) на моем устройстве Android 1.6 HTC , которое в основном имеет меньше памяти . Но я обнаружил сбой устройства, как только он выполняет чтение, запись и воспроизведение. Но тот же код прекрасно работает и очень хорошо воспроизводит * wav-файлы меньшего размера (файлы 10 КБ, 20 КБ и т. Д.) .
P.S .: Я должен воспроизвести звук буфера PCM (.wav) , причина, по которой я здесь использую AudioTrack
.
Несмотря на то, что у моего устройства меньше памяти, как бы я считывал байты байтовых аудиофайлов большего размера и воспроизводил звук, чтобы избежать сбоев из-за ограничений памяти.
private void AudioTrackPlayPCM() throws IOException
{
String filePath = "/sdcard/myWav.wav"; // 8 kb file
byte[] byteData = null;
File file = null;
file = new File(filePath);
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);
AudioTrack 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();
at.release();
}
Может кто-нибудь подсказать мне, пожалуйста, воспроизвести код AudioTrack для wav-файлов большего размера?