我如何每隔几秒就获得一个人的位置?

时间:2016-04-26 12:01:05

标签: android 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执行此操作,但我认为有更好的方法可以定期请求更新。

谁能告诉我怎么样?

1 个答案:

答案 0 :(得分:1)

这是你可以做到的最糟糕的方式。出于十几个原因,您几乎不应该使用getLastKnownLocation-并且获得持续更新绝对不是其中之一。而是使用LocationManager.requestLocationUpdates()。您为它提供了一个回调对象,它会在更新的位置可用时调用您。

此外,请使用LocationManager或Google Play融合位置。混合搭配是没有充分理由的。