Unable to simulate location data in Android emulator
我正在尝试测试我的应用程序,它使用地理定位使用模拟器。这里描述了几种方法。我要去
但它不起作用。相反,我看到以下错误:
为什么会这样?!?
我认为我的应用程序不是问题,因为我使用模拟器的默认浏览器进行了测试,但它也无法访问位置信息。
细节:
- OSX 10.9.4
- AVD_for_Nexus_4_by_Google定位到v4.4.2
- 适用于Android开发人员的Eclipse IDE 23.0.2.1259578
更新:
我改为
UPDATE2:
我已经测试过使用Telnet将位置数据传递给模拟器,并且没有任何反应。没有错误。根本不值一提。 Urgh!
1 2 | telnet localhost 5554 geo fix 50 50 |
它以
UPDATE3:
我注意到LogCat中存在以下错误的流
1 2 3 | 09-20 17:58:59.910: E/eglCodecCommon(1777): glUtilsParamSize: unknow param 0x00000b44 09-20 17:58:59.910: E/eglCodecCommon(1777): glUtilsParamSize: unknow param 0x00000bd0 09-20 17:58:59.930: E/eglCodecCommon(1777): **** ERROR unknown type 0x0 (glSizeof,72) |
该应用程序似乎运行正常,这些错误据说在这里解释。
更新4:
我已经看到多个建议来确认我的AVD已启用GPS支持,但此选项/设置不会出现在任何地方。当我打开"Android Virtual Device Manager"然后在我的某个设备上点击"编辑"时,这就是我所看到的:
没有提到"GPS支持"。
更新5:
我检查了config.ini文件中的所有AVD,它们都正确设置为
更新6:
以下是Gyebro的建议......试图加载他的LocationDemo应用程序...
这是我在LogCat中看到的内容:
要检查您的仿真器是否支持GPS,请转到
hw.gps = yes
编辑
您必须使用Google API系统映像。您应该将
编辑结束
假设是这样,并且在模拟器中启用了Location,请在模拟器中运行此测试应用程序:LocationTest演示,有关详细信息,请参阅有关检索当前位置的开发文档
此示例实现
启动应用程序后,您应该会在状态栏中看到"位置"图标。还要验证GP服务是否存在且LocationClient是否已连接到日志中。
1 2 | D/LocationTest﹕ Google Play services is available. D/LocationTest﹕ LocationClient: Connected |
使用telnet发送
1 | D/LocationTest﹕ Location changed! |
如果您仍然迷失在这种方法中,另一种模拟位置的方法是创建一个Mock Location Provider应用程序。
你真的应该使用GENYMOTION它提供了一个GPS功能,你可以在其中设置位置坐标,加上它比默认模拟器更快,并且几乎在每个操作系统中都能正常工作,下面是关于如何在该页面内应用GPS内容的Docus寻找" GPS小部件"。 祝好运。
从那个窗口射出一枪
你试过免费版的Genymotion吗?它可以作为通过USB连接的真实设备,并可以根据需要创建GPS位置。我知道这不是你的AVD问题的解决方案,但AVD通常是模拟器上Android测试的糟糕解决方案。
如果你想特别测试这个功能,它是免费的。
我尝试使用最新的SDK和adb工具,我发现Google地图和基于网络浏览器的位置(maps.google.com)存在同样的问题。我使用adb命令行以及telnet方法来设置位置。还验证了我的.avd文件有
我确实让谷歌地图应用程序使用模拟位置功能在Android模拟器上工作。您也可以在真实设备上使用模拟位置,我更喜欢它的性能。有关如何使用模拟位置的详细信息,请参阅此..下载具有LocationProvider项目的zip文件,可让您模拟不同的位置和移动方案。
所以你可以选择:
- 使用具有模拟位置功能的物理Android设备
- 如果您想使用模拟器,请尝试使用模拟位置
-
我也有genymotion的成功,你可以从genymotion附带的命令行
genyshell 设置你想要的任何位置genyshell.exe -c"gps setstatus enabled"
genyshell.exe -c"gps setlatitude 30.3077609"
genyshell.exe -c"gps setlongitude -97.7534014"
出于性能原因,设备是优选的。
更新:
我使用gyebro的LocationTest演示测试,当我使用telnet设置位置参数时,它可以工作。所以问题似乎是谷歌地图或浏览器,而不是模拟器或adb工具。
我遇到了同样的错误。 问题是AVD DDMS在其位置坐标中使用逗号而不是点。
使用LAT:-16,691534 LNG:-49,266185这样的东西,你会没事的!
确保您的AVD已将GPS支持硬件设置为true
创建新的AVD>硬件>新建> GPS支持
价值应该是"是"
此外,请确保您的应用以某种方式请求位置更新,否则模拟器将忽略来自DDMS或控制台的任何传入位置。
(要么)
我只是通过telnet使用android控制台,它始终有效。
只需打开命令行即可:
1 | telnet localhost 5554 |
5554是您的模拟器的端口号,通常是但可能会更改,它可以作为PORT:AVD_NAME位于模拟器的窗口框架上。
您应该收到Android控制台消息。
要将位置发送到您的设备,只需输入。
1 | geo fix [] |
两个有效的陈述是
1 2 | geo fix -77.036519 38.896143 geo fix -77.036519 38.896143 100 |
希望这有帮助,它不是DDMS,但它始终有效。你也可以用nmea句子喂它,但我不认为你需要它。