我尝试获取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 毫秒,获取振幅,停止录制并重复吗?
最后,我必须记录到文件吗?我不需要保存此音频文件,难道我不能仅从当前实时麦克风输入的最高振幅或最近一次调用的当前振幅中获取吗?
感谢任何帮助。
AudioFormat.CHANNEL_IN_MONO
而不是AudioFormat.CHANNEL_CONFIGURATION_MONO
。这是什么让刷新率更好的原因吗? - YoussefDir