Android录音机中的瞬态咔哒声

Android录音机中的瞬态咔哒声,android,android-audiorecord,Android,Android Audiorecord,我是Android编程的初学者 我的硬件是三星Galaxy Young GT-S5360 使用我的应用程序,我想使用麦克风源录制一些东西 如果我用1000Hz或其他声音样本记录一个正弦信号,我总是会在样本开始时得到两个瞬态或咔嗒声。0200秒后,样品对我来说还可以 我怎样才能消除这些瞬变 以下是我在网上使用的代码: private void startrec(){ File file = new File(Environment.getExternalStorageDirectory(),"

我是Android编程的初学者

我的硬件是三星Galaxy Young GT-S5360

使用我的应用程序,我想使用麦克风源录制一些东西

如果我用1000Hz或其他声音样本记录一个正弦信号,我总是会在样本开始时得到两个瞬态或咔嗒声。0200秒后,样品对我来说还可以

我怎样才能消除这些瞬变

以下是我在网上使用的代码:

private void startrec(){
  File file = new File(Environment.getExternalStorageDirectory(),"test.pcm" ); 

  int minBufferSize = audioRecord.getMinBufferSize(44100, 
             AudioFormat.CHANNEL_CONFIGURATION_MONO, 
             AudioFormat.ENCODING_PCM_16BIT);

  short[] audioData = new short[minBufferSize];

  try {
   file.createNewFile();

   OutputStream outputStream = new FileOutputStream(file);

   BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(outputStream);

   DataOutputStream dataOutputStream = new DataOutputStream(bufferedOutputStream);

   AudioRecord audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC,
     44100,
     AudioFormat.CHANNEL_CONFIGURATION_MONO,
     AudioFormat.ENCODING_PCM_16BIT,
     minBufferSize);

   audioRecord.startRecording();

   while(isRecording){
    int numberOfShort = audioRecord.read(audioData, 0, minBufferSize);

    for(int i = 0; i < numberOfShort; i++){
     dataOutputStream.writeShort(audioData[i]);
    }
   }

   audioRecord.stop();
   audioRecord.release();
   dataOutputStream.close();

  } catch (IOException e) {
   e.printStackTrace();
  }
 }
private void startrec(){
File File=新文件(Environment.getExternalStorageDirectory(),“test.pcm”);
int minBufferSize=audioRecord.getMinBufferSize(44100,
AudioFormat.CHANNEL\u配置\u单声道,
音频格式。编码(PCM(16位);
short[]audioData=新的short[minBufferSize];
试一试{
createNewFile();
OutputStream OutputStream=新文件OutputStream(文件);
BufferedOutputStream BufferedOutputStream=新的BufferedOutputStream(outputStream);
DataOutputStream DataOutputStream=新的DataOutputStream(bufferedOutputStream);
AudioRecord AudioRecord=新的录音(MediaRecorder.AudioSource.MIC,
44100,
AudioFormat.CHANNEL\u配置\u单声道,
AudioFormat.ENCODING_PCM_16位,
最小尺寸);
录音。开始录制();
while(isRecording){
int numberOfShort=audioRecord.read(audioData,0,minBufferSize);
for(int i=0;i
通过单击按钮调用
startrec()
函数,并通过另一个按钮停止。 可能按钮的咔哒声在开始时会引起瞬变,因为它也使用相同的源(麦克风)

这也可能是安装问题,但我还不知道

我还想用44100件样品进行记录。 在此期间,我尝试了不同的采样率,但仍然存在相同的问题

我希望有人能帮助我,给我一些建议


祝你今天愉快

你找到解决办法了吗?我目前也在录音开始时听到咔哒声。