¿Cómo puedo obtener el color de un pixel de pantalla a través de ADB

Necesito obtener la información de color de un punto específico en la pantalla de mi teléfono Android.

¿Hay alguna manera de hacerlo a través de ADB?

Ahora estoy utilizando el comando build-in screencap para capturar toda la pantalla y luego leer el color del punto específico. Sin embargo, es demasiado lento.

Voy a publicar una respuesta a mi propia pregunta. La respuesta tal vez especificada por el dispositivo (nexus7 2013), y se puede ajustar a sus propios dispositivos.

1.En primer lugar, me entero de que el comando screencap screen.png es bastante lento, ya que toma la mayor parte de su tiempo convirtiendo a png tipo de archivo. Por lo tanto, para ahorrar tiempo, el primer paso es la pantalla de volcado a un archivo de datos sin procesar. adb shell screencap screen.dump

2.Compruebe el tamaño del archivo. Mi resolución de pantalla es 1920 * 1200, y el tamaño de archivo es 9216012 byte. Observando que 9216012 = 1920 * 1200 * 4 + 12, supongo que el archivo de datos utiliza 4 bytes para almacenar cada información de píxeles, y utilizar otro byte de 12 para hacer un poco de personal de misterio. Sólo hacer algunos más screencaps y me parece que el 12 byte en la cabeza de cada archivo son los mismos. Por lo tanto, los 12 bytes adicionales están a la cabeza del archivo de datos.

3. Ahora, las cosas son simples usando dd y hd . Suponiendo que quiero obtener el color en (x, y): let offset=1200*$y+$x+3 dd if='screen.dump' bs=4 count=1 skip=$offset 2>/dev/null | hd let offset=1200*$y+$x+3 dd if='screen.dump' bs=4 count=1 skip=$offset 2>/dev/null | hd

Tengo salida como 00000000: 4b 73 61 ff s 21e sum 21e El 4b 73 61 ff es mi respuesta.

Si tu teléfono está enraizado y sabes su formato framebuffer , puedes usar dd y hd (hexdump) para obtener la representación de píxeles directamente desde el archivo framebuffer :

 adb shell "dd if=/dev/graphics/fb0 bs=<bytes per pixel> count=1 skip=<pixel offset> 2>/dev/null | hd" 

Normalmente <bytes per pixel> = 4 y <pixel offset> = Y * width + X pero podría ser diferente en su teléfono.

  • Android - Cambiar el color azul predeterminado del tema de Holo
  • Color de fondo del tablerow del cambio de OnClick
  • Modos de mezcla de Android
  • Cómo cambiar el color del texto en la prensa de un textview particular en un linearlayout
  • ¿Puede textview tener letras en diferentes colores?
  • El color del icono de notificación de Android no se cambia cuando el color de fondo es blanco
  • Establecer color de texto para textView Android
  • Android: ¿Cómo cambiar el color del dataselector en el widget Datepicker?
  • TextView setTextColor () no funciona
  • Cómo cambiar el menú emergente del color de fondo android
  • Cómo agregar un degradado a los botones en android a través de xml?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.