Cómo dibujar con framebuffer en Android?
Me gustaría escribir una aplicación para Android que muestra cosas en la pantalla usando el framebuffer. Esto se ejecutará sólo en un dispositivo de raíz específica, por lo que los permisos, etc no es un problema. La misma aplicación (versión de prueba simple de todos modos) ya está funcionando bien en PC / Linux.
Las preguntas:
- ¿Qué marco de Android se puede utilizar para conectar PC a Android y Android a otra PC?
- Desarrollo móvil (Android & iOS) principiante necesita orientación
- Dibujar superposición en Android (en todo el sistema)
- Módulos de Android y Kernel
- Error de permiso de Android adb
-
¿Cómo evitar que el sistema operativo Android acceda al framebuffer? Me gustaría, mientras mi aplicación se está ejecutando, que el sistema operativo nunca toque el framebuffer, no escribe y no ioctls. ¿Qué debo hacer para obtener el uso exclusivo de la framebuffer, y luego (cuando mi aplicación se cierra) devolverlo al sistema operativo?
-
¿Hay alguna diferencia entre el framebuffer de Android y el framebuffer de Linux para tener en cuenta?
PS Me gustaría iniciar mi aplicación como una aplicación regular de Android (con algún código nativo), simplemente no tiene visible UI, excepto para framebuffer dibuja que asumir toda la pantalla. Sería bueno aún ser capaz de obtener eventos desde el sistema operativo.
Véase también: http://www.kandroid.org/online-pdk/guide/display_drivers.html
- Versión de 64 bits de adb y fastboot?
- shell script en android da [: no encontrado
- Inesperado resultados diferentes de la misma entrada de cadena
- Linux Ubuntu Android SDK manager no está iniciando - android: java: no encontrado
- ¿Cómo hago el trabajo de ADB en linux con una motorola
- / dev / mem y / dev / kmem no existe?
- System.getProperty ("line.separator") Vs "\ n" para Android
- ¿Dónde puedo encontrar la ubicación predeterminada para las librerías de claves android creadas por eclipse?
Hola Alex No estoy seguro de por qué / cómo detener el sistema operativo Android desde escribir a framebuffer. Siempre y cuando su aplicación Android es visible y en la parte superior tiene el control como lo que desea mostrar.
Su aplicación debe tener una actividad con un SurfaceView (es posible que desee que su aplicación oculte la barra de notificación llamar a esta función en oncreate de su actividad) requestWindowFeature(Window.FEATURE_NO_TITLE);
)
Su actividad debe tener SurfaceHolder.Callback implementación para manejar las devoluciones de llamada como cuando la superficie está lista para llenarse con framebuffer. Obtener el objeto de soporte de superficie como SurfaceView.getHolder () en caso de que desee establecer los formatos de píxeles de la vista, etc
Una vez que se llame a " surfaceCreated ", se puede pasar con seguridad el objeto de superficie (pasar el ancho y la altura tal vez una buena idea también) al nativo para poder llenarlo con la clase "ANownWindow".
Compruebe el código de ejemplo NDK para ver cómo utilizar la documentación NDK de clase
SurfaceHolder.Callback documentación
Documentación de SurfaceHolder
Esencialmente usted necesita a estos (ON JB / Kitkat)
-
Obtenga la ventana nativa (ANativeWindow) asociada con la vista de
ANativeWindow_fromSurface
porANativeWindow_fromSurface
. -
Adquiera un bloqueo en ANativeWindow por
ANativeWindow_acquire
. -
Establecer parámetros de geometría (ventana, anchura, altura, pf) para la ventana nativa por
ANativeWindow_setBuffersGeometry
-
Cargue el nativewindow con el frambuffer almacenado (aplique el rectángulo sucio si alguno aquí) por
ANativeWindow_lock
-
Paso final para desbloquear y publicar los cambios para la representación por
ANativeWindow_unlockAndPost
Vaya a través de los ejemplos de ejemplo ndk en caso de que necesite código de ejemplo. Documentación NDK
- La elevación no funciona para BottomSheet dentro de la disposición del coordinador
- Cambiar el diseño o la actividad de fragmentos (?) Mediante un cajón de navegación