我搜索了类似的话题,但没有找到清晰简明的答案。我一直在尝试找到一种方法,可以在 Android 媒体播放器正在播放时确定给定时间点的分贝级别输出。我无法找到一种方法来确定手机在播放歌曲时某个时间点的音量大小。我一直在查阅媒体播放器 API,但我无法弄清楚如何在播放歌曲期间在给定时间获得读数。任何想法或帮助都将不胜感激。
我认为你需要使用MediaRecorder
来录制音频:
mRecorder = new MediaRecorder();
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mRecorder.setOutputFile("/dev/null");
mRecorder.prepare();
mRecorder.start();
public double getAmplitude() {
if (mRecorder != null)
return (mRecorder.getMaxAmplitude());
else
return 0;
}
要计算 Db 值:
powerDb = 20 * log10(getAmplitude() / referenceAmp);
通常选择信号最大幅度作为参考振幅。也就是说,我们对信号进行归一化处理,使得最大幅度被定义为1,或者0dB。