我想知道 Audiotrack 是如何工作的,所以我生成了一个长度为 60000 的随机短数组,并尝试用 AudioTrack 播放它:
public short[] generatedNoise=new short[60000];
for(int i=0;i<=59999;i++){
generatedNoise[i]=(short) random.nextInt(Short.MAX_VALUE + 1);
}
AudioTrack at=new AudioTrack(AudioManager.STREAM_MUSIC, 48000, AudioFormat.CHANNEL_OUT_MONO,
AudioFormat.ENCODING_PCM_16BIT, 48000*7 /* 1 second buffer */,
AudioTrack.MODE_STREAM);
at.write(generatedNoise, 0, generatedNoise.length);
at.play();
但是扬声器什么也没输出,我的控制台中也没有错误消息。我尝试使用这种方法播放 wav 文件并且效果很好,有人可以告诉我原因吗?我的目标是从扬声器中输出一些噪音。
更新:我刚刚使用以下代码生成了一个短数组,但仍然没有输出:
short[] wave=new short[100000];
int i=0;
while(i<=99997){
wave[i]=32767;
wave[i+1]=0;
wave[i+2]=-32767;
wave[i+3]=0;
i=i+4;
}