首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android媒体播放器分贝读数

Android媒体播放器分贝读数
EN

Stack Overflow用户
提问于 2011-11-24 14:03:32
回答 2查看 7.7K关注 0票数 4

我搜索过类似的话题,但找不到一个清晰而简洁的答案。我一直在试图找出一种方法,在播放Android媒体播放器的同时,确定给定时间点的分贝输出。当播放一首歌曲时,我找不到一种方法来确定电话在给定时间点的音量有多大。我一直在查看媒体播放器API,但我不知道如何在播放歌曲的过程中获得给定时间的读数。

任何想法或帮助都很感谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-24 14:28:33

我认为你必须使用MediaRecorder录制音频:

代码语言:javascript
复制
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();

代码语言:javascript
复制
   public double getAmplitude() {
            if (mRecorder != null)
                    return  (mRecorder.getMaxAmplitude());
            else
                    return 0;

    }

要计算Db值,请执行以下操作:

代码语言:javascript
复制
  powerDb = 20 * log10(getAmplitude() / referenceAmp);

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

票数 5
EN

Stack Overflow用户

发布于 2015-02-09 23:07:26

作者早就不在这里了,但我还是要插话,为后人着想。我认为理解你想要做什么的关键是弄清楚你所说的分贝是什么意思,以及你理解的android系统的输出是什么。这听起来像是您试图测量耳机的输出,在这种情况下,如果没有外部耳机校准系统,这是不可能的,这样您就可以知道输出的dB对应于耳机输出的dB SPL。

如果这就是你的目标,并且你明白这一点,那么android提供的visualizer类可能会很方便。它还提供8位FFT频率数据以及幅值。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8252813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档