1

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 是正确的,因为其他效果(如低音增强和均衡器)工作正常。

为什么效果可用但无法创建?

4

0 回答 0