无法在Android模拟器中模拟位置数据

我试图测试我的应用程序,该应用程序使用模拟器使用地理位置。 这里描述了几种方法。 我要去Window->Open Perspective->DDMS ,然后输入lat。 和长。 一个在Location Controls ,然后点击“发送”。

在这里输入图像描述

但它不起作用。 相反,我看到以下错误: Unable to send command to the emulator.

为什么会发生这种情况!?

我不认为我的应用程序是问题,因为我使用模拟器的默认浏览器进行了测试,并且它也无法访问位置信息。

细节:

  • OSX 10.9.4
  • AVD_for_Nexus_4_by_Google定位v4.4.2
  • 适用于Android开发人员的Eclipse IDE 23.0.2.1259578
  • 更新:我更改为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.inihardware-qemu.ini (如果存在):

    hw.gps =是

    编辑
    您必须使用Google API系统映像。 您应该将Google APIs - API Level 1#为目标

    编辑结束

    假设情况如此,并且您的模拟器中启用了位置,请在您的模拟器中运行此测试应用程序:LocationTest演示,详情请参阅Dev文档获取当前位置

    此示例实现了GooglePlayServicesClient.ConnectionCallbacksGooglePlayServicesClient.OnConnectionFailedListenerLocationListener 。 并且在与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从那个窗口射了一枪

    genymotino gps小部件


    我尝试过使用最新的SDK和adb工具,但我发现使用Google地图和基于Web浏览器的位置(maps.google.com)也存在同样的问题。 我使用adb命令行以及telnet方法来设置位置。 还验证了我的.avd文件有hw.gps=yes (默认设置)。 我甚至尝试使用较旧的Google API图像。 我确定也尝试了不同的准确度级别 - 仅设备,高精度等。我注意到很多图形渲染问题和logcat中的一些opengl错误消息,与您所看到的类似。

    我确实使用模拟位置功能让Google地图应用在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工具。 位置测试演示

    链接地址: http://www.djcxy.com/p/90639.html

    上一篇: Unable to simulate location data in Android emulator

    下一篇: Send location updates to IntentService