Android Media Player分贝阅读

You*_*Guy 4 android

我搜索了类似的主题,但找不到清晰简洁的答案。我一直在尝试找出一种方法,可以确定在播放Android媒体播放器时在给定时间点的分贝级别输出。我无法找到一种方法来确定在播放歌曲时给定时间点手机的声音大小。我一直在寻找媒体播放器API,但无法弄清楚在播放歌曲时如何在给定的时间阅读。

任何想法或帮助表示赞赏。

Ren*_*eno 5

我认为您必须录制音频才能使用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();
Run Code Online (Sandbox Code Playgroud)
   public double getAmplitude() {
            if (mRecorder != null)
                    return  (mRecorder.getMaxAmplitude());
            else
                    return 0;

    }
Run Code Online (Sandbox Code Playgroud)

要计算Db值:

  powerDb = 20 * log10(getAmplitude() / referenceAmp);
Run Code Online (Sandbox Code Playgroud)

通常选择最大信号幅度作为参考幅度。也就是说,我们对信号进行归一化,以便将最大幅度定义为1或0 dB