web-dev-qa-db-fra.com

Android Fournisseurs d’emplacement - GPS ou fournisseur de réseau?

Dans mon application, je voudrais déterminer l'emplacement actuel de l'utilisateur. J'ai cependant quelques questions à cet égard:

  1. Il existe différents fournisseurs d'emplacement, lequel est le plus précis? Le fournisseur GPS ou le fournisseur résea ?

  2. Dans quelle mesure les fournisseurs disponibles diffèrent-ils? Comment fonctionnent-ils?

  3. Pourriez-vous me fournir des extraits de code ou des tutoriels sur la mise en œuvre de la fonctionnalité GPS dans mon application?

117
Noman

Il existe 3 fournisseurs de localisation dans Android.

Elles sont:

gps -> (GPS, AGPS): Nom du fournisseur de localisation GPS. Ce fournisseur détermine l'emplacement à l'aide de satellites. Selon les conditions, ce fournisseur peut prendre un certain temps pour renvoyer un correctif d'emplacement. Nécessite l'autorisation Android.permission.ACCESS_FINE_LOCATION.

réseau -> (AGPS, CellID, WiFi MACID): Nom du fournisseur de localisation du réseau. Ce fournisseur détermine l'emplacement en fonction de la disponibilité de la tour de téléphonie cellulaire et des points d'accès WiFi. Les résultats sont récupérés au moyen d'une recherche sur le réseau. Nécessite l'une des autorisations Android.permission.ACCESS_COARSE_LOCATION ou Android.permission.ACCESS_FINE_LOCATION.

passive -> (CellID, WiFi MACID): Fournisseur d’emplacement spécial pour la réception d’emplacements sans initiation d’un repère de localisation. Ce fournisseur peut être utilisé pour recevoir passivement des mises à jour d'emplacement lorsque d'autres applications ou services en font la demande sans demander réellement les emplacements vous-même. Ce fournisseur renverra les emplacements générés par d'autres fournisseurs. Nécessite l'autorisation Android.permission.ACCESS_FINE_LOCATION. Toutefois, si le GPS n'est pas activé, ce fournisseur risque de ne renvoyer que des correctifs approximatifs. C’est ce que Android appelle ces fournisseurs d’emplacement. Toutefois, les technologies sous-jacentes permettant de faire fonctionner ce matériel sont mappées sur l’ensemble spécifique de capacités fournies par le matériel et les opérateurs télécoms (service réseau).

Le meilleur moyen consiste à utiliser d'abord le fournisseur "réseau" ou "passif", puis à recourir au "gps" et, en fonction de la tâche, à passer d'un fournisseur à l'autre. Cela couvre tous les cas et fournit un service avec le plus petit dénominateur commun (dans le pire des cas) et un excellent service (dans le meilleur des cas).

enter image description here

Référence de l'article: Android Location Providers - gps, network, passive de Nazmul Idris

Référence du code: https://stackoverflow.com/a/3145655/28557

----------------------- Mettre à jour ----------------- ------

Maintenant Android avez le fournisseur de localisation fusionné

Le fournisseur de localisation fusionné gère intelligemment la technologie de localisation sous-jacente et vous donne le meilleur emplacement en fonction de vos besoins. Il simplifie la manière dont les applications obtiennent l'emplacement actuel de l'utilisateur avec une précision améliorée et une consommation d'énergie moindre.

Le fournisseur de localisation fusionné fournit trois méthodes pour récupérer la localisation.

  1. Dernier emplacement: À utiliser lorsque vous souhaitez connaître une fois l'emplacement actuel.
  2. Demande d'emplacement à l'aide de l'auditeur: À utiliser lorsque l'application est à l'écran/frontend et nécessite un emplacement ininterrompu.
  3. Emplacement de la demande en utilisant l'intention en attente: À utiliser lorsque l'application est en arrière-plan et nécessite un emplacement ininterrompu.

Références:

Site officiel: http://developer.Android.com/google/play-services/location.html

Exemple de fournisseur d’emplacement fusionné: GIT: https://github.com/kpbird/fused-location-provider-example

http://blog.lemberg.co.uk/fused-location-provider

----------------------------------------- ---------------

262
Vinayak Bevinakatti

Le GPS est généralement plus précis que le réseau, mais parfois, le GPS n’est pas disponible. Par conséquent, vous devrez peut-être basculer entre les deux.

Un bon début pourrait être de consulter le site de développement Android). Il comportait une section consacrée à la détermination de l'emplacement de l'utilisateur et contient tous les exemples de code dont vous avez besoin.

http://developer.Android.com/guide/topics/location/obtaining-user-location.html

7
Otra

Il y a quelques bonnes réponses mentionnées ici. Une autre approche consiste à utiliser des SDK gratuits disponibles en ligne, tels que Atooma, tranql et Neura, pouvant être intégrés à votre Android (son intégration nécessite moins de 20 minutes). En vous donnant la localisation précise de votre utilisateur, il peut également vous donner de bonnes informations sur les activités de votre utilisateur. Certains d'entre eux consomment moins de 1% de votre batterie.

3
johndaly