MediaRecorder getMaxAmplitude返回9000作为我手机上的最大值,虽然喊到麦克风

时间:2014-03-15 23:20:46

标签: android android-mediarecorder

据我所知,MediaRecorder中的getMaxAmplitude函数应返回0到32762之间的值,但在我的手机Sont Z Ultra Google Play Edition中,我仍然以9000为最大值,尽管大喊大叫。在我的朋友Nexus 5中测试时,我得到了32762,所以我知道它与我的代码无关。

我需要知道在运行我的应用的每部手机中可以产生的最大振幅是多少,我该怎么做?

谢谢。

1 个答案:

答案 0 :(得分:1)

在移动测试之后,我发现改变了这个:

this.mediaRecorder.setAudioSource(
       android.media.MediaRecorder.AudioSource.MIC
);

到此:

this.mediaRecorder.setAudioSource(
       android.media.MediaRecorder.AudioSource.VOICE_COMMUNICATION
);

解决了我的问题。我在尝试过的每台设备上都获得了32762的最大振幅。

  • 编辑:当使用AMR_NB AudioEncoder时,这非常有效,当我切换到AAC时,它再次开始输出9000作为最大振幅。解决方案是将音频源更改为VOICE_RECOGNITION