Service d'arrière-plan avec l'emplacement de l'écouteur de dans android
Je suis entrain de créer un service d'arrière-plan qui s'exécute dans son propre processus. Il devrait me permettre d'écouter si l'emplacement de l'appareil a changé. Je devrais être en mesure de modifier les critères comme la distance parcourue avant de notifier l'INTERFACE utilisateur.
Comment puis-je faire de même? J'ai un peu de connaissance de service et LocationListener
implémentations. Tout les tutoriels sur le net serait appréciée.
J'en ai eu un lien arrière de débordement de pile, mais je ne comprenais pas grand-chose.
- Consultez cet article de blog: android-développeurs.blogspot.ro/2011/06/...
- Voir les derniers GoogleApiClient méthode stackoverflow.com/a/41981246/3496570
Vous devez vous connecter pour publier un commentaire.
Vous devez d'abord créer un
Service
. Dans ceService
, créer une classe étendantLocationListener
. Pour cela, utilisez le code suivant extrait deService
:Ajouter cette
Service
importe où dans votre projet, la façon dont vous le souhaitez! 🙂public Location previousBestLocation = null;
Je pense que sa valeur reste toujoursnull
que nous ne sommes pas changer n'importe où dans leService
puis dansisBetterLocation()
seulement la condition suivanteif (currentBestLocation == null) { return true; }
sera exécuté, alors quel est le point de repos de code de cette méthode pour trouver le meilleur endroit?Je sais que je suis l'affichage de cette réponse peu en retard, mais j'ai senti qu'il convient d'utiliser Google fusible emplacement du fournisseur de service pour obtenir l'emplacement actuel.
Principales caractéristiques de cette api sont :
1.Api Simple: vous Permet de choisir votre niveau de précision ainsi que la consommation d'énergie.
2.Disponible immédiatement: Donne à vos applications un accès immédiat à la meilleure, la plus récente de l'emplacement.
3.Puissance, efficacité: Il choisit le moyen le plus efficace pour obtenir l'emplacement avec moins de consommation électrique
4.Polyvalence: Répond à un large éventail de besoins, de premier plan, les utilisations qui en ont besoin très précis de l'emplacement à l'arrière-plan des usages qui ont besoin périodiquement de l'emplacement des mises à jour avec négligeable de la puissance de l'impact.
Il est flexible pendant la mise à jour de l'emplacement aussi.
Si vous souhaitez l'emplacement actuel uniquement lorsque le démarrage de l'application, alors vous pouvez utiliser
getLastLocation(GoogleApiClient)
méthode.Si vous souhaitez mettre à jour votre emplacement en permanence, alors vous pouvez utiliser
requestLocationUpdates(GoogleApiClient,LocationRequest, LocationListener)
Vous pouvez trouver un très beau blog à propos de fusible emplacement ici et google doc pour fusibles emplacement peut également être trouvé ici.
Mise à jour
Selon développeur docs à partir de Android O ils ont ajouté de nouvelles limites sur le fond de l'emplacement.
FusedLocationProvider
est ok, mais pour les applications qui nécessitent une grande précision de suivi, il est tout simplement pas assez bonArrière-plan de service de localisation. Il sera repris, même après avoir tué l'application.
MainActivity.java
BookingTrackingService.java
AlarmReceive.java (BroadcastReceiver)
AndroidManifest.xml
if (isNetworkEnable) {
il pourrait êtreif (!isNetworkEnable) {
manquant PAS dans d'autre cas. 😉if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { return;}
Très facile, pas besoin de créer une classe étend: LocationListener
1 - Variable
2 - onStartService()
3 - Méthode addListenerLocation()
4 - onDestroy()