我想在Android模拟器中获得经度和纬度进行测试。
有谁能指导我如何实现这个目标吗?
如何将模拟器的位置设置为测试位置?
我想在Android模拟器中获得经度和纬度进行测试。
有谁能指导我如何实现这个目标吗?
如何将模拟器的位置设置为测试位置?
当前回答
如果您正在使用Eclipse,请转到窗口->打开透视图->DDMS,然后在位置控制中键入1并单击发送。
其他回答
我写了一个python脚本,通过telnet将gps位置推到模拟器。它定义了源位置和目标位置。还有一个时间偏移,它可以让你控制坐标将被推送到设备的时间。一个位置每秒推送一次。
在下面的例子中,脚本在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()
打开Android studio->工具菜单->Android-> Android设备监视器->模拟器选项卡->位置控制->设置所需的纬度和经度,并根据需要检查项目
在模拟中选择扩展控件。之后,您可以通过搜索或拖动映射到要设置的位置来设置模拟的位置。
最后点击SET LOCATION按钮保存。
您可以通过Telnet连接到模拟器。然后你有一个模拟器控制台,允许你输入特定的数据,如地理定位,网络等。
如何使用控制台在这里有详细的解释。 要连接到控制台,打开命令行并键入
telnet localhost 5554
然后,您可以使用geo命令在设备上设置纬度、经度以及(如果需要的话)海拔高度,该设备将通过gps位置提供程序传递给所有程序。请参阅上面的链接以获得进一步的说明。
要在控制台中运行的特定命令为
geo fix <longitude value> <latitude value>
我发现这个网站对于找到一个现实的纬度/lng很有用:http://itouchmap.com/latlong.html
如果您需要多个坐标,您也可以使用带有路由的kml文件,本文对此进行了一些描述。我现在找不到更好的消息来源了。
如果你使用Android Studio (1.3):
点击菜单“工具” “Android” “Android设备监视器” 单击当前模拟器 选项卡“模拟器控制” 进入“位置控制”,输入纬度和高度