Magazine Internet

Comment simuler un déplacement sur GoogleMap Android sans véritable GPS

Publié le 19 mars 2008 par Par Metaweb

Voici ma méthode pour tester et simuler les deplacements du téléphone Android avec le SDK. C'est cette méthode que j'utilise pour les simulations avec Molib.
Pour tous ceux qui font des applis avec googlemap et de la geolocalisation ça peut être super pratique !
1. Tout d'abord, il faut générer un itinéraire pour votre faux gps et simuler le déplacement du téléphone. Pour ce faire, j'utilise Google Earth.
1a. Télécharger et installer Google Earth.
1b. Dans la 'Recherche' dans la fenêtre en haut à gauche, cliquez sur l'onglet "Itinéraires" pour créer des itinéraires depuis un endroit à un autre.
1c. Votre itinéraire sera affiché juste en dessous de la fenêtre 'Recherche'.
Faites défiler vers le bas, cliquez droit sur la dernière entrée et sélectionner "Enregistrer sous ..." sous le format de type ". kml ".
J'ai appelé le mien "kml.kml". Enregistrez le à un endroit facile à trouver.
2. Maintenant, il faut créer un fichier "properties" pour le GPS. Tout d'abord, créez un fichier appelé "properties" au même endroit que le fichier kml - vous pouvez faire cela en créant un fichier texte et puis en changeant le nom en "properties" sans extension de fichier (Note: vous devez avez avoir l'option "Masquer les extensions des types de fichiers connus" désactivé dans "Options des dossiers -> Affichage"). Ouvrez ce fichier avec le bloc-notes et voilà ce que nous allons y mettre comme propriétés dans cet ordre:
RequiresNetwork
RequiresSatellite
RequiresCell
HasMonetaryCost
SupportsAltitude
SupportsBearing
SupportsSpeed
repeat (piste oscille du début à la fin au début)
PowerRequirement (1 = faible, 2 = moyenne, 3 = élevé)
accuracy (mètres)
TrackSpeed (km / heure, uniquement utilisées pour les kml)
Ainsi, par exemple, mon fichier "properties" a ces propriétés:
requiresNetwork false
requiresSatellite false
requiresCell false
hasMonetaryCost false
supportsAltitude true
supportsBearing true
supportsSpeed true
repeat true
powerRequirement 1
accuracy 10
trackSpeed 20
Sauvegardez le ensuite. "trackspeed" et "repeat" sont les deux plus importantes propriétés :la première définit à quelle vitesse Vous vous déplacez le long de la route kml (en km/h) et la seconde signifie que le téléphone se déplaçe le long de la route (vous pouvez changer cela si vous voulez arrêter le déplacement à la fin en le mettant à false).
3. Maintenant, vous devez créer votre faux GPS sur l'émulateur:
3bis. Par souci de facilité, déplacez le fichier kml et le fichier de propriétés dans le dossier "tools" de votre sdk Android.
3b. Lancez l'émulateur en double-cliquant sur "emulator.exe" , dossier "tools". Attendez qu'il démarre.
3c. Maintenant, ouvrez une invite de commande et accédez au dossier "tools" de votre sdk Android.
3d. Entrez "adb shell 'dans l'invite de commande.
3e. Vous devriez voir un # sur la gauche. Entrez "cd /data/misc/location". Si vous tapez "ls", vous devriez voir un dossier nommé "gps" . C'est le GPS par défaut fourni avec l'émulateur.
3f. Pour créer votre propre GPS entrez: "mkdir ". Par exemple j'ai appeler le mien molib :
"mkdir molib". Tapez "ls" à nouveau pour vérifier que le dossier a été créé.
3g. Tapez "exit" pour quitter le shell adb.
3h. Maintenant, nous avons besoin de mettre les fichiers dans notre dossier GPS.
D'abord le fichier kml: en ligne de commande sous dossier "tools" de votre sdk Android; tapez «adb push kml.kml adb /data/misc/location/kml".
Ensuite, le fichier de propriétés en tapant "adb push properties /data/misc/location/properties".
Dans mon cas vaut molib.
La raison pour laquelle je vous ai demander de déplacer les fichiers dans le répertoire tools à l'étape 3bis, était de simplifier les lignes de commandes.
3i. Fermer l'émulateur, puis tapez "adb kill-server" dans l'invite de commande afin de s'assurer que le serveur est mort.
4. Vous devriez maintenant pouvoir utiliser votre faux GPS dans votre appli.
Mais pour l'utiliser, vous devez modifier l'étape 2 de la méthode suivante ci-dessous pour obtenir votre nouveau GPS et non pas celui par défaut.
Pour utiliser le GPS dans votre appli :
1. La première chose que vous devez faire est d'obtenir un LocationManager:
myLocationManager (LocationManager)getSystemService(Context.LOCATION_SERVICE);
2. Ensuite, vous devez obtenir un LocationProvider (un objet qui fournit des rapports périodiques sur la situation géographique de l'appareil):
List myLocationProviders = myLocationManager.getProviders();
LocationProvider myProvider = myLocationProviders.get(0); // Lit le premier fournisseur disponible
Pour un nouveau provider GPS il faudrait changer par myLocationProviders.get(1);
NOTE: J'ai remarqué que l'ordre 0, 1 était fonction de l'ordre dans lequel apparaissait la liste des providers GPS à l'étape 3f plus haut. Je n'ai pas trop testé mais il faut faire attention à ça. Pour être sûr, il y a cette méthode qui permet de connâitre le nom du provider myLocationProviders.get(1).getName();
3. Vous pouvez alors soit simplement faire une requête pour connaître l'emplacement actuel:
// Retourne la localisation fixée par le provider donné
Location myLocation = myLocationManager.getCurrentLocation("gps");
dans le cas d'un nouveau GPS créer, il faut ecrire :
Location myLocation = myLocationManager.getCurrentLocation("gps"); //dans mon cas c'est "molib"
3a. Ou mettre en place une mise à jour périodique en utilisant cette méthode de la classe LocationMananger:
requestUpdates(LocationProvider provider, long minTime, float MinDistance, Intent intent)
qui reçoit les mises à jour en créant un IntentReceiver. La localisation courante peut ensuite être récupérée auprès de l'Intent comme un objet Location en appelant intent.getExtra("location"). (attention méthode déprécié) Je ne vais pas expliquer cela en détail pour le moment, mais si vous ne voulez en savoir plus il suffit de demander.
Pour rappel, la version béta de molib est localisée par défaut sur le parvis de Notre-Dame à Paris et la réactualisation de la localisation est désactivé.


Retour à La Une de Logo Paperblog

LES COMMENTAIRES (1)

Par Serguei
posté le 15 décembre à 14:34
Signaler un abus

Bonjour, Navigation Android sans GPS (a peu pres) je viens de lire c'est surement du génial mais là c'est comme si je venais de prendre un baobab sur la tronche en effet j'en était à ce genre de propos :

HTC ce héro ? = téléphone + ordinateur ? mais ce ne serait pas le cas ? : par exemple le HTC android permet l'acces Google mais google map serait payant et pas d'acces à Google earth ? En somme du faux gratuit ?

Donc l'idée de consulter Google earth puis map : en utilisation guidage trajet voiture puis trace VTT n'exite pas ou est payant pour map ? Je ne vois donc pas l'interet d'un Android : ce qui m'interessait était la navigation totale sur Google pour éviter la concurence et sa multitudes d'options payantes.

Pour se connecter à Google en pleine nature que faut il : le simple réseau , la 3G , le WIFI , la dent bleue ?... si vous pouviez m'éclairer un peu (même au spot) car je rame , merci .

A vous lire j'ai cru comprendre que ce type de téléphone était présenté comme une merveille de la navigation gratuite ....mais à condition de prendre des options mangeuses de bourses ?...faites moi peur c'est bien ça ? Moi qui suis incapable de faire la moindre prog ou manip un peu complexe j'angoisse j'espérais le tout inclu !

Je précise que je n'ai pas d'ordinateur perso et pensais m'offrir un cellulaire avec ordinateur intégré avec google inclu en recherches libres , totales et gratuites .

Magazine