Android.media.audiofx.Visualizer lanzando excepción cada otra vez

Estoy haciendo un Live Wallpaper para Android 2.3.3 y utilizó la clase Visualizer. Ya tengo una versión de trabajo de mi programa Visualizer funcionando como un stand alone, pero cuando pongo el código en un servicio Live Wallpaper, mi problema comienza. El código siguiente es donde existe el error:

// 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); } 

Aquí está la parte extraña, cuando estoy mirando a través de la lista de fondos de pantalla en vivo, voy a tocar para ver la vista previa y funciona bien. Sin configurarlo como fondo de pantalla activo, pulsé el botón de retroceso y luego lo seleccioné de nuevo y se bloquea. Puedo repetir este proceso y sólo se bloquea cada otro momento y funciona las otras veces. Si elijo configurarlo como el fondo de pantalla activo, se bloquea cada vez.

En cuanto a la fuente , parece que IllegalStateException se IllegalStateException si el estado no es STATE_INITIALIZED .

Dado que el constructor establece el estado en STATE_ENABLED o STATE_INITIALIZED , significa que el estado al obtener la excepción es STATE_ENABLED (la única opción).

En la documentación de setCaptureSize() mencionan que no deberías llamar a este método mientras el estado es STATE_ENABLED , así que creo que necesitas llamar a setEnabled(false) en el objeto Visualizer antes de llamar a setCaptureSize()

  • Tamaño de la miniatura de vista previa del fondo de pantalla en vivo
  • Android: ¿Cómo iniciar la actividad desde el menú de preferencias?
  • Cómo acelerar la carga / compilación de shader en Android
  • ¿Cómo paso a la vista previa de Live Wallpaper desde la aplicación?
  • Vídeo de Android como fondo de pantalla en vivo
  • OnTouch no funciona en Live Wallpaper
  • Animación de diapositivas de Android en vivo
  • ¿Mejor velocidad de cuadro que dibuja los mapas de bits en una lona?
  • Rotación de pantalla de pantalla en vivo
  • ¿Cómo puedo detectar si mi fondo de pantalla en vivo se está ejecutando en la actividad de vista previa / "Establecer papel tapiz" o en la pantalla de inicio
  • Cómo convertir un gif en un fondo de pantalla en vivo para su uso en la aplicación para Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.