在我的应用程序中,我为两个提供商设置了精确和粗略的准确度,以监听位置更新。我知道使用正常的位置将由gps提供,并且使用粗略位置将由网络提供商提供(来自此链接http://www.alonsoruibal.com/using-two-locationproviders-on-android/)。现在,如果gps被禁用,我希望我的应用程序切换到网络,并启用gps切换回它。这可以使用onStatusChanged
方法完成吗?
我的问题是,这段代码好吗?
public static final int OUT_OF_SERVICE = 0;
public static final int TEMPORARILY_UNAVAILABLE = 1;
public static final int AVAILABLE = 2;
Criteria criteria = new Criteria();
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setCostAllowed(false);
criteria.setPowerRequirement(Criteria.POWER_LOW);
criteria.setAccuracy(Criteria.ACCURACY_FINE);
providerFine = locationManager.getBestProvider(criteria, true);
criteria.setAccuracy(Criteria.ACCURACY_COARSE);
providerCoarse = locationManager.getBestProvider(criteria, true);
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
if (provider.equals(providerFine)) {
if (status == 0) {
locationManager.requestLocationUpdates(providerCoarse, 60000,20,this);
}
if (status == 2) {
locationManager.requestLocationUpdates(providerFine, 60000, 20, this);
}
}// provider == fine
}
而且,如果已经请求了更新,(在我的代码之前的某个地方,我没有把它放在这里)(对于两个提供者),如果我在这个onStatusChanged方法中再次请求它们就可以了。或者我必须先删除更新?
答案 0 :(得分:0)
对我来说很好看。我建议在添加之前删除任何更新侦听器。保持清洁和一致。