2016-07-19 7 views
1

Ich verwende Fused Location Api für Standortaktualisierungen in meiner App. Wenn ich nach Ortsaktualisierungen frage, schaltet sich GPS ein (wir können das Standortsymbol in der Statusleiste sehen) und wenn ich Ortsaktualisierungen durch Aufrufen von removeLocationUpdates entferne, schaltet GPS manchmal nicht aus (wir können das Standortsymbol in der Statusleiste sehen). Zu dieser Zeit nutzt keine andere App GPS als meine App. Dies führt zu mehr Akkuverbrauch durch die App.Warum GPS immer noch verwendet wird, obwohl ich Standortaktualisierungen für fusionierte Standort-API in Android entfernt habe

Erstellen erforderliche Objektinstanzen

mLocationClient = new GoogleApiClient.Builder(this) 
       .addConnectionCallbacks(connectCallbackListener) 
       .addOnConnectionFailedListener(connectFailedListnr) 
       .addApi(LocationServices.API).build(); 

    mLocationRequest = LocationRequest.create(); 
    mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); 
    mLocationRequest.setInterval(UPDATE_INTERVAL_IN_MILLISECONDS); 
    mLocationRequest.setFastestInterval(FASTEST_INTERVAL_IN_MILLISECONDS); 

Anforderung für Standortaktualisierungen

LocationServices.FusedLocationApi.requestLocationUpdates(mLocationClient, mLocationRequest, mLocationListener); 

Entfernen Standortaktualisierungen

if (mLocationClient.isConnected()) { 
      LocationServices.FusedLocationApi.removeLocationUpdates(mLocationClient, mLocationListener); 
} 
mLocationClient.disconnect(); 

Hat jemand eine Idee zu diesem Thema?

+0

fügen Sie Ihren Code ein. –

+1

* Zu diesem Zeitpunkt verwendet keine andere App GPS als meine App * Woher weißt du das? –

+0

Weil immer, wenn ich meine App lösche oder Daten von meiner App lösche, dann GPS ausgeht (wir können das Standortsymbol in der Statusleiste nicht sehen, es wird entfernt) – Renadh

Antwort

0

Ich hatte das gleiche Problem. Nicht FusedLocationApi hält das GPS am Laufen, auch wenn die App in den Hintergrund gestellt wird und onStop() ausgelöst wurde. Es ist GoogleMap! Ich hatte eine Karte in ein anderes Fragment eingefügt und für eine Weile nicht erkannt. Ich denke, auch Renadh hat eine GoogleMap View enthalten.

Also, um nur GPS zu halten in Ihrer App läuft, während es

@Override 
public void onStop() { 
    mGoogleMap.setMyLocationEnabled(false); 
    super.onStop(); 
} 

zu Ihrem Fragment/Aktivität setzen läuft.

Vergessen Sie nicht, Ihren Standort mit

mGoogleMap.setMyLocationEnabled(true); 

zu aktivieren, wenn Sie die blaue Markierung in Ihrem mapview erfordern. Entweder in onCreate() oder wo auch immer Sie Ihre Karte eingerichtet haben.

Verwandte Themen