0
오디오 트랙을 사용하여 사운드를 재생하고 있습니다. 오디오 트랙을 이와 같이 초기화하고 있습니다.오디오 트랙에서 오디오 트랙을 재생 한 후 사운드가 계속 재생됩니다.
numSamples = duration * sampleRate;
sample = new double[numSamples];
generatedSnd = new byte[2 * numSamples];
length_snd = generatedSnd.length;
audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, sampleRate,
AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT,
length_snd, AudioTrack.MODE_STATIC);
그런 다음 소리를 생성합니다.
for (int i = 0; i < numSamples; ++i) {
freqOfTone = freqOfTone + 1;
sample[i] = Math.sin(2 * Math.PI * i/(sampleRate/freqOfTone));
if(freqOfTone > 22500){
freqOfTone = 10000;
}
}
int idx = 0;
for (final double dVal : sample) {
// scale to maximum amplitude
final short val = (short) ((dVal * 32767));
// in 16 bit wav PCM, first byte is the low order byte
generatedSnd[idx++] = (byte) (val & 0x00ff);
generatedSnd[idx++] = (byte) ((val & 0xff00) >>> 8);
}
이제 내가 좋아하는 사운드를 재생하고 있습니다 :
audioTrack.write(generatedSnd, 0, generatedSnd.length);
audioTrack.play();
그리고 길과 같은 트랙을 중지 : 나는 과정을 (재생을하고있는 경우
audioTrack.release();
audioTrack.flush();
System.out.println("!!running"+audioTrack.getPlayState());
audioTrack = null;
지금 문제가 중지된다) 트랙이 release 된 후에도 오디오가 계속 재생되고 있습니다. 릴리스 시점에 1을 표시하고 있지만 오디오는 여전히 재생중인 재생 상태를 확인했습니다.
감사의 말 전진.