Comment puis-je moquer ma position sur un appareil physique (Nexus One)? Je sais que vous pouvez le faire avec l'émulateur dans le panneau de contrôle de l'émulateur, mais cela ne fonctionne pas pour un périphérique physique.
Pour les ordinateurs de bureau, vous pouvez créer / installer des pilotes qui émulent un périphérique GPS / périphérique de port série dans le but de faire ce type de test. Vous pourriez peut-être créer ou trouver quelque chose de similaire pour Android.
AaronLS
6
Il existe plusieurs applications sur Market qui peuvent émuler la localisation GPS. Par exemple "Spoofer d'emplacement".
Il y a aussi une application dans le magasin qui prend en charge les commandes "geo fix" et "geo nmea" tout comme l'émulateur! play.google.com/store/apps/…
Il existe sur le marché une application appelée "Fake GPS". Si vous activez les emplacements simulés sur votre appareil, il offre une interface graphique agréable pour définir votre emplacement. Je me rends compte que ce n'est pas une solution à faire soi-même, mais certainement une solution digne pour des tests rapides.
Tim Green
2
cela pourrait être le lien - même date et contenu pertinent.
DefenestrationDay
4
@TimGreen la vôtre devrait être la réponse acceptée (pas seulement un commentaire)! De loin le moyen le plus simple de tester
Bostone
En fait, l'application "faux gps" n'est pas la meilleure car elle ne peut que définir des emplacements et se déplacer de manière aléatoire. Leur nouvelle version peut acheminer mais elle n'itère que sur des points de cheminement si énormes sauts dans l'emplacement. La réponse de Janusz est en effet correcte que vous devez créer votre propre fournisseur fictif. Nous l'avons fait récemment et si quelqu'un en a besoin ou si cette question a encore besoin d'aide, je posterai le code.
vkinra
5
L'instruction «allez dans votre code et créez votre propre fournisseur de localisation fictive» doit être expliquée plus en détail.
Dim
102
Si vous utilisez ce téléphone uniquement dans un laboratoire de développement, il est possible que vous puissiez souder la puce GPS et alimenter le port série directement avec les séquences NMEA d'un autre appareil.
Pourquoi les haineux? Cette réponse est incroyablement dure.
Ben Zotto
61
Awesomely hardcore mais incroyablement inutile / non pertinent également.
olivervbk
13
Assez amusant, cependant.
etienne le
23
euh, je pense que quiconque pour qui cette réponse serait pertinente sait déjà qu'il peut le faire. Je doute que ces trois personnes recherchent une solution stackoverflow.
ToolmakerSteve
10
Si vous avez du mal à trouver comment générer des séquences NMEA réalistes dans votre appareil non soudé, il existe une option géniale: souder là un appareil GPS externe réel et déplacer l'ensemble du laboratoire de développement sur une piste réelle, au-dessus d'une équipe de coureurs / motards / voitures / avions / quoi que ce soit en fonction de la vitesse que vous souhaitez simuler. N'oubliez pas d'ouvrir un trou dans le toit du laboratoire de développement afin que l'appareil puisse recevoir les signaux radio des satellites. De rien. ;-)
Stéphane Gourichon
32
J'aimerais avoir mon câble à portée de main. Je sais que vous pouvez envoyer un telnet à l'émulateur pour changer son emplacement
$ telnet localhost 5554AndroidConsole: type 'help'for a list of commands
OK
geo fix -82.41162928.054553
OK
Je ne me souviens pas si vous pouvez telnet sur votre appareil, mais je pense que vous le pouvez. J'espère que ça aide.
Vous aurez besoin d'adb (pont de débogage Android) pour cela (CLI).
vous obtenez une autorisation refusée pour tout ce que vous envoyez en tant que commande à la console de votre appareil. C'est peut-être possible avec une application de terminal mais je pense que cela nécessite un accès root
Janusz
Juste pour que nous soyons sur la même longueur d'onde: vous ne parlez pas de "adb shell" n'est-ce pas? Ce dont je parle est différent, c'est quelque chose de configuration qui vous permet de définir des paramètres spécifiques à Android. Je sais, par exemple, que vous pouvez configurer la redirection de port (c'est-à-dire localhost: 1234 va au téléphone: 1234) sans accès root, vous pouvez donc configurer un proxy SOCKS et un tunnel via un câble sans racine.
Tim Green
Vous pouvez utiliser adb forward tcp: 6000 tcp: 23 pour rediriger le port 6000 de votre machine vers le port 23 de l'appareil, mais je n'ai pas pu me connecter même si le port est indiqué comme ouvert. L'utilisation d'un client telnet sur l'appareil et la connexion à localhost échouent également
Janusz
15
Cela fonctionne bien pour l'émulateur mais ne fonctionne pas pour un appareil réel. Donc, cela ne répond pas du tout à la question de OP :(
Matthew Gilliard
4
@TimGreen Votre solution est uniquement pour l'émulateur. La question concernait un appareil réel.
IgorGanapolsky
29
Vous pouvez utiliser l'autorisation des services de localisation pour simuler l'emplacement ...
"android.permission.ACCESS_MOCK_LOCATION"
puis dans votre code java,
// Set location by setting the latitude, longitude and may be the altitude...String[]MockLoc= str.split(",");Location location =newLocation(mocLocationProvider);Double lat =Double.valueOf(MockLoc[0]);
location.setLatitude(lat);Double longi =Double.valueOf(MockLoc[1]);
location.setLongitude(longi);Double alti =Double.valueOf(MockLoc[2]);
location.setAltitude(alti);
J'ai eu du succès avec le code suivant. Même si cela m'a donné une seule serrure pour une raison quelconque (même si j'ai essayé différentes paires LatLng), cela a fonctionné pour moi. mLocationManagerest un LocationManagerqui est relié à un LocationListener:
privatevoid getMockLocation(){
mLocationManager.removeTestProvider(LocationManager.GPS_PROVIDER);
mLocationManager.addTestProvider
(LocationManager.GPS_PROVIDER,"requiresNetwork"=="","requiresSatellite"=="","requiresCell"=="","hasMonetaryCost"=="","supportsAltitude"=="","supportsSpeed"=="","supportsBearing"=="",
android.location.Criteria.POWER_LOW,
android.location.Criteria.ACCURACY_FINE
);Location newLocation =newLocation(LocationManager.GPS_PROVIDER);
newLocation.setLatitude (/* TODO: Set Some Lat */);
newLocation.setLongitude(/* TODO: Set Some Lng */);
newLocation.setAccuracy(500);
mLocationManager.setTestProviderEnabled
(LocationManager.GPS_PROVIDER,true);
mLocationManager.setTestProviderStatus
(LocationManager.GPS_PROVIDER,LocationProvider.AVAILABLE,null,System.currentTimeMillis());
mLocationManager.setTestProviderLocation
(LocationManager.GPS_PROVIDER,
newLocation
);}
Beau message, voir ma réponse ci-dessous pour les ajouts.
icyerasor le
Autant que je me souvienne, setTestProviderStatusest utilisé ici pour notifier / publier / programmer un événement avec le LocationManager que le fournisseur de GPS a trouvé un correctif "maintenant" afin que le traitement dudit événement puisse avoir lieu.
Dr1Ku
Quelle est la signification de " mLocationManagerest un LocationManagerqui est connecté à un LocationListener"? Comment puis-je faire ceci? Merci ..
Yehuda
Voici un article expliquant comment vérifier un changement d'emplacement à l'aide du LocationManagerservice et un LocationListener: blog.doityourselfandroid.com/2010/12/25/…
Dr1Ku
2
plus 1 pour la façon dont vous avez représenté le (s) vrai (s) et faux (s) dans la méthode addTestProvider
A.Alqadomi
16
Ce que Dr1Ku a publié fonctionne. Utilisé le code aujourd'hui mais avait besoin d'ajouter plus de locs. Voici donc quelques améliorations:
Facultatif: au lieu d'utiliser la chaîne LocationManager.GPS_PROVIDER, vous souhaiterez peut-être définir votre propre constat PROVIDER_NAME et l'utiliser. Lors de l'inscription aux mises à jour de localisation, choisissez un fournisseur via des critères au lieu de le spécifier directement sous forme de chaîne.
Premièrement: au lieu d'appeler removeTestProvider, vérifiez d'abord s'il existe un fournisseur à supprimer (pour éviter IllegalArgumentException):
Suggestion intéressante sur la définition de votre propre fournisseur, le problème avec l'utilisation du GPS_PROVIDER est que vous ne pouvez (apparemment) pas vous débarrasser du fournisseur fictif (plus exactement, vous ne pouvez pas passer au GPS normal) avant le redémarrage. Super article aussi, je vais vérifier les références!
Dr1Ku
@ Dr1KU Est-il toujours impossible de revenir au GPS normal? Est-ce spécifié quelque part?
Kaz Dragon du
@KazDragon C'était le cas à l'époque. D'après ce dont je me souviens, après avoir allumé le Mock ProviderGPS, le GPS normal ne fonctionnait pas, je ne pouvais pas obtenir de solution (je testais directement sur un appareil). Ce n'est peut-être pas le cas car beaucoup de choses se sont passées sur Android depuis.
Dr1Ku
@ Dr1Ku Ah, eh bien, je fais quelque chose de très similaire maintenant et je reçois des résultats similaires à ceux que vous avez décrits. J'espérais savoir s'il s'agissait d'une restriction intégrée à la plate-forme ou qu'il me manquait juste un appel de fonction quelque part. Je devrais probablement poser une question à ce sujet.
Kaz Dragon
9
Il existe des applications disponibles sur l'Android Market qui vous permettent de spécifier une «fausse position GPS» pour votre appareil.
J'ai cherché sur https://market.android.com et j'ai trouvé une application appelée "My Fake Location" qui fonctionne pour moi.
Le fournisseur de GPS simulé mentionné par Paul ci-dessus (à http://www.cowlumbus.nl/forum/MockGpsProvider.zip ) est un autre exemple qui inclut le code source - bien que je n'ai pas pu installer l'APK fourni (il indique Failure [INSTALL_FAILED_OLDER_SDK] et peut-être juste besoin d'une recompilation)
Pour utiliser les emplacements GPS simulés, vous devez l'activer dans les paramètres de votre appareil. Allez dans Paramètres -> Applications -> Développement et cochez "Autoriser les emplacements fictifs"
Vous pouvez ensuite utiliser une application comme celles décrites ci-dessus pour définir les coordonnées GPS et Google Maps et d'autres applications utiliseront la fausse position GPS que vous spécifiez.
Le faux GPS est plus simple. Je me demande simplement pourquoi ils demandent l'identification de l'appelant dans l'autorisation de l'application: S
Guillaume Massé
8
Cela a fonctionné pour moi (Android Studio):
Désactivez le suivi GPS et WiFi sur le téléphone. Sur Android 5.1.1 et versions antérieures, sélectionnez "Activer les emplacements fictifs" dans les options pour les développeurs.
Faites une copie de votre manifeste dans le répertoire src / debug. Ajoutez-y les éléments suivants (en dehors de la balise "application"):
uses-permission android: name = "android.permission.ACCESS_MOCK_LOCATION"
Configurez un fragment de carte appelé «carte». Incluez le code suivant dans onCreate ():
Notez que vous devrez peut-être augmenter temporairement "minSdkVersion" dans le fichier gradle de votre module à 17 pour utiliser la méthode "setElapsedRealtimeNanos".
Incluez le code suivant dans la classe d'activité principale:
privateclassMyLocationListenerimplementsLocationListener{@Overridepublicvoid onLocationChanged(Location location){// do whatever you want, scroll the map, etc.}}
Exécutez votre application avec AS. Sur Android 6.0 et supérieur, vous obtiendrez une exception de sécurité. Accédez maintenant aux options pour les développeurs dans les paramètres et sélectionnez "Sélectionner une application de localisation fictive". Sélectionnez votre application dans la liste.
Maintenant, lorsque vous appuyez sur la carte, onLocationChanged () se déclenchera avec les coordonnées de votre robinet.
Je viens juste de comprendre cela, alors maintenant je n'ai plus à me promener dans le quartier avec des téléphones à la main.
J'ai un peu changé son code et réécrit la classe pour qu'elle devienne une AsyncTask au lieu d'un Thread. Cela nous permet de communiquer avec le thread d'interface utilisateur, afin que nous puissions redémarrer le fournisseur au point où nous en étions lorsque nous l'avons arrêté. Ceci est pratique lorsque l'orientation de l'écran change.
Vous devrez également activer les emplacements fictifs dans les paramètres de développement de vos appareils. Si ce n'est pas disponible, définissez «l'application de localisation fictive» sur votre application une fois que ce qui précède a été implémenté.
Une fausse application GPS de Google Play a fait l'affaire pour moi. Assurez-vous simplement de lire toutes les instructions dans la description de l'application. Vous devez désactiver les autres services de localisation et démarrer votre application après avoir activé "Faux GPS". A bien fonctionné pour ce dont j'avais besoin.
Voici le lien vers l'application sur GooglePlay:
Faux GPS
J'ai écrit une application qui exécute un serveur Web (REST-Like) sur votre téléphone Android, afin que vous puissiez définir la position GPS à distance . Le site Web fournit une carte sur laquelle vous pouvez cliquer pour définir une nouvelle position, ou utiliser les touches «wasd» pour vous déplacer dans n'importe quelle direction. L'application était une solution rapide, il n'y a donc presque pas d'interface utilisateur ni de documentation, mais l'implémentation est simple et vous pouvez tout rechercher dans les (seulement quatre) classes.
Si votre appareil est branché sur votre ordinateur et que vous essayez de modifier l'envoi de cordons GPS via le contrôle Emulator, cela ne fonctionnera pas.
Il s'agit d'un contrôle EMULATOR pour une raison.
Il suffit de le configurer pour vous mettre à jour sur le changement de GPS.
lm =(LocationManager)getSystemService(Context.LOCATION_SERVICE);
ll =newLocationListener(){publicvoid onLocationChanged(Location location){// Called when a new location is found by the network location provider.
onGPSLocationChanged(location);}publicvoid onStatusChanged(String provider,int status,Bundle extras){
bigInfo.setText("Changed "+ status);}publicvoid onProviderEnabled(String provider){
bigInfo.setText("Enabled "+ provider);}publicvoid onProviderDisabled(String provider){
bigInfo.setText("Disabled "+ provider);}};
Lorsque le GPS est mis à jour, réécrivez la méthode suivante pour faire ce que vous voulez;
Je me demande si vous avez besoin de la configuration élaborée de Mock Location. Dans mon cas, une fois que j'ai obtenu un emplacement fixe, j'appelais une fonction pour faire quelque chose avec ce nouvel emplacement. Dans une minuterie, créez un emplacement simulé. Et appelez la fonction avec cet emplacement à la place. Sachant depuis le début que dans peu de temps, le GPS trouverait une position actuelle réelle. Ce qui est OK. Si le temps de mise à jour est suffisamment long.
Ce n'est peut-être pas une approche de `` programmeur '', mais si vous voulez gagner du temps et obtenir une solution de travail instantanée, essayez l'une des applications dédiées à l'emplacement simulé disponible dans Google Play:
Les avez-vous essayés? Ont-ils travaillé comme demandé dans la question?
arekolek le
Une préférence? Ou a-t-on besoin de tous? : P
arekolek
Fake GPS Location Spoofer est assez bon, mais Mock Locations permet de définir un itinéraire, ce qui est une fonctionnalité intéressante.
klimat
0
Utilisez le simulateur de localisation interactif très pratique et gratuit pour les téléphones et tablettes Android (nommé CATLES). Il se moque de la localisation GPS à l'échelle du système (même dans les applications Google Maps ou Facebook) et fonctionne sur les appareils physiques et virtuels:
android studio recommandera que «l'emplacement fictif ne soit demandé que dans un fichier manifeste spécifique au test ou au débogage (généralement src / debug / AndroidManifest.xml)», désactivez simplement l'inspection
Assurez-vous maintenant d'avoir coché l' option " Autoriser les emplacements fictifs " dans les paramètres du développeur de votre téléphone
Les solutions ci-dessus n'ont pas fonctionné pour moi car je testais sur un appareil Android avec la dernière version des services Google Play qui utilise le FusedLocationProviderClient . Après avoir défini l'autorisation de localisation fictive dans le manifeste de l'application et l'application en tant qu'application de localisation fictive spécifiée dans les paramètres du développeur (comme mentionné dans les réponses précédentes), j'ai ensuite ajouté le code Kotlin ci-dessous qui a réussi à se moquer de l'emplacement.
locationProvider =FusedLocationProviderClient(context)
locationProvider.setMockMode(true)
val loc =Location(providerName)
val mockLocation =Location(providerName)// a string
mockLocation.latitude = latitude // double
mockLocation.longitude = longitude
mockLocation.altitude = loc.altitude
mockLocation.time =System.currentTimeMillis()
mockLocation.accuracy =1f
mockLocation.elapsedRealtimeNanos =SystemClock.elapsedRealtimeNanos()if(Build.VERSION.SDK_INT >=Build.VERSION_CODES.O){
mockLocation.bearingAccuracyDegrees =0.1f
mockLocation.verticalAccuracyMeters =0.1f
mockLocation.speedAccuracyMetersPerSecond =0.01f}// locationManager.setTestProviderLocation(providerName, mockLocation)
locationProvider.setMockLocation(mockLocation)
Réponses:
Il semble que le seul moyen de le faire soit d'utiliser un fournisseur de localisation fictif.
Vous devez activer les emplacements fictifs dans le panneau de développement dans vos paramètres et ajouter
à votre manifeste.
Vous pouvez maintenant entrer votre code et créer votre propre fournisseur d'emplacement fictif et définir l'emplacement de ce fournisseur.
la source
Si vous utilisez ce téléphone uniquement dans un laboratoire de développement, il est possible que vous puissiez souder la puce GPS et alimenter le port série directement avec les séquences NMEA d'un autre appareil.
la source
J'aimerais avoir mon câble à portée de main. Je sais que vous pouvez envoyer un telnet à l'émulateur pour changer son emplacement
Je ne me souviens pas si vous pouvez telnet sur votre appareil, mais je pense que vous le pouvez. J'espère que ça aide.
Vous aurez besoin d'adb (pont de débogage Android) pour cela (CLI).
la source
Vous pouvez utiliser l'autorisation des services de localisation pour simuler l'emplacement ...
"android.permission.ACCESS_MOCK_LOCATION"
puis dans votre code java,
la source
J'ai eu du succès avec le code suivant. Même si cela m'a donné une seule serrure pour une raison quelconque (même si j'ai essayé différentes paires LatLng), cela a fonctionné pour moi.
mLocationManager
est unLocationManager
qui est relié à unLocationListener
:la source
setTestProviderStatus
est utilisé ici pour notifier / publier / programmer un événement avec le LocationManager que le fournisseur de GPS a trouvé un correctif "maintenant" afin que le traitement dudit événement puisse avoir lieu.mLocationManager
est unLocationManager
qui est connecté à un LocationListener"? Comment puis-je faire ceci? Merci ..LocationManager
service et unLocationListener
: blog.doityourselfandroid.com/2010/12/25/…Ce que Dr1Ku a publié fonctionne. Utilisé le code aujourd'hui mais avait besoin d'ajouter plus de locs. Voici donc quelques améliorations:
Facultatif: au lieu d'utiliser la chaîne LocationManager.GPS_PROVIDER, vous souhaiterez peut-être définir votre propre constat PROVIDER_NAME et l'utiliser. Lors de l'inscription aux mises à jour de localisation, choisissez un fournisseur via des critères au lieu de le spécifier directement sous forme de chaîne.
Premièrement: au lieu d'appeler removeTestProvider, vérifiez d'abord s'il existe un fournisseur à supprimer (pour éviter IllegalArgumentException):
Deuxièmement: pour publier plusieurs emplacements, vous devez définir l'heure de l'emplacement:
Il semble également y avoir un test google qui utilise MockLocationProviders: http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/1.5_r4/android/location/LocationManagerProximityTest.java
Un autre bon exemple de travail peut être trouvé à l' adresse : http://pedroassuncao.com/blog/2009/11/12/android-location-provider-mock/
Un autre bon article est: http://ballardhack.wordpress.com/2010/09/23/location-gps-and-automated-testing-on-android/#comment-1358 Vous trouverez également du code qui fonctionne réellement pour moi sur l'émulateur.
la source
Mock Provider
GPS, le GPS normal ne fonctionnait pas, je ne pouvais pas obtenir de solution (je testais directement sur un appareil). Ce n'est peut-être pas le cas car beaucoup de choses se sont passées sur Android depuis.Il existe des applications disponibles sur l'Android Market qui vous permettent de spécifier une «fausse position GPS» pour votre appareil.
J'ai cherché sur https://market.android.com et j'ai trouvé une application appelée "My Fake Location" qui fonctionne pour moi.
Le fournisseur de GPS simulé mentionné par Paul ci-dessus (à http://www.cowlumbus.nl/forum/MockGpsProvider.zip ) est un autre exemple qui inclut le code source - bien que je n'ai pas pu installer l'APK fourni (il indique Failure [INSTALL_FAILED_OLDER_SDK] et peut-être juste besoin d'une recompilation)
Pour utiliser les emplacements GPS simulés, vous devez l'activer dans les paramètres de votre appareil. Allez dans Paramètres -> Applications -> Développement et cochez "Autoriser les emplacements fictifs"
Vous pouvez ensuite utiliser une application comme celles décrites ci-dessus pour définir les coordonnées GPS et Google Maps et d'autres applications utiliseront la fausse position GPS que vous spécifiez.
la source
Cela a fonctionné pour moi (Android Studio):
Désactivez le suivi GPS et WiFi sur le téléphone. Sur Android 5.1.1 et versions antérieures, sélectionnez "Activer les emplacements fictifs" dans les options pour les développeurs.
Faites une copie de votre manifeste dans le répertoire src / debug. Ajoutez-y les éléments suivants (en dehors de la balise "application"):
uses-permission android: name = "android.permission.ACCESS_MOCK_LOCATION"
Configurez un fragment de carte appelé «carte». Incluez le code suivant dans onCreate ():
Notez que vous devrez peut-être augmenter temporairement "minSdkVersion" dans le fichier gradle de votre module à 17 pour utiliser la méthode "setElapsedRealtimeNanos".
Incluez le code suivant dans la classe d'activité principale:
Exécutez votre application avec AS. Sur Android 6.0 et supérieur, vous obtiendrez une exception de sécurité. Accédez maintenant aux options pour les développeurs dans les paramètres et sélectionnez "Sélectionner une application de localisation fictive". Sélectionnez votre application dans la liste.
Maintenant, lorsque vous appuyez sur la carte, onLocationChanged () se déclenchera avec les coordonnées de votre robinet.
Je viens juste de comprendre cela, alors maintenant je n'ai plus à me promener dans le quartier avec des téléphones à la main.
la source
J'ai créé un gestionnaire simple simulant une position en mouvement à partir d'une position initiale.
Démarrez-le dans votre rappel de connexion:
La classe Handler:
J'espère que cela peut vous aider.
la source
La solution mentionnée par icyerasor et fournie par Pedro à http://pedroassuncao.com/blog/2009/11/12/android-location-provider-mock/ a très bien fonctionné pour moi. Cependant, il n'offre pas de support pour démarrer, arrêter et redémarrer correctement le fournisseur de GPS simulé.
J'ai un peu changé son code et réécrit la classe pour qu'elle devienne une AsyncTask au lieu d'un Thread. Cela nous permet de communiquer avec le thread d'interface utilisateur, afin que nous puissions redémarrer le fournisseur au point où nous en étions lorsque nous l'avons arrêté. Ceci est pratique lorsque l'orientation de l'écran change.
Le code, ainsi qu'un exemple de projet pour Eclipse, peuvent être trouvés sur GitHub: https://github.com/paulhoux/Android-MockProviderGPS
Tout le mérite revient à Pedro pour la plupart du travail acharné.
la source
Ajouter à votre manifeste
Fonction de localisation simulée
Vous devrez également activer les emplacements fictifs dans les paramètres de développement de vos appareils. Si ce n'est pas disponible, définissez «l'application de localisation fictive» sur votre application une fois que ce qui précède a été implémenté.
la source
Une fausse application GPS de Google Play a fait l'affaire pour moi. Assurez-vous simplement de lire toutes les instructions dans la description de l'application. Vous devez désactiver les autres services de localisation et démarrer votre application après avoir activé "Faux GPS". A bien fonctionné pour ce dont j'avais besoin.
Voici le lien vers l'application sur GooglePlay: Faux GPS
la source
Le tutoriel Google pour ce faire peut être trouvé ici, il fournit des exemples de code et explique le processus.
http://developer.android.com/training/location/location-testing.html#SendMockLocations
la source
Installez Fake GPS app https://play.google.com/store/apps/details?id=com.incorporateapps.fakegps.fre&hl=en
Options pour les développeurs -> Sélectionnez l'application de localisation fictive (c'est moyen, application de localisation fausse sélectionnée).
Fausse application GPS :
Double onglet sur la carte à ajouter -> cliquez sur le bouton de lecture -> Afficher le toast "Faux emplacement arrêté"
vérifiez enfin avec les applications google map.
la source
J'ai écrit une application qui exécute un serveur Web (REST-Like) sur votre téléphone Android, afin que vous puissiez définir la position GPS à distance . Le site Web fournit une carte sur laquelle vous pouvez cliquer pour définir une nouvelle position, ou utiliser les touches «wasd» pour vous déplacer dans n'importe quelle direction. L'application était une solution rapide, il n'y a donc presque pas d'interface utilisateur ni de documentation, mais l'implémentation est simple et vous pouvez tout rechercher dans les (seulement quatre) classes.
Référentiel de projet: https://github.com/juliusmh/RemoteGeoFix
la source
Si votre appareil est branché sur votre ordinateur et que vous essayez de modifier l'envoi de cordons GPS via le contrôle Emulator, cela ne fonctionnera pas.
Il s'agit d'un contrôle EMULATOR pour une raison.
Il suffit de le configurer pour vous mettre à jour sur le changement de GPS.
Lorsque le GPS est mis à jour, réécrivez la méthode suivante pour faire ce que vous voulez;
N'oubliez pas de les mettre dans le manifeste
android.permission.ACCESS_FINE_LOCATION
android.permission.ACCESS_MOCK_LOCATION
la source
Je me demande si vous avez besoin de la configuration élaborée de Mock Location. Dans mon cas, une fois que j'ai obtenu un emplacement fixe, j'appelais une fonction pour faire quelque chose avec ce nouvel emplacement. Dans une minuterie, créez un emplacement simulé. Et appelez la fonction avec cet emplacement à la place. Sachant depuis le début que dans peu de temps, le GPS trouverait une position actuelle réelle. Ce qui est OK. Si le temps de mise à jour est suffisamment long.
la source
Ce n'est peut-être pas une approche de `` programmeur '', mais si vous voulez gagner du temps et obtenir une solution de travail instantanée, essayez l'une des applications dédiées à l'emplacement simulé disponible dans Google Play:
Faux Spoofer de localisation GPS
Fausses localisations
Faux emplacement GPS
la source
Utilisez le simulateur de localisation interactif très pratique et gratuit pour les téléphones et tablettes Android (nommé CATLES). Il se moque de la localisation GPS à l'échelle du système (même dans les applications Google Maps ou Facebook) et fonctionne sur les appareils physiques et virtuels:
Site Web: http://ubicom.snet.tu-berlin.de/catles/index.html
Vidéo: https://www.youtube.com/watch?v=0WSwH5gK7yg
la source
Utilisez cette autorisation dans le fichier manifeste
android studio recommandera que «l'emplacement fictif ne soit demandé que dans un fichier manifeste spécifique au test ou au débogage (généralement src / debug / AndroidManifest.xml)», désactivez simplement l'inspection
Assurez-vous maintenant d'avoir coché l' option " Autoriser les emplacements fictifs " dans les paramètres du développeur de votre téléphone
Utiliser LocationManager
Maintenant, définissez l'emplacement où vous voulez
la source
Les solutions ci-dessus n'ont pas fonctionné pour moi car je testais sur un appareil Android avec la dernière version des services Google Play qui utilise le FusedLocationProviderClient . Après avoir défini l'autorisation de localisation fictive dans le manifeste de l'application et l'application en tant qu'application de localisation fictive spécifiée dans les paramètres du développeur (comme mentionné dans les réponses précédentes), j'ai ensuite ajouté le code Kotlin ci-dessous qui a réussi à se moquer de l'emplacement.
la source