굉장히 짧은 효과음을 내는 wav파일을 재생하려고 하는데,
getMinBufferSize 보다 작은 크기를 재생하려고 하니 재생이 안되는 경우가 발생합니다.
코드는
final byte[] sndBuf = new byte[size];
Natives.GetSoundFile2(1, 0, 4, sndBuf);
if(sndBuf != null)
{
new Thread(new Runnable() {
public void run() {
int intSize = android.media.AudioTrack
.getMinBufferSize(44100,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT);
AudioTrack track = new AudioTrack(
//AudioManager.STREAM_MUSIC, 44100,
MgrConfigGlobal.getInstance().m_iSoundDevice, 44100,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT, intSize,
AudioTrack.MODE_STREAM);
track.play();
//track.write(arrbuff, 0, arrbuff.length);
track.write(sndBuf, 0, sndBuf.length);
track.stop();
track.release();
//sndBuf = null;
}
}).start(); // 스레드 실행
}
이런 식으로 만들었구요
getMinBufferSize 의 값은 4096, SndBuf의 크기는 3926이 나옵니다.
SndBuf는 jni를 이용해 파일에서 읽어오는 방식을 취하고 있습니다.
어떻게 해야 짧은 wav 파일을 재생 할 수 있는지 알려주실 분 있나요?
wav 파일 첨부합니다.




MODE를 스태틱으로 변경하시면 될꺼라고 생각됩니다.
정 안된다면 가짜 byte도 넣어주셔도 될꺼같아요.