2010-01-06 14 views
7

Dopo l'avvio del listener con il seguente codice funziona perfettamente.android come smettere di gps

LocationManager locationManager =(LocationManager) getSystemService(Context.LOCATION_SERVICE); 
locationManager.requestLocationUpdates(
        LocationManager.GPS_PROVIDER, WLConstants.DELAY_HOUR, gpsl 
          .getMinDistance(), gpsl); 

Dopo qualche tempo mi fermo l'ascoltatore dal seguente codice

locationManager.removeUpdates(this); 

ma problema è che ancora alla ricerca il mio gps qualsiasi soluzione ??? come fermare il gps?

+2

Ricordatevi di accetta le risposte alle domande precedenti che hai chiesto - sei finora solo al 45% di accettazione. In questo modo più persone probabilmente continueranno a rispondere alle domande. :) –

risposta

19

è necessario passare lo stesso oggetto che implementa LocationListener che hai richiesto aggiornamenti della posizione per le locationManager.removeUpdates() metodo.

Così in meno this e gpsl sono la stessa cosa, si dovrebbe chiamare:

locationManager.removeUpdates(gpsl); 
0

mio ascoltatore L'implementazione

public class GPSLocationListener extends Activity implements LocationListener { 

    @Override 
     public void onLocationChanged(Location location) { 
//code here 
    } 

    } 

quando provo a rimuovere ascoltatore con errore in fase di compilazione del codice follwing.

locationManager.removeGpsStatusListener(GPSLocationListener) 
+2

Durante la rimozione del listener è necessario utilizzare il nome * instance * anziché il nome * class *. Nella tua domanda originale, il tuo ascoltatore è una variabile chiamata 'gpsl'. Presumibilmente, questa è una variabile membro della tua classe. In caso contrario, rendi una variabile membro anziché locale per quel metodo. Quindi puoi passare 'gpsl' quando chiami' removeGpsStatusListener'. –

+1

Non è possibile utilizzare removeGpsStatusListener con un LocationListener! Un LocationListener è diverso da un GpsStatus.Listener. – Erwan

0

Devi passare l'istanza al GPSLocationListener andare il metodo removeGpsStatusListener e non il nome della classe.

1

si poteva passare il parametro come questo GPSLocationListener.this

locationManager.removeGpsStatusListener(GPSLocationListener.this); 

la compilazione non sarà sbagliato

3

Se si utilizza le mappe, quello che dovete fare:

locationManager.removeUpdates(locationListener); 

mMap.setMylocationEnabled(false); 
+0

. SetMyLocationEnabled (false) è in realtà ciò che mancava nel mio codice. Molte grazie! – marson