Я нашел версию исходного кода (https://android.googlesource.com/platform/frameworks/base/+/5bb8f80/media/java/android/media/audiofx/AudioEffect.java),, хотя номера строк не соответствуют вашей трассировке стека.
Похоже, что UnsupportedOperationException
выбрасывается в результате проблемыпри инициализации собственной реализации кода механизма звуковых эффектов. В коде, который я рассматриваю, сообщение об исключении говорит: «Библиотека эффектов не загружена». Я предполагаю, что это вызвано одним из следующих:
Требуемая собственная библиотека отсутствует в пути загрузки. (Возможно, вы не включили ее в приложение ...)
Возможно, существуетошибка в коде инициализации библиотеки.
Обновление - Обновленная трассировка стека и сообщение об ошибке указывают, что проблема возникает при создании Virtualizer
.Это сообщение означает, что оно связано с неверным параметром.
Просматривая код для классов AudioEffect и Virtualizer, выясняется, что инициализатор Virtualizer
пытается извлечь параметр изm собственный API для проверки, поддерживается ли параметр «сила» Virtualizer.Похоже, что API говорит, что он даже не понимает параметр, который должен сказать, поддерживается ли параметр прочности (!)
Комментарии в классе Virtualizer рядом с тем, где указаны номера параметров, говорятэто:
// These constants must be synchronized with those in
// frameworks/base/include/media/EffectVirtualizerApi.h
Исходя из поведения, которое я вывел, кажется, что это не так.Другими словами, я думаю ... как-то ... вы используете версию Java API, которая не соответствует версии нативного API.
Кроме того, это может происходить из-за того, что поддержка Virtualizer на этих устройствах не работает.
Я бы предложил следующие обходные пути:
Попробуйтеперехватите исключение времени выполнения в вашем методе init
и обработайте функциональность Virtualizer как отключенную на устройстве.
Если вы знаете, что такое устройства-нарушители, укажите свой метод init
длядаже не пытайтесь настроить виртуализатор на этих устройствах.
Не поддерживают эти устройства вообще.(Они старые? Работают ли они со старыми / плохо обслуживаемыми сборками Android? Они даже стоят поддерживают?)
Возможно также, что проблема связанаодин из этих вопросов и ответов: