Bonjour à tous,
Je travaille actuellement sur une appli mobile en mode "web app", du coup je la développe en HTML/Javascript et j'utilise Cordova (anciennement PhoneGap) pour générer automatiquement les besoins en Java et assurer le lien avec mon dév en Javascript.
Je ne suis pas censé toucher au Java, mais l'application gagnant en fonctionnalités et Cordova n'étant pas exhaustif, je me retrouve dans l'obligation de m'y mettre un peu.
Mon cas concerne le besoin de détecter une triple pression du bouton de volume +. J'ai réussi à la détecter, mais je souhaiterais mettre un genre de timeout pour que cette triple pression doive se faire dans un laps de temps imparti (par exemple cinq secondes).
Voici mon code :
Code :
- public class MonAppli extends CordovaActivity {
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- super.init();
- // Set by <content src="index.html" /> in config.xml
- super.loadUrl(Config.getStartUrl());
- // super.loadUrl("file:///android_asset/www/index.html" )
- // getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
- }
- // Détecter la pression du bouton volume +
- int i = 0;
- @Override
- public boolean onKeyUp(int keyCode, KeyEvent event) {
- if ((keyCode == KeyEvent.KEYCODE_VOLUME_UP)
- & (event.getAction() == KeyEvent.ACTION_UP)) {
- i++;
- if (i == 3) {
- this.loadUrl("javascript:cordova.fireDocumentEvent('volumeupbutton');" );
- i = 0;
- }
- return true;
- }
- return true;
- }
- // Empêcher le comportement normal des boutons de volume
- @Override
- public boolean onKeyDown(int keyCode, KeyEvent event) {
- return true;
- }
- }
|
Je ne vois pas trop comment procéder, en fait je ne vois pas comment intégrer un timeout dans le code mais qui ne bloquerait pas la procédure. Par exemple je pensais dire que, dès que i == 1, je le remets à 0 après cinq secondes, mais sans pour autant empêcher qu'il puisse valoir 2 puis 3.
Merci.
Message édité par psychodarksquall le 25-03-2014 à 11:15:02