Simula localmente il dispositivo HID USB / Bluetooth per iniettare eventi?

È ansible simulare un dispositivo USB o Bluetooth connesso ad Android?

Mi piacerebbe creare un’app che sia in grado di simulare localmente un dispositivo HID. Ciò che intendo è: l’app dovrebbe far credere a Android che sia connesso un dispositivo HID USB / Bluetooth. Ciò consentirebbe alla mia app di iniettare touch events a livello globale, spero. Esiste comunque la possibilità di simulare un dispositivo (virtuale)? Nota che non mi interessa davvero il dispositivo, voglio solo usare il supporto integrato per l’input HID.

So che molte persone hanno già chiesto informazioni sulle iniezioni di eventi tattili, ma questo approccio sembra essere un po ‘diverso. Non voglio usarlo a scopo di test, quindi InstrumentationTestCase e simili non aiuteranno.

Il rooting del dispositivo potrebbe essere un’opzione, anche se posso anche immaginare di chiedere ai miei utenti finali di installare manualmente un’app specificatamente firmata (in base a https://stackoverflow.com/a/16737083/2923406 e https://stackoverflow.com/a / 22902808/2923406 funziona, ma sarebbe specifico per il dispositivo).

Sono a conoscenza di:

  1. Simula un input del mouse su Android – Questo ragazzo sembra farlo nella sua app, anche se le sue domande non hanno avuto risposta;)

  2. http://www.pocketmagic.net/2013/01/programmatically-injecting-events-on-android-part-2/#.U58SqfldVHV – Needs Root. Qualcuno è riuscito a usarlo? Inoltre, la soluzione sembra di nuovo molto specifica per il dispositivo.

  3. Mouse simulatore Bluetooth + – Non è quello che voglio. Il telefono stesso non dovrebbe essere un dispositivo HID, ma utilizzare quello (virtualmente creato) stesso. Lo stesso per questo: https://stackoverflow.com/a/8174973/2923406

Nota che non voglio trasformare il mio telefono in un dispositivo HID di alcun tipo.

La simulazione è un termine ampio. Quando ho creato la mia app Bluetooth, ho “simulato” una connessione Bluetooth in due modi.

Modo 1: utilizzare una porta seriale UART converte re collegarlo a un trasmettitore del modulo Bluetooth .

Quindi puoi usare un programma terminale come CoolTerm , per inviare i tuoi dati.

Mi piace così . In questo caso ho codificato una stringa per inviare una connessione riuscita con il dispositivo, tuttavia è ansible creare un ciclo infinito a scopo di test in modo efficace, non richiedendo che il telefono venga trasformato in un dispositivo HID.

Way 2 (non facile): usa il tuo computer bluetooth in un modello di relazione server / client.

Questo è più difficile da fare. Quello che puoi fare è convertire il tuo pc / mac in un server e il telefono Android in un client o viceversa. Per questo è necessario scrivere un codice esterno che dovrà essere compilato separatamente su una jvm (macchina virtuale java). La procedura per farlo può essere trovata qui . Se stai utilizzando una macchina Linux, devi scaricare separatamente il modulo Bluez. Non ho provato questo su qualsiasi altro sistema operativo diverso da Ubuntu, ed è stato un dolore per ottenere funzionale.

Spero che questo abbia aiutato.

Sì, è abbastanza semplice usare il protocollo AOA2 per controllare questo e questo link per i dettagli (dovrai passare il tuo dispositivo alla modalità Accessory)

Questo può essere ansible (o almeno essere più semplice) usando la libreria Robolectric , che simula localmente un dispositivo Android completo. Sebbene sia destinato principalmente ai test, il fatto che simuli localmente un intero dispositivo, inclusi Bluetooth e USB, significa che aggiungerlo potrebbe essere un approccio più semplice.

In altre parole, potresti essere in grado di modificare le classi che usa per simulare queste abilità localmente (cioè nell’IDE stesso senza un emulatore o dispositivo) per simularle sul dispositivo stesso. Dopo tutto, fornisce simulazioni complete di queste funzioni. È ansible semplicemente modificare queste classi di simulazione Bluetooth e USB da caricare sul dispositivo stesso anziché sul “dispositivo” di test Robolectric locale.

Questa è solo un’idea – non posso confermare che funzioni – potrebbe essere solo un buon punto di partenza.