擷取android手機的定位資訊

來源:互聯網
上載者:User
 

  通過Android手機上的定位資訊來源可分為三種,GPS,Cell-ID,和Wifi. 後兩種因為都按來自於網路,所以在Android SDK中統一為基於網路的定位。目前三種定位方式都不夠完善,各有優缺點。

基於GPS訊號的定位在三者中精度較高,但是缺點是當前民用的GPS訊號在建築物內的訊號比較差,而且GPS模組啟動的時間也比較慢,它的工作原理其實是搜尋附近的4顆衛星,根據當前位置到這四顆衛星的距離來定位,GPS模組找到四顆衛星(也稱之為GPS的啟動過程)根據訊號強度和地區的不同有可能需要幾分鐘的時間;基於基站和Wifi的定位在Android API中被統一稱為網路定位,開發人員無法將兩者區分開來,他們的特點是速度快,但是精度不如GPS高。我們也常常聽說到AGPS定位演算法,是結合了兩種演算法的優點,首先根據網路的快速定位來獲得一個一般位置,然後根據這個位置去協助GPS模組快速地搜尋到附近的衛星。這是目前通過的效果較好的手機定位方式。下面僅僅介紹如何進行基本的GPS定位和網路定位。

  在開始定位之前首先要獲得LocationManager,然後根據可以根據一定的規則去選擇一個定位方法,代碼如下,

LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);

  選擇定位演算法的規則:

  Criteria criteria = new Criteria();
  criteria.setAccuracy(Criteria.ACCURACY_FINE);               //設定為最大精度
  criteria.setAltitudeRequired(false);                                     //不要求海拔資訊criteria.setCostAllowed(true);                                             //是否允許付費
  criteria.setPowerRequirement(Criteria.POWER_LOW);     //對電量的要求
  criteria.setBearingRequired(false);                                    //不要求Bearing資訊

關於Bearing的解釋,請查看Bearing釋疑
 

//根據上述法則選擇一個定位方法

bestProvider = locationManager.getBestProvider(criteria, false);

//通常我們為了提高使用者體驗,我們先把上次定位的結果緩衝下來,

//在啟動先開啟上次定位結果,稱為last known location

Location location = locationManager.getLastKnownLocation(bestProvider);

//接下來我們在Activity的顯示介面的函數OnResume中啟動定位的位置更新

locationManager.requestLocationUpdates(bestProvider, 2000, 1, this);

//並且在OnPause函數中關閉

locationManager.removeUpdates(this);

// 讓當前Activity實現LocationListener連接埠,在onLocationChanged函數獲得定位資訊

public void onLocationChanged(Location location) {

        Log.d(TAG, "Latitude :" + location.getLatitude());

        Log.d(TAG, "Longitude :" + location.getLongitude());

}

//最近記得在AndroidMenifest.xml檔案中賦於定位的許可權

    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.