Эквалайзер для Android не работает с AudioTrack

#java #android

#java #Android

Вопрос:

Я использую Android equalizer API для создания фильтра верхних частот. Но даже если я установлю для каждого диапазона значение -1500, похоже, это не сработает. Звук воспроизводится хорошо, но эффектов эквалайзера нет. Вот мой код.

     private void attachEq(int audioSessionId) {
    Equalizer eq = new Equalizer(100,audioSessionId);
    short[] freqRange = eq.getBandLevelRange();
    short minLvl = freqRange[0];
    short maxLvl = freqRange[1];

    eq.setBandLevel((short) 4,minLvl);
    eq.setBandLevel((short) 3,minLvl);
    eq.setBandLevel((short) 2,minLvl);
    eq.setBandLevel((short) 1,minLvl);
    eq.setBandLevel((short) 0,minLvl);
}
  

Я получаю идентификатор аудиосеанса с помощью

в.getAudioSessionId()

где at — это уже инициализированная аудиодорожка. Как я уже сказал, AudioTrack воспроизводится нормально, но эквалайзер, похоже, не оказывает никакого эффекта.

Редактировать: должен ли я устанавливать уровни диапазона перед вызовом at.play () или после? Я делал это раньше в.play (), и, похоже, это не работает.

Ответ №1:

Я понял это! Я не звонил eq.setEnabled(true) . Теперь это работает!