我如何每隔几秒获取某人的位置?
How do I get someone's location every few seconds?
我正在尝试制作一个围绕跟踪某人速度的简单应用程序。我已通读 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 来执行此操作,但我认为定期请求更新会有更好的方法。
谁能告诉我怎么做?
这是最糟糕的方式。出于十几个原因,您几乎不应该使用 getLastKnownLocation- 获取持续更新绝对不是这样做的地方之一。相反,请使用 LocationManager.requestLocationUpdates()。您为它提供一个回调对象,它会在有可用的更新位置时调用您。
此外,使用 LocationManager 或 Google Play Fused Location。没有充分的理由混搭。
我正在尝试制作一个围绕跟踪某人速度的简单应用程序。我已通读 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 来执行此操作,但我认为定期请求更新会有更好的方法。
谁能告诉我怎么做?
这是最糟糕的方式。出于十几个原因,您几乎不应该使用 getLastKnownLocation- 获取持续更新绝对不是这样做的地方之一。相反,请使用 LocationManager.requestLocationUpdates()。您为它提供一个回调对象,它会在有可用的更新位置时调用您。
此外,使用 LocationManager 或 Google Play Fused Location。没有充分的理由混搭。