27

在我的 android 应用程序中,我需要在应用程序开始时获取用户的当前 GPS 位置,前提是位置与之前的位置相比发生了变化。但问题是当我在应用程序内部时,如果位置发生变化(,如果用户在使用应用程序时正在旅行)应用程序从头开始。

获取用户当前位置后,我需要停止位置侦听器。removeUpdates 方法对我不起作用。

请在这个问题上帮助我。提前致谢 !

4

5 回答 5

58
mLocManager.removeUpdates(locationListenerObject);
mLocManager = null;

onLocationChange当 lat 和 long 已被侦听器捕获时,在您的方法中调用它。

希望我帮助..

于 2011-08-01T10:24:02.890 回答
6

您可以通过在停止 LocationListener 后将其对象设置为 null 来停止 LocationListener locationManager.removeUpdates(mLocListener);,即mLocListener = null;您希望它停止获取纬度和经度。

于 2011-08-01T05:27:27.153 回答
0

您可以通过调用方法停止连续的位置更新locationManager.removeUpdates(locationListener)

这是一个例子:

LocationManager locationManager; 
LocationListener locationListener;

// for location updates 
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);

// stop location updating
locationManager.removeUpdates(locationListener);
于 2018-10-14T22:28:09.890 回答
0
locationManager.requestSingleUpdate(String provider, LocationListener listener, Looper looper);

如果您只需要获取一次当前位置,请尝试使用此方法而不是使用

locationManager.requestLocationUpdates(String provider, long minTimeMs, float minDistanceM, LocationListener listener)

并使用停止更新locationManager.removeUpdates(LocationListener listener)

希望这有效并帮助其他有同样问题的人。

于 2020-03-05T05:44:03.023 回答
0

试试这个

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) {
            }
        }
于 2020-03-05T06:07:35.270 回答