2012-12-19 11 views
5

Attualmente sto lavorando a un progetto di ricerca che coinvolge persone che giocano su un dispositivo Android. Spero di poter scrivere un'app per Android che registri gli eventi di accelerometro e tocco. Vorrei che i miei utenti potessero giocare a giochi come uccelli arrabbiati, mentre registro i loro dati toccanti.Come registrare tutti i touch e l'acclerometro su un dispositivo Android in TUTTE le app

Capisco che questo tipo di raccolta dati sia possibile dall'interno dell'app, ma è possibile dall'esterno dell'app? (forse tramite un'app in esecuzione in background?)

Se questo non è possibile, ci sono alternative? (Credo che potrei teoricamente entrare nel codice sorgente del SO Android e farlo accadere?)

+0

http://stackoverflow.com/questions/11322188/receiving-touch-events-from-a-service-solution questo potrebbe essere in grado di aiutarti. Guarda la risposta di RubberBigPepper. –

risposta

4

Capisco che questo tipo di raccolta dati sia possibile dall'interno dell'app, ma è possibile dall'esterno dell'app? (forse tramite un'app in esecuzione in background?)

Per eventi di tocco, no, per ovvi motivi di privacy e sicurezza. È possibile utilizzare (ricercare il termine "tapjacking"), ma le versioni correnti di Android bloccano definitivamente questo comportamento.

Per gli eventi accelerometro, è possibile registrarli, poiché sono gli stessi per tutte le app contemporaneamente. Ricorda che la frequenza di campionamento potrebbe non corrispondere esattamente a quella dell'app utilizzata.

Credo di poter teoricamente entrare nel codice sorgente del SO Android e farlo accadere?

Sì, anche se è necessario convertire l'Android modificato in un modulo ROM e installarlo sui dispositivi.

+0

mi ha battuto per secondi! +1 :) –

2

Le app non sono autorizzate a eseguire questa operazione su un dispositivo protetto (ad esempio, telefono/tablet del cliente che non è stato "rootato").

Tuttavia, a seconda delle esigenze, potrebbe essere possibile con gli strumenti di sviluppo collegati a un computer. Se è possibile eseguire una configurazione moderatamente fastidiosa prima di ogni prova di circostanze controllate, ritengo che sia possibile farlo su alcuni dispositivi di serie utilizzando il cavo USB per commutare l'ADB in modalità wifi, quindi monitorare gli eventi di input su una sessione ADB wireless. Vedere

http://source.android.com/tech/input/getevent.html

Tale documento sembra implicare che è necessario un 'do' (che è strano come non è utilizzabile il funzionario 'do' dagli utenti non-root), ma funziona su molti dispositivi senza azionari .

Probabilmente vorrai anche eseguire logcat per capire quale applicazione è in primo piano.