2

Ich verwende fusionierten Standortanbieter in meinem Hintergrunddienst, um das Ergebnis zu erhalten, versuchte ich mit OnLocationChanged und versuchte auch Broadcast-Empfänger ausstehende Absicht. Bei der Verwendung von "PRIORITY_BALANCE_ACCURACY" ist alles in Ordnung, und der Standort wird wie erwartet aktualisiert, aber wenn ich den "PRIORITY_HIGH_ACCURACY" Standort verwende, höre einfach auf zu aktualisieren .... ich habe sogar alarmreceiver ausprobiert, aber das Ergebnis ist immer das selbe, immer mit "PRIORITY_HIGH_ACCURACY" Ort wird nicht aktualisiert, wenn im Schlafmodus ... aber wenn ich den Bildschirm anschalte, bekomme ich Standortaktualisierungen ...Android fusionierter Standortanbieter beendet die Aktualisierung im Schlafmodus

Ich brauche wirklich genauen Standort ... selbst wenn der Bildschirm aus ist jede Hilfe würde geschätzt werden ... .

Antwort

0

Wenn es für Sie nicht zu viel ist, warum mit dem google-Standortdienste nicht versuchen:

auf app.gradle:

compile 'com.google.android.gms:play-services-location:9.0.2' 

und der Aktivität:

locationRequest = new LocationRequest() 
         .setFastestInterval(5000) 
         .setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY) 
         .setSmallestDisplacement(10); 


       GoogleApiClient.Builder clientBuilder = new GoogleApiClient.Builder(ActivityName.this) 
         .addApi(LocationServices.API) 
         .addConnectionCallbacks(new GoogleApiClient.ConnectionCallbacks() { 
          @Override 
          public void onConnected(@Nullable Bundle bundle) { 
           Log.e(TAG,"API CLIENT CONNECTED"); 
           startLocationUpdates(); 
          } 

          @Override 
          public void onConnectionSuspended(int i) { 
           Log.e(TAG,"API CLIENT SUSPENDED"); 
          } 
         }) 
         .addOnConnectionFailedListener(new GoogleApiClient.OnConnectionFailedListener() { 
          @Override 
          public void onConnectionFailed(@NonNull ConnectionResult connectionResult) { 
           Log.e(TAG,"API CLIENT CONNECTION FAILED"); 
          } 
         }); 

       apiClient= clientBuilder.build(); 
       apiClient.connect(); 

und dies ist der Beginn der Standortaktualisierungen nach der Google-Client eine Verbindung herstellt:

void startLocationUpdates(){ 
    if(apiClient!=null && apiClient.isConnected()) { 
     LocationServices.FusedLocationApi.requestLocationUpdates(apiClient, locationRequest, ActivityName.this); 
     Log.e(TAG, "Location Updates started"); 
    } 
} 

auch sicher, dass Location die Aktivität sein implementiert, so dass Sie hören können, zu Ihrem Standort Updates:

@Override 
public void onLocationChanged(Location updatedLocation) { 
    Log.e(TAG,"LOCATIONUPDATE: "+updatedLocation.toString()); 
} 
+1

Ich benutze das bereits, aber wenn die d Im Leerlauf läuft es nicht aktualisiert .... –

+2

Wenn Sie das Gerät immer wach sein müssen, werfen Sie einen Blick auf Wakelock-Strategien von https://developer.android.com/training/scheduling/wakelock.html – MetaSnarf

+0

Ja, metasnarf plus wakelock wird das Problem lösen ... danke Jungs –