Canvas en SurfaceView – Aceleración de hardware

Estoy desarrollando en ICS y tratando de entender por qué un Canvas.isHardwareAccelerated () siempre devolverá FALSE cuando se utiliza un lienzo dentro de un SurfaceView.

He intentado un ejemplo muy básico como este: http://android-coding.blogspot.com/2011/05/drawing-on-surfaceview.html O este: http://jmsliu.com/199/android- Canvas-example.html

Incluso los modifiqué para que no tuvieran ninguna llamada de lienzo dentro del bucle de dibujo pensando que podría haber obtenido en algunas operaciones de aceleración HW no compatibles para ciertas llamadas de dibujo. Revisé esta lista en "Operaciones de dibujo no soportadas" developer.android.com/guide/topics/graphics/hardware-accel.html pero no estoy haciendo nada de eso.

Estoy usando el indicador de renderización de Force GPU dentro de las Opciones de Desarrollador junto con dentro de los manifiestos, también estoy especificando minSDK / targetSDK> = 14.

El View.isHardwareAccelerated devolverá TRUE, mientras que el Canvas.isHardwareAccelerated volverá siempre FALSE.

He visto que Canvas.java tiene hard-codeded return false para isHardwareAccelerated (), mientras que HardwareCanvas.java tiene return true. Supongo que por algunas razones no estoy recibiendo el camino de HW, ¿por qué?

¿Puede un lienzo dentro de un SurfaceView ser HW acelerado?

Gracias

Un lienzo devuelto por SurfaceView.lockCanvas() no se puede acelerar por hardware en este momento.

Parece que hay un nuevo método hide api unlockHardwareCanvas en android.view.Surface

Y aquí está el ejemplo: http://androidxref.com/5.1.0_r1/xref/frameworks/base/tests/HwAccelerationTest/src/com/android/test/hwui/HardwareCanvasSurfaceViewActivity.java

Puede utilizar relfecation en entornos de producción.

¿Ha declarado en su manifiesto android, que su aplicación quiere utilizar la aceleración de hw?

Esto sería algo así como <application android:hardwareAccelerated="true" ...>

Dependiendo de lo que desee hacer, también podría ser útil activar la aceleración sólo para una actividad o ventana, consulte http://developer.android.com/guide/topics/graphics/hardware-accel.html para obtener más detalles.

Rudi

  • Android: ¿Cómo hacer una vista previa de cámara en forma de círculo?
  • agregar imagen a la vista de la superficie en android
  • SuperficieCreada () Nunca llamado
  • La cámara Android no funcionará. StartPreview falla
  • SurfaceHolder.lockCanvas () toma demasiado tiempo para mi aplicación de juego
  • ¿Cómo pasar la vista previa de la cámara a la superficie creada por MediaCodec.createInputSurface ()?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.