我看不到有什么可以让我具体控制audiofx.Equalizer库中每个音频波段的音量。不可能吗
任何意见和建议将不胜感激。谢谢。

最佳答案

您需要调用setBandLevel方法:

public void setBandLevel(short band, short level)

Equalizer对象的实例上。

由于不同的Android设备具有不同数量的可用频段(具有不同的属性(增益,带宽,中心频率...)),因此,您还需要知道可用的最大频段数量和增益范围(至少)。
// New instance of equalizer (add it as a member of your class rather than a scoped instance like this)
Equalizer mEqualizer = new Equalizer(0, mMediaPlayer.getAudioSessionId());

// Get the number of bands available on your device
short bands = mEqualizer.getNumberOfBands();

// Get the gain level available for the bands
final short minEQLevel = mEqualizer.getBandLevelRange()[0];
final short maxEQLevel = mEqualizer.getBandLevelRange()[1];

然后,您可以通过将EQ级别划分为百分比来调用setBandLevel方法。

有关更多信息,请查阅Equalizer一般文档-有更多方法可获取特定信息,例如参数EQ的中心频率和频带宽度。

Here是一个在Android项目中使用均衡器和可视化器的完整示例。

09-26 08:13