Код для отображения полос эквалайзера
mEqualizer = new Equalizer(0, mediaPlayer.getAudioSessionId());
final short lowerEqualizerBandLevel = mEqualizer.getBandLevelRange()[0];
final short upperEqualizerBandLevel = mEqualizer.getBandLevelRange()[1];
//VerticalSeekBar1
int freq_range0 = mEqualizer.getCenterFreq((short)0);
verticalSeekbar[0].setMax(upperEqualizerBandLevel - lowerEqualizerBandLevel);
verticalSeekbar[0].setProgress(mEqualizer.getBandLevel((short)0));
verticalSeekbar[0].setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean b) {
mEqualizerBandLevel0 = progress;
mEqualizer.setBandLevel((short) 0, (short) (progress + lowerEqualizerBandLevel ));
slider_value[0].setText(String.valueOf((progress + lowerEqualizerBandLevel) / 100 + " dB"));
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
slider_labels[0].setText(formatBandLabel(freq_range0));
verticalSeekbar [0]: - первая полоса эквалайзера, и у меня 5 из них, так что verticalSeekbar [1]... и т. д. до [4].
Код для счетчика, показывающий поддерживаемые устройством предварительные настройки.
final ArrayList<String> eqPresets = new ArrayList<>();
ArrayAdapter<String> eqPresetsAdapter = new ArrayAdapter<>(this,R.layout.spinner_item, eqPresets);
eqPresetsAdapter.setDropDownViewResource(R.layout.spin_item);
Spinner eqSpinner = findViewById(R.id.mPresetsSpinner);
for (short i = 0; i < mEqualizer.getNumberOfPresets(); i++){
eqPresets.add(mEqualizer.getPresetName(i));
}
eqSpinner.setAdapter(eqPresetsAdapter);
Теперь, что я пытаюсьдостижение заключается в том, чтобы создать пользовательскую предустановку, чтобы она сохраняла уровень полосы для каждой полосы эквалайзера.
customPreset = new CustomPreset();
customPreset.setPresetName(input.getText().toString());
customPreset.setmEqualizerBandLevel0(mEqualizerBandLevel0);
customPreset.setmEqualizerBandLevel1(mEqualizerBandLevel1);
customPreset.setmEqualizerBandLevel2(mEqualizerBandLevel2);
customPreset.setmEqualizerBandLevel3(mEqualizerBandLevel3);
customPreset.setmEqualizerBandLevel4(mEqualizerBandLevel4);
customPresets.add(customPreset);
Я попробовал это сделать, сохранив значения прогресса всех групп поиска и установив новый уровень полосы с помощью
mEqualizer.setBandLevel((short) 0, (short) (customPresets.get(position).getmEqualizerBandLevel0() + lowerEqualizerBandLevel ));
Когда выбран Пользовательский пресет , но я не знаю, как я могу показать эти пользовательские пресеты в Набор пресетов , потому что у массива для счетчика есть тип String и я не могу добавить объект в массив для строк.