从手机的音频插孔记录数据

时间:2011-12-20 04:07:31

标签: android audio record

我正在尝试从手机的音频界面录制数据。我用了audiorecord功能。以下是我的代码:

public void Initialize(){

buffersizebytes = AudioRecord.getMinBufferSize(SAMPPERSEC,channelConfiguration, audioEncoding); // 4096 on ion
buffer = new short[buffersizebytes];
buflen = buffersizebytes / 2;
audioRecord = new AudioRecord(
        android.media.MediaRecorder.AudioSource.MIC, SAMPPERSEC,
        channelConfiguration, audioEncoding, buffersizebytes);
acquire();


for(int i=0; i<4096; i++) buffer[i]=1; 

}

public void acquire() {
    try {
        audioRecord.startRecording();
        mSamplesRead = audioRecord.read(buffer, 0, buffersizebytes);
        audioRecord.stop();
    } catch (Throwable t) {
        // Log.e("AudioRecord", "Recording Failed");
    }
}

我想将获取的数据放入4096字节的缓冲区中。但我的程序只将数据放入1024个字节。第一个432字节也是零。但我不断发送数据。可能是什么问题?

1 个答案:

答案 0 :(得分:1)

getMinBufferSize,顾名思义为您提供最小缓冲区大小。你可以设置更大的东西,包括4096。

对于初始化后的第一个样本,我的手机会产生两个巨大的峰值,持续约0.5秒,所以我猜这是由录音机启动引起的。在处理实际数据之前,请尝试跳过一些样本(让我们说500)。

此外,buffer的大小应为buffersizebytes/2