522 votes

Comment émuler la localisation GPS dans l'émulateur Android ?

Je veux obtenir la longitude et la latitude dans l'émulateur Android pour faire des tests.

Quelqu'un peut-il me guider pour y parvenir ?

Comment régler l'emplacement de l'émulateur sur une position de test ?

0 votes

Si vous utilisez Genymotion : stackoverflow.com/questions/30709329/

1 votes

Vous pouvez installer l'une des nombreuses applications de géolocalisation sur le Play Store.

473voto

Janusz Points 52607

Vous pouvez vous connecter à l'émulateur via Telnet. Vous disposez alors d'une console d'émulateur qui vous permet d'entrer certaines données comme les coordonnées géographiques, le réseau, etc.

La manière d'utiliser la console est expliquée en détail ici . Pour se connecter à la console, ouvrez une ligne de commande et tapez

telnet localhost 5554

Vous pouvez ensuite utiliser la commande geo pour définir une latitude, une longitude et, si nécessaire, une altitude sur l'appareil, qui seront transmises à tous les programmes utilisant le fournisseur de localisation GPS. Voir le lien ci-dessus pour plus d'instructions.

La commande spécifique à exécuter dans la console est

geo fix <longitude value> <latitude value>

J'ai trouvé ce site utile pour trouver une lat/lng réaliste : http://itouchmap.com/latlong.html

Si vous avez besoin de plus d'une coordonnée, vous pouvez utiliser un fichier kml avec une route également, c'est un peu décrit dans ce document. article . Je ne peux pas trouver une meilleure source pour le moment.

13 votes

En utilisant Geo Fix, j'ai également défini une latitude et une longitude fictives, mais je n'ai toujours pas trouvé d'emplacement.

0 votes

J'ai ajouté plusieurs valeurs par telnet et maintenant ça marche. Je ne sais pas pourquoi en entrant deux ou trois valeurs ça ne marchait pas ça marche jusqu'à ce que je ferme l'émulateur et quand je ferme l'émulateur je dois entrer à nouveau les valeurs fictives.

2 votes

ou un moyen simple d'activer le gps dans l'émulateur et d'aller dans le contrôle de l'émulateur en donnant des valeurs factices de latitude et de longitude et en envoyant, vous obtiendrez ces valeurs dans l'émulateur comme une localisation gps.

120voto

dpdearing Points 852

Je cherchais un meilleur moyen de définir les coordonnées GPS de l'émulateur qu'en utilisant geo fix et déterminer manuellement les coordonnées spécifiques de latitude et de longitude.

Incapable de trouver quoi que ce soit, j'ai mis au point un petit programme qui utilise GWT et l'API Google Maps pour lancer un outil cartographique basé sur un navigateur afin de définir la position GPS dans l'émulateur :

Émulateur GPS pour Android

J'espère qu'il pourra être utile à d'autres personnes qui se heurteront sans doute elles aussi à cette difficulté/question.

0 votes

wow, merci ! l'installation a bien fonctionné, mais je n'ai pas réussi à gérer une connexion à l'émulateur -> le journal imprime java.net.ConnectionRefused. ensuite j'ai essayé telnet localhost 5554 (depuis le terminal) et ça a marché quelqu'un d'autre a-t-il testé votre émulateur avec succès sur mac ?

1 votes

Je ne l'ai pas testé, mais ça a l'air tellement génial que je pense que Google devrait en parler au monde entier. Les idées simples sont toujours les meilleures. Pourquoi personne n'a pensé à ça ?

0 votes

@ottel142 - Oui, je fonctionne effectivement sur un mac sans ce problème (en utilisant Chrome sur Mavericks). Je vois donc que ConnectionRefused si je lance l'émulateur GPS avant de lancer le dispositif virtuel Android. En haut de mon navigateur, il est également indiqué "Error making connection on port 5554 ...". Tout fonctionne bien si je clique sur le bouton "Change Emulator Port" pour me reconnecter.

81voto

SteveCav Points 3860

Si vous utilisez Eclipse Allez sur Window->Open Perspective->DDMS puis tapez un dans Location Controls et frappez Send .

8 votes

C'est de loin la méthode la plus simple que j'ai vue. Assurez-vous que vous avez configuré votre AVD avec le support GPS, puis dans la perspective DDMS cliquez sur l'émulateur qui est en cours d'exécution sous Devices, choisissez l'onglet Emulator Control dans le panneau central droit, puis en bas se trouve la section Location Controls mentionnée par SteveCav (Using Eclipse Juno 4.2 for Java Developers with the latest ADT). Mon panneau Location Controls était même préchargé avec des données de localisation.

0 votes

excellente réponse ! fonctionne avec n'importe quel ide parce que ddms fait partie du sdk (votredkfolder/tools/)

1 votes

Ni cette solution, ni la solution telnet ci-dessus, ne fonctionnaient pour moi. J'essaie d'obtenir mon emplacement de cette façon, mais il est toujours nul. LocationManager mlocManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); Location location = mlocManager.getLastKnownLocation(LocationManager.NETWORK_PRO‌​VIDER);

14voto

David Hedlund Points 66192

En supposant que vous avez une vue de la carte mise en place et en cours d'exécution :

MapView mapView = (MapView) findViewById(R.id.mapview);
final MyLocationOverlay myLocation = new MyLocationOverlay(this, mapView);

mapView.getOverlays().add(myLocation);
myLocation.enableMyLocation();

myLocation.runOnFirstFix(new Runnable() {
    public void run() {
        GeoPoint pt = myLocation.getMyLocation();
    }
});

Vous aurez besoin des autorisations suivantes dans votre manifeste :

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

Et pour envoyer des coordonnées fantaisistes à l'émulateur à partir d'Eclipse, allez dans le menu "Window", sélectionnez "Show View" > "Other" > "Emulator control", et vous pouvez envoyer des coordonnées à partir du volet de contrôle de l'émulateur qui apparaît.

3 votes

Mais mon ami, où sont les longitudes et les latitudes ?

1 votes

J'ai essayé d'utiliser ce système et d'envoyer des valeurs fictives au contrôle de l'émulateur, mais lorsque j'appuie sur le bouton d'envoi, il ne fait rien, aucun message n'apparaît pour confirmer que les valeurs ont été envoyées ou non. Enfin, GeoPoint g= myLocation.getMyLocation() ; renvoie une valeur nulle.

0 votes

Êtes-vous sûr de l'utiliser à l'intérieur de l'immeuble ? runOnFirstFix ? Parce que c'est l'événement qui est déclenché lorsque l'appareil reçoit la position GPS pour la première fois, donc si cet événement est déclenché.., getMyLocation doit absolument retourner une valeur.

10voto

Dan Zhao Points 91

Utiliser la commande "geo" dans la console de l'émulateur

Pour envoyer des données de localisation de simulacre à partir de la ligne de commande :

  1. Lancez votre application dans l'émulateur Android et ouvrez un terminal/console dans le répertoire /tools de votre SDK.

  2. Connectez-vous à la console de l'émulateur :

    telnet localhost 5555 (Remplacez 5555 par le port sur lequel tourne votre émulateur)

  3. Envoyez les données de localisation : * geo fix pour envoyer une géolocalisation fixe.

    Cette commande accepte une longitude et une latitude en degrés décimaux, et une altitude facultative en mètres. Par exemple :

    geo fix -121.45356 46.51119 4392

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X