Эквалайзер - библиотека эффектов не загружена

У меня почти такая же проблема, как описанная здесь, ответьте в этом посте мне не помогает, я отпускаю свой эквалайзер сразу после установки для него уровней полосы. Он отлично работает на моем устройстве 4.0.4, отлично работает на устройстве друга 2.3.5, вылетает на небольшом проценте устройств и не имеет значения, какая версия андроида работает на этих устройствах.

Значит ошибка на

Equalizer mEqualizer = new Equalizer(0, mediaPlayer.getAudioSessionId());

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)

Я понятия не имею, как это решить, есть предложения?


person pavelkorolevxyz    schedule 07.11.2012    source источник


Ответы (3)


Убедитесь, что вы перезагрузили устройство и снова протестировали его с помощью release() после использования эквалайзера, у меня это сработало после 2 дней поиска подсказок.

person read    schedule 14.11.2013

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

Именно здесь жизненный цикл приложения Android немного усложняет ситуацию, поскольку приложения никогда не должны завершаться (просто приостанавливаться и возобновляться), если только ОС не требует абсолютной памяти или не происходит перезагрузка. Метод вашего приложения onDestroy() вызывается в обоих случаях.

Вы можете поместить release() в onDestroy(), и это удовлетворит жизненный цикл Android для развернутых приложений. Ваши пользователи не увидят эту ошибку.

Однако в процессе разработки возникает проблема: IDE, такие как Eclipse (которая на самом деле является платформой для создания IDE, а не сама IDE...), будут убивать процесс приложения, а не отправлять ему сообщение об уничтожении. Это нарушает жизненный цикл, и функция release() не вызывается.

Вот почему вы никогда не должны вызывать System.exit(). Это нарушает жизненный цикл с риском неизящных выходов точно так же, как это.

Итак, ваш процесс завершался некрасиво. Происходит только в разработке, а не в развертывании. Одно из средств — не использовать окно устройства в eclipse для остановки процессов. Это не остановка, а убийство.

Eclipse также убивает (нарушение жизненного цикла) процесс некрасиво, когда вы запускаете проект приложения, когда уже запущен экземпляр.

Как сказал доктор, если это больно, не делайте этого: вместо этого используйте отладчик, который отправляет приложению фактические сообщения жизненного цикла.

person Dominic Cerisano    schedule 22.01.2015

Это зависит от сборки Android, загруженной на устройство.

Этот журнал означает, что нет библиотеки для реализации функции AudioEffect.

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

person Mario Lenci    schedule 11.07.2013