如何正确设置音频虚拟器

时间:2017-06-20 16:48:42

标签: android audio equalizer audioeffect

我正在尝试制作一个Android均衡器,但我无法正确使用虚拟器。 Not Visualizer 这是我的代码的一部分,应用程序没有崩溃,但它只是不工作

 vr = new Virtualizer(0, mediaPlayer.getAudioSessionId());
    virtal.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
        @Override
        public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
            if (seekBar == virtal) {
                vr.setEnabled(level > 0 ? true : false);
                vr.setStrength((short) i); // Already in the right range 0-1000
            } else if (eq != null) {
                int new_level = min_level + (max_level - min_level) * level / 100;

                for (int j = 0; j < num_sliders; j++) {
                    if (sliders[j] == seekBar) {
                        eq.setBandLevel((short) j, (short) new_level);
                        break;
                    }
                }
            }
        }

我可以使用均衡器和baseboost类,但不知道为什么这个没有在音频中显示任何效果。任何帮助或指导都会有所帮助。我跟着一些项目,如詹姆斯音乐播放器,但不要不知道是什么问题。

1 个答案:

答案 0 :(得分:1)

您忘记了强制使用虚拟化模式-通常应检查音频文件和设备是否支持它,但这将提供一些结果,无论如何:

int mode = Virtualizer.VIRTUALIZATION_MODE_TRANSAURAL;     // Or BINAURAL
vr.setEnabled(true);
vr.forceVirtualizationMode(mode);

有关模式的完整文档,请参见:https://developer.android.com/reference/android/media/audiofx/Virtualizer#forceVirtualizationMode(int)