2010-01-06 25 views
7

Después de ejecutar listener por el siguiente código funciona bien.android cómo detener gps

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

Después de algún tiempo Puedo detener al oyente por el siguiente código

locationManager.removeUpdates(this); 

pero el problema es que aún busca mi gps cualquier solución ??? cómo detener gps?

+2

Recuerde acepte las respuestas a las preguntas anteriores que ha formulado; solo tiene un 45% de aceptación hasta el momento. De esta forma, es probable que más personas continúen respondiendo preguntas. :) –

Respuesta

19

lo necesario para aprobar el mismo objeto implementar LocationListener que ha solicitado actualizaciones de ubicación para que los locationManager.removeUpdates método().

Así que en menos this y gpsl son una y la misma, debe llamar:

locationManager.removeUpdates(gpsl); 
0

Mi oyente IMPLEMENTACIÓN

public class GPSLocationListener extends Activity implements LocationListener { 

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

    } 

cuando intento para eliminar escucha mediante código de error de tiempo de compilación siguientes aparatos.

locationManager.removeGpsStatusListener(GPSLocationListener) 
+2

Debe usar el nombre * instance * en lugar del nombre * class * al eliminar el oyente. En su pregunta original, su oyente es una variable llamada 'gpsl'. Presumiblemente, esta es una variable miembro en su clase. De lo contrario, conviértalo en una variable miembro en lugar de local para ese método. Luego puede pasar 'gpsl' cuando llame a' removeGpsStatusListener'. –

+1

¡No puede usar removeGpsStatusListener con LocationListener! Un LocationListener es diferente de un GpsStatus.Listener. – Erwan

0

usted tiene que pasar la instancia a su GPSLocationListener seguir el método removeGpsStatusListener y no el nombre de la clase.

1

Usted podría pasar el parámetro como esto GPSLocationListener.this

locationManager.removeGpsStatusListener(GPSLocationListener.this); 

la compilación no se equivoca

3

Si está utilizando mapas, lo que tiene que hacer:

locationManager.removeUpdates(locationListener); 

mMap.setMylocationEnabled(false); 
+0

.setMyLocationEnabled (falso) es realmente lo que faltaba en mi código. ¡Muchas gracias! – marson