Genymotion 的定位请求位置太快
Posted
技术标签:
【中文标题】Genymotion 的定位请求位置太快【英文标题】:Genymotion's locationing requesting the locations too fast 【发布时间】:2015-05-19 19:09:56 【问题描述】:我用Fused location做了一个简单的定位服务,我用真实设备和Genymotion的安卓虚拟设备测试。
获取位置的 iterval 为 5 秒。
在真实设备上运行良好,间隔几乎正好是 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 的定位请求位置太快的主要内容,如果未能解决你的问题,请参考以下文章