Pytanie Korektor nie zawsze jest obsługiwany, nawet gdy api> = 9?


przed włączeniem funkcji korektora, sprawdzam poziom API, aby upewnić się, że jest równy lub większy niż 9. Z raportów otrzymanych od moich użytkowników wynika, że ​​niektóre wyjątki są generowane:

kod eq = new Equalizer(0, mp.getAudioSessionId()) może podnieść:

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)

i kod eq.getBandLevelRange() może podnieść:

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)

Nie wiem, czy istnieje rozwiązanie, a jeśli nie, mogę po prostu wychwycić te wyjątki i wyłączyć korektor, ale muszę wiedzieć, co dokładnie powoduje to, więc mogę poinformować moich użytkowników, nie frustrując ich.

dzięki za pomoc


12
2018-05-10 14:27


pochodzenie


pojawia się ten sam błąd na 25 poziomie api, czy znalazłeś jakieś rozwiązanie? - AkhilGite


Odpowiedzi:


Miałem ten sam problem i było to spowodowane nie wywołaniem release () na moim equalizerze, kiedy go skończyłem. Wygląda na to, że biblioteki natywne nie pozwolą na utworzenie nowego AudioEffect, jeśli jest ich już zbyt wiele.


6
2018-06-04 17:23



Dodałem wersję w tej samej klasie, w której inicjalizuję swój equalizer, a moja aplikacja działa poprawnie na wszystkich urządzeniach z wyjątkiem poziomu api na poziomie 25. Występuje błąd z wyjątkiem java.lang.UnsupportedOperationException: AudioEffect: niepoprawna operacja parametru Zapytałem więc o que pod poniższym linkiem stackoverflow.com/questions/40967977/... - AkhilGite