我试图在 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。
看来,要使它起作用,我必须实际开始录制。那是对的吗?
如果是这样,我是否需要记录 500 毫秒,获取幅度,停止记录并重复?
最后,我必须记录到文件吗?我不需要保存这个音频文件,难道我不能只获取当前实时麦克风输入自上次调用以来的当前幅度或最高幅度而不进行录音吗?
任何帮助表示赞赏,谢谢。