Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


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

  • ¿Es OpenGL en Android un asesino de la batería?
  • Invisible SurfaceView para previsualización de la cámara
  • Error al inflarse al extender una clase
  • Imagen de leva en el soporte de superficie, dibujar: Excepción debido al tipo de superficie
  • Cámara Android: la aplicación superó la superficie NULL
  • Corregir la relación de aspecto y la rotación de la aplicación de la cámara Android
  • Android: ¿Cómo hacer una vista previa de cámara en forma de círculo?
  • ¿Cómo pasar la vista previa de la cámara a la superficie creada por MediaCodec.createInputSurface ()?
  • 3 Solutions collect form web for “Canvas en SurfaceView – Aceleración de hardware”

    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

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.