android.media.audiofx.NoiseSuppressor
,android.media.audiofx.AcousticEchoCanceler
,android.media.audiofx.AutomaticGainControl
仅在API级别16和特定设备上可用。 effectname.isAvailable()
可以检查这种效果是否在设备中实现并且可用。在我的samsuung galaxy SII与股票android 4.1,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是正确的,因为其他效果(如低音增强和均衡器)工作正常。
为什么效果可用但无法创建?