2

我正在尝试制作一个 android 均衡器,但我无法正确使用虚拟器。不是 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 类,但不知道为什么这个在音频中没有显示任何效果。任何帮助或指导都会有所帮助。我关注了一些项目,如 James 音乐播放器,但不知道有什么问题。

4

1 回答 1

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)

于 2020-09-09T19:33:22.547 回答