我正在尝试制作一个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类,但不知道为什么这个没有在音频中显示任何效果。任何帮助或指导都会有所帮助。我跟着一些项目,如詹姆斯音乐播放器,但不要不知道是什么问题。
答案 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)