【发布时间】:2018-08-02 02:00:44
【问题描述】:
我没有看到任何东西可以让我在 audiofx.Equalizer 库中具体控制每个音频波段的音量。不可能吗? 任何意见和建议将不胜感激。谢谢。
【问题讨论】:
我没有看到任何东西可以让我在 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 项目中使用均衡器和可视化器的完整示例。
【讨论】:
setBandLevel
public void setBandLevel (short band, short level)
将给定的均衡器频段设置为给定的增益值。
您需要在 Equalizer 实例上调用该方法。
【讨论】: