Как реализовать эквалайзер в Android
Я должен реализовать эквалайзер в Android, и я также нахожу исходный код здесь
Но я понятия не имею о NumberOfBands и BandLevelRange(каковы они?) И как я могу справиться с ними.
данный код, который я вам показал, взят из исходного кода, который я упоминал.
eq = new Equalizer(0, 0);
if (eq != null)
{
eq.setEnabled(true);
int num_bands = eq.getNumberOfBands();
num_sliders = num_bands;
short r[] = eq.getBandLevelRange();
min_level = r[0];
max_level = r[1];
for (int i = 0; i < num_sliders && i < MAX_SLIDERS; i++)
{
int[] freq_range = eq.getBandFreqRange((short) i);
sliders[i].setOnSeekBarChangeListener(this);
slider_labels[i].setText(formatBandLabel(freq_range));
}
}
for (int i = num_sliders; i < MAX_SLIDERS; i++)
{
sliders[i].setVisibility(View.GONE);
slider_labels[i].setVisibility(View.GONE);
}
bb = new BassBoost(0, 0);
if (bb != null)
{
}
else
{
bass_boost.setVisibility(View.GONE);
bass_boost_label.setVisibility(View.GONE);
}
updateUI();
И в onProgresschange это делает
@Override
public void onProgressChanged(SeekBar seekBar, int level, boolean fromTouch) {
if (seekBar == bass_boost) {
bb.setEnabled(level > 0 ? true : false);
bb.setStrength((short) level); // Already in the right range 0-1000
} else if (eq != null) {
int new_level = min_level + (max_level - min_level) * level / 100;
for (int i = 0; i < num_sliders; i++) {
if (sliders[i] == seekBar) {
eq.setBandLevel((short) i, (short) new_level);
break;
}
}
}
}
Я должен создать его похожим на изображение выше, но не знаю, что такое 60, 3k, 14k и что означает от -15дБ до +15дБ.
редактировать
Я понимаю, что он делает, он меняет частоту каждой полосы, но что происходит, когда мы увеличиваем или уменьшаем частоту. На каком этапе я получаю максимальный звук, а на каком этапе - минимальный.