J'ai une application qui utilise Google Maps geofencing. (Chaque fois que l'utilisateur passe dans une clôture, il déclenche un PendingIntent
qui gère l'événement)android Mettre à jour l'emplacement même lorsque l'application est en arrière-plan
Le problème est que je ne parviens pas à faire en sorte que mon application mette à jour l'emplacement en arrière-plan.
Mon code actuel ressemble à ce
protected void createLocationRequest() {
LocationRequest mLocationRequest = new LocationRequest();
mLocationRequest.setInterval(INTERVAL_IN_MILLISECONDS);
mLocationRequest.setFastestInterval(FASTEST_INTERVAL_MILLISECONDS);
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
Toast.makeText(this, "user permissions have blocked the app from getting location updates", Toast.LENGTH_SHORT).show();
return;
}
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, this);
}
Dans mon activité, avec l'auditeur de changement.
@Override
public void onLocationChanged(Location location) {
Toast.makeText(this, "testing message, at location " + location, Toast.LENGTH_SHORT).show();
}
Je reçois des mises à jour de localisation lorsque l'application est au premier plan, comme en témoigne OnLocationChanged et mes geofences les deux étant déclenché correctement. Mais lorsque l'application est en arrière-plan, mes géofences ne sont pas déclenchées jusqu'à ce que j'entre dans l'application.
Je n'ai même pas besoin d'un rappel, juste pour que le téléphone vérifie son emplacement actuel.
Un moyen d'obtenir également des mises à jour de localisation en arrière-plan?
Le code à 1 semble constamment vérifier l'emplacement (même si j'ai changé l'intervalle à 30 secondes). Ce serait une énorme décharge de batterie: / –