UMA*_*MAR 427 testing android geolocation android-emulator
我想在Android模拟器中获得经度和纬度以进行测试.
任何人都可以指导我如何实现这一目标吗?
如何将仿真器的位置设置为测试位置?
Jan*_*usz 434
您可以通过Telnet连接到仿真器.然后,您有一个模拟器控制台,可以输入某些数据,如地理定位,网络等.
这里有广泛的解释如何使用控制台.要连接到控制台,请打开命令行并键入
telnet localhost 5554
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用geo命令在使用gps位置提供程序传递给所有程序的设备上设置纬度,经度和所需高度.有关详细说明,请参阅上面的链接.
在控制台中运行的特定命令是
geo fix <longitude value> <latitude value>
Run Code Online (Sandbox Code Playgroud)
我发现这个网站对于找到一个真实的lat/lng非常有用:http://itouchmap.com/latlong.html
如果您需要多个坐标,则可以使用带路径的kml文件,本文稍介绍一下.我目前找不到更好的消息来源.
dpd*_*ing 106
我正在寻找一种更好的方法来设置模拟器的GPS坐标,而不是使用geo fix
和手动确定特定的纬度和经度坐标.
无法找到任何内容,我整理了一个使用GWT和Google Maps API的小程序来启动基于浏览器的地图工具来设置模拟器中的GPS位置:
希望它可以用来帮助那些毫无疑问会偶然遇到这个困难/问题的人.
ede*_*den 95
这里没有人提到模拟器本身的内置解决方案,因此对于未来的访问者,我想与视觉分享.
首先,运行Android Emulator并单击下面显示的菜单按钮(3个点):
然后从左侧窗格中选择" 位置"并根据需要更改坐标.按下发送按钮后,更改将立即生效(我建议您打开谷歌地图以便更好地理解).
Android Studio版本:2.3.3
Ste*_*Cav 80
如果您正在使用Eclipse
,请转到Window->Open Perspective->DDMS
,然后输入一个Location Controls
并点击Send
.
ofe*_*fer 32
对于Android Studio用户:
运行模拟器,
然后,去 Tools -> Android ->Android device monitor
打开Emulator Control
选项卡,然后使用位置控件组.
Tim*_*Tim 23
对不起《NecroPost》。有些答案对我的具体问题没有帮助。例如,我将位置设置为阿拉斯加。但是,我的设备仍然显示位于加利福尼亚州山景城(Google 总部)?所以这是我修复的方法:
1)进入位置设置:
2) 设置您的测试位置。我选择了阿拉斯加。
3)谷歌“我的当前位置”并点击图中圈出的地图。 请注意,即使我将位置设置为阿拉斯加,我的虚拟设备仍然认为它位于加利福尼亚州山景城。
4) 单击此位置图标 您的位置现在应该在您的设备上更新。您可以再次通过谷歌搜索“我的当前位置”进行验证。
如果有人遇到同样的问题,我希望我的解决方案对您有所帮助。
Dav*_*und 13
假设您已经设置并运行了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();
}
});
Run Code Online (Sandbox Code Playgroud)
您需要在清单中获得以下权限:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
Run Code Online (Sandbox Code Playgroud)
要从Eclipse向模拟器发送模拟坐标,请转到"窗口"菜单,选择"显示视图">"其他">"模拟器控件",然后您可以从出现的模拟器控制面板发送坐标.
Muh*_*ria 13
1. Android Studio用户.
运行模拟器后转到Tools-> Android-> Android设备监视器
单击位置控件组中的"模拟器控制"选项卡更改.
2. Eclipse用户.
Eclipse In Eclipse In菜单选择"Window",然后选择"Open Perspective",然后选择"DDMS".即Window-> Open Prespective-> DDMS.
您将在左侧设备面板和右侧看到您将看到不同的选项卡.选择"仿真器控制"选项卡.
在底部,您将看到位置控制面板.选择"手动"选项卡.
在文本框中输入经度和纬度,然后单击发送按钮.它会将位置发送给您的模拟器和应用程序.
3.使用telnet.
在run命令中输入this.
telnet localhost 5554
Run Code Online (Sandbox Code Playgroud)
如果您不使用Windows,则可以使用任何telnet客户端.
使用telnet连接后,使用以下命令将您的位置发送到模拟器.
geo fix long lat
geo fix -121.45356 46.51119 4392
Run Code Online (Sandbox Code Playgroud)
4.使用基于浏览器的Google地图工具
有一个程序使用GWT和Google Maps API启动基于浏览器的地图工具来设置模拟器中的GPS位置:
f.k*_*sis 13
对于新的模拟器:
http://developer.android.com/tools/devices/emulator.html#extended
基本上,单击模拟器控件中的三个点按钮(模拟器右侧),它将打开一个菜单,允许您控制模拟器,包括位置
Smi*_*ife 12
最后,随着最新版本的 Android Studio 4 和他的新模拟器更新 10/23/2019,它变得更容易了。启动您的模拟器并转到模拟器参数... > 在“路线”选项卡中,您可以选择地图上的两个点从/到并开始一条具有可调节播放速度的新路线,播放速度可以超过 1000 公里/小时!
小智 10
在模拟器控制台中使用"geo"命令
要从命令行发送模拟位置数据:
在Android模拟器中启动您的应用程序,并在SDK的/ tools目录中打开终端/控制台.
连接到模拟器控制台:
telnet localhost 5555
(将5555替换为运行模拟器的任何端口)
发送位置数据:*geo fix以发送固定的地理位置.
此命令接受十进制度的经度和纬度,以及米的可选高度.例如:
geo fix -121.45356 46.51119 4392
Run Code Online (Sandbox Code Playgroud)我编写了一个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()
Run Code Online (Sandbox Code Playgroud)
小智 5
在Linux中,通信端口被阻止.将终端导航到platform-tools文件夹android sdk
并激活此命令:
./adb -s #{device_name} emu geo fix #{longitude} #{latitude}
Run Code Online (Sandbox Code Playgroud)
在Mac,Linux或Cygwin中:
echo 'geo fix -99.133333 19.43333 2202' | nc localhost 5554
Run Code Online (Sandbox Code Playgroud)
这将把你带到墨西哥城.相应地更改您的经度/纬度/高度.如果你对nmea不感兴趣,那就足够了.
以下解决方案为我工作-打开命令行并编写:
adb emu geo fix [longtitude] [latitude]
Run Code Online (Sandbox Code Playgroud)