java - needs - error en android emulator emulator error x86 emulation currently requires hardware acceleration
Aceleración del hardware TextureView de Android con lockCanvas() (2)
Consulte el artículo de developer.android.com/guide/topics/graphics/hardware-accel.html .
Básicamente, si desea que su TextureView
sea acelerado por hardware, debe asegurarse de que la aceleración de hardware esté habilitada en algún nivel en el contexto de su TextureView, es decir, uno de los siguientes:
- A nivel de aplicación:
<application android:hardwareAccelerated="true" ...>
- A nivel de actividad:
<activity android:hardwareAccelerated="true" />
- En el nivel de la ventana:
getWindow().setFlags( WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED, WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
Tenga en cuenta que la aceleración de hardware es realmente obligatoria para usar un TextureView :
TextureView solo se puede utilizar en una ventana acelerada por hardware. Cuando se representa en el software, TextureView no dibujará nada.
Estoy tratando de usar la aceleración de hardware para Android con mi lienzo. Solía tener un SurfaceView
que hice lockCanvas()
para obtener un lienzo en el que luego dibujaría, pero cambié a TextureView
porque no podía hacer que SurfaceView
usara la aceleración de hardware. Actualmente estoy tratando de hacer que este lienzo use la aceleración de hardware.
Canvas canvas = this.lockCanvas();
System.out.println(this.isHardwareAccelerated() + ", " + canvas.isHardwareAccelerated());
Me da la salida: verdadero, falso ( this
es un TextureView
)
¿Alguien sabe por qué el canvas
no es acelerado por hardware, y cómo hacerlo así?
Edición: Por lo que he encontrado, parece que tengo que usar OpenGL. Sin embargo, todavía me gustaría saber si hay planes anunciados para hacer posible la aceleración de hardware para tal lienzo.
TextureView
funciona solo cuando la aplicación es acelerada por hardware, pero el Canvas
que retorna de lockCanvas()
actualmente nunca es acelerado por hardware. Esto significa que dibujará dentro del TextureView
de TextureView
en el software, pero TextureView
se dibujará usando la GPU. Actualmente, la única forma de obtener un Canvas acelerado por hardware es usar el onDraw(Canvas)
de una Vista.