【问题标题】:Remove one location provider - android删除一个位置提供者 - android
【发布时间】:2013-10-18 08:00:12
【问题描述】:

我正在收听 2 个位置提供者

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 500, 5,这个); locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 500, 5, 这个);

有可能以某种方式移除一个听众吗?例如,对于一项任务,我只想使用 GPS 更新,而在执行此任务时,我希望 NETWORK_PROVIDER 将被禁用。有可能以某种方式吗?我试着这样做:

locationManager.removeUpdates(this); locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 500, 5,this);

但这并不是很好,因为如果 GPS 已修复,此方法会将其移除,并且 GPS 会再次开始搜索卫星。

【问题讨论】:

  • 您可以使用定时器在一些预先定义的时间后启动 NETWORK_PROVIDER

标签: android location


【解决方案1】:

你可以创建两个不同的LocationListener:

private LocationListener gpsListener = new LocationListener() {

    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onProviderEnabled(String provider) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onProviderDisabled(String provider) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onLocationChanged(Location location) {
        if(location != null){
            // do your work for gps location
        }
    }
};
private LocationListener networkListener = .... // same init as gpsListener

并像这样使用:

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 500, 5, gpsListener); 
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 500, 5, networkListener);

然后您可以使用您正在执行的方法,而不会丢失 GPS 定位。 而不是:

locationManager.removeUpdates(this); 
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 500, 5,this);

您将使用:

locationManager.removeUpdates(networkListener); 

【讨论】:

  • 我应该如何初始化 LocationListeners?因为我收到空错误
  • 另外,当您使用它时,您可以删除“implements LocationListener”,因为您将使用这两个监听器。
猜你喜欢
  • 2013-07-23
  • 1970-01-01
  • 1970-01-01
  • 2017-07-01
  • 2010-09-06
  • 1970-01-01
  • 2013-12-20
  • 1970-01-01
  • 2014-06-23
相关资源
最近更新 更多