Jak emulować lokalizację GPS w emulatorze Androida?

Chcę uzyskać długość i szerokość geograficzną w emulatorze Androida do testów.

Czy ktos moze mi podpowiedziec jak to osiagnac?

Jak ustawić położenie emulatora na pozycję testową?

Author: jdev, 2010-02-17

30 answers

Można połączyć się z emulatorem poprzez Telnet. Następnie masz konsolę emulatora, który pozwala wprowadzić pewne dane, takie jak poprawki geograficzne, sieć itp.

Jak korzystać z konsoli jest szczegółowo wyjaśnione tutaj. Aby połączyć się z konsolą, otwórz wiersz poleceń i wpisz

telnet localhost 5554

Możesz następnie użyć polecenia geo, aby ustawić szerokość, długość i w razie potrzeby wysokość na urządzeniu, które jest przekazywane do wszystkich programów za pomocą dostawcy lokalizacji gps. Zobacz link powyżej, aby uzyskać więcej informacji instrukcje.

Specyficzne polecenie do uruchomienia w konsoli to

geo fix <longitude value> <latitude value>

Uznałem tę stronę za przydatną do znalezienia realistycznego lat/lng: http://itouchmap.com/latlong.html

Jeśli potrzebujesz więcej niż jedną współrzędną, możesz użyć pliku kml z trasą, jest to trochę opisane w tym artykule . Nie mogę znaleźć lepszego źródła w tej chwili.

 418
Author: Janusz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-12 02:57:07

Szukałem lepszego sposobu na ustawienie współrzędnych GPS emulatora niż używanie geo fix i ręczne wyznaczanie konkretnych współrzędnych szerokości i długości geograficznej.

Nie mogąc nic znaleźć, stworzyłem mały program, który używa GWT i Google Maps API, aby uruchomić przeglądarkowe Narzędzie do ustawiania lokalizacji GPS w emulatorze:

Android-gps-emulator

Mam nadzieję, że może się przydać, aby pomóc innym, którzy niewątpliwie natkną się na to trudność / pytanie również.

android-gps-emulator

 104
Author: dpdearing,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-08 14:30:33

Jeśli używasz Eclipse, przejdź do Window->Open Perspective->DDMS, następnie wpisz jeden w Location Controls i naciśnij Send.

 80
Author: SteveCav,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-29 08:36:45

Nikt tutaj nie wspomniał o wbudowanym rozwiązaniu samego emulatora, więc dla przyszłych odwiedzających chciałbym podzielić się nim z wizualizacjami.

Najpierw uruchom Emulator Androida i kliknij przycisk menu (3 kropki) pokazany poniżej:

emulator z przyciskiem menu

Następnie z lewego panelu wybierz lokalizację i zmień współrzędne zgodnie z własnymi potrzebami. Po naciśnięciu przycisku Send zmiany natychmiast wejdą w życie (polecam otworzyć Google Maps dla lepsze zrozumienie).

Tutaj wpisz opis obrazka

Wersja Android Studio: 2.3.3

 33
Author: eden,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-14 09:00:38

Dla użytkowników Android Studio:

Uruchom emulator,

Następnie przejdź do Tools -> Android ->Android device monitor

Otwórz kartę Emulator Control i użyj grupy kontroli lokalizacji.

 32
Author: ofer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-19 11:11:13

Zakładając, że masz skonfigurowany i uruchomiony mapview:

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();
    }
});

Będziesz potrzebował następującego pozwolenia w manifeście:

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

I aby wysłać współrzędne do emulatora z Eclipse, przejdź do menu "Okno", wybierz" Pokaż Widok " > "Inne" > "sterowanie emulatorem", i możesz wysłać współrzędne z wyświetlonego Panelu sterowania emulatora.

 13
Author: David Hedlund,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-17 10:22:24

Dla nowego emulatora:

Http://developer.android.com/tools/devices/emulator.html#extended

Zasadniczo, kliknij na trzy kropki przycisk w kontrolkach emulatora (po prawej stronie emulatora), a otworzy się menu, które pozwoli Ci kontrolować emulator, w tym lokalizację

 12
Author: f.khantsis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-02 10:30:14

1. Użytkowników Android Studio.

Po uruchomieniu emulatora goto Tools->Android - > Android Device monitor

Kliknij kartę sterowanie emulatorem zmień z grupy Kontrola lokalizacji.

2. Użytkowników Eclipse.

Najpierw w Eclipse w Menu wybierz "Window" następnie wybierz "Open Perspective" następnie wybierz "DDMS". tzn. okno - > Otwórz Prespective - > DDMS.

Zobaczysz po lewej stronie panelu urządzenia, a po prawej stronie zobaczysz różne karty. Wybierz Zakładka "Sterowanie Emulatorem".

Na dole zobaczysz Panel sterowania lokalizacją. Wybierz Zakładkę "Manual".

Wprowadź długość i szerokość geograficzną w polu tekstowym, a następnie kliknij przycisk Wyślij. Wyśle pozycję do emulatora i aplikacji.

3. Korzystanie z telnetu.

W poleceniu run wpisz to.

telnet localhost 5554

Jeśli nie używasz systemu windows, możesz użyć dowolnego klienta telnet.

Po połączeniu z telnet użyj poniższego polecenia, aby wysłać swoją pozycję do emulator.

geo fix long lat    
geo fix -121.45356 46.51119 4392

4. Korzystanie z przeglądarki Google maps tool

[[2]}istnieje program, który używa GWT i Google Maps API, aby uruchomić narzędzie mapy oparte na przeglądarce, aby ustawić lokalizację GPS w emulatorze:

Android-gps-emulator

 12
Author: Muhammad Yousaf Sulahria,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-16 19:45:25

Użycie polecenia " geo " w konsoli emulatora

Aby wysłać dane lokalizacji z wiersza poleceń:

  1. Uruchom aplikację w emulatorze Androida i otwórz terminal / konsolę w katalogu SDK / tools.

  2. Podłącz do konsoli emulatora:

    telnet localhost 5555 (Zastąp 5555 dowolnym portem, na którym działa emulator)

  3. Wyślij dane lokalizacji: * geo fix, aby wysłać stałą geo-lokalizację.

    To polecenie przyjmuje długość i szerokość geograficzną w stopniach dziesiętnych oraz opcjonalną wysokość w metrach. Na przykład:

    geo fix -121.45356 46.51119 4392
    
 10
Author: Dan Zhao,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-20 20:55:57

Napisałem skrypt Pythona, aby wypchnąć lokalizacje gps do emulatora przez telnet. Określa źródło i lokalizację docelową. Istnieje również przesunięcie czasowe, które pozwala kontrolować, jak długo współrzędne zostaną przesunięte do urządzenia. Jedno miejsce jest pchane raz na sekundę.

W poniższym przykładzie scenariusz przenosi się z Berlina do Hamburga w 120 sekund. Jeden krok / lokalizacja gps na sekundę z losowymi odległościami.

#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
import telnetlib
from time import sleep
import random

HOST = "127.0.0.1"
PORT = 5554
TIMEOUT = 10
LAT_SRC = 52.5243700
LNG_SRC = 13.4105300
LAT_DST = 53.5753200
LNG_DST = 10.0153400
SECONDS = 120

LAT_MAX_STEP = ((max(LAT_DST, LAT_SRC) - min(LAT_DST, LAT_SRC)) / SECONDS) * 2
LNG_MAX_STEP = ((max(LNG_DST, LNG_SRC) - min(LNG_DST, LNG_SRC)) / SECONDS) * 2

DIRECTION_LAT = 1 if LAT_DST - LAT_SRC > 0 else -1
DIRECTION_LNG = 1 if LNG_DST - LNG_SRC > 0 else -1

lat = LAT_SRC
lng = LNG_SRC

tn = telnetlib.Telnet(HOST, PORT, TIMEOUT)
tn.set_debuglevel(9)
tn.read_until("OK", 5)

tn.write("geo fix {0} {1}\n".format(LNG_SRC, LAT_SRC))
#tn.write("exit\n")

for i in range(SECONDS):
    lat += round(random.uniform(0, LAT_MAX_STEP), 7) * DIRECTION_LAT
    lng += round(random.uniform(0, LNG_MAX_STEP), 7) * DIRECTION_LNG

    #tn.read_until("OK", 5)
    tn.write("geo fix {0} {1}\n".format(lng, lat))
    #tn.write("exit\n")
    sleep(1)

tn.write("geo fix {0} {1}\n".format(LNG_DST, LAT_DST))
tn.write("exit\n")

print tn.read_all()
 8
Author: user937284,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-20 21:34:45

Używam funkcji Eclipse plug DDMS do wysyłania GPS. Tutaj wpisz opis obrazka

 5
Author: boiledwater,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-17 09:39:29

W Linuksie, gdzie porty komunikacyjne są blokowane. przejdź do folderu platform-tools wewnątrz android sdk i uruchom polecenie:

./adb -s #{device_name} emu geo fix #{longitude} #{latitude}
 5
Author: abhishek singh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-17 08:26:13

W Mac, Linux lub Cygwin:

echo 'geo fix -99.133333 19.43333 2202' | nc localhost 5554
Dzięki temu będziesz w Mexico City. Odpowiednio zmienić długość / szerokość / wysokość. To powinno wystarczyć, jeśli nie jesteś zainteresowany nmea.
 5
Author: Alberto Gaona,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-03 20:57:49

Zobacz Uzyskanie Lokalizacji Użytkownika

Zajrzyj pod podając przykładowe dane Lokalizacji . Znajdziesz dla niego rozwiązanie.

 4
Author: daemon54,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-21 01:32:22

Najpierw przejdź do sekcji DDMS w Twoim eclipse Niż otwarta Kontrola emulatora .... Przejdź Do Sekcji Manual Ustaw lat i long, a następnie naciśnij przycisk Wyślij

 4
Author: sachin pareek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-13 07:00:45

Zadziałało dla mnie następujące rozwiązanie-otwórz wiersz poleceń i napisz:

adb emu geo fix [longtitude] [latitude]
 4
Author: Asaf Pinhassi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-26 05:20:05

Próbowałem ustawić geo fix przez adb dla wielu punktów i nie mógł dostać moja aplikacja, aby zobaczyć żadnych danych GPS. Ale kiedy próbowałem otworzyć DDMS, wybierając proces mojej aplikacji i wysyłając współrzędne przez kartę kontrolną emulatora zadziałało od razu.

 3
Author: James,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-08-08 12:38:10

Dalvik Debug Monitor > Wybierz Emulator > Zakładka Kontrola Emulatora > Kontrola Lokalizacji.

DDMS -- android_sdk/tools / DDMS lub android_sdk / tools / monitor

 3
Author: Dan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-11 18:13:43

Jeśli używasz eclipse to używając kontrolera emulatora możesz ręcznie ustawić szerokość i długość oraz uruchomić aplikację opartą na mapie w emulatorze

 2
Author: Swapnil,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-27 16:44:27

Jeśli używasz Android Studio (1.3):

  • Kliknij na Menu "Narzędzia"
  • "Android"
  • "Monitor urządzeń z systemem Android"
  • Kliknij na aktualnym emulatorze
  • Zakładka "Sterowanie Emulatorem"
  • Przejdź do "Kontrola lokalizacji" i wprowadź Lat i Lon
 2
Author: electrobabe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-06 12:47:54

Wystarczy dodać odpowiedź Alberto Gaony do jednej linijki

token=$(cat ~/.emulator_console_auth_token); cat <(echo -e "auth $token \n  geo fix 96.0290791 16.9041016  \n exit") - | nc localhost 5554

5554 to numer portu emulatora pokazany w adb devices.

Byłoby lepiej, gdyby zadziałało.
 2
Author: Kyaw Tun,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-26 04:06:22

Jeśli powyższe rozwiązania nie działają. Spróbuj tego:

W Twoim manifeście Androida.xml, dodaj następujące dwa odnośniki Poza znacznika aplikacji, ale oczywiście wewnątrz znacznika manifest
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" ></uses-permission>
<uses-permission android:name="android.permission.INTERNET" ></uses-permission>
 1
Author: ssgao,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-08 04:03:05

Nie byłem w stanie uzyskać poprawki GPS na emulatorze, gdy emulator był uruchomiony Android image bez Google API. Jak tylko zmieniłem obraz, aby zawierał API Google, wszystkie wymienione tutaj sposoby na poprawkę GPS działały.

Upewnij się, że podczas tworzenia AVD wybrałeś obraz z interfejsami API Google.

 1
Author: dvim,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-17 05:10:37

Dla własnego projektu, opracowałem usługę online, która może zapewnić symulowaną lokalizację do emulatora Androida.

Używa geo nmea zamiast geo fix, który pozwala ustawić prędkość, kurs, dokładny czas itp. oprócz tylko lat / lon.

Usługa wymaga narzędzia wiersza poleceń nc (netcat) i nic więcej.

Http://www.kisstech.ch/nmea/

 1
Author: Gerhard Wesp,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-01 23:08:38

Możesz użyć emulatora, takiego jak genymotion , który daje Ci elastyczność, aby emulować obecną lokalizację GPS itp.

 1
Author: Neil B,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-06 14:56:14

Istnieje Wtyczka Dla Android Studio o nazwie "Mock Location Plugin". Możesz emulować wiele punktów za pomocą tej wtyczki. Szczegółową instrukcję obsługi Można znaleźć pod tym linkiem: Android Studio. Symuluj wiele punktów GPS za pomocą wtyczki mock Location

 1
Author: Jesús Amieiro,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-18 07:28:42

Otwórz Android studio - > menu Narzędzia - > Android - > Monitor Urządzenia z systemem Android - > Zakładka Emulator- > Kontrola lokalizacji - > ustaw wymaganą szerokość i długość geograficzną i sprawdź projekt zgodnie z potrzebami

 1
Author: Premkumar Manipillai,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-07 10:33:50

Wspomniany już wielokrotnie odpowiada za użycie polecenia powłoki " geo fix... " jest poprawną odpowiedzią. Ale w przypadku użycia LocationClient.getLastLocation () aby odzyskać dane warto wspomnieć, że na początku nie będzie działać. Klasa LocationClient korzysta z usługi Google Play, aby pobrać współrzędne. Dla mnie to zaczęło działać po uruchomieniu aplikacji emulatory mapy raz. Podczas pierwszego uruchomienia zostaniesz poproszony o zezwolenie aplikacji google na dostęp do twojego miejsce, co chyba załatwia sprawę.

 0
Author: Maik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-24 07:25:21

W eclipse:

Być może trzeba będzie przeciągnąć okno DDMS w dół. "Sterowanie lokalizacją" znajduje się w obszarze "działania telefonii" i może być ukryte przez Widok konsoli o normalnej wielkości ( Pasek z konsolą, LogCat itp.)

~

 0
Author: Droid Teahouse,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-06 08:35:18

Nie mogę jeszcze skomentować, więc aktualizowanie @ ektomorfy odpowiada tutaj, co podczas telnetingu wymaga teraz posiadania tokena auth. W Linuksie znajduje się pod /home/username/.emulator_console_auth_token

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
import telnetlib
from time import sleep
import random

FILE = open('/home/username/.emulator_console_auth_token', 'r')
AUTH_TOKEN = FILE.read()
FILE.close()

HOST = "127.0.0.1"
PORT = 5554
TIMEOUT = 10
LAT_SRC = 52.5243700
LNG_SRC = 13.4105300
LAT_DST = 53.5753200
LNG_DST = 10.0153400
SECONDS = 120

LAT_MAX_STEP = ((max(LAT_DST, LAT_SRC) - min(LAT_DST, LAT_SRC)) / SECONDS) * 2
LNG_MAX_STEP = ((max(LNG_DST, LNG_SRC) - min(LNG_DST, LNG_SRC)) / SECONDS) * 2

DIRECTION_LAT = 1 if LAT_DST - LAT_SRC > 0 else -1
DIRECTION_LNG = 1 if LNG_DST - LNG_SRC > 0 else -1

lat = LAT_SRC
lng = LNG_SRC

tn = telnetlib.Telnet(HOST, PORT, TIMEOUT)
tn.set_debuglevel(9)
tn.read_until("OK", 5)

tn.write("auth {0}\n".format(AUTH_TOKEN))
tn.read_until("OK", 5)

tn.read_until("OK", 5)

tn.write("geo fix {0} {1}\n".format(LNG_SRC, LAT_SRC))
#tn.write("exit\n")

for i in range(SECONDS):
    lat += round(random.uniform(0, LAT_MAX_STEP), 7) * DIRECTION_LAT
    lng += round(random.uniform(0, LNG_MAX_STEP), 7) * DIRECTION_LNG

    #tn.read_until("OK", 5)
    tn.write("geo fix {0} {1}\n".format(lng, lat))
    #tn.write("exit\n")
    sleep(1)

tn.write("geo fix {0} {1}\n".format(LNG_DST, LAT_DST))
tn.write("exit\n")

print tn.read_all()

Ze skryptu powłoki można ustawić coorinate TAK

#!/usr/bin/env bash
export ATOKEN=`cat ~/.emulator_console_auth_token`
echo -ne "auth $ATOKEN\ngeo fix -99.133333 19.43333 2202\n"  | nc localhost 5554
 0
Author: draekko,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-11 14:06:50