获取Android媒体播放器中播放的音频的振幅或频率

获取Android媒体播放器中播放的音频的振幅或频率,android,audio,android-mediaplayer,frequency,Android,Audio,Android Mediaplayer,Frequency,我是Android的初学者。我想在Android中找到频率密度或音量幅度,或者使用Android媒体播放器来播放mp3文件。我尝试了许多不同的方法,但都没有成功。你能帮我解决这个问题吗 我找到了这段代码,但它在录音机时间中给出了GetMaxAmplium()值,但在播放mp3文件时没有得到。 以下是链接: 我还提到了ringdroid链接: 我还检查了FFT,但它是在录制时进行的。我需要在播放音频文件(mp3文件)时检测频率/振幅。mRecorder.getMaxAmplier()返回自上次调用

我是Android的初学者。我想在Android中找到频率密度或音量幅度,或者使用Android媒体播放器来播放mp3文件。我尝试了许多不同的方法,但都没有成功。你能帮我解决这个问题吗

我找到了这段代码,但它在录音机时间中给出了GetMaxAmplium()值,但在播放mp3文件时没有得到。 以下是链接:

我还提到了ringdroid链接:


我还检查了FFT,但它是在录制时进行的。我需要在播放音频文件(mp3文件)时检测频率/振幅。

mRecorder.getMaxAmplier()
返回自上次调用以来测得的最大绝对振幅,或者在第一次调用时返回0

这相当于:

max(abs(signal));
您需要检查您的
参考
变量,使用1.0表示浮点数据,或使用32767表示短整数

要将最大绝对振幅转换为dB,需要执行
20*log10(x/参考)

matlab中的等效代码显示了以下概念:

% create a audio signal in float point at 90dB
signal = 10^(90/20)*sin(2*pi*f/Fs*t)';
%equivalent of mRecorder.getMaxAmplitude()
x = max(abs(signal));
%find dB (Reference for this example is 1.0 data in float point)
decibel = 20 * log10(x/1.0)
结果是
89.9955


要在播放mp3文件时显示分贝,需要调用
getNoiseLevel()
,以处理每个帧

包括你尝试过的。如果你展示了你检查过的文档的哪些部分,如果有什么让你感到困惑,这会很有帮助。对于声音分析,你需要使用FFT(快速傅立叶变换)。
% create a audio signal in float point at 90dB
signal = 10^(90/20)*sin(2*pi*f/Fs*t)';
%equivalent of mRecorder.getMaxAmplitude()
x = max(abs(signal));
%find dB (Reference for this example is 1.0 data in float point)
decibel = 20 * log10(x/1.0)