Android AudioRecord чтение амплитуды с микрофона

Я пытаюсь записать звук с микрофона и нарисовать график в реальном времени. Я умею записывать и рисовать график. Проблема заключается в том, что значения, которые записываются с использованием приведенного ниже кода, например, неточны ... изображение ниже - это то, что я получаю, когда звука нет вообще. Я видел примеры с использованием fft, но я не уверен, что это поможет в моем случае, поскольку я пытаюсь нарисовать график во временной области и не вижу смысла преобразовывать его в частотную область (на данный момент). Другие используют среднюю мощность, это может быть полезно, но я не уверен.

Спасибо за любую помощь.

enter image description here

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();
11
задан user591124 14 May 2012 в 07:33
поделиться