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.
- Elegir el fondo para Live Wallpaper
- Cómo implementar doble toque para Android wallpapers vivos?
- Choque del selector de Android LiveWallpaper
- Obtener un error en WallpaperManager.ACTION_CHANGE_LIVE_WALLPAPER
- Cómo crear una actividad de configuración para Android Live Wallpaper
- ¿Cómo puedo mostrar el fondo de pantalla en vivo del usuario como fondo en mi aplicación?
- Establecer Live Wallpaper de forma programática en Dispositivo enraizado Android
- Java.io.IOException: setDataSource failed .: status = 0x80000000
- VideoView en un fondo de pantalla en vivo?
- Android 3D Live Wallpaper - ¿qué motor utilizar?
- IllegalArgumentException en unlockCanvasAndPost (fondo de pantalla en vivo Android)
- Llama cuando se hace clic en Wallpaper Wallpaper en Android
- Cómo crear un Android Live Wallpaper con Delphi XE5?
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()