android hid touch-event

android - ¿Simular el dispositivo HID USB/Bluetooth localmente para inyectar eventos?



touch-event (3)

Esto puede ser posible (o al menos ser más fácil) utilizando la biblioteca Robolectric , que simula un dispositivo Android completo localmente. Aunque está destinado principalmente para pruebas, el hecho de que simule un dispositivo completo localmente, incluyendo Bluetooth y USB, significa que agregarlo puede ser un enfoque más fácil.

En otras palabras, es posible que pueda modificar las clases que usa para simular estas habilidades localmente (es decir, en el mismo IDE sin un emulador o dispositivo) para simularlas en el propio dispositivo. Después de todo, proporciona simulaciones completas de estas funciones. Simplemente puede cambiar estas clases de simulación de Bluetooth y USB para que se carguen en el propio dispositivo en lugar de en el "dispositivo" local de prueba Robolectric.

Sin embargo, esto es solo una idea. No puedo confirmar que esto funcione. Puede que sea un buen lugar para comenzar.

¿Es posible simular un dispositivo USB o Bluetooth conectado a Android?

Me gustaría crear una aplicación que pueda simular un dispositivo HID localmente . Lo que quiero decir con esto es: la aplicación debe hacer que Android crea que un dispositivo HID USB / Bluetooth está conectado. Esto permitiría que mi aplicación inyectara eventos táctiles a nivel mundial, espero. ¿Hay alguna forma de simular un dispositivo (virtual)? Tenga en cuenta que realmente no me importa el dispositivo, solo quiero usar el soporte integrado para la entrada HID.

Sé que mucha gente ya ha preguntado acerca de las inyecciones de eventos táctiles, pero este enfoque parece ser un poco diferente. No quiero usar esto para propósitos de prueba, por lo que InstrumentationTestCase y similares no ayudarán.

Rootear el dispositivo podría ser una opción, aunque también puedo imaginar pedirle a mis usuarios finales que instalen una aplicación específicamente firmada manualmente (de acuerdo con https://stackoverflow.com/a/16737083/2923406 y https://stackoverflow.com/a/22902808/2923406 esto funciona, pero sería específico del dispositivo).

Estoy consciente de:

  1. Simular una entrada de ratón en Android : este tipo parece hacerlo en su propia aplicación, aunque sus preguntas no fueron respondidas;)

  2. http://www.pocketmagic.net/2013/01/programmatically-injecting-events-on-android-part-2/#.U58SqfldVHV - Needs Root. ¿Alguien logró usar esto? Además, la solución parece muy específica del dispositivo de nuevo.

  3. Bluetooth + simulador de ratón - Eso no es lo que quiero. El teléfono en sí no debe ser un dispositivo HID, pero debe usar el (creado virtualmente) uno mismo. Lo mismo para esto: https://stackoverflow.com/a/8174973/2923406

Tenga en cuenta que no quiero convertir mi teléfono en un dispositivo HID de ningún tipo.


Sí, es bastante fácil usar el protocolo AOA2. Consulte this y this para obtener más información (deberá cambiar su dispositivo al modo Accesorio).


Simular es un término amplio. Cuando creé mi aplicación Bluetooth, "simulé" una conexión Bluetooth de dos maneras.

Modo 1: use un puerto serie UART convertidor r y conéctelo a un transmisor de módulo Bluetooth .

Luego puede usar un programa de terminal como CoolTerm , para enviar sus datos.

Como so En este caso, codifiqué una cadena para enviar una conexión exitosa con el dispositivo, sin embargo, puede hacer un bucle infinito para propósitos de prueba que no requieren que su teléfono se convierta en un dispositivo HID.

Modo 2 (no es fácil): use su computadora bluetooth en un modelo de servidor / cliente relashionship.

Esto es más difícil de hacer. Lo que puede hacer es convertir su PC / mac en un servidor y el teléfono Android en un cliente o viceversa. Para ello, deberá escribir un código externo que deberá compilarse por separado en una máquina virtual Java (jvm). El procedimiento para hacer esto se puede encontrar here . Si está utilizando una máquina Linux, debe descargar el módulo Bluez por separado. No he intentado esto en ningún otro sistema operativo que no sea Ubuntu, y fue un dolor conseguir funcional.

Esperemos que eso haya ayudado.