android - 如何让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);
解决方案
推荐阅读
- java - 阵列适配器崩溃
- javascript - 带输入的 ReactJS 即时搜索
- python - Python 从正则表达式中替换第 n 个匹配项
- facebook-graph-api - Facebook 图形 API。如何删除视频?
- java - 如何在 UDF 中传递 Row?
- node.js - 使用 log4js 写入日志消息时添加动态值
- regex - 使用.htaccess 重定向正则表达式
- botframework - 在 bot builder v4 中下载 Skype bot 附件
- php - 履行响应 PHP webhook 未显示在 Actions on Google 中
- jquery - 在两个 angular.json 和带有 Angular 的模块中使用 jQuery