使用Criteria確定android location provider

轉自:http://marshal.easymorse.com/archives/2528

android location provider有兩個:

  • LocationManager.GPS_PROVIDER:GPS,精度比較高,但是慢而且消耗電力,而且可能因爲天氣原因或者障礙物而無法獲取衛星信息,另外設備可能沒有GPS模塊;
  • LocationManager.NETWORK_PROVIDER:通過網絡獲取定位信息,精度低,耗電少,獲取信息速度較快,不依賴GPS模塊。

爲了程序的通用性,希望動態選擇location provider。對android通過Location API顯示地址信息做了個別改動,可以看到使用了gps定位,精度較高:

image

這裏使用到了Criteria,可根據當前設備情況自動選擇哪種location provider。見:

LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

Criteria criteria = new Criteria(); 
criteria.setAccuracy(Criteria.ACCURACY_FINE);//設置爲最大精度 
criteria.setAltitudeRequired(false);//不要求海拔信息 
criteria.setBearingRequired(false);//不要求方位信息 
criteria.setCostAllowed(true);//是否允許付費 
criteria.setPowerRequirement(Criteria.POWER_LOW);//對電量的要求

location = locationManager 
        .getLastKnownLocation(locationManager.getBestProvider(criteria, true));

 

原來的寫法很簡單:

LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

location=locationManager.getLastKnownLocation(LocationManager.NETWOR

發佈了29 篇原創文章 · 獲贊 44 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章