Ответ 1
У меня была эта же проблема, и это было вызвано не вызовом release() на моем эквалайзере, когда я закончил с ним. По-видимому, родные библиотеки не позволят создавать новый AudioEffect, если их уже слишком много.
прежде чем включить возможности эквалайзера, я проверяю уровень 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)
Я не знаю, есть ли решение, и если бы я не мог просто поймать эти исключения и отключить эквалайзер, но мне нужно знать, что именно вызывает это, поэтому я могу информировать своих пользователей, не расстраивая их.
спасибо за любую помощь
У меня была эта же проблема, и это было вызвано не вызовом release() на моем эквалайзере, когда я закончил с ним. По-видимому, родные библиотеки не позволят создавать новый AudioEffect, если их уже слишком много.