【发布时间】:2016-09-20 14:15:02
【问题描述】:
在我们的应用中,我们使用 Fused Location Provider (FLP) 来跟踪位置。我们注意到,有时应用程序可能会进入位置回调停止调用的状态。有问题的应用程序主要用于两台平板电脑(nexus 7 和 LG G-pad 8.3)。我们已经看到两个设备上都出现了这个问题。一般来说,重置设备似乎可以缓解这个问题。我们相信我们遵循大多数使用 FLP 的最佳实践。但是以防万一我们将这个示例代码放在一起,以说明我们如何使用 FLP。
获取google api客户端并调用connect:
m_googleApiClient = builder
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API)
.build();
m_googleApiClient.connect()
连接后,我们开始监听位置回调:
@Override
public void onConnected(Bundle bundle) {
m_fusedLocationProviderApi.requestLocationUpdates(m_googleApiClient, m_locationRequest, this);
}
位置请求如下所示:
LocationRequest locationRequest = LocationRequest.create();
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
locationRequest.setInterval(UPDATE_INTERVAL_IN_MILLISECONDS);
locationRequest.setFastestInterval(FASTEST_UPDATE_INTERVAL_IN_MILLISECONDS);
然后我们像这样实现回调:
@Override
public void onLocationChanged(Location location) {
// set location member var and record timestamp.
}
当问题发生时,我们似乎没有收到任何错误回调。当我们检测到我们很长时间没有收到 GPS 时,我们还尝试在 google api 客户端上调用 reset()。我们还每 2 秒使用一个计时器监控位置可用性(使用 getLocationAvailability)。通常,我们发现让用户重置他们的设备(开机、关机)可以解决问题。
我们的问题是:
- 还有其他人注意到 FLP 的这个问题吗?
- 除了重置用户之外,我们还能做些什么来解决这个问题?删除添加位置更新有帮助吗?
- 我们可以/应该收集更多信息来诊断问题吗?
【问题讨论】:
-
我遇到了同样的问题。您使用的是什么版本的 Google Play 服务,以及设备上的操作系统版本,我想知道这是否会有所不同?
-
我最近开始使用 9.2.1,但还没有发现问题(手指交叉)。
-
我最近遇到了完全相同的问题。自从升级您的 Google Play 服务版本后,您是否遇到过这个问题。谢谢。
-
是的,升级后我们再也没有见过它。虽然我不再从事这个项目,但据我所知,它可能会再次发生。
标签: android gps google-play-services location-services fusedlocationproviderapi