Android détection de double robinet sans robinet

je voudrais détecter un double robinet, MAIS sans déclencher un seul robinet. j'ai essayé de double-cliquer auditeurs, mais vous obtenez toujours un onSingleTapUp avant le double est détecté, ce qui est raisonnable je pense. mais dans mon application, je ne veux vraiment pas la seul clic de rappel quand il y a un double-clic sur le chemin.

je me rends compte aucune application ne peut prédire l'avenir (ou je serais vraiment très riche), mais je pensais, il suffit de lancer un timer sur la simple clic et si il n'y a pas de double cliquez à l'intérieur d'un certain temps, puis de faire seul clic. mais cela ne semble pas fonctionner, car une fois que je démarre le timer et la minuterie est en marche, le deuxième robinet jamais génère un événement. voici mon code à l'aide d'un aync tâche, j'ai aussi essayé avec une minuterie.

mGD = new GestureDetector(getContext(), new SimpleOnGestureListener() {

            @Override
            public boolean onSingleTapUp(MotionEvent ev) {
                //Log.d("KitView", "onSingleTapUp "+ev.toString());

                class DblTapTask extends AsyncTask<Void, Void, Void> {

                    @Override
                    protected void onPreExecute() {
                        Log.d("KitView", "onPreExecute");
                    }

                    protected Void doInBackground(Void... args) {
                        Log.d("KitView", "doInBackground");
                        try {
                            Thread.sleep(1000);
                        } catch (InterruptedException e) {
                            //TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                        return null;
                    }

                    protected void onPostExecute(Void result) {
                        Log.d("KitView", "onPostExecute");
                                            doSigleTapAction();
                        mDblTapTask=null;
                    }
                };

                if(mDblTapTask==null) {
                    Log.d("KitView", "START TASK");
                    mDblTapTask = new DblTapTask();
                    mDblTapTask.execute();
                } else {
                    Log.d("KitView", "TASK RUNNING");
                                    doDoubleTapAction();
                }


                Log.d("KitView", "onSingleTapUp DONE");
                return true;
            }   //end onSingleTapUp

        });     //end new GestureDetector

dans cet exemple, je reçois onSingleTapUp très bien sur la première frappe. mon délai d'attente est de 1 sec pour les essais dans le doInBackground j'ai donc beaucoup de temps à faire de la deuxième pression. note ce Journal.d("KitView", "onSingleTapUp FAIT"); exécute immédiatement, je ne le robinet d'abord, afin de onSingleTapUp n'est pas suspendu.

le problème est, en enregistrant à nouveau dans le 1sec ne fait rien. il n'y a pas d'appel à la onSingleTapUp jusqu'à ce que, après le sommeil a fini et onPostExecute a exécuter. alors connectez-vous.d("KitView", "TÂCHE en cours d'EXÉCUTION"); n'arrive jamais qui est l'endroit où je détecter double-cliquez sur vs simple clic de cours.

je ne suis pas sûr pourquoi aynctask est le blocage des événements, des idées? grâce

InformationsquelleAutor steveh | 2013-02-06