Android MediaRecorder getMaxAmplitude在LG Optimus上始终返回0

jhn*_*lvr 0 android

我正在编写一个应用程序,基本上只是测试我们是否可以从麦克风获得任何东西.

它适用于几个Android设备,但不适用于LG Optimus.我每次打电话MediaRecorder.getMaxAmplitude给LG都会返回0.

设备录制成功,因为我可以收听录音.

Set*_*uki 8

getMaxAmplitude返回自您上次调用它以来的最大幅度.

因此,第一次调用它时,它会自动初始化(因此返回0),它应该返回另一个值.根据文件:

getMaxAmplitude()返回自上次调用此方法以来采样的最大绝对幅度.只在setAudioSource()之后调用它.

返回自上次调用以来测量的最大绝对幅度,或第一次调用时的0

或者,如果您正确使用它,您会遇到与我相同的问题.我的代码适用于galaxyTab 7(Froyo),但不适用于10.1(Honeycomb).

编辑:我修复了我的问题(我希望它也会帮助你).确保第一次调用getMaxAmplitude时,为了初始化它,首先调用start().我用了:

recorder.prepare();
recorder.getMaxAmplitude();
recorder.start();
//listening to the user
int amplitude = recorder.getMaxAmplitude();
Run Code Online (Sandbox Code Playgroud)

什么时候应该是:

recorder.prepare();
recorder.start();
recorder.getMaxAmplitude();
//listening to the user
int amplitude = recorder.getMaxAmplitude();
Run Code Online (Sandbox Code Playgroud)

编辑:这段代码似乎仍有缺陷.例如,此代码似乎不适用于S2.它会返回0.但是我只调用了两次getMaxAmplitude(),所以如果你需要每秒更新幅度,那么它可能没问题.