android.media.audiofx.NoiseSuppressor
, android.media.audiofx.AcousticEchoCanceler
,android.media.audiofx.AutomaticGainControl
仅在 API 级别 16 和特定设备上可用。effectname.isAvailable()
可以检查这种效果是否在设备中实现并且是否可用。在我的带有股票 android 4.1 的三星 Galaxy SII 上,isAvailable()
返回 true 但是当我尝试实现create()
这种效果时,我在我的 logcat 中得到了上述三种方法的这个错误:
04-26 22:29:11.430: E/AudioEffect(18365): set(): AudioFlinger could not create effect, status: -22
04-26 22:29:11.430: E/AudioEffects-JNI(18365): AudioEffect initCheck failed -4
04-26 22:29:11.435: E/AudioEffect-JAVA(18365): Error code -4 when initializing AudioEffect.
04-26 22:29:11.435: W/AcousticEchoCanceler(18365): not implemented on this devicenull
这是我的启用方法之一:
public void enableAutomaticGainControl(int audioSessionId) {
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1
&& android.media.audiofx.AutomaticGainControl.isAvailable()
&& agc == null && audioSessionId != 0) {
agc = AutomaticGainControl.create(audioSessionId);
if (agc != null) {
agc.setEnabled(true);
Log.i(TAG, "AutomaticGainControl enabled.");
} else {
Log.i(TAG, "AutomaticGainControl can not be created.");
}
}
}
音频会话 ID 是正确的,因为其他效果(如低音增强和均衡器)工作正常。
为什么效果可用但无法创建?