我正在尝试创建一个简单的应用程序,围绕跟踪某人的速度。我已经阅读了Android Studio的位置指南,但它没有显示如何获得某人的速度,或者以均匀的间隔获得某个人的位置。
目前,我已经设置了这段代码:
if (OldLocation != null) {
OldLocation = NewLocation;
NewLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
} else {
OldLocation = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
try {Thread.sleep(1000);} catch (InterruptedException ex) {
Thread.currentThread().interrupt();
}
NewLocation = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
}
float distance = OldLocation.distanceTo(NewLocation);
float speed = distance / 1000;
我目前正在使用Thread.sleep执行此操作,但我认为有更好的方法可以定期请求更新。
谁能告诉我怎么样?
答案 0 :(得分:1)
这是你可以做到的最糟糕的方式。出于十几个原因,您几乎不应该使用getLastKnownLocation-并且获得持续更新绝对不是其中之一。而是使用LocationManager.requestLocationUpdates()。您为它提供了一个回调对象,它会在更新的位置可用时调用您。
此外,请使用LocationManager或Google Play融合位置。混合搭配是没有充分理由的。