我想選擇在Android中啓用的LocationProvider。項目構建目標是Android 2.1。LocationManager:是否始終啓用「網絡」提供程序?
這就是我在onCreate()中所做的。
// ...
LocationManager locationMgr = (LocationManager)
getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.NO_REQUIREMENT);
criteria.setPowerRequirement(Criteria.NO_REQUIREMENT);
criteria.setCostAllowed(false);
String bestProvider = locationMgr.getBestProvider(criteria, true);
Toast.makeText(getApplicationContext(), "Provider = " + bestProvider + " enabled= " + locationMgr.isProviderEnabled(bestProvider), Toast.LENGTH_LONG).show();
// ...
現在,我切換每個網絡接口,並在我的設備(HTC Desire,Android 2.2)上設置飛行模式。我從USB斷開設備。顯然沒有哪家提供商可以提供位置數據給設備。我特別要求getBestProvider僅用於啓用的提供程序,所以我期望它在此情況下返回null或空字符串。我期望isProviderEnabled返回false。
實際的結果是,getBestProvider返回「網絡」和isProviderEnabled報告「啓用」它。即使「網絡」不是,「網絡」始終「啓用」?
這也可能是由於Android緩存網絡位置造成的,因爲粗略粒度,它不可能很快發生變化。這只是一個猜測。 –