首页 > 解决方案 > 如何让android更新“实际”当前位置?

问题描述

在网上,你总能找到我的问题的答案,如下所示:

利用

FusedLocationProvider

但是在使用它之后,坦率地说,它可以工作并返回一个位置。但是 getElapsedRealtimeNanos() 返回一个大于零的值,有时甚至是大约 10 小时或更长时间。如文档所述,它返回此修复的时间,自系统启动以来经过的实时。所以该位置不是实际的当前位置,只是返回一个缓存的位置。

在我的真实测试中,它只返回过去几个小时内的位置。但是在我打开例如“Google Map”或“Waze”之后,FusedLocationProvider 可以正常工作并返回实际更新的位置。

所以我的问题是,谷歌地图或 waze 做了什么来强制 android 真正更新位置?

我的代码:

mFusedLocationClient
    .getLastLocation()
    .addOnCompleteListener(new OnCompleteListener<Location>() {
        @Override
        public void onComplete(@NonNull Task<Location> task) {
            if (task.isSuccessful() && task.getResult() != null) {
                mLocation = task.getResult();
                int time_before_seconds = (int)((SystemClock.elapsedRealtimeNanos()-loc.getElapsedRealtimeNanos())/1000000000);              
            }
        }
});
mFusedLocationClient.requestLocationUpdates(mLocationRequest, null);

标签: androidgeolocationlocationfusedlocationproviderclient

解决方案


推荐阅读