Android - Contrôle d'une tâche avec Minuterie et TimerTask?

Je suis en train d'essayer de configurer une connexion WiFi Scan dans mon application Android qui recherche les points d'accès WiFi toutes les 30 secondes.

J'ai utilisé de la Minuterie et TimerTask pour obtenir le scan fonctionne correctement à des intervalles dont j'ai besoin.

Cependant je veux être en mesure d'arrêter et de démarrer la numérisation lorsque l'utilisateur appuie sur un bouton et je suis actuellement de la difficulté à l'arrêt et le redémarrage de la Minuterie et TimerTask.

Voici mon code

TimerTask scanTask;
final Handler handler = new Handler();
Timer t = new Timer();

public void doWifiScan(){

scanTask = new TimerTask() {
        public void run() {
                handler.post(new Runnable() {
                        public void run() {
                         wifiManager.scan(context); 
                         Log.d("TIMER", "Timer set off");
                        }
               });
        }};


    t.schedule(scanTask, 300, 30000); 

 }

  public void stopScan(){

   if(scanTask!=null){
      Log.d("TIMER", "timer canceled");
      scanTask.cancel();
 }

}

Si la Minuterie et de début de Tâche de l'amende et de l'analyse qui se passe toutes les 30 secondes, cependant je ne peux pas l'obtenir pour arrêter, je peux arrêt de la Minuterie, mais la tâche se produit encore et scanTask.annuler() ne semble pas fonctionner non plus.

Est-il une meilleure façon de le faire? Ou ai-je raté quelque chose dans le Timer/TimerTask classes?