在我的 android 应用程序中,我需要在应用程序开始时获取用户的当前 GPS 位置,前提是位置与之前的位置相比发生了变化。但问题是当我在应用程序内部时,如果位置发生变化(即,如果用户在使用应用程序时正在旅行)应用程序从头开始。
获取用户当前位置后,我需要停止位置侦听器。removeUpdates 方法对我不起作用。
请在这个问题上帮助我。提前致谢 !
在我的 android 应用程序中,我需要在应用程序开始时获取用户的当前 GPS 位置,前提是位置与之前的位置相比发生了变化。但问题是当我在应用程序内部时,如果位置发生变化(即,如果用户在使用应用程序时正在旅行)应用程序从头开始。
获取用户当前位置后,我需要停止位置侦听器。removeUpdates 方法对我不起作用。
请在这个问题上帮助我。提前致谢 !
mLocManager.removeUpdates(locationListenerObject);
mLocManager = null;
onLocationChange
当 lat 和 long 已被侦听器捕获时,在您的方法中调用它。
希望我帮助..
您可以通过在停止 LocationListener 后将其对象设置为 null 来停止 LocationListener locationManager.removeUpdates(mLocListener);
,即mLocListener = null;
您希望它停止获取纬度和经度。
您可以通过调用方法停止连续的位置更新locationManager.removeUpdates(locationListener)
。
这是一个例子:
LocationManager locationManager;
LocationListener locationListener;
// for location updates
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);
// stop location updating
locationManager.removeUpdates(locationListener);
locationManager.requestSingleUpdate(String provider, LocationListener listener, Looper looper);
如果您只需要获取一次当前位置,请尝试使用此方法而不是使用
locationManager.requestLocationUpdates(String provider, long minTimeMs, float minDistanceM, LocationListener listener)
并使用停止更新locationManager.removeUpdates(LocationListener listener)
希望这有效并帮助其他有同样问题的人。
试试这个
locationManager = activity!!.getSystemService(Context.LOCATION_SERVICE) as LocationManager
locationListener = object : LocationListener {
override fun onLocationChanged(location: Location) {
if (location != null) {
Log.e(
"LOCATION",
"Latitude " + location.latitude.toString() + " | Longitude :" + location.longitude.toString()
)
if (locationListener != null)
locationManager!!.removeUpdates(locationListener!!)
}
//Toast.makeText(getApplicationContext(),location.toString(),Toast.LENGTH_SHORT).show();
}
override fun onStatusChanged(provider: String, status: Int, extras: Bundle) {
}
override fun onProviderEnabled(provider: String) {
}
override fun onProviderDisabled(provider: String) {
}
}