【发布时间】:2013-08-20 20:41:21
【问题描述】:
我在申请中遇到了关于纬度和经度的问题。 我的代码如下:-
LocationManager locationManager = (LocationManager)
getSystemService(LOCATION_SERVICE);
LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
Toast.makeText(
CheckInSOSMessageService.this,
"Location has been Changed now.....................", 0)
.show();
isLocationChanged=true;
}
public void onStatusChanged(String provider, int status,
Bundle extras) {
}
public void onProviderEnabled(String provider) {
}
public void onProviderDisabled(String provider) {
}
};
locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER, 0, 0, locationListener);
在上面的代码中,一切正常。onLocationChanged 方法在位置发生变化时执行。但我的问题是,当我将设备从一个地方移动到另一个地方时,位置发生了变化,吐司通知出现在设备上,但 onLocationChanged 方法会执行多次又一次。这让我很恼火。我希望一旦位置更改,上述方法将只执行一次,再次移动设备后,它将执行。这是我的要求。请大家帮我解决这个问题。在此先感谢!
【问题讨论】:
-
你用 isLocationChanged 做什么?您可以使用该变量,但更好的办法是取消注册侦听器以节省电量。
-
我对 Android 的 Location API 不是很熟悉,但我可以想象的是,如果你移动你的设备,位置将会改变不止一次。愿你能保存 long 和 lat 的最后一个值,并将它们与新的值进行比较。如果差异足够大,请打印您的帖子。只是一个想法,不知道是不是真的