Genymotion 的定位请求位置太快

Posted

技术标签:

【中文标题】Genymotion 的定位请求位置太快【英文标题】:Genymotion's locationing requesting the locations too fast 【发布时间】:2015-05-19 19:09:56 【问题描述】:

我用Fused location做了一个简单的定位服务,我用真实设备Genymotion的安卓虚拟设备测试。

获取位置的 iterval5 秒。

真实设备上运行良好,间隔几乎正好是 5 秒, 检查日志:onLC 用于 OnLocationChanged

 03-17 11:59:27.115: I/Locationing_GpsService_Test(27147): onLC:Now!
 03-17 11:59:32.189: I/Locationing_GpsService_Test(27147): onLC:Now!
 03-17 11:59:37.259: I/Locationing_GpsService_Test(27147): onLC:Now!
 03-17 11:59:42.171: I/Locationing_GpsService_Test(27147): onLC:Now!
 03-17 11:59:47.215: I/Locationing_GpsService_Test(27147): onLC:Now!
 03-17 11:59:52.240: I/Locationing_GpsService_Test(27147): onLC:Now!

Genymotions 虚拟设备上,间隔大概是 1 秒:

03-17 12:10:20.280: I/Locationing_GpsService_Test(2616): onLC:Now!
03-17 12:10:21.270: I/Locationing_GpsService_Test(2616): onLC:Now!
03-17 12:10:22.269: I/Locationing_GpsService_Test(2616): onLC:Now!
03-17 12:10:23.271: I/Locationing_GpsService_Test(2616): onLC:Now!
03-17 12:10:24.273: I/Locationing_GpsService_Test(2616): onLC:Now!
03-17 12:10:25.273: I/Locationing_GpsService_Test(2616): onLC:Now!
03-17 12:10:26.275: I/Locationing_GpsService_Test(2616): onLC:Now!
03-17 12:10:27.273: I/Locationing_GpsService_Test(2616): onLC:Now!

初始化位置请求的代码:

    mLocationRequest = new LocationRequest();
    mLocationRequest.setInterval(5000);
    mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);

谁能帮我看看这里发生了什么?

【问题讨论】:

【参考方案1】:

您希望Fused location 可以在模拟器上运行? Fused location 就是融合移动/wifi/gps 信号 - 你是否期望 Genymotion 模拟移动/wifi/gps 以便它向 Fused location 输入一些有意义的数据?我不这么认为。

无论如何,如果您查看setInterval,您会看到:

您也可能比请求更快地收到它们(如果其他应用程序以更快的间隔请求位置)。

所以设置mLocationRequest.setInterval(5000);实际上并没有任何意义。

【讨论】:

“您希望 Fused 位置可以在模拟器上运行”是什么意思?它是一个模拟器,它至少应该模拟。我确实有位置,我也可以点击小地图来选择测试位置,问题不在于这个。【参考方案2】:

只需添加mLocationRequest.setFastestInterval(5000);就可以了,现在 Genymotion 的虚拟设备也要求每隔 5 秒更新一次位置。

【讨论】:

【参考方案3】:

Genymotion 立即获取位置信息,并将其传递给您的应用,因此无需等待,就像在真实设备上一样。它不会模拟(或模拟)寻找 GPS 卫星的过程,就像在真正的 GPS 传感器中一样,而且它使用您的 PC 互联网速度,而不是移动 GPRS 或公共 Wi-Fi,因此它也可以从中获取您的位置几乎立即。 ADB 模拟器也是如此。您应该使用真机来测试定位服务。

【讨论】:

以上是关于Genymotion 的定位请求位置太快的主要内容,如果未能解决你的问题,请参考以下文章

初识genymotion安装遇上的VirtualBox问题

为 Genymotion 模拟器提供虚假位置

Genymotion 上的 Google 位置

为 Genymotion 模拟器提供虚假位置

在表单发布之前执行地理定位 javascript

无法在 Genymotion VM 中获取位置