我使用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);
有人可以帮我解决这里发生的事吗?
答案 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仿真器也是如此。您应该使用真实设备来测试位置服务。