Genymotion定位请求位置太快

时间:2015-03-17 11:15:15

标签: android genymotion genymotion-gps android-fusedlocation

我使用Fused location创建了一个简单的位置服务,我使用真实设备 Genymotion&#39> Android虚拟设备进行测试。

获取位置的 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);

有人可以帮我解决这里发生的事吗?

3 个答案:

答案 0 :(得分:1)

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

无论如何,如果你看setInterval,你会看到:

  

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

因此设置mLocationRequest.setInterval(5000);实际上并不意味着什么。

答案 1 :(得分:1)

只需添加mLocationRequest.setFastestInterval(5000);即可,现在Genymotion的虚拟设备也会在5秒的时间间隔内请求位置更新。

答案 2 :(得分:1)

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