Я пытаюсь записать звук с микрофона и нарисовать график в реальном времени. Я умею записывать и рисовать график. Проблема заключается в том, что значения, которые записываются с использованием приведенного ниже кода, например, неточны ... изображение ниже - это то, что я получаю, когда звука нет вообще. Я видел примеры с использованием 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();