
我正在获取我最后一个已知位置,但不知道自我的位置上次更新以来已经有多长时间了.如何查看自上次更新位置以来已经过了多长时间?
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 – 多久以前记录的最后一个已知位置?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)