问题描述
我有一个应用程序,它通过FusedLocationProviderApi的getLastLocation()方法获取了用户的最新位置。
Location location = fusedLocationProviderApi.getLastLocation(apiclient);
但是,现在不推荐使用,所以我已经开始转移到FusedLocationProviderClient。
CountDownLatch locationLatch = new CountDownLatch(1);
atomicreference<Location> location = new atomicreference<>();
final Task<Location> locationTask = fusedLocationProviderClient.getLastLocation();
locationTask.addOnSuccessListener(location -> {
location.set(location);
locationLatch.countDown();
})
.addOnCompleteListener(value -> locationLatch.countDown())
.addOnCanceledListener(locationLatch::countDown)
.addOnFailureListener(e -> locationLatch.countDown());
try {
locationLatch.await(5,TimeUnit.SECONDS);
} catch (InterruptedException e) {
// Log here
}
虽然设置起来要容易得多,但它返回的是future,而不是直接返回值,并且future通常不会在合理的时间内返回-5秒超时非常频繁。通常,它似乎不如FusedLocationProviderApi可靠。
在严格的精度要求不严格的情况下,还有其他方法可以获取最近的位置吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)