mars
2010
Dans le cadre du développement de ma première application sous Android 1.6 puis sous 2.01, j’ai voulu simuler le changement de coordonnées GPS. Je ne pensais pas que ce serait si problématique et qu’il y avait si peu de ressources sur le sujet. Quelques posts sur le Google Code m’ont tout de même aidé.
> Environnement : Windows XP, Eclipse 3.5, ADT 0.9.5 et le SDK Android 1.6/2.0.1
En théorie, sous Eclipse, il suffit d’ouvrir la perspective DDMS (Dalvik Debug Monitor Server) et de saisir les coordonnées dans la vue « Emulator Control »
En mettant un point d’arrêt dans la méthode :
1
2
3 public void onLocationChanged(Location location) {
…
}
On s’aperçoit que l’application réagit au premier essai, mais pas aux tentatives suivantes…
J’ouvre une invite de commande sous Windows et me connecte à l’émulateur par Telnet pour saisir manuellement les coordonnées :
geo fix [longitude] [latitude] [altitude (optionnelle)]
Cette fois ci, l’application réagit à chaque changement !
Mais je constate une différence entre les coordonnées saisies précédemment et celles notées sous Eclipse :
Location[mProvider=gps,mTime=1261440000000,mLatitude=47.207835833333334,mLongitude=-1.5516668333333334,
mHasAltitude=false,mAltitude=0.0,mHasSpeed=false,mSpeed=0.0,mHasBearing=false,
mBearing=0.0,mHasAccuracy=false,mAccuracy=0.0,mExtras=null]
[ Mise à jour : 25/01/2010 ]
Le problème existe depuis la version 0.9 du SDK et ne semble pas avoir été corrigé depuis.
Le blog http://www.insideandroid.fr nous donne une explication :
« …en France la longitude et la latitude sont envoyées sous le format « 120,0832 » au lieu de « 120.0832 ». Cela engendre un bug critique qui empêche la mise à jour des coordonnées dans votre émulateur. »
Deux solutions existent :
- Sous XP, allez dans Panneau de Configuration > Options régionales et linguistiques. Dans Standarts et Formats sélectionnez « Anglais (Etats Unis) ».
- Ajouter la ligne
-Duser.language=en
dans le fichiereclipse.ini
.
Redémarrez Eclipse dans les deux cas, pour que les modifications soient prises en compte, et tout fonctionnera sans problème !
Merci à @lesgrumels
pour le commentaire
> Ressources
- http://code.google.com/p/android/issues/detail?id=2545
- http://groups.google.co.jp/group/android-developers/browse_thread/thread/b460684fed89a516
- http://groups.google.com/group/android-developers/browse_thread/thread/5360c665c92af02e/d1ee24b3377a47da#d1ee24b3377a47da
- http://www.insideandroid.fr/post/2009/03/28/Simulation-du-GPS-avec-l-emulateur-android
C’est un problème d’internationalisation, Android utilise le système Windows pour formater les nombres. Du coup l’émulateur reçoit les nombres avec un virgule au lieu d’un point comme normalement.
Il faut donc changer ce paramètre dans windows.
Plus d’informations :
http://www.insideandroid.fr/post/2009/03/28/Simulation-du-GPS-avec-l-emulateur-android