test secretos samsung programacion para móviles desarrollo curso codigos codigo celulares aplicaciones android touchscreen

secretos - Android: detecte programáticamente si el dispositivo tiene hardware conectado con pantalla táctil



curso android desarrollo de aplicaciones móviles pdf (2)

Necesito escribir un script para detectar si la pantalla táctil física está conectada a mi dispositivo Android en el momento del arranque. Intenté enumerar el contenido de la carpeta /dev/input mediante adb y obtengo el siguiente resultado:

root@q88:/dev/input # ls event0 event1 event2 event3 event4 mice

Si no me equivoco, event0 identifica la pantalla táctil, pero es visible en ambos casos si la pantalla táctil está conectada o no.
¿Hay alguna forma de detectar si la pantalla táctil está conectada al dispositivo?

Gracias por adelantado.


Encuentre un nombre de controlador para el controlador táctil de su dispositivo. A continuación, compruebe su ubicación sysfs . Habrá pocos archivos asignados a las variables internas que se completaron con datos leídos desde el dispositivo físico de pantalla táctil durante su inicialización. Por ejemplo, la mayoría de los controladores de pantalla táctil tienen un firmware actualizable y proporcionan una forma de consultar su versión actual.

Uno de mis dispositivos utiliza el controlador de pantalla táctil atmel_mxt_ts y su ubicación de sysfs es /sys/bus/i2c/drivers/atmel_mxt_ts/1-004a/ . Hay un archivo fw_version en esa carpeta. Si la pantalla táctil física está conectada, ese archivo contendrá la etiqueta de firmware actual. El archivo vacío significaría que no hay pantalla táctil.


Puede leer /proc/bus/input/devices para obtener detalles de sus dispositivos de entrada existentes .

Dependiendo del nombre de su hardware, podría hacer algo como eso y verificar si hay alguna salida:

cat /proc/bus/input/devices | grep "Name=" | grep "Touch"

Esta es la salida completa de /proc/bus/input/devices :

I: Bus=0011 Vendor=0002 Product=0008 Version=2222 N: Name="AlpsPS/2 ALPS DualPoint TouchPad" P: Phys=isa0060/serio1/input0 S: Sysfs=/class/input/input2 H: Handlers=mouse1 event2 ts1 B: EV=f B: KEY=420 0 70000 0 0 0 0 0 0 0 0 B: REL=3 B: ABS=1000003 [...] (blank line, next device)

La B en el frente representa el mapa de bits, N, P, S, U, H son simplemente la primera letra con el nombre correspondiente y I es para la identificación. En forma ordenada:

  • I → @id: id del dispositivo (struct input_id)
    • Bus → id.bustype
    • Vendor → id.vendor
    • Product → id.producto
    • Version → id.version
  • N → nombre del dispositivo
  • P → ruta física al dispositivo en la jerarquía del sistema
  • S → ruta sysfs
  • U → código de identificación único para el dispositivo (si el dispositivo lo tiene)
  • H → lista de identificadores de entrada asociados con el dispositivo
  • B → mapas de bits
    • PROP → propiedades y peculiaridades del dispositivo
    • EV → tipos de eventos soportados por el dispositivo
    • KEY → teclas / botones que este dispositivo tiene
    • MSC → diversos eventos soportados por el dispositivo
    • LED → leds presentes en el dispositivo
    • REL → dirección relativa
    • ABS → dirección absoluta

Para probar si el dispositivo está realmente conectado, puede intentar simular eventos y ver si aparece algún error:

input tap [x] [y]

Android viene con una herramienta de línea de comandos de entrada que puede simular eventos de entrada diversos.

  • entrada → La herramienta de línea de comando para enviar eventos
    • tocar → la acción
    • [x] → coordenada X en la pantalla
    • [y] → coordenada Y en la pantalla