如何利用API 16+提供的新DSP效果?

时间:2013-04-26 18:12:41

标签: android signal-processing

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

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

0 个答案:

没有答案