【问题标题】:Do onLocationChange get called by itself自己调用 onLocationChange
【发布时间】:2013-04-08 18:59:24
【问题描述】:

我有一个简单的问题。正如 Android 开发者 Documentation 所说:

您可以控制听众接收更新的频率 与 第二个和第三个参数——第二个是最小的时间间隔 通知和第三个是之间距离的最小变化 通知——将两者都设置为零请求位置通知为 尽可能频繁。

但我从未见过onLocationChange 自己调用。 onLocationChange 是否曾经被自己调用过。无论是基于时间还是基于距离。如果是,如何复制。

我在代码locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 200000, 100, locListener);中添加了这一行

但location 永远不会自行改变。我还需要添加一些其他的东西吗?

【问题讨论】:

  • 试试这个:locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 200000, 100, this);你用过onLocationChanged方法吗?
  • “本身”是什么意思?没有什么可以自己调用。当 GPS 接收器设备接收到更新时,Android 会在您的侦听器上调用 onLocationChanged()。通过提供频率值,您可以控制此设备查找更新的频率。
  • @ling.s 我的监听器是不同的类,所以我必须传递我的监听器的实例,所以我认为不需要传递这个。无论如何感谢 cmets
  • @Egor 我从 andriod.developer 的引文中了解到,如果我们在locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 120000, 100, locListener); 中将 120000 作为参数传递,onLocationChange() 将在每 2 分钟后被调用一次所以我期待我的 onLocationChange 将再次被调用即使位置没有改变。告诉我是否错了。
  • @random4Infinity,不,如果位置没有改变,它永远不会被调用,更不用说你提供的频率参数了。

标签: android locationlistener


【解决方案1】:

您必须添加该事件。

`LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
 locListener = new LocationListener() {
        public void onLocationChanged(Location location) {
               try {

                   lat = location.getLatitude ();
                   lon = location.getLongitude ();


                   mapView.getController().setCenter(new GeoPoint(lat, lon));
                   //or something


                 }
                 catch (NullPointerException e){
                   lat = -1.0;
                   lon = -1.0;
                 }
        }`


并在某些事件中添加它(onCreate、onClick 等)

【讨论】:

  • 我就是这样做的。但是 onLocationChange() 再也不会被调用了,我也添加了这个locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 120000, 100, locListener);
猜你喜欢
  • 1970-01-01
  • 2015-02-28
  • 1970-01-01
  • 2018-05-14
  • 1970-01-01
  • 1970-01-01
  • 2016-11-04
  • 2014-03-02
  • 2019-05-09
相关资源
最近更新 更多