Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

238
Vistas
¿Cómo dibujar usando framebuffer en Android?

Me gustaría escribir una aplicación para Android que muestre cosas en la pantalla usando el framebuffer. Esto se ejecutará solo en un dispositivo rooteado específico, por lo que los permisos, etc., no son un problema. La misma aplicación (versión de prueba simple de todos modos) ya funciona correctamente en PC/Linux.

Las preguntas:

  1. ¿Cómo evitar que el sistema operativo Android acceda al framebuffer? Me gustaría, mientras se ejecuta mi aplicación, que el sistema operativo nunca toque el búfer de fotogramas, no escriba ni ioctls. ¿Qué debo hacer para obtener el uso exclusivo del framebuffer y luego (cuando mi aplicación se cierra) devolverlo al sistema operativo?

  2. ¿Hay alguna diferencia entre el framebuffer de Android y el framebuffer de Linux a tener en cuenta?

PD: Me gustaría iniciar mi aplicación como una aplicación normal de Android (con algún código nativo), simplemente no tiene una interfaz de usuario visible, excepto por los dibujos de framebuffer que ocupan toda la pantalla. Sería bueno poder obtener eventos del sistema operativo.

Consulte también: http://www.kandroid.org/online-pdk/guide/display_drivers.html

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Hola, Alex. No estoy seguro de por qué / cómo evitar que el sistema operativo Android escriba en framebuffer. Siempre que su aplicación de Android esté visible y en la parte superior tenga el control de lo que desea mostrar.

Su aplicación debe tener una actividad con SurfaceView (es posible que desee que su aplicación oculte la barra de notificaciones, llame a esta función al crear su actividad) requestWindowFeature(Window.FEATURE_NO_TITLE); )

su actividad debe tener la implementación SurfaceHolder.Callback para manejar las devoluciones de llamada cuando la superficie está lista para llenarse con framebuffer. Obtenga el objeto de soporte de superficie como SurfaceView.getHolder() en caso de que desee establecer formatos de píxeles de la vista, etc.

Una vez que se llama la devolución de llamada " surfaceCreated ", puede pasar con seguridad su objeto de vista de superficie (pasar el ancho y la altura, tal vez también sea una buena idea) al nativo para que pueda llenarlo con la clase "ANativeWindow".

Verifique el código de muestra de NDK para ver cómo usar la documentación de clase NDK

Documentación de SurfaceHolder.Callback

Documentación de SurfaceHolder

esencialmente necesitas estos (ON JB /Kitkat)

  1. obtenga la ventana nativa (ANativeWindow) asociada con la vista de superficie por ANativeWindow_fromSurface .

  2. Adquiera un bloqueo en ANativeWindow mediante ANativeWindow_acquire .

  3. Establecer parámetros de geometría (ventana, ancho, alto, pf) para la ventana nativa por ANativeWindow_setBuffersGeometry

  4. Cargue la ventana nativa con el frambuffer almacenado (aplique un rectángulo sucio, si lo hay aquí) por ANativeWindow_lock

  5. Paso final para desbloquear y publicar los cambios para renderizar por ANativeWindow_unlockAndPost

Revise los ejemplos de muestra de ndk en caso de que necesite un código de muestra. Documentación del NDK

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda