PROJET AUTOBLOG


Shaarli - Les discussions de Shaarli

Archivé

Site original : Shaarli - Les discussions de Shaarli

⇐ retour index

Note: [android] Localisation sans GPS, sans Google grâce à OpenCellID et Mozilla Location Service

dimanche 4 janvier 2015 à 20:04
@jeekajoo shaarlinks 04/01/2015
Autrefois il fallait installer un APK [1] en faisant en sorte qu'il ait des privilèges systèmes (/system/priv-app). Il fallait également aller récupérer un fichier de base de données à la main et le placer au bon endroit dans le système de fichiers.

Heureusement les choses se sont améliorées dans la facilité de profiter de ces techniques de localisation et dans le choix des bases qui sont proposées. Maintenant il suffit d'installer 'µg UnifiedNlp' [2] en tant que simple utilisateur.
C'est un middleware qui s'appuie sur des backends, à télécharger séparemment.
Une petite interface graphique permet de (des)activer des backends qu'on peut classer en 2 catégories:
- Localisation basée sur les données GSM (antennes les plus proches), ou celles des AP WiFi environnants.
- Géocodage inversé. C'est l'opération qui consiste à trouver l'adresse correspondant (ou la plus proche) à des coordonnées XY.

Backends:
- LocalGsmNlpBackend: Ce backend interroge 2 bases (OpenCellID et Mozilla Location Service) en local. il faudra préalablement les générer grâce à l'interface fournie par le backend. Pour OpenCellID, il est nécessaire de passer par leur API. Vous obtiendrez votre token en 2 coups de cuillère à pot en allant ici [3].
- LocalWifiNlpBackend: Ce backend écoute passivement le GPS. Si le GPS est acquis et que la position est définie avec précision, le backend va enregistré en local les points d'accès WiFi environnants. C'est un cache en quelque sorte. En revanche quand le GPS n'est pas disponible, le backend utilise les bases de données du backend 'LocalGsmNlpBackend' pour déterminer la position.
- NominatimNlpBackend: Basé sur Nominatim (par MapQuest's). Permet de faire du géocodage inversé.
( - GSMLocationNlpBackend: Ce backend s'appuie sur OpenCellID mais n'offre aucun moyen de télécharger les bases. Préférez 'LocalGsmNlpBackend'. )
( - AppleWifiNlpBackend: Comme son nom l'indique, ce backend utilise le service d'Apple pour déterminer la position. Outre le fait que les données sont de la propriété exclusive de Apple, le problème c'est que la base de données est en ligne et que même si les données sont mises en cache, Apple peut savoir où vous vous trouvez à un instant t. )

Observations:
- La localisation via les données GSM n'est pas très fiable. Cette après-midi, je me suis retrouvé en Angleterre. Pensez à désactiver le backend GSM si cela se produit. Si vous n'arrivez vraiment pas obtenir un fix GPS (matériel) et que vous avez des points d'accès WiFi autour de vous: allumez le WiFi et appuyez vous sur le backend WiFi.
- La localisation via les données WiFi marche à tous les coups et permet d'obtenir une fix GPS rapidement. C'est très appréciable et cela permet d'être géolocalisé en intérieur.

[1] Network Location: http://forum.xda-developers.com/showthread.php?t=1715375
[2] µg UnifiedNlp: https://f-droid.org/repository/browse/?fdfilter=unified&fdid=com.google.android.gms
[3] OpenCellID API key request: http://opencellid.org/#action=database.requestForApiKey
(Permalink)