无法在Android模拟器中模拟位置数据
我试图测试我的应用程序,该应用程序使用模拟器使用地理位置。 这里描述了几种方法。 我要去Window->Open Perspective->DDMS
,然后输入lat。 和长。 一个在Location Controls
,然后点击“发送”。
但它不起作用。 相反,我看到以下错误: Unable to send command to the emulator.
为什么会发生这种情况!?
我不认为我的应用程序是问题,因为我使用模拟器的默认浏览器进行了测试,并且它也无法访问位置信息。
细节:
更新:我更改为AVD_for_Galaxy_Nexus_by_Google
,但仍然无效,但我不再看到该错误。 我点击发送并没有任何反应。
Update2:我测试了使用Telnet将位置数据传递给模拟器,并且再次没有任何反应。 没有错误。 根本不值一提。 Urgh!
telnet localhost 5554
geo fix 50 50
它以OK
响应,但没有任何反应。 仍然没有可用的位置数据。
Update3:我注意到LogCat中有下列错误
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虚拟设备管理器”,然后在我的一台设备上点击“编辑”时,这就是我所看到的:
没有提到“GPS支持”。
更新5:我检查了我的所有hw.gps=yes
的config.ini文件,它们都正确设置为hw.gps=yes
。 我还使用Google API目标创建了AVD,但我仍然遇到同样的问题。 该应用程序加载,但没有位置数据可用,“位置控制”以及远程登录。
更新6:遵循以下Gyebro的建议...尝试加载他的LocationDemo应用程序...
以下是我在LogCat中看到的内容:
要检查您的模拟器是否支持GPS,请转至~/.android/avd/<emulatorname>.avd/
并检查它们应该包含的config.ini
和hardware-qemu.ini
(如果存在):
hw.gps =是
编辑
您必须使用Google API系统映像。 您应该将Google APIs - API Level 1#
为目标
编辑结束
假设情况如此,并且您的模拟器中启用了位置,请在您的模拟器中运行此测试应用程序:LocationTest演示,详情请参阅Dev文档获取当前位置
此示例实现了GooglePlayServicesClient.ConnectionCallbacks
, GooglePlayServicesClient.OnConnectionFailedListener
和LocationListener
。 并且在与LocationClient连接之前还会检查Google Play服务(这就是为什么我们需要Google模拟器图像的原因。)(请参阅MainActivity.java)
启动应用程序后,您应该在状态栏中看到位置图标。 还要验证GP服务是否存在并且LocationClient已连接到日志中。
D/LocationTest﹕ Google Play services is available.
D/LocationTest﹕ LocationClient: Connected
使用telnet(应该以OK
响应)或使用DDMS的其他有效坐标发送geo fix 66 80
后,应该看到:
D/LocationTest﹕ Location changed!
如果您仍然失去了这种方法,另一种模拟位置的方法是创建一个模拟位置提供程序应用程序。
你真的应该使用GENYMOTION,它提供了一个GPS功能,你可以在其中设置位置坐标,加上它比默认模拟器更快,并且在几乎每个操作系统中都能正常工作,继承了Docus如何在该页面内部应用GPS功能寻找“ GPS小部件“。 祝你好运。
Heres从那个窗口射了一枪
我尝试过使用最新的SDK和adb工具,但我发现使用Google地图和基于Web浏览器的位置(maps.google.com)也存在同样的问题。 我使用adb命令行以及telnet方法来设置位置。 还验证了我的.avd文件有hw.gps=yes
(默认设置)。 我甚至尝试使用较旧的Google API图像。 我确定也尝试了不同的准确度级别 - 仅设备,高精度等。我注意到很多图形渲染问题和logcat中的一些opengl错误消息,与您所看到的类似。
我确实使用模拟位置功能让Google地图应用在Android模拟器上工作。 您也可以在真实设备上使用模拟位置,我更喜欢它的性能。 有关如何使用模拟位置的详细信息,请参阅此..下载具有LocationProvider项目的zip文件,该文件可让您模拟不同的位置和移动场景。
所以你可以选择:
我也使用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工具。
链接地址: http://www.djcxy.com/p/90639.html