android AudioRecord幅度从MIC读取

use*_*124 11 audio android record

我正在尝试从MIC录制声音并绘制实时图表.我能够记录和绘制图表.问题是使用下面的代码记录的值不准确,例如......下面的图像是我在没有声音的情况下得到的.我已经看过使用fft的例子但是我不确定在我的情况下是否会有任何帮助,因为我正在尝试绘制时域图,我认为没有目的将其转换为频域(现在).其他人正在使用平均功率,这可能会有所帮助,但我不确定.

谢谢你的帮助.

在此输入图像描述

bufferSize = AudioRecord.getMinBufferSize(RECORDER_SAMPLERATE,RECORDER_CHANNELS,RECORDER_AUDIO_ENCODING);

    recorder = new AudioRecord(MediaRecorder.AudioSource.MIC,
            RECORDER_SAMPLERATE, RECORDER_CHANNELS,RECORDER_AUDIO_ENCODING, bufferSize);

    short data [] = new short[bufferSize];

    while (!Thread.interrupted()) {

        recorder.startRecording();

        recorder.read(data, 0, bufferSize);

        recorder.stop();

        for (short s : data)
        {
            try {
                Thread.sleep((long) 300.00);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            postUI (Math.abs(s));
        }
    }

    recorder.release();
Run Code Online (Sandbox Code Playgroud)

Gou*_*eau 15

对于其他寻找方法的人来说,请查看三星的完整源代码示例

三星的例子

  • 我一直在使用它,但三星(错误地)任意将最大音量设置为"4,000",即使我的设备可以注册至少一个"7,000"的音量(无论这意味着什么). (2认同)

gre*_*egm 1

尝试使用更高的采样率。最大值为 48000,但标准值为 44100。

此外,麦克风也可能只是记录背景噪音。