2017-06-18 2 views
0

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?

Répondre