如何在Android上采样麦克风而不录音以获得实时振幅/电平?
2022-09-01 20:56:59
我试图在Android上获得麦克风的振幅级别,如下所示:
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。
看来,要做到这一点,我必须真正开始录制。这是对的吗?
如果是这样,我是否需要录制500ms,获取振幅,停止录制并重复?
最后,我必须录制到文件吗?我不需要保存此音频文件,难道我不能只获得当前实时麦克风输入的当前振幅或最高振幅而不录音吗?
任何帮助是值得赞赏的,谢谢。