2015-11-04 1 views
0

J'essaie de développer une solution pour obtenir ma position actuelle en utilisant le GPS d'Android. Toutefois, la recherche est limitée à un délai d'expiration et, lorsque les emplacements de recherche commencent, une boîte de dialogue permet à l'utilisateur d'annuler la recherche.Comment obtenir l'emplacement actuel via Android GPS en utilisant Runnables et en recherchant TimeOut?

Pour ce faire, je pense à utiliser un runnable. Après il y a le code responsable de la minuterie (je l'utilise dans une machine d'état avec interrupteur).

runOnUiThread(new Runnable() { 
       @Override 
       public void run() { 
        progressDialog = new ProgressDialog(AddPandlet.this); 

        progressDialog.setButton(DialogInterface.BUTTON_NEUTRAL, getString(R.string.addpandlet_cancelsearch), 
          new DialogInterface.OnClickListener() { 
           @Override 
           public void onClick(DialogInterface dialog, int which) { 
            //CANCEL OBTAINING GPS 
            return; 
           } 
          }); 
        progressDialog.show(); 
        scanLocation(); 

        Timer timer = new Timer(); 
        timer.schedule(new TimerTask() { 
         @Override 
         public void run() { 
          runOnUiThread(new Runnable() { 
           @Override 
           public void run() { 
            progressDialog.hide(); 
           } 
          }); 
          status = Status.FINISH; 
          updateStateMachine(); 
         } 
        }, SCAN_PERIOD_GPS); 

Sur le LocationListener que je fais ceci:

LocationListener locationListenerNetwork = new LocationListener() { 
    public void onLocationChanged(Location location) { 
     locationManager.removeUpdates(this); 
     locationManager.removeUpdates(locationListenerGps); 

     longitude = "Longitude: " + location.getLongitude(); 
     latitude = "Latitude: " + location.getLatitude(); 
    } 
    public void onProviderDisabled(String provider) {} 
    public void onProviderEnabled(String provider) {} 
    public void onStatusChanged(String provider, int status, Bundle extras) {} 
}; 

D'ailleurs, je ne peux pas obtenir les coordonnées GPS, car le GPS est toujours à l'écoute, et ne pas arrêté lorsque les extrémités de la minuterie.

Quelqu'un peut-il m'aider? Merci.

Répondre

0

supprimer,

locationManager.removeUpdates(this); 
locationManager.removeUpdates(locationListenerGps); 
    longitude = "Longitude: " + location.getLongitude(); 
    latitude = "Latitude: " + location.getLatitude(); 

et essayez celui-ci

longitude = "Longitude: " + location.getLongitude(); 
    latitude = "Latitude: " + location.getLatitude();  
locationManager.removeUpdates(locationListenerNetwork); 
locationManager = null;