FusedLocationProviderClient getLastLocation是否比FusedLocationProviderApi可靠?

问题描述

我有一个应用程序,它通过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 (将#修改为@)