Jak mogę wyszydzać swoją lokalizację na urządzeniu fizycznym (Nexus One)? Wiem, że możesz to zrobić za pomocą emulatora w panelu sterowania emulatora, ale to nie działa na urządzeniu fizycznym.
W przypadku komputerów stacjonarnych można utworzyć / zainstalować sterowniki, które emulują urządzenie GPS / urządzenie portu szeregowego w celu przeprowadzenia tego rodzaju testów. Być może mógłbyś stworzyć lub znaleźć coś podobnego dla Androida.
AaronLS
6
W Market jest kilka aplikacji, które mogą emulować lokalizację GPS. Na przykład „Location spoofer”.
Na rynku istnieje aplikacja o nazwie „Fake GPS”. Jeśli włączysz Mock Locations na swoim urządzeniu, oferuje ładny graficzny interfejs użytkownika do ustawiania Twojej lokalizacji. Zdaję sobie sprawę, że to nie jest rozwiązanie do samodzielnego wykonania, ale z pewnością godne rozwiązanie do szybkiego testowania.
Tim Green,
2
może to być link - ta sama data i odpowiednia treść.
DefenestrationDay
4
@TimGreen twoja powinna być akceptowaną odpowiedzią (nie tylko komentarzem)! Zdecydowanie najłatwiejszy sposób na przetestowanie
Bostone
W rzeczywistości aplikacja „fałszywy GPS” nie jest najlepsza, ponieważ może tylko ustawiać lokalizacje i losowo się poruszać. Ich nowa wersja może wyznaczać trasy, ale tylko iteruje po punktach trasy, tak więc ogromne skoki w lokacji. Odpowiedź Janusza jest rzeczywiście prawidłowa, że musisz stworzyć własnego próbnego dostawcę. Niedawno to zrobiliśmy i jeśli ktoś tego potrzebuje lub jeśli to pytanie nadal potrzebuje pomocy, wyślę kod.
vkinra
5
Stwierdzenie „wprowadź swój kod i utwórz własny pozorowany dostawca lokalizacji” powinno zostać wyjaśnione bardziej szczegółowo.
Przyciemnia
102
Jeśli używasz tego telefonu tylko w laboratorium programistycznym, istnieje szansa, że możesz odlutować chip GPS i zasilić port szeregowy bezpośrednio sekwencjami NMEA z innego urządzenia.
Dlaczego hejterzy? Ta odpowiedź jest niesamowicie twarda.
Ben Zotto
61
Niesamowicie hardcore, chociaż niesamowicie bezużyteczny / nieistotny.
olivervbk
13
Ale wystarczająco zabawne.
etienne
23
hm, myślę, że każdy, dla kogo ta odpowiedź byłaby istotna, już wie, że może to zrobić. Wątpię, by te trzy osoby szukały rozwiązania w przepełnieniu stosu.
ToolmakerSteve
10
Jeśli masz problem ze zrozumieniem, jak wygenerować realistyczne sekwencje NMEA w swoim nielutowanym urządzeniu, jest świetna opcja: przylutuj tam rzeczywiste zewnętrzne urządzenie GPS i przenieś całe laboratorium programistyczne na rzeczywisty tor, na szczycie zespołu biegaczy / motocyklistów / samochody / samoloty / cokolwiek w zależności od prędkości, którą chcesz symulować. Nie zapomnij otworzyć dziury w dachu laboratorium projektowego, aby urządzenie mogło odbierać sygnały radiowe z satelitów. Nie ma za co. ;-)
Stéphane Gourichon
32
Żałuję, że nie mam pod ręką kabla. Wiem, że możesz telnetować się do emulatora, aby zmienić jego lokalizację
$ telnet localhost 5554AndroidConsole: type 'help'for a list of commands
OK
geo fix -82.41162928.054553
OK
Nie pamiętam, czy możesz telnetować się na swoje urządzenie, ale myślę, że możesz. Mam nadzieję, że to pomoże.
Będziesz potrzebował adb (mostek do debugowania Androida) do tego (CLI).
otrzymujesz odmowę pozwolenia na wszystko, co wysyłasz jako polecenie do konsoli urządzenia. Może jest to możliwe z aplikacją terminalową, ale myślę, że wymaga to dostępu roota
Janusz
Więc jesteśmy na tej samej stronie: nie mówisz o „powłoce adb”, prawda? To, o czym mówię, jest inne, jest to konfiguracja, która pozwala ustawić parametry specyficzne dla Androida. Wiem, na przykład, możesz ustawić przekierowanie portów (np. Localhost: 1234 idzie na telefon: 1234) bez dostępu do roota, więc możesz skonfigurować serwer proxy SOCKS i tunel przez kabel bez rootowania.
Tim Green
Możesz użyć adb forward tcp: 6000 tcp: 23, aby przekazać port 6000 na twoim komputerze do portu 23 w urządzeniu, ale nie mogłem się połączyć, nawet jeśli port jest pokazany jako otwarty. Użycie klienta telnet na urządzeniu i połączenie z localhost również się nie udaje
Janusz
15
Działa to dobrze w przypadku emulatora, ale nie działa na rzeczywistym urządzeniu. Więc w ogóle nie odpowiada na pytanie OP :(
Matthew Gilliard
4
@TimGreen Twoje rozwiązanie jest tylko dla emulatora. Pytanie dotyczyło prawdziwego urządzenia.
Igor Ganapolsky
29
Możesz użyć uprawnienia Usługi lokalizacji, aby udawać lokalizację ...
"android.permission.ACCESS_MOCK_LOCATION"
a następnie w kodzie 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);
Odniosłem sukces z następującym kodem. Chociaż z jakiegoś powodu dostałem pojedynczy zamek (nawet jeśli wypróbowałem różne pary LatLng), zadziałał dla mnie. mLocationManagerjest połączeniem LocationManagerz 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
);}
Fajny post, zobacz moją odpowiedź poniżej na dodatki.
icyerasor
O ile pamiętam, setTestProviderStatussłuży tutaj do powiadamiania / wysyłania / planowania zdarzenia za pomocą LocationManagera, że dostawca GPS znalazł poprawkę „teraz”, aby przetwarzanie wspomnianego zdarzenia mogło nastąpić.
Dr1Ku
Jakie jest znaczenie sformułowania „ mLocationManagerjest to, LocationManagerktóre jest podłączone do LocationListener”? w jaki sposób mogę to zrobić? Dziękuję ..
plus 1 za sposób, w jaki przedstawiłeś prawdę (a) i fałsz (y) w metodzie addTestProvider
A.Alqadomi
16
To, co opublikował Dr1Ku, działa. Użyłem kodu dzisiaj, ale musiałem dodać więcej lokalizacji. Oto kilka ulepszeń:
Opcjonalnie: zamiast używać ciągu LocationManager.GPS_PROVIDER, możesz zdefiniować własną stałą PROVIDER_NAME i używać jej. Podczas rejestrowania się w celu uzyskania aktualizacji lokalizacji wybierz dostawcę za pomocą kryteriów zamiast bezpośrednio określać go jako ciąg.
Po pierwsze: zamiast wywoływać removeTestProvider, najpierw sprawdź, czy istnieje dostawca do usunięcia (aby uniknąć IllegalArgumentException):
Fajna sugestia dotycząca zdefiniowania własnego dostawcy, rzecz z użyciem GPS_PROVIDER polega na tym, że (najwyraźniej) nie możesz pozbyć się fałszywego dostawcy (a dokładniej, nie możesz przełączyć się na normalny GPS) przed ponownym uruchomieniem. Świetny post, sprawdzę referencje!
Dr1Ku
@ Dr1KU Czy nadal nie można przełączyć się z powrotem na normalny GPS? Czy jest to gdzieś określone?
Kaz Dragon
@KazDragon Tak było wtedy. Z tego co pamiętam, po włączeniu Mock Providernormalny GPS nie działał, nie mogłem znaleźć poprawki (testowałem bezpośrednio na urządzeniu). Może tak nie być, ponieważ od tego czasu wiele wydarzyło się w Androidzie.
Dr1Ku
@ Dr1Ku Ach, cóż, robię teraz coś bardzo podobnego i otrzymuję wyniki podobne do tych, które opisałeś. Miałem nadzieję, że dowiem się, czy jest to ograniczenie wbudowane w platformę, czy po prostu gdzieś brakuje mi wywołania funkcji. Powinienem chyba zadać pytanie.
Kaz Dragon
9
W Android Market dostępne są aplikacje, które umożliwiają określenie „pozorowanej lokalizacji GPS” dla urządzenia.
Przeszukałem https://market.android.com i znalazłem aplikację o nazwie „Moja fałszywa lokalizacja”, która działa dla mnie.
Mock GPS Provider wspomniany powyżej przez Paula (pod adresem http://www.cowlumbus.nl/forum/MockGpsProvider.zip ) to kolejny przykład zawierający kod źródłowy - chociaż nie byłem w stanie zainstalować dostarczonego APK (mówi [INSTALL_FAILED_OLDER_SDK] i może wymagać ponownej kompilacji)
Aby korzystać z pozorowanych lokalizacji GPS, musisz włączyć je w ustawieniach urządzenia. Przejdź do Ustawienia -> Aplikacje -> Programowanie i zaznacz „Zezwalaj na pozorowane lokalizacje”
Następnie możesz użyć aplikacji takiej jak te opisane powyżej, aby ustawić współrzędne GPS, a mapy Google i inne aplikacje będą używać określonej przez Ciebie pozorowanej lokalizacji GPS.
Zauważ, że może być konieczne tymczasowe zwiększenie „minSdkVersion” w pliku gradle modułu do 17, aby użyć metody „setElapsedRealtimeNanos”.
Uwzględnij następujący kod w głównej klasie aktywności:
privateclassMyLocationListenerimplementsLocationListener{@Overridepublicvoid onLocationChanged(Location location){// do whatever you want, scroll the map, etc.}}
Uruchom swoją aplikację z AS. W systemie Android 6.0 i nowszych otrzymasz wyjątek bezpieczeństwa. Teraz przejdź do opcji programisty w Ustawieniach i wybierz „Wybierz pozorowaną aplikację lokalizacyjną”. Wybierz swoją aplikację z listy.
Teraz, kiedy dotkniesz mapy, onLocationChanged () uruchomi się ze współrzędnymi twojego kranu.
Właśnie to rozgryzłem, więc teraz nie muszę włóczyć się po okolicy z telefonami w dłoni.
Rozwiązanie wspomniane przez icyerasor i dostarczone przez Pedro na http://pedroassuncao.com/blog/2009/11/12/android-location-provider-mock/ działało bardzo dobrze. Jednak nie oferuje wsparcia dla prawidłowego uruchamiania, zatrzymywania i ponownego uruchamiania pozorowanego dostawcy GPS.
Zmieniłem nieco jego kod i przepisałem klasę na AsyncTask zamiast Thread. To pozwala nam komunikować się z wątkiem interfejsu użytkownika, dzięki czemu możemy ponownie uruchomić dostawcę w punkcie, w którym byliśmy, gdy go zatrzymaliśmy. Jest to przydatne, gdy zmienia się orientacja ekranu.
Musisz także włączyć pozorowane lokalizacje w ustawieniach programisty urządzeń. Jeśli to nie jest dostępne, ustaw „pozorowaną aplikację lokalizacji” na swoją aplikację po wdrożeniu powyższego.
Fałszywa aplikacja GPS z Google Play załatwiła mi sprawę. Po prostu przeczytaj wszystkie wskazówki w opisie aplikacji. Musisz wyłączyć inne usługi lokalizacyjne, a także uruchomić aplikację po włączeniu „Fałszywy GPS”. Działał świetnie na to, czego potrzebowałem.
Napisałem aplikację, która uruchamia serwer sieciowy (podobny do REST) na telefonie z Androidem, dzięki czemu możesz zdalnie ustawić pozycję GPS . Witryna udostępnia mapę, na której można kliknąć, aby ustawić nową pozycję lub użyć klawiszy „wasd”, aby poruszać się w dowolnym kierunku. Aplikacja była szybkim rozwiązaniem, więc prawie nie ma interfejsu użytkownika ani dokumentacji, ale implementacja jest prosta i możesz sprawdzić wszystko w (tylko czterech) klasach.
Jeśli urządzenie jest podłączone do komputera i próbujesz zmienić wysyłanie przewodów GPS za pomocą kontrolki emulatora, nie zadziała.
To jest kontrola EMULATORA nie bez powodu.
Po prostu skonfiguruj go, aby informować Cię o zmianie 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);}};
Po zaktualizowaniu GPS przepisz następującą metodę, aby zrobić to, co chcesz;
Zastanawiam się, czy potrzebujesz skomplikowanej konfiguracji pozorowanej lokalizacji. W moim przypadku, gdy uzyskałem ustaloną lokalizację, wywoływałem funkcję, aby zrobić coś z tą nową lokalizacją. W zegarze utwórz pozorowaną lokalizację. Zamiast tego wywołaj funkcję z tą lokalizacją. Wiedząc przez cały czas, że za chwilę GPS wskaże prawdziwą aktualną lokalizację. Co jest w porządku. Jeśli masz ustawiony wystarczająco długi czas aktualizacji.
Może nie jest to podejście `` programisty '', ale jeśli chcesz zaoszczędzić czas i uzyskać działające rozwiązanie, wypróbuj jedną z aplikacji, które są dedykowane do pozorowanej lokalizacji dostępnej w Google Play:
Jakieś preferencje? A może trzeba ich wszystkich? : P
arekolek
Fake GPS Location Spoofer jest wystarczająco dobry, ale Mock Locations pozwala wyznaczyć trasę, co jest fajną funkcją.
klimat
0
Skorzystaj z bardzo wygodnego i bezpłatnego interaktywnego symulatora lokalizacji dla telefonów i tabletów z systemem Android (o nazwie CATLES). Kpi z lokalizacji GPS na poziomie całego systemu (nawet w Google Maps lub aplikacji Facebook) i działa zarówno na urządzeniach fizycznych, jak i wirtualnych:
Android Studio zaleci, aby „Żądanie pozorowanej lokalizacji było wymagane tylko w pliku manifestu specyficznym dla testu lub debugowania (zazwyczaj src / debug / AndroidManifest.xml)” po prostu wyłącz kontrolę
Teraz upewnij się, że zaznaczyłeś „ Zezwalaj na pozorowanie lokalizacji ” w ustawieniach programisty na telefonie
Powyższe rozwiązania nie zadziałały, ponieważ testowałem na urządzeniu z Androidem z najnowszą wersją Usług Google Play, która wykorzystuje FusedLocationProviderClient . Po ustawieniu uprawnień do pozorowanej lokalizacji w manifeście aplikacji i aplikacji jako określonej aplikacji pozorowanej lokalizacji w ustawieniach programisty (jak wspomniano w poprzednich odpowiedziach), dodałem kod Kotlin poniżej, który pomyślnie wyszydził lokalizację.
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)
Odpowiedzi:
Wydaje się, że jedynym sposobem jest skorzystanie z pozorowanego dostawcy lokalizacji.
Musisz włączyć pozorowane lokalizacje w panelu deweloperskim w swoich ustawieniach i dodać
do manifestu.
Teraz możesz przejść do kodu i utworzyć własnego dostawcę pozorowanej lokalizacji i ustawić lokalizację tego dostawcy.
źródło
Jeśli używasz tego telefonu tylko w laboratorium programistycznym, istnieje szansa, że możesz odlutować chip GPS i zasilić port szeregowy bezpośrednio sekwencjami NMEA z innego urządzenia.
źródło
Żałuję, że nie mam pod ręką kabla. Wiem, że możesz telnetować się do emulatora, aby zmienić jego lokalizację
Nie pamiętam, czy możesz telnetować się na swoje urządzenie, ale myślę, że możesz. Mam nadzieję, że to pomoże.
Będziesz potrzebował adb (mostek do debugowania Androida) do tego (CLI).
źródło
Możesz użyć uprawnienia Usługi lokalizacji, aby udawać lokalizację ...
"android.permission.ACCESS_MOCK_LOCATION"
a następnie w kodzie java,
źródło
Odniosłem sukces z następującym kodem. Chociaż z jakiegoś powodu dostałem pojedynczy zamek (nawet jeśli wypróbowałem różne pary LatLng), zadziałał dla mnie.
mLocationManager
jest połączeniemLocationManager
zLocationListener
:źródło
setTestProviderStatus
służy tutaj do powiadamiania / wysyłania / planowania zdarzenia za pomocą LocationManagera, że dostawca GPS znalazł poprawkę „teraz”, aby przetwarzanie wspomnianego zdarzenia mogło nastąpić.mLocationManager
jest to,LocationManager
które jest podłączone do LocationListener”? w jaki sposób mogę to zrobić? Dziękuję ..LocationManager
usługi iLocationListener
: blog.doityourselfandroid.com/2010/12/25/...To, co opublikował Dr1Ku, działa. Użyłem kodu dzisiaj, ale musiałem dodać więcej lokalizacji. Oto kilka ulepszeń:
Opcjonalnie: zamiast używać ciągu LocationManager.GPS_PROVIDER, możesz zdefiniować własną stałą PROVIDER_NAME i używać jej. Podczas rejestrowania się w celu uzyskania aktualizacji lokalizacji wybierz dostawcę za pomocą kryteriów zamiast bezpośrednio określać go jako ciąg.
Po pierwsze: zamiast wywoływać removeTestProvider, najpierw sprawdź, czy istnieje dostawca do usunięcia (aby uniknąć IllegalArgumentException):
Po drugie: aby opublikować więcej niż jedną lokalizację, musisz ustawić czas dla lokalizacji:
Wydaje się również, że istnieje test Google, który korzysta z MockLocationProviders: http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/1.5_r4/android/location/LocationManagerProximityTest.java
Inny dobry działający przykład można znaleźć pod adresem : http://pedroassuncao.com/blog/2009/11/12/android-location-provider-mock/
Kolejny dobry artykuł to: http://ballardhack.wordpress.com/2010/09/23/location-gps-and-automated-testing-on-android/#comment-1358 Znajdziesz także kod, który faktycznie działa ja na emulatorze.
źródło
Mock Provider
normalny GPS nie działał, nie mogłem znaleźć poprawki (testowałem bezpośrednio na urządzeniu). Może tak nie być, ponieważ od tego czasu wiele wydarzyło się w Androidzie.W Android Market dostępne są aplikacje, które umożliwiają określenie „pozorowanej lokalizacji GPS” dla urządzenia.
Przeszukałem https://market.android.com i znalazłem aplikację o nazwie „Moja fałszywa lokalizacja”, która działa dla mnie.
Mock GPS Provider wspomniany powyżej przez Paula (pod adresem http://www.cowlumbus.nl/forum/MockGpsProvider.zip ) to kolejny przykład zawierający kod źródłowy - chociaż nie byłem w stanie zainstalować dostarczonego APK (mówi [INSTALL_FAILED_OLDER_SDK] i może wymagać ponownej kompilacji)
Aby korzystać z pozorowanych lokalizacji GPS, musisz włączyć je w ustawieniach urządzenia. Przejdź do Ustawienia -> Aplikacje -> Programowanie i zaznacz „Zezwalaj na pozorowane lokalizacje”
Następnie możesz użyć aplikacji takiej jak te opisane powyżej, aby ustawić współrzędne GPS, a mapy Google i inne aplikacje będą używać określonej przez Ciebie pozorowanej lokalizacji GPS.
źródło
To zadziałało dla mnie (Android Studio):
Wyłącz śledzenie GPS i WiFi w telefonie. W Androidzie 5.1.1 i starszych wybierz „Włącz pozorowane lokalizacje” w Opcjach programisty.
Utwórz kopię swojego manifestu w katalogu src / debug. Dodaj do niego następujące elementy (poza tagiem „aplikacja”):
używa uprawnień android: name = "android.permission.ACCESS_MOCK_LOCATION"
Skonfiguruj fragment mapy o nazwie „mapa”. Uwzględnij następujący kod w onCreate ():
Zauważ, że może być konieczne tymczasowe zwiększenie „minSdkVersion” w pliku gradle modułu do 17, aby użyć metody „setElapsedRealtimeNanos”.
Uwzględnij następujący kod w głównej klasie aktywności:
Uruchom swoją aplikację z AS. W systemie Android 6.0 i nowszych otrzymasz wyjątek bezpieczeństwa. Teraz przejdź do opcji programisty w Ustawieniach i wybierz „Wybierz pozorowaną aplikację lokalizacyjną”. Wybierz swoją aplikację z listy.
Teraz, kiedy dotkniesz mapy, onLocationChanged () uruchomi się ze współrzędnymi twojego kranu.
Właśnie to rozgryzłem, więc teraz nie muszę włóczyć się po okolicy z telefonami w dłoni.
źródło
Stworzyłem prostego Handler'a symulującego ruchome położenie z pozycji początkowej.
Uruchom go w wywołaniu zwrotnym połączenia:
Klasa Handler:
Mam nadzieję, że to pomoże ...
źródło
Rozwiązanie wspomniane przez icyerasor i dostarczone przez Pedro na http://pedroassuncao.com/blog/2009/11/12/android-location-provider-mock/ działało bardzo dobrze. Jednak nie oferuje wsparcia dla prawidłowego uruchamiania, zatrzymywania i ponownego uruchamiania pozorowanego dostawcy GPS.
Zmieniłem nieco jego kod i przepisałem klasę na AsyncTask zamiast Thread. To pozwala nam komunikować się z wątkiem interfejsu użytkownika, dzięki czemu możemy ponownie uruchomić dostawcę w punkcie, w którym byliśmy, gdy go zatrzymaliśmy. Jest to przydatne, gdy zmienia się orientacja ekranu.
Kod wraz z przykładowym projektem dla Eclipse można znaleźć na GitHub: https://github.com/paulhoux/Android-MockProviderGPS
Wszelkie uznanie należy się Pedro za wykonanie większości ciężkiej pracy.
źródło
Dodaj do swojego manifestu
Funkcja pozorowania lokalizacji
Musisz także włączyć pozorowane lokalizacje w ustawieniach programisty urządzeń. Jeśli to nie jest dostępne, ustaw „pozorowaną aplikację lokalizacji” na swoją aplikację po wdrożeniu powyższego.
źródło
Fałszywa aplikacja GPS z Google Play załatwiła mi sprawę. Po prostu przeczytaj wszystkie wskazówki w opisie aplikacji. Musisz wyłączyć inne usługi lokalizacyjne, a także uruchomić aplikację po włączeniu „Fałszywy GPS”. Działał świetnie na to, czego potrzebowałem.
Oto link do aplikacji w Google Play: Fałszywy GPS
źródło
Samouczek Google, jak to zrobić, można znaleźć tutaj, zawiera przykłady kodu i wyjaśnia proces.
http://developer.android.com/training/location/location-testing.html#SendMockLocations
źródło
Zainstaluj aplikację Fake GPS https://play.google.com/store/apps/details?id=com.incorporateapps.fakegps.fre&hl=en
Opcje programisty -> Wybierz pozorowaną aplikację lokalizacyjną (to znaczy, wybrana aplikacja Fałszywa lokalizacja).
Fałszywa aplikacja GPS :
Podwójna zakładka na mapie, aby dodać -> kliknij przycisk odtwarzania -> Pokaż toast „Fałszywa lokalizacja zatrzymana”
wreszcie sprawdź w aplikacjach map Google.
źródło
Napisałem aplikację, która uruchamia serwer sieciowy (podobny do REST) na telefonie z Androidem, dzięki czemu możesz zdalnie ustawić pozycję GPS . Witryna udostępnia mapę, na której można kliknąć, aby ustawić nową pozycję lub użyć klawiszy „wasd”, aby poruszać się w dowolnym kierunku. Aplikacja była szybkim rozwiązaniem, więc prawie nie ma interfejsu użytkownika ani dokumentacji, ale implementacja jest prosta i możesz sprawdzić wszystko w (tylko czterech) klasach.
Repozytorium projektów: https://github.com/juliusmh/RemoteGeoFix
źródło
Jeśli urządzenie jest podłączone do komputera i próbujesz zmienić wysyłanie przewodów GPS za pomocą kontrolki emulatora, nie zadziała.
To jest kontrola EMULATORA nie bez powodu.
Po prostu skonfiguruj go, aby informować Cię o zmianie GPS.
Po zaktualizowaniu GPS przepisz następującą metodę, aby zrobić to, co chcesz;
Nie zapomnij umieścić ich w manifeście
android.permission.ACCESS_FINE_LOCATION
android.permission.ACCESS_MOCK_LOCATION
źródło
Zastanawiam się, czy potrzebujesz skomplikowanej konfiguracji pozorowanej lokalizacji. W moim przypadku, gdy uzyskałem ustaloną lokalizację, wywoływałem funkcję, aby zrobić coś z tą nową lokalizacją. W zegarze utwórz pozorowaną lokalizację. Zamiast tego wywołaj funkcję z tą lokalizacją. Wiedząc przez cały czas, że za chwilę GPS wskaże prawdziwą aktualną lokalizację. Co jest w porządku. Jeśli masz ustawiony wystarczająco długi czas aktualizacji.
źródło
Może nie jest to podejście `` programisty '', ale jeśli chcesz zaoszczędzić czas i uzyskać działające rozwiązanie, wypróbuj jedną z aplikacji, które są dedykowane do pozorowanej lokalizacji dostępnej w Google Play:
Fałszywy lokalizator GPS
Mock Locations
Fałszywa lokalizacja GPS
źródło
Skorzystaj z bardzo wygodnego i bezpłatnego interaktywnego symulatora lokalizacji dla telefonów i tabletów z systemem Android (o nazwie CATLES). Kpi z lokalizacji GPS na poziomie całego systemu (nawet w Google Maps lub aplikacji Facebook) i działa zarówno na urządzeniach fizycznych, jak i wirtualnych:
Strona internetowa: http://ubicom.snet.tu-berlin.de/catles/index.html
Wideo: https://www.youtube.com/watch?v=0WSwH5gK7yg
źródło
Użyj tego uprawnienia w pliku manifestu
Android Studio zaleci, aby „Żądanie pozorowanej lokalizacji było wymagane tylko w pliku manifestu specyficznym dla testu lub debugowania (zazwyczaj src / debug / AndroidManifest.xml)” po prostu wyłącz kontrolę
Teraz upewnij się, że zaznaczyłeś „ Zezwalaj na pozorowanie lokalizacji ” w ustawieniach programisty na telefonie
Użyj LocationManager
Teraz ustaw lokalizację, gdzie chcesz
źródło
Powyższe rozwiązania nie zadziałały, ponieważ testowałem na urządzeniu z Androidem z najnowszą wersją Usług Google Play, która wykorzystuje FusedLocationProviderClient . Po ustawieniu uprawnień do pozorowanej lokalizacji w manifeście aplikacji i aplikacji jako określonej aplikacji pozorowanej lokalizacji w ustawieniach programisty (jak wspomniano w poprzednich odpowiedziach), dodałem kod Kotlin poniżej, który pomyślnie wyszydził lokalizację.
źródło