Captura continua de la pantalla de Android para su procesamiento en una aplicación

Necesito una transmisión en vivo o algún método para ver lo que se muestra en la pantalla. No quiero guardar una captura de pantalla en un archivo, o grabar un video, etc No quiero transmitir la pantalla a otro dispositivo (no estoy tratando de screencast / mirracast), necesito el contenido de la pantalla localmente en un Android solicitud.

¿Por qué necesitaría eso?

Quiero escribir una aplicación de Android para administrar un lightpack adaptando las luces a lo que se muestra en el dispositivo android.

  • Requerir raíz está bien (esperaba que se requiriera root).
  • También es aceptable la necesidad de binarios adicionales de nivel inferior.
  • La calidad de la imagen no tiene que ser exacta como en la pantalla, una resolución mucho más baja seguirá siendo aceptable

Si dices que no se puede hacer, estás equivocado. Si descarga la aplicación Prismatik para Android, verá exactamente lo que quiero, captura la pantalla y gestiona mi lightpack sin problemas de rendimiento mientras agarra la pantalla. Sólo quiero crear mi propia aplicación que hace lo mismo, excepto que lo haré un proyecto GitHub de código abierto …

Editar: Creo que usar / dev / graphics / fb0 podría ser parte de una respuesta. No sé cómo el rendimiento de usar esto será sin embargo.

He encontrado una respuesta a mi propia pregunta.

Android (linux también) tiene un archivo framebuffer ( / dev / graphics / fb0 en Android) que puede leer que contiene el framebuffer actual de todo el contenido de la pantalla. En la mayoría de los casos en realidad contendrá 2 marcos para doble búfer … Este archivo cambiará constantemente a medida que cambie el contenido de la pantalla (para lo que quiero usarlo, está bien, no necesito EXACT para el < Milisegundos, sólo necesito roughtly saber qué colores se muestran donde en la pantalla)

Este archivo contiene los gráficos en un formato RAW. En mi Galaxy S3 contenía 4bytes por píxel. Si necesita saber cuántos bytes debe leer para obtener su pantalla actual (sólo 1 fotograma), debe realizar los cálculos. Mi pantalla tiene 720×1280 píxeles.

Por lo tanto necesito leer:

720 x 1280 píxeles = 921.600 píxeles

921.600 píxeles * 4 bytes por píxel = 3.686.400 bytes

A partir de esto puede extraer cada canal de color, y hacer los cálculos que necesita. El método para leer los datos depende realmente de usted. Puede escribir un bit nativo de código para leer el búfer y hacer manipulaciones. O puede leer el búfer desde el código de Android con un flujo de entrada.

Dependiendo de la ROM cargada en su dispositivo, es posible que necesite root para acceder a este archivo (en la mayoría de los casos necesitará root)

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