Android: Señal fatal 11 (SIGSEGV) en 0x00000000 (código = 1) en movie.draw
Estoy intentando exhibir un gif animado en un ImageView que usa la clase androide de la película en el método del onDraw como sigue:
@Override protected void onDraw(Canvas canvas) { canvas.drawColor(Color.TRANSPARENT); super.onDraw(canvas); long now = android.os.SystemClock.uptimeMillis(); if (movieStart == 0) { movieStart = now; } movie = getMovieFromGif(); if (movie != null && movie.duration() > 0) { try { int relTime = (int) ((now - movieStart) % movie.duration()); movie.setTime(relTime); float movie_height = convertDpToPixels(movie.height()); float movie_width = convertDpToPixels(movie.width()); float new_movie_height = movie_height; float new_movie_width = movie_width; float movie_ratio = movie_width / movie_height; if (new_movie_width > container_width) { new_movie_width = container_width; new_movie_height = new_movie_width / movie_ratio; } if (new_movie_height > container_height) { new_movie_height = container_height; new_movie_width = new_movie_height * movie_ratio; } float scale_x = container_width / new_movie_width; float scale_y = container_height / new_movie_height; scale_x = new_movie_width / (float) movie.width(); scale_y = new_movie_height / (float) movie.height(); canvas.scale(scale_x, scale_y); float x = 0; if ((float) this.getWidth() > new_movie_width) { x = ((this.getWidth() - (movie.width() * scale_x)) / 2f) / scale_x; } movie.draw(canvas, x, 0); this.invalidate(); } catch (Exception ex) { Log.i("onDraw()", "Error: " + ex.getMessage()); } } }
Código funciona muy bien en la mayoría de los dispositivos, pero en Huawei Ascend P7 y galaxia Samsung a5, la aplicación se bloquea en movie.draw (lienzo, x, 0) con la excepción:
- ¿Cuántas tiendas de aplicaciones de Android para enviar ...?
- LocalStorage html5 no funciona en WebView en el dispositivo Samsung Android
- GLES10.glGetIntegerv devuelve 0 en el dispositivo Samsung
- Cómo resolver "versión desconocida de Android en el dispositivo".
- Samsung Count Badge
A / libc (23632): Señal fatal 11 (SIGSEGV) en 0x00000000 (código = 1), subproceso 23632
¿Alguna idea de lo que está mal con movie.draw en estos dispositivos?
ACTUALIZADO: A continuación se muestra el seguimiento completo de la pila
04-29 12: 09: 24.979: D / Actividad (18951): # 2 setTransGradationModeColor a true
04-29 12: 09: 25.049: I / Adreno-EGL (18951):: EGL 1.4 QUALCOMM generar: ()
04-29 12: 09: 25.049: I / Adreno-EGL (18951): OpenGL ES Shader Compiler versión: E031.24.02.07
04-29 12: 09: 25.049: I / Adreno-EGL (18951): Fecha de construcción: 08/06/14
04-29 12: 09: 25.049: I / Adreno-EGL (18951): Local Rama: rb1
04-29 12: 09: 25.049: I / Adreno-EGL (18951): Remoto Subdivisión:
04-29 12: 09: 25.049: I / Adreno-EGL (18951): Parches Locales:
04-29 12: 09: 25.049: I / Adreno-EGL (18951): Reconstruct Branch:
04-29 12: 09: 25.079: D / OpenGLRenderer (18951): habilitar modo de depuración 0
04-29 12: 09: 25.109: D / skia (18951): streamToByte: Imagen agif de entrada de más de 30MB.
04-29 12: 09: 25.109: D / skia (18951): streamToByte: Quram agif – longitud: 10473
04-29 12: 09: 25.109: D / skia (18951): Guiño AGIF Move Constructer Fin 9, totalTiempo: 2700
04-29 12: 09: 25.109: A / libc (18951): Señal fatal 11 (SIGSEGV) en 0x00000000 (código = 1), hilo 18951 (com.android.gif)
El error de señal fatal se produce después de la ejecución del código movie.draw (), rest es el rastro de la pila de ejecución de líneas antes de movie.draw ().
- ¿Cómo puedo crear un Android AVD para un Samsung Galaxy Note 2?
- ¿Cómo la aplicación android puede detectar qué tienda lo instaló?
- Samsung Galaxy Devices no puede usar geolocation.getCurrentPosition
- ¿Cuál es la mejor estrategia para recuperarse de un error - descuidando el registro donde ocurre el error
- Configuración del entorno de desarrollo en eclipse para Android Samsung SDK
- AlarmManager no funciona en dispositivos Samsung en Lollipop
- Cómo desarrollar un control remoto con la nota 3 Blaster IR
- No hay procesos debugables en android studio cuando está conectado con el teléfono que ejecuta Android 6.0
Pude resolver el problema deshabilitando la aceleración de hardware de Android:
Android: hardwareAccelerated = "false"
- Cómo encontrar Actividad o Fragmento que infla el archivo de diseño abierto actual en Android Studio
- ¿Cómo detectar si Android tiene soporte USB completo o no?