Ответ 1
Убедитесь, что вы перезагрузили устройство и протестировали его снова с помощью release() после использования эквалайзера, он работал у меня через 2 дня поиска подсказок.
У меня почти такая же проблема, как описано здесь здесь, ответ в этом сообщении мне не помогает, я освобождаю свой эквалайзер сразу после установки уровней полосы. Он отлично работает на моем устройстве 4.0.4, он отлично работает на другом устройстве 2.3.5, он падает на небольшой процент устройств, и неважно, какая версия Android работает на этих устройствах.
Таким образом, ошибка
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)
Я не знаю, как это решить, любые предложения?
Убедитесь, что вы перезагрузили устройство и протестировали его снова с помощью release() после использования эквалайзера, он работал у меня через 2 дня поиска подсказок.
Это зависит от сборки Android, загруженной на устройство.
Этот журнал означает, что нет библиотеки для реализации функции AudioEffect.
Я боюсь, что для этого нет решения, вместо того, чтобы импортировать в ваш проект некоторую стороннюю библиотеку аудиоэффектов
Из документации вам нужно вызвать release() на Equalizer, MediaPlayer, Visualizer и т.д. для изящного выхода, или вы увидите эту ошибку при перезапуске приложения. Единственное средство - перезагрузка, как уже упоминалось в этом потоке.
Здесь жизненный цикл приложения для Android делает вещи немного сложными, так как приложения никогда не должны выходить (просто приостановить и возобновить), если это не требуется ОС по соображениям памяти или перезагрузка. Ваше приложение onDestroy() метод вызывается в обоих случаях.
Вы можете поместить release() в onDestroy(), и это будет соответствовать жизненному циклу Android для развернутых приложений. Ваши пользователи не будут видеть эту ошибку.
В разработке есть проблема: IDE, такие как Eclipse (которая на самом деле является основой для создания IDE и не предназначена для самой IDE...), убьет процесс приложения, а не отправит сообщение об уничтожении. Это нарушает жизненный цикл, и release() не вызывается.
Вот почему вы никогда не должны звонить System.exit(). Это нарушает жизненный цикл, рискуя нечестными выходами именно так.
Итак, ваш процесс был беззастенчивым. Это происходит только при разработке, а не в развертывании. Одно из средств - не использовать окно устройства в eclipse для остановки процессов. Это не остановка, а убийство.
Eclipse также убивает (нарушение жизненного цикла) процесс несправедливо при запуске проекта приложения, когда уже запущен экземпляр.
Как сказал врач, если это больно, не делайте этого: вместо этого используйте отладчик, который отправляет фактические сообщения жизненного цикла в приложение.