테스트를 위해 Android 에뮬레이터에서 경도와 위도를 얻고 싶습니다.
아무도 이것을 달성하는 방법을 안내 할 수 있습니까?
에뮬레이터의 위치를 테스트 위치로 설정하려면 어떻게합니까?
테스트를 위해 Android 에뮬레이터에서 경도와 위도를 얻고 싶습니다.
아무도 이것을 달성하는 방법을 안내 할 수 있습니까?
에뮬레이터의 위치를 테스트 위치로 설정하려면 어떻게합니까?
답변:
Telnet을 통해 에뮬레이터에 연결할 수 있습니다. 그런 다음 지역 수정, 네트워크 등과 같은 특정 데이터를 입력 할 수있는 에뮬레이터 콘솔이 있습니다.
콘솔 사용법은 여기에 광범위하게 설명되어 있습니다 . 콘솔에 연결하려면 명령 행을 열고 다음을 입력하십시오.
telnet localhost 5554
그런 다음 geo 명령을 사용하여 GPS 위치 제공자를 사용하여 모든 프로그램에 전달되는 장치에서 위도, 경도 및 필요한 경우 고도를 설정할 수 있습니다. 자세한 지침은 위의 링크를 참조하십시오.
콘솔에서 실행할 특정 명령은
geo fix <longitude value> <latitude value>
이 사이트는 현실적인 위도 / 경도를 찾는 데 유용한 것으로 나타났습니다 : http://itouchmap.com/latlong.html
하나 이상의 좌표가 필요한 경우 경로와 함께 kml 파일을 사용할 수 있으며이 기사에서는 약간 설명되어 있습니다. 현재 더 좋은 소스를 찾을 수 없습니다.
geo fix
명령은 auth
처음 사용하는 경우에만 사용할 수 있습니다 . 언급 할 가치가있을 것입니다 ...
여기에 아무도 에뮬레이터 자체의 내장 솔루션을 언급하지 않았으므로 향후 방문자를 위해 시각적으로 공유하고 싶습니다.
먼저 Android 에뮬레이터를 실행하고 아래 표시된 메뉴 버튼 (3 개의 점)을 클릭하십시오.
그런 다음 왼쪽 창에서 위치를 선택 하고 필요에 따라 좌표를 변경하십시오. 보내기 버튼을 누르면 변경 사항이 즉시 적용됩니다 (더 나은 이해를 위해 Google지도를 열 것을 권장합니다).
안드로이드 스튜디오 버전 : 2.3.3
또한 실시간으로 애플리케이션에 다른 위치를 제공하기 위해 GPX 파일을 사용할 수 있습니다. Google지도 방향 링크에서이 파일을 만드는 것은 매우 쉽습니다.
"GPS / KML로드"버튼을 사용하여 생성 된 파일을 에뮬레이터에로드하고 속도를 선택한 다음 하단의 녹색 재생 버튼을 누릅니다. 아래 그림과 같이 위치가 실시간으로 전송됩니다.
geo fix
특정 위도와 경도 좌표를 사용 하고 수동으로 결정하는 것보다 에뮬레이터의 GPS 좌표를 설정하는 더 좋은 방법을 찾고있었습니다 .
아무것도 찾을 수 없으므로 GWT와 Google Maps API를 사용하여 에뮬레이터에서 GPS 위치를 설정하는 브라우저 기반 맵 도구를 시작하는 작은 프로그램을 만들었습니다.
이 어려움 / 질문에 대해 의심 할 여지없이 다른 사람들을 도울 수 있기를 바랍니다.
ConnectionRefused
Android 가상 장치를 시작하기 전에 GPS 에뮬레이터를 시작하면 해당 메시지 가 표시됩니다. 브라우저 상단에 "포트 5554에 연결하는 중 오류가 발생했습니다 ..."라고 표시되어 있습니다. "에뮬레이터 포트 변경"버튼을 클릭하여 다시 연결하면 모든 것이
geo fix 42,42 42,42 42
점 대신 쉼표 와 같아야 합니다.
를 사용하는 Eclipse
경우로 이동 Window->Open Perspective->DDMS
한 다음에 입력 Location Controls
하고을 누르십시오 Send
.
LocationManager mlocManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Location location = mlocManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
Unable to send command to the emulator
합니다. 왜 작동하지 않는지 아십니까? 기본 Nexus 4 AVD를 사용하고 있습니다.
Android Studio 사용자의 경우 :
에뮬레이터를 실행하고
그런 다음 Tools -> Android ->Android device monitor
Emulator Control
탭을 열고 위치 컨트롤 그룹을 사용하십시오.
맵 뷰가 설정되어 실행 중이라고 가정합니다.
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();
}
});
매니페스트에 다음 권한이 필요합니다.
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
Eclipse에서 모의 좌표를 에뮬레이터로 보내려면 "창"메뉴로 이동하여 "보기 표시"> "기타"> "에뮬레이터 제어"를 선택하면 나타나는 에뮬레이터 제어 창에서 좌표를 보낼 수 있습니다.
runOnFirstFix
있습니까? 기기가 GPS 위치를 처음 수신 할 때 발생하는 이벤트이기 때문에이 값이 높아지면 getMyLocation
반드시 값을 반환해야합니다.
새로운 에뮬레이터의 경우 :
http://developer.android.com/tools/devices/emulator.html#extended
기본적으로 에뮬레이터의 오른쪽에있는 에뮬레이터 컨트롤에서 세 개의 점 버튼을 클릭하면 위치를 포함한 에뮬레이터를 제어 할 수있는 메뉴가 열립니다
1. 안드로이드 스튜디오 사용자.
에뮬레이터를 실행 한 후 Tools-> Android-> Android device monitor로 이동하십시오.
위치 제어 그룹에서 에뮬레이터 제어 탭 변경을 클릭하십시오.
2. 이클립스 사용자.
먼저 Eclipse에서 메뉴에서 "창"을 선택한 다음 "관점 열기"를 선택한 다음 "DDMS"를 선택하십시오. 즉, Window-> Open Prespective-> DDMS입니다.
왼쪽 장치 패널에 표시되고 오른쪽에 다른 탭이 표시됩니다. "에뮬레이터 제어"탭을 선택하십시오.
하단에는 위치 제어판이 표시됩니다. "수동"탭을 선택하십시오.
텍스트 상자에 경도와 위도를 입력 한 다음 보내기 버튼을 클릭하십시오. 위치를 에뮬레이터와 응용 프로그램으로 보냅니다.
3. 텔넷 사용.
실행 명령에서 이것을 입력하십시오.
telnet localhost 5554
창을 사용하지 않는 경우 모든 텔넷 클라이언트를 사용할 수 있습니다.
텔넷에 연결 한 후 다음 명령을 사용하여 위치를 에뮬레이터로 보냅니다.
geo fix long lat
geo fix -121.45356 46.51119 4392
4. 브라우저 기반 Google지도 도구를 사용하십시오.
GWT와 Google Maps API를 사용하여 에뮬레이터에서 GPS 위치를 설정하기 위해 브라우저 기반지도 도구를 시작하는 프로그램이 있습니다.
에뮬레이터 콘솔에서 "geo"명령 사용
명령 행에서 모의 위치 데이터를 보내려면 다음을 수행하십시오.
Android 에뮬레이터에서 응용 프로그램을 시작하고 SDK의 / tools 디렉토리에서 터미널 / 콘솔을 엽니 다.
에뮬레이터 콘솔에 연결하십시오.
telnet localhost 5555
(에뮬레이터가 실행중인 포트로 5555를 교체하십시오)
위치 데이터를 전송합니다. * 지리적 위치를 고정하여 위치를 고정합니다.
이 명령은 경도와 위도를 10 진수 각도로, 선택적 고도를 미터 단위로 허용합니다. 예를 들면 다음과 같습니다.
geo fix -121.45356 46.51119 4392
telnet을 통해 GPS 위치를 에뮬레이터로 푸시하는 Python 스크립트를 작성했습니다. 소스와 대상 위치를 정의합니다. 좌표가 장치에 얼마나 오랫동안 푸시 될지를 제어 할 수있는 시간 오프셋도 있습니다. 한 위치가 1 초에 한 번 밀리고 있습니다.
아래 예에서 스크립트는 120 초 안에 베를린에서 함부르크로 이동합니다. 임의의 거리로 초당 한 단계 / gps 위치.
#!/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()
Mac, Linux 또는 Cygwin에서 :
echo 'geo fix -99.133333 19.43333 2202' | nc localhost 5554
멕시코 시티에 당신을 넣을 것입니다. 경도 / 위도 / 고도를 적절히 변경하십시오. nmea에 관심이 없다면 충분합니다.
마지막으로 최신 릴리스의 Android Studio 4 및 그의 새로운 에뮬레이터 업데이트 10/23/2019가 더 쉬워졌습니다. 에뮬레이터를 시작하고 에뮬레이터 매개 변수로 이동합니다 ...> "경로"탭에서 맵에서 두 지점을 선택하고 1000km / h 이상으로 이동할 수있는 조정 가능한 재생 속도로 새로운 경로를 시작할 수 있습니다!
사용자 위치 얻기를 참조하십시오
모의 위치 데이터 제공 아래를 참조하십시오 . 이에 대한 해결책을 찾을 수 있습니다.
Alberto Gaona의 답변을 한 줄로 만드십시오.
token=$(cat ~/.emulator_console_auth_token); cat <(echo -e "auth $token \n geo fix 96.0290791 16.9041016 \n exit") - | nc localhost 5554
5554는에 표시된 에뮬레이터 포트 번호입니다 adb devices
.
adb emu
작동 하면 더 좋았을 것입니다.
에뮬레이터가 Google API없이 Android 이미지를 실행 중일 때 에뮬레이터에서 GPS 수정을 얻을 수 없었습니다. Google API를 포함하도록 이미지를 변경하자마자 여기에 언급 된 모든 방법으로 GPS 수정 작업을 수행 할 수 있습니다.
AVD를 만들 때 Google API로 이미지를 선택해야합니다.
쉘 명령 " geo fix ... " 를 사용하기 위해 이미 언급 된 여러 번 답변이 정답입니다. 그러나 LocationClient.getLastLocation () 을 사용 하여 데이터를 검색하는 경우 처음에는 작동하지 않는다는 것을 언급 할 가치가 있습니다. LocationClient 클래스는 Google Play 서비스를 사용하여 좌표를 검색합니다. 나에게 이것은 에뮬레이터 맵 앱을 한 번 실행 한 후에 작동하기 시작했습니다. 처음 시작하는 동안 Google 앱이 사용자 위치에 액세스하도록 허용하라는 메시지가 표시됩니다.
내 자신의 프로젝트를 위해 Android 에뮬레이터에 시뮬레이션 된 위치를 제공 할 수있는 온라인 서비스를 개발했습니다.
그것은 단지 위도 / 론뿐만 아니라 속도, 코스, 정확한 시간 등을 설정할 수 있도록 지오 픽스 대신 지오 nmea를 사용합니다.
이 서비스에는 nc (netcat) 명령 줄 유틸리티가 필요합니다.
현재 GPS 위치 등을 에뮬레이션 할 수있는 유연성을 제공하는 genymotion 과 같은 에뮬레이터를 사용할 수 있습니다 .
“Mock Location Plugin”이라는 Android Studio 용 플러그인이 있습니다. 이 플러그인으로 여러 포인트를 에뮬레이션 할 수 있습니다. Android Studio 링크에서 자세한 사용 설명서를 찾을 수 있습니다 . Mock Location Plugin으로 여러 GPS 포인트 시뮬레이션
일식에서 :
DDMS 창을 아래로 끌어 야 할 수도 있습니다. '위치 제어'는 '전화 작업'아래에 있으며 보통 크기의 콘솔보기에 의해 숨겨 질 수 있습니다 (콘솔, LogCat 등이있는 막대가이를 가리킬 수 있습니다).
~