Java 在AudioTrack中播放随机短阵列不会产生任何结果
我想知道Audiotrack是如何工作的,所以我生成了一个长度为60000的随机短数组,并尝试用Audiotrack播放它:Java 在AudioTrack中播放随机短阵列不会产生任何结果,java,android,Java,Android,我想知道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=n
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();
public short[]generatedNoise=new short[60000];
对于(int i=0;i问题已解决,对于缓冲区大小,我刚刚将其更改为数组的实际大小,效果很好。感谢您的关注。您等待了多长时间,以查看是否出现问题?60000是大量迭代。也许您应该在循环完成后添加一些日志输出,以确保它实际完成。是的我确实打印了b4 playingHi,我可以问一下你说的“阵列的实际大小”是什么吗?你的“generatedNoise.length”不是实际大小吗?我想“buffer size”是指音轨构造函数的第五个参数。我这样做了,但我仍然无法播放任何声音。
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;
}