【发布时间】:2017-07-21 18:56:23
【问题描述】:
我已经实现了一个像这样的 5 波段均衡器-
final short lowerEqualizerBandLevel = MusicService.equalizer.getBandLevelRange()[0];
final short upperEqualizerBandLevel = MusicService.equalizer.getBandLevelRange()[1];
for (short i = 0; i < 5; i++) {
final short equalizerBandIndex = i;
seekBars[i] = (SeekBar) findViewById(seekBars[i]);
seekBars[i].setMax(upperEqualizerBandLevel - lowerEqualizerBandLevel);
levels[i] = (TextView) findViewById(levels[i]);
levels[i].setText((MusicService.equalizer.getCenterFreq(equalizerBandIndex) / 1000) + "Hz");
seekBars[i].setProgress((upperEqualizerBandLevel - lowerEqualizerBandLevel) / 2);
seekBars[i].setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
MusicService.equalizer.setBandLevel(equalizerBandIndex, (short) (progress + lowerEqualizerBandLevel));
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
}
但是我想添加一个重置按钮来重置我喜欢的均衡器的所有频段级别-
reset.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
for (short i = 0; i < 5; i++) {
MusicService.equalizer.setBandLevel(i, (short) MusicService.equalizer.getCenterFreq(i));
seekBars[i].setProgress((upperEqualizerBandLevel - lowerEqualizerBandLevel) / 2);
}
}
});
我想知道这是不是
MusicService.equalizer.setBandLevel(i, (short) MusicService.equalizer.getCenterFreq(i));
是重置均衡器的正确方法。
而且有时我通过这种方法得到一个非常高的音调。
【问题讨论】:
-
您不能将
centerFreq设置为频段级别。它是频段支持的频率范围的中心。
标签: android android-mediaplayer android-seekbar android-music-player equalizer