2012-01-11 14 views

risposta

4

È 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.

+0

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

+0

@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

+0

Hai ragione, ho provato su un dispositivo più recente e non funziona. Grazie! – Gabrielle

7

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.

1

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(); 
} 
Problemi correlati