Я пытался получить уровень амплитуды микрофона на Android, как так:Как получить амплитуду MediaRecorder
MediaRecorder recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
Timer timer = new Timer();
timer.scheduleAtFixedRate(new RecorderTask(recorder), 0, 1000);
private class RecorderTask extends TimerTask {
private MediaRecorder recorder;
public RecorderTask(MediaRecorder recorder) {
this.recorder = recorder;
}
public void run() {
Log.v("MicInfoService", "amplitude: " + recorder.getMaxAmplitude());
}
}
К сожалению, это только возвращает 0 все время.
Похоже, что для этого я должен начать запись. Это верно?
Если это так, мне нужно записать за 500 мс, получить амплитуду, остановить запись и повторить?
Наконец, нужно ли записывать файл? Мне не нужно сохранять этот аудиофайл, не могу ли я получить текущую амплитуду или самую высокую амплитуду после последнего вызова текущего живого микрофона без записи?
Любая помощь приветствуется, спасибо.