在安卓中,麦克风的接收单位通常是分贝(dB)。我们可以使用以下代码示例来获取麦克风接收的音量大小:
private MediaRecorder mRecorder;
private double mAmplitude = 0;
public void startRecording() {
mRecorder = new MediaRecorder();
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mRecorder.setOutputFile("/dev/null");
try {
mRecorder.prepare();
mRecorder.start();
} catch (IOException e) {
e.printStackTrace();
}
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
mAmplitude = mRecorder.getMaxAmplitude();
double amplitudeDb = 20 * Math.log10(mAmplitude / 0.00002);
Log.d(TAG, "amplitude in dB: " + amplitudeDb);
}
}, 0, 1000);
}
这个示例代码中使用了MediaRecorder来获取麦克风的音量大小,并通过计算将其转换为分贝单位。在每一秒钟,我们可以得到最大振幅和对应的分贝值。