Android位置:获取第一个位置

时间:2014-12-22 06:01:36

标签: android gps locationmanager

我需要在获取第一个位置时计算一些东西(它不需要非常准确)。

我有一个LocationManager和一个LocationListener,到目前为止我有一个布尔firstTime,它最初为true,第一次调用onlocationChanged时我把它设置为false。但每次调用onlocationChanged方法(每5秒),我会检查firstTime是否为false。

这个解决方案并不能让我满意,是否有更好的方法来检查首次活动? (这个问题可能在更大的背景下,而不仅仅是GPS定位)。

我会提供一些代码以便更好地理解:

boolean firstLocation = true;
LocationManager locManager = (LocationManager) context
        .getSystemService(Context.LOCATION_SERVICE);

LocationListener locListener = new LocationListener() {

    @Override
    public void onLocationChanged(Location location) {
        if (firstLocation == true) {
            sights = getListForLocation(location, GPS_INITIAL_PERIMETER);
            firstLocation = false;
        }
        // do something everytime onLocationChanged is called

    }
};

/**
 * starts the listener for GPS-Positions
 */
public void start() {
    locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
            GPS_UPDATE_TIME, GPS_UPDATE_DISTANCE, locListener);
}

正如您所看到的,我只有在第一次获得新位置时才需要做某事。

1 个答案:

答案 0 :(得分:1)

使用null初始化您的位置并检查它:

if(lastKnownLocation == null)
{
    //first time
}

并在LocationListener上执行:

@Override
public void onLocationChanged(Location location) 
{
    lastKnownLocation = location;
}