Вопрос по android – Эквалайзер не всегда поддерживается, даже если api> = 9?

12

перед включением возможностей эквалайзера я проверяю уровень API, чтобы убедиться, что он равен или больше 9. Из отчетов, которые я получаю от своих пользователей, кажется, что некоторые исключения все равно выбрасываются:

кодeq = new Equalizer(0, mp.getAudioSessionId()) может поднять:

Caused by: java.lang.UnsupportedOperationException: Effect library not loaded
at android.media.audiofx.AudioEffect.<init>(AudioEffect.java:355)
at android.media.audiofx.Equalizer.<init>(Equalizer.java:149)

и кодeq.getBandLevelRange() может поднять:

Caused by: java.lang.UnsupportedOperationException: AudioEffect: invalid parameter operation
at android.media.audiofx.AudioEffect.checkStatus(AudioEffect.java:1182)
at android.media.audiofx.Equalizer.getBandLevelRange(Equalizer.java:206)

Я не знаю, есть ли решение, и если нет, я мог бы просто перехватить эти исключения и отключить эквалайзер, но мне нужно знать, что именно вызывает это, поэтому я могу информировать своих пользователей, не расстраивая их.

спасибо за любую помощь

получить ту же ошибку на уровне API 25, вы нашли какое-либо решение? AkhilGite

Ваш Ответ

1   ответ
6

У меня была такая же проблема, и она была вызвана тем, что я не вызвал release () на моем эквалайзере, когда закончил с ним. Очевидно, что нативные библиотеки не позволят создать новый AudioEffect, если их уже слишком много.

Я добавил выпуск в том же классе, где я инициализирую свой эквалайзер, и мое приложение работает нормально на всех устройствах, кроме API-уровня 25. Это происходит сбой с исключением java.lang.UnsupportedOperationException: AudioEffect: операция с недопустимым параметром. Поэтому я спросил очередь по ссылке нижеstackoverflow.com/questions/40967977/…

Похожие вопросы