ฉันต้องการรับลองจิจูดและละติจูดในโปรแกรมจำลอง Android สำหรับการทดสอบ
คนใดคนหนึ่งสามารถแนะนำฉันถึงวิธีการบรรลุเป้าหมายนี้
ฉันจะตั้งค่าตำแหน่งของตัวจำลองเป็นตำแหน่งทดสอบได้อย่างไร
ฉันต้องการรับลองจิจูดและละติจูดในโปรแกรมจำลอง Android สำหรับการทดสอบ
คนใดคนหนึ่งสามารถแนะนำฉันถึงวิธีการบรรลุเป้าหมายนี้
ฉันจะตั้งค่าตำแหน่งของตัวจำลองเป็นตำแหน่งทดสอบได้อย่างไร
คำตอบ:
คุณสามารถเชื่อมต่อกับ Emulator ผ่าน Telnet จากนั้นคุณมีคอนโซล Emulator ที่ให้คุณป้อนข้อมูลบางอย่างเช่นการแก้ไขทางภูมิศาสตร์เครือข่าย ฯลฯ
วิธีการใช้คอนโซลจะมีการอธิบายอย่างกว้างขวางที่นี่ เพื่อเชื่อมต่อกับคอนโซลเปิดบรรทัดคำสั่งและพิมพ์
telnet localhost 5554
จากนั้นคุณสามารถใช้คำสั่ง geo เพื่อตั้งค่าละติจูดลองจิจูดและหากจำเป็นต้องใช้ระดับความสูงบนอุปกรณ์ที่ส่งผ่านไปยังโปรแกรมทั้งหมดโดยใช้ผู้ให้บริการตำแหน่งจีพีเอส ดูลิงค์ด้านบนสำหรับคำแนะนำเพิ่มเติม
คำสั่งเฉพาะเพื่อเรียกใช้ในคอนโซลคือ
geo fix <longitude value> <latitude value>
ฉันพบว่าไซต์นี้มีประโยชน์สำหรับการค้นหา lat / lng ที่เหมือนจริง: http://itouchmap.com/latlong.html
หากคุณต้องการมากกว่าหนึ่งพิกัดคุณสามารถใช้ไฟล์ kml พร้อมเส้นทางเช่นเดียวกับที่อธิบายไว้ในบทความนี้เล็กน้อย ฉันไม่สามารถหาแหล่งที่ดีกว่าในขณะนี้
geo fix
คำสั่งจะใช้ได้เฉพาะถ้าคุณauth
เป็นครั้งแรก อาจจะมีมูลค่าการกล่าวขวัญ ...
ไม่มีใครพูดถึงวิธีแก้ปัญหาของอีมูเลเตอร์ในตัวดังนั้นสำหรับผู้เยี่ยมชมในอนาคตฉันต้องการแชร์ด้วยภาพ
ก่อนอื่นให้รัน Android Emulator ของคุณและคลิกที่ปุ่มเมนู (3 จุด) ที่แสดงด้านล่าง:
จากบานหน้าต่างด้านซ้ายเลือกตำแหน่งและเปลี่ยนพิกัดตามความต้องการของคุณ หลังจากกดปุ่มส่งการเปลี่ยนแปลงจะมีผลทันที (ฉันขอแนะนำให้คุณเปิด Google Maps เพื่อความเข้าใจที่ดีขึ้น)
เวอร์ชั่น Android Studio: 2.3.3
นอกจากนี้หากต้องการให้สถานที่ต่าง ๆ ของคุณมาที่แอปพลิเคชันของคุณแบบเรียลไทม์คุณสามารถใช้ไฟล์ GPX มันง่ายมากที่จะสร้างไฟล์นี้จากลิงค์ทิศทางของ Google Map:
ใช้ปุ่ม "โหลด GPS / KML" เพื่อโหลดไฟล์ที่สร้างไปยังโปรแกรมจำลองของคุณเลือกความเร็วและกดปุ่มเล่นสีเขียวที่ด้านล่าง สถานที่จะถูกส่งตามเวลาจริงตามที่แสดงในภาพด้านล่าง
ฉันกำลังมองหาวิธีที่ดีกว่าในการตั้งค่าพิกัด GPS ของอีมูเลเตอร์มากกว่าการใช้geo fix
และการกำหนดพิกัดละติจูดและลองจิจูดเฉพาะด้วยตนเอง
ไม่พบสิ่งใดฉันได้รวบรวมโปรแกรมเล็ก ๆ ที่ใช้ GWT และ Google Maps API เพื่อเปิดเครื่องมือแผนที่บนเบราว์เซอร์เพื่อตั้งค่าตำแหน่ง GPS ในตัวจำลอง:
หวังว่ามันจะเป็นประโยชน์ในการช่วยเหลือผู้อื่นที่จะต้องเจอกับความยากลำบาก / คำถามนี้เช่นกัน
ConnectionRefused
ข้อความนั้นถ้าฉันเรียกใช้ตัวจำลอง GPS ก่อนเริ่มอุปกรณ์เสมือน Android ที่ด้านบนของเบราว์เซอร์ของฉันมันยังบอกว่า "เกิดข้อผิดพลาดในการเชื่อมต่อกับพอร์ต 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 = (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. ผู้ใช้ Android Studio
หลังจากใช้ emulator goto Tools-> Android-> มอนิเตอร์อุปกรณ์ Android
คลิกที่แท็บ Emulator Control เปลี่ยนจากกลุ่มตัวควบคุมตำแหน่ง
2. ผู้ใช้ Eclipse
First In Eclipse ในเมนูเลือก "Window" จากนั้นเลือก "Open Perspective" จากนั้นเลือก "DDMS" เช่น Window-> Open Prespective-> DDMS
คุณจะเห็นบนแผงอุปกรณ์ด้านซ้ายและด้านขวาคุณจะเห็นแท็บต่าง ๆ เลือกแถบ "Emulator Control"
ที่ด้านล่างคุณจะเห็นแผงควบคุมตำแหน่ง เลือกแท็บ "กำหนดเอง"
ป้อนลองจิจูดและละติจูดในเท็กซ์บ็อกซ์จากนั้นคลิกปุ่มส่ง มันจะส่งตำแหน่งให้คุณจำลองและการประยุกต์ใช้
3. การใช้ telnet
ในคำสั่งเรียกใช้พิมพ์สิ่งนี้
telnet localhost 5554
หากคุณไม่ได้ใช้ windows คุณสามารถใช้ไคลเอ็นต์ telnet
หลังจากเชื่อมต่อกับ telnet แล้วให้ใช้คำสั่งต่อไปนี้เพื่อส่งตำแหน่งของคุณไปยังโปรแกรมจำลอง
geo fix long lat
geo fix -121.45356 46.51119 4392
4. ใช้เครื่องมือ Google Maps ตามเบราว์เซอร์
มีโปรแกรมที่ใช้ GWT และ Google Maps API เพื่อเปิดเครื่องมือแผนที่บนเบราว์เซอร์เพื่อตั้งค่าตำแหน่ง GPS ในตัวจำลอง:
การใช้คำสั่ง "geo" ในคอนโซลอีมูเลเตอร์
ในการส่งข้อมูลตำแหน่งจำลองจากบรรทัดคำสั่ง:
เปิดแอปพลิเคชันของคุณในตัวจำลอง Android และเปิดเทอร์มินัล / คอนโซลในไดเรกทอรี / เครื่องมือของ SDK
เชื่อมต่อกับคอนโซลจำลอง:
telnet localhost 5555
(แทนที่ 5555 ด้วยพอร์ตอะไรก็ตามที่อีมูเลเตอร์ของคุณกำลังทำงานอยู่)
ส่งข้อมูลตำแหน่ง: * แก้ไขทางภูมิศาสตร์เพื่อส่งตำแหน่งทางภูมิศาสตร์ที่แน่นอน
คำสั่งนี้ยอมรับลองจิจูดและละติจูดเป็นองศาทศนิยมและเลือกระดับความสูงเป็นเมตร ตัวอย่างเช่น:
geo fix -121.45356 46.51119 4392
ฉันเขียนสคริปต์ไพ ธ อนเพื่อดันตำแหน่ง gps ไปยังตัวจำลองผ่าน telnet มันกำหนดแหล่งที่มาและสถานที่ปลายทาง นอกจากนี้ยังมีการชดเชยเวลาซึ่งช่วยให้คุณควบคุมระยะเวลาที่จะถูกผลักไปยังอุปกรณ์ สถานที่แห่งหนึ่งผลักผึ้งขึ้นหนึ่งครั้งต่อวินาที
ในตัวอย่างด้านล่างสคริปต์ย้ายจากเบอร์ลินไปฮัมบูร์กใน 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()
ฉันใช้ฟังก์ชัน DDMS ของ eclipse plug เพื่อส่ง GPS
ใน Linux ที่พอร์ตการสื่อสารถูกบล็อก นำทางเทอร์มินัลไปยังโฟลเดอร์เครื่องมือแพลตฟอร์มด้านในandroid sdk
และใช้คำสั่งนี้:
./adb -s #{device_name} emu geo fix #{longitude} #{latitude}
ใน Mac, Linux หรือ Cygwin:
echo 'geo fix -99.133333 19.43333 2202' | nc localhost 5554
นั่นจะทำให้คุณอยู่ในเม็กซิโกซิตี้ เปลี่ยนลองจิจูด / ละติจูด / ความสูงของคุณตามนั้น นั่นควรจะเพียงพอถ้าคุณไม่สนใจ nmea
วิธีแก้ปัญหาต่อไปนี้ใช้งานได้สำหรับฉัน - command line open และ write:
adb emu geo fix [longtitude] [latitude]
ในที่สุดด้วยการเปิดตัวล่าสุดของ Android Studio 4 และ Emulator อัปเดตใหม่ของเขาในวันที่ 23/23/2019 มันจะง่ายขึ้น เริ่มโปรแกรมจำลองของคุณและไปที่พารามิเตอร์ตัวจำลอง ... > ในแท็บ "เส้นทาง" คุณสามารถเลือกจุดสองจุดบนแผนที่จาก / ถึงและเริ่มเส้นทางใหม่ด้วยความเร็วในการเล่นที่ปรับได้ซึ่งสามารถไปได้มากกว่า 1000km / h!
อันดับแรกไปในส่วน DDMS ใน eclipse ของคุณมากกว่า open emulator Control .... ไปที่ส่วน Manual ตั้ง lat และ long แล้วกดปุ่ม Send
ฉันกำลังพยายามตั้งค่าการแก้ไขทางภูมิศาสตร์ผ่าน adb หลาย ๆ จุดและไม่สามารถทำให้แอปของฉันดูข้อมูล GPS ได้ แต่เมื่อฉันลองเปิด DDMS ให้เลือกกระบวนการของแอพและส่งพิกัดผ่านแท็บการควบคุมอีมูเลเตอร์มันทำงานได้ทันที
Dalvik Debug Monitor> เลือก Emulator> แท็บ Emulator Control> การควบคุมตำแหน่ง
DDMS - android_sdk / tools / ddms หรือ android_sdk / tools / monitor
หากคุณกำลังใช้ eclipse ให้ใช้ตัวควบคุม Emulator คุณสามารถตั้งค่าละติจูดและลองจิจูดด้วยตนเองและเรียกใช้แอพที่ใช้แผนที่เป็นตัวจำลอง
หากคุณใช้ Android Studio (1.3):
เพียงแค่ให้คำตอบของ 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
ทำงาน
หากการแก้ปัญหาข้างต้นไม่ทำงาน ลองสิ่งนี้:
ใน Android Manifest.xml ของคุณให้เพิ่มลิงค์สองลิงค์ต่อไปนี้ด้านนอกของแท็กแอปพลิเคชัน แต่ภายในแท็ก Manifest
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" ></uses-permission>
<uses-permission android:name="android.permission.INTERNET" ></uses-permission>
ฉันไม่สามารถรับ GPS fix บนตัวจำลองเมื่อตัวจำลองกำลังเรียกใช้รูปภาพ Android โดยไม่ต้องใช้ Google API ทันทีที่ฉันเปลี่ยนภาพให้มี Google APIs วิธีการที่กล่าวถึงทั้งหมดในที่นี้เพื่อให้ GPS ทำงานได้
ตรวจสอบให้แน่ใจว่าคุณเลือกรูปภาพด้วย Google API เมื่อสร้าง AVD
คำตอบที่กล่าวถึงแล้วหลายครั้งเพื่อใช้คำสั่งเชลล์ " geo fix ... " เป็นคำตอบที่ถูกต้อง แต่ในกรณีที่คุณใช้LocationClient.getLastLocation ()เพื่อดึงข้อมูลของคุณมันมีค่าที่จะกล่าวถึงว่ามันจะไม่ทำงานในตอนแรก คลาส LocationClient ใช้บริการ Google Play เพื่อดึงข้อมูลพิกัด สำหรับฉันแล้วสิ่งนี้เริ่มทำงานหลังจากรันแอพอีมูเลเตอร์แม็พหนึ่งครั้ง ในระหว่างการเริ่มต้นครั้งแรกคุณจะถูกขอให้อนุญาตให้แอป Google เข้าถึงตำแหน่งของคุณซึ่งฉันเดาว่าจะเป็นการหลอกลวง
สำหรับโครงการของฉันเองฉันได้พัฒนาบริการออนไลน์ซึ่งสามารถให้ตำแหน่งจำลองแก่อุปกรณ์จำลอง Android
มันใช้ geo nmea มากกว่า geo fix ซึ่งทำให้มันสามารถตั้งค่าความเร็ว, หลักสูตร, เวลาที่แม่นยำและอื่น ๆ นอกเหนือจาก lat / lon
บริการต้องการยูทิลิตีบรรทัดคำสั่ง nc (netcat) และไม่มีอะไรอื่น
คุณสามารถใช้โปรแกรมจำลองเช่นจีโนมซึ่งให้ความยืดหยุ่นในการจำลองตำแหน่ง GPS ปัจจุบันของคุณ ฯลฯ
มีปลั๊กอินสำหรับ Android Studio ชื่อ“ Mock Location Plugin” คุณสามารถจำลองหลายจุดด้วยปลั๊กอินนี้ คุณสามารถดูคู่มือการใช้งานโดยละเอียดได้ในลิงค์นี้: Android Studio จำลองจุด GPS หลายจุดด้วยปลั๊กอินตำแหน่งจำลอง
เปิด Android studio-> เมนูเครื่องมือ -> Android-> Android Device Monitor-> Emulator Tab-> Location control-> ตั้งค่าละติจูดและลองจิจูดที่คุณต้องการและตรวจสอบโครงการของคุณตามความต้องการของคุณ
ในคราส:
คุณอาจต้องลากหน้าต่าง DDMS ลง 'การควบคุมตำแหน่ง' อยู่ภายใต้ 'การดำเนินการของโทรศัพท์' และอาจซ่อนอยู่ในมุมมองคอนโซลขนาดปกติ (แถบที่มีคอนโซล, LogCat และอื่น ๆ อาจครอบคลุมได้!)
~