我如何每隔几秒获取某人的位置?

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。没有充分的理由混搭。