Мой класс активности эквалайзера
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_equalizer);
verticalSeekbar[0] = findViewById(R.id.verticalSeekbar1);
slider_labels[0] = findViewById(R.id.tvFreq1);
slider_value[0] = findViewById(R.id.value1);
verticalSeekbar[1] = findViewById(R.id.verticalSeekbar2);
slider_labels[1] = findViewById(R.id.tvFreq2);
slider_value[1] = findViewById(R.id.value2);
verticalSeekbar[2] = findViewById(R.id.verticalSeekbar3);
slider_labels[2] = findViewById(R.id.tvFreq3);
slider_value[2] = findViewById(R.id.value3);
verticalSeekbar[3] = findViewById(R.id.verticalSeekbar4);
slider_labels[3] = findViewById(R.id.tvFreq4);
slider_value[3] = findViewById(R.id.value4);
verticalSeekbar[4] = findViewById(R.id.verticalSeekbar5);
slider_labels[4] = findViewById(R.id.tvFreq5);
slider_value[4] = findViewById(R.id.value5);
mEqualizer = new Equalizer(0, mediaPlayer.getAudioSessionId());
setupEqualizer();
mEqualizer.setEnabled(true);
for (short i = 0; i < 5; i++){
final short equalizerBandIndex = i;
int freq_range = mEqualizer.getCenterFreq(equalizerBandIndex);
verticalSeekbar[i].setMax(upperEqualizerBandLevel - lowerEqualizerBandLevel);
verticalSeekbar[i].setProgress(mEqualizer.getBandLevel(equalizerBandIndex));
verticalSeekbar[i].setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean b) {
mEqualizer.setBandLevel(equalizerBandIndex, (short) (progress + lowerEqualizerBandLevel ));
slider_value[equalizerBandIndex].setText(String.valueOf((progress + lowerEqualizerBandLevel) / 100) + " dB");
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
slider_labels[i].setText(formatBandLabel(freq_range));
float scale2 = getResources().getDisplayMetrics().density;
int dpAsPixels2 = (int) (8*scale2 + 0.5f);
setupEqSpinner();
}
}
Я ограничил количество полос до 5 в цикле for, потому что я хочу показать только 5 полос, чтобы он соответствовал моему дизайну xml.
Но мой вопрос в том, что когда я использую:
Log.i(TAG, "Number of bands: " + mEqualizer.getNumberOfBands());
Возвращает число 5, поэтому мое устройство поддерживает 5 полос эквалайзера верно?
Но у меня есть еще одно приложение для медиаплеера, которое показывает 7 полос, а частоты не 60 Гц, 230 Гц, 910 Гц, 3 кГц, 14 кГц , а 50 Гц, 130 Гц, 320 Гц, 800 Гц, 2 кГц,5 кГц и 12,5 кГц.
Так как же возможно, что приложение может отображать 7 полос , хотя эквалайзером поддерживается только 5 полос ?
Спасибо,