0

我想知道 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;
          }
4

1 回答 1

0

问题解决了,对于缓冲区大小,我只是将其更改为数组的实际大小,并且工作正常。感谢您的关注。

于 2013-04-20T18:00:16.700 回答