只是听到audaudrack播放时的咔哒声

时间:2013-07-01 18:25:00

标签: android audiorecord audiotrack

我正在尝试从麦克风录制声音然后播放,但我在这里只是一声咔哒声。 AudioTrack和AudioRecord都在相同的设置上,并正确初始化。这是我的代码:

    stop.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            isRecording = false;
            recordingThread.join();


            player = findAudioTrack();
            player.play();

            for (int i = 0; i < audioQueue.size(); i++) {
                int written = player.write(audioQueue.get(i), 0,
                        audioQueue.get(i).length);
            }

            player.stop();
            player.release();
            player = null;
        }
    });
}

private void startRecording() {

    recorder = findAudioRecord();

    recorder.startRecording();
    isRecording = true;
    recordingThread = new Thread(new Runnable() {
        public void run() {
            addAudioToQueue();
        }
    }, "AudioRecorder Thread");
    recordingThread.start();
}

private void addAudioToQueue() {
    short[] capturedAudio = new short[recordBufferSize/2];
    while (isRecording) {
        int read = recorder.read(capturedAudio, 0, capturedAudio.length);
        audioQueue.add(capturedAudio);
    }
    recorder.stop();
    recorder.release();
    recorder = null;
}

}

有谁知道这是为什么?

以下是完整的源代码: https://www.dropbox.com/s/h38cs9vjkztyyro/AudioTesting.java

1 个答案:

答案 0 :(得分:1)

这可能与您使用short数组而不是byte数组这一事实有关。

  

public int read(byte [] audioData,int offsetInBytes,int sizeInBytes)

这个函数可能只填充每个byte的第一个short,因此每个索引的一半是音频数据的1 byte,而另一个byte 1}}是垃圾或零。

尝试使用byte数组而不是short