我需要在获取第一个位置时计算一些东西(它不需要非常准确)。
我有一个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);
}
正如您所看到的,我只有在第一次获得新位置时才需要做某事。
答案 0 :(得分:1)
使用null初始化您的位置并检查它:
if(lastKnownLocation == null)
{
//first time
}
并在LocationListener上执行:
@Override
public void onLocationChanged(Location location)
{
lastKnownLocation = location;
}