Devo rilevare quando l'utente interagisce con il telefono e riavviare la mia app dopo 60 secondi dal touch screen dell'ultimo utente. È possibile fare qualcosa del genere? Deve funzionare come screen server per PC.Rileva se l'utente interagisce con il telefono?
risposta
È possibile fare qualcosa del genere?
Solo se l'attività è in primo piano, nel qual caso è possibile tenere traccia degli eventi tattili. Non è possibile scoprire eventi di tocco che si verificano altrove nel sistema.
ACTION_USER_PRESENT
è un'azione di trasmissione, quindi dovresti essere in grado di scrivere un ricevitore di trasmissione per rispondere ad esso e avviare la tua applicazione. Tenete a mente che è ACTION_USER_PRESENT
inviato quando l'utente è presente dopo che il dispositivo si sveglia (per esempio quando il blocco della tastiera è andato).
Ho anche appena imbattuto in un example dove l'azione BOOT_COMPLETED
trasmissione è utilizzato da un ricevitore broadcast per avviare un'applicazione al boot.
In base al ciclo di vita di Android se l'utente preme il tasto home o la tastiera bloccata suPausa verrà chiamato. Così fai qualcosa di simile.
@Override
public void onPause()
{
super.onPause();
Timer timer = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
finish();
}
};
timer.schedule(task, 60000);
}
e se l'utente viene prima di 60 secondi, quindi in onRestart()
.
@Override
public void onRestart()
{
super.onRestart();
timer.cancel();
timer.purge();
}
ho trovato questa soluzione: http://stackoverflow.com/questions/4481226/creating-a-system-overlay-always-on-top-button-in-android e sembra funzionare. Penso che non sia una buona cosa, cosa ne pensi? – Gabrielle
@Gabrielle: non funzionerà su dispositivi più recenti. Per prevenire attacchi di tipo "tapjacking", * tu * puoi ottenere gli eventi touch (e le app sottostanti no), oppure * loro * possono ottenere gli eventi touch (e non puoi). – CommonsWare
Hai ragione, ho provato su un dispositivo più recente e non funziona. Grazie! – Gabrielle