java– 多久以前记录的最后一个已知位置?

java– 多久以前记录的最后一个已知位置?,第1张

概述我正在获取我最后一个已知位置,但不知道自我的位置上次更新以来已经有多长时间了.如何查看自上次更新位置以来已经过了多长时间?LocationManagerlocationManager=(LocationManager)getSystemService(LOCATION_SERVICE);Criteriac=newCriteria()

我正在获取我最后一个已知位置,但不知道自我的位置上次更新以来已经有多长时间了.如何查看自上次更新位置以来已经过了多长时间?

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();}

前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 – 多久以前记录的最后一个已知位置?全部内容,希望文章能够帮你解决java – 多久以前记录的最后一个已知位置?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1096773.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存