Intereting Posts
Android Почему кнопка выхода из системы SDK Facebook не отображается? Android – невозможно выполнить dex: несколько файлов dex определяют Из-за ошибки памяти при использовании viewpager + изображения даже при использовании кэш-памяти и асинтезы Специфические параметры в запросе GET API REST Android BLE Gatt Characteristic WRITE_TYPE_NO_RESPONSE не работает Изменение цвета фона элемента Android-Listview при прокрутке Будет ли apk, установленное вручную (не из магазина воспроизведения) получать уведомление, когда обновление станет доступным? Несовместимая неявная декларация встроенной функции Предупреждение Использование NDK с LAME Как сохранить изображение в формате JPEG на Android с пользовательским уровнем качества Eclipse throwing Разрешение отклонено Исключение в Ubuntu 12.04 LTS Возможно ли перепрограммировать ПЗУ устройства в эмулятор AVD или genymotion? Google Glass: GDK с Android Studio Spinner.setSelection не запускает OnItemSelectedListener правильно Автоматическое объединение контактов не работает при вставке нового контакта В андроиде ListView, как я могу перебирать / манипулировать всеми дочерними представлениями, а не только видимыми?

Android.media.audiofx.Visualizer бросает исключение каждый раз

Я делаю Live Wallpaper для Android 2.3.3, и он использовал класс Visualizer. У меня уже есть рабочая версия моей программы Visualizer, работающей как самостоятельная, но когда я помещаю код в службу Live Wallpaper, моя проблема начинается. Следующий код содержит ошибку:

// Called in my Engine extension's constructor public void setupVisualizer() { mBytes = null; mVisualizer = new Visualizer(0); // EDIT mVisualizer.setEnabled(false); // This fixes the issue // END EDIT mVisualizer.setCaptureSize( Visualizer.getCaptureSizeRange()[1]); // IllegalStateException Thrown mVisualizer.setDataCaptureListener() { public void onWaveFormDataCapture(Visualizer visualizer, byte[] bytes, int samplingRate) { updateVisualizer(bytes); } public void onFftDataCapture(Visualizer visualizer, bytes[] bytes, int samplingRate) {} }, Visualizer.getMaxCaptureRate() / 2, true, false); mVisualizer.setEnabled(true); } 

Вот странная часть, когда я просматриваю список живых обоев, я коснусь его, чтобы просмотреть предварительный просмотр, и он отлично работает. Не устанавливая его в качестве активных обоев, я нажимаю кнопку «Назад», а затем снова выбираю его, и он падает. Я могу повторить этот процесс, и он только падает каждый раз и работает в другие времена. Если я решит установить его как активные обои, он будет сбрасываться каждый раз.

Глядя на источник , похоже, что IllegalStateException выбрасывается, если состояние не STATE_INITIALIZED .

Поскольку конструктор устанавливает состояние в STATE_ENABLED или STATE_INITIALIZED , это означает, что состояние, когда вы получаете исключение, STATE_ENABLED (единственный вариант).

В документации setCaptureSize() они упоминают, что вы не должны вызывать этот метод, пока состояние STATE_ENABLED , поэтому я думаю, что вам нужно вызвать setEnabled(false) в объекте Visualizer перед вызовом setCaptureSize()