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

标签 android eclipse android-emulator geolocation avd

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

enter image description here

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

为什么会这样!?

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

详细信息:

  • 操作系统 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,它仍然不起作用,但我不再看到该错误。我点击发送但没有任何反应。

更新 2: 我测试过使用 Telnet 将位置数据传递给模拟器,但还是没有任何反应。没有错误。根本不值一提。呃!

telnet localhost 5554
geo fix 50 50

它以 OK 响应,但没有任何反应。仍然没有可用的位置数据。

更新 3: 我注意到 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)

应用程序似乎运行良好,这些错误应该得到解释 here .

更新 4: 我已经看到多个建议来确认我的 AVD 启用了 GPS 支持,但是这个选项/设置没有出现在任何地方。当我打开“Android 虚拟设备管理器”,然后在我的其中一台设备上单击“编辑”时,这就是我所看到的: enter image description here

没有提到“GPS 支持”。

更新 5: 我检查了我所有 AVD 的 config.ini 文件,它们都正确设置为 hw.gps=yes。我还使用 Google API 目标创建了一个 AVD,但我仍然遇到同样的问题。该应用程序加载但没有可用的位置数据,具有“位置控制”和远程登录。

更新 6: 按照下面 Gyebro 的建议...尝试加载他的 LocationDemo 应用程序... enter image description here

这是我在 LogCat 中看到的内容:

最佳答案

要检查您的模拟器是否支持 GPS,请转至 ~/.android/avd/<emulatorname>.avd/并检查 config.inihardware-qemu.ini (如果存在)它们应该包含:

hw.gps = yes

编辑
您必须使用 Google API 系统镜像。你应该设置 Google APIs - API Level 1#作为目标

编辑结束

假设是这样,并且在您的模拟器中启用了 Location,请在您的模拟器中运行此测试应用程序:LocationTest demo , 有关详细信息,请参阅 Dev docs on Retrieving the Current Location

此示例实现了 GooglePlayServicesClient.ConnectionCallbacks , GooglePlayServicesClient.OnConnectionFailedListenerLocationListener .并且在与 LocationClient 连接之前检查 Google Play 服务(这就是我们需要 Google 模拟器图像的原因。)(参见 MainActivity.java)

启动应用程序后,您应该会在状态栏中看到“位置”图标。还要验证 GP 服务是否存在并且 LocationClient 在日志中已连接。

 D/LocationTest﹕ Google Play services is available.
 D/LocationTest﹕ LocationClient: Connected

发送后geo fix 66 80使用 telnet(应以 OK 响应)或使用 DDMS 的其他有效坐标,您应该看到:

 D/LocationTest﹕ Location changed!

如果您仍然对这种方法感到困惑,另一种模拟位置的方法是 create a Mock Location Provider app .

关于android - 无法在Android模拟器中模拟位置数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25953054/

相关文章:

android - 如何在 ListView 中使用 DataBinding?

java - 不幸的是,解析应用程序已停止在后台连续工作

具有不同模块的Android项目(sharedPreferences)

java - 从 Eclipse 的 CompilationUnit 生成字节码

java - Eclipse: 正在调试...然后似乎停在了一个while循环中,没有调试以下代码,为什么?

android - 我的模拟器无法解锁

java - SwipeyTabsSampleActivity 如何没有生成编译错误?

java - 查找 Java 程序的实际运行时调用树

windows - 使用android模拟器后windows 10蓝屏

Android - 在 ImageView 周围设置边框