J'essaie de détecter si le bouton d'alimentation est enfoncé trois fois en moins de 4 secondes. Le code ci-dessous ne fonctionne pas.Écran Android Manipulation et désactivation à l'aide du bouton d'alimentation
public class PowerButtonReceiver extends BroadcastReceiver{
static int count = 0;
long initialTime,finishTime;
@Override
public void onReceive(final Context context, Intent intent) {
Log.v("onReceive", "Power button is pressed.");
if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
if (count == 0){
initialTime = System.currentTimeMillis();
}
count++;
if (count == 3){
finishTime = System.currentTimeMillis();
if (finishTime - initialTime <= 4000){
Toast.makeText(context, "POWER BUTTON CLICKED 3 TIMES", Toast.LENGTH_LONG).show();
count = 0;
}
}
} else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
if (count == 0){
initialTime = System.currentTimeMillis();
}
count++;
if (count == 3){
finishTime = System.currentTimeMillis();
if (finishTime - initialTime <= 4000){
Toast.makeText(context, "POWER BUTTON CLICKED 3 TIMES", Toast.LENGTH_LONG).show();
count = 0;
}
}
}
}
}
le code exécute sans erreur et il ne montre pas de pain grillé
déplacez votre code à intentservice, parce que brodcast appelé chaque fois que le bouton d'alimentation est pressé, donc votre temps initial , finishTime; réinitialise. utiliser sharedpreference à la place –