titulo reproducir reproduce reproduccion quejas play peliculas ocurrido las este error codigo claro carga blim java android canvas view gif

java - reproducir - Señal de error 11 de Android cuando una película se dibuja en un lienzo



play view ha ocurrido un error (2)

Estoy desarrollando una aplicación de Android en la que estoy tratando de mostrar una imagen GIF. Para eso estoy usando la clase Movie y creé una clase GIFView que extiende View. Obtengo una instancia de Película del método Movie.decodeFile.

Me aparece un error cuando se llama Movie.draw (canvas).

04-28 13:44:18.001: A/libc(24883): Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1), thread 24883 (mple.channel002)

Existe el código en cuestión:

public void setGif(File gif) { movie = Movie.decodeFile(gif.getAbsolutePath()); } @Override public void draw(Canvas canvas) { // TODO Auto-generated method stub super.draw(canvas); canvas.drawColor(0xFFCC3C6C); if(movie != null) { if(movieStart == 0) movieStart = android.os.SystemClock.uptimeMillis(); int duration = Math.max(movie.duration(), 1000); movie.setTime((int)(duration - ((android.os.SystemClock.uptimeMillis() - movieStart)%duration))); movie.draw(canvas, 10, 10);//TODO CRASH invalidate(); } }

Creo un GIFView en el principal, llame al método setGIF anterior para darle la ruta y agregarlo al diseño con el parámetro FillParent. Funciona cuando imprimo esta imagen en un ImageView. También dibuja un dibujante en el lienzo en lugar del GIF. Entonces el problema parece tratarse con la instancia de la Película.

Utilicé estos enlaces para hacer GIFView http://weavora.com/blog/2012/02/07/android-and-how-to-use-animated-gifs/

También lo intenté de esta manera, pero el mismo error en movie.draw Información sobre la clase de película para Android

EDIT1: hago mis pruebas en un Oppo Find 7a en Android 4.4.2 / snapdragon 801 / 2GB Cambiar movie.draw (canvas, 10, 10) a movie.draw (canvas, 10f, 10f) no cambia nada.

EDIT2: Acabo de probar en un viejo dispositivo ZTE con Android 2.3.5 y funcionó ... Algo está mal cuando se inicia en el dispositivo Find7a pero no puedo entender qué :(


¡FINALMENTE! Encontré la respuesta, parece que en algunas versiones o dispositivos de Android la aceleración de hardware debe deshabilitarse.
Acabo de agregar esto a mi manifiesto:

<application android:hardwareAccelerated="true" ...>

Puede encontrar más información sobre el uso de la habilitación / deshabilitación de la aceleración de hardware aquí .