gpt4 book ai didi

java - 最后一个已知位置是在多长时间前记录的?

转载 作者:太空狗 更新时间:2023-10-29 23:01:04 26 4
gpt4 key购买 nike

我正在获取我的最后一个已知位置,但不是自从我的位置上次更新以来已经过去了多长时间。我如何才能知道距离上次更新位置已经过去了多长时间?

LocationManager locationManager 
= (LocationManager) getSystemService(LOCATION_SERVICE);
Criteria c = new Criteria();
c.setAccuracy(Criteria.ACCURACY_FINE);
c.setAccuracy(Criteria.ACCURACY_COARSE);
c.setAltitudeRequired(false);
c.setBearingRequired(false);
c.setCostAllowed(true);
c.setPowerRequirement(Criteria.POWER_HIGH);
String provider = locationManager.getBestProvider(c, true);
Location location = locationManager.getLastKnownLocation(provider);

最佳答案

API 17 前后的最佳选择:

public int age_minutes(Location last) {
return age_ms(last) / (60*1000);
}

public long age_ms(Location last) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1)
return age_ms_api_17(last);
return age_ms_api_pre_17(last);
}

@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
private long age_ms_api_17(Location last) {
return (SystemClock.elapsedRealtimeNanos() - last
.getElapsedRealtimeNanos()) / 1000000;
}

private long age_ms_api_pre_17(Location last) {
return System.currentTimeMillis() - last.getTime();
}

pre 17 不是很准确,但应该足以测试位置是否很旧。

这个,我想,应该没问题:

if (age_minutes(lastLoc) < 5) {
// fix is under 5 mins old, we'll use it

} else {
// older than 5 mins, we'll ignore it and wait for new one

}

此逻辑的常见用例是当应用程序刚刚启动时,我们需要知道我们是否必须等待新位置,或者在等待新位置时可以暂时使用最新位置位置。

关于java - 最后一个已知位置是在多长时间前记录的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15308326/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com