Android常用的三種定位方式有:基於GPS定位、基於基站地位、基於wifi定位。
1、基於GPS定位:
GPS定位需要GPS模塊(硬件)的支持,沒有GPS模塊是無法進行GPS定位的。
GPS定位最大的優點就是其定位精確度高(一般誤差在10m內),無網絡也能用;缺點就是耗電高、定位慢、室內和地下室基本定位不到。
2、基於基站定位:
根據采集到手機所處基站信息和手機相關信息(MNC、MCC、LAC)進行定位,然后把它們傳給百度API或高德API來獲取位置信息(自己開發成本太大,百度和高德已提供LBS接口平台)。
基站定位最大的優點就是:定位速度快,缺點就是:定位精度稍微較差(200m左右),無網絡信號不能使用。
3、基於wifi定位:
和基站定位類似,根據當前設備獲取的Wi-Fi的信息來進行定位,Wi-Fi定位精度一般不受使用環境影響,主要和Wi-Fi半徑,密度有關。Wi-Fi定位精度目前在20m左右
那如何確定我們的程序優先使用哪種方式來進行定位的呢?
一般情況下是通過查看Androidmanifest.xml中的定義,如:
android.permission.ACCESS_FINE_LOCATION → GPS定位
android.permission.ACCESS_COARSE_LOCATION → 網絡定位
Android應用定位實現原理:
通過使用LocationManager(用於管理Android的用戶定位服務)來監聽獲取當前的位置信息並定義要返回的信息(如精度要求、坐標、方位等信息),具體可以看高德提供的內容如:
注意點:
1、如果程序擁有打開GPS的權限,用戶設置關閉GPS后但又獲取位置的需求則會自動打開GPS來進行定位,定位后會自動關閉GPS;
2、定位時一定要設置超時時間,要不然遇到定位不到的情況則會一直卡在定位上還無法退出使用其他功能;
3、如果超時可以上一次定位的位置(LocationManager有方法可以得到上次定位的位置),如果上次定位位置為空則提示用戶定位失敗。
那平時我們測定位時該從哪些角度考慮呢?
1、檢查三種定位方式定位是否能成功,定位精度准確且無報錯;
2、三種定位正交組合,檢查定位功能和定位精度;
3、程序有打開GPS權限時,關閉網絡和GPS,檢查能否定位和定位精度;
4、定位失敗的兩種處理情況(失敗提示和是否返回上一次位置);
5、定位過程中與來電、短彩信、藍牙的沖突;
6、定位過程中與功能鍵交互;
7、不同網絡環境(移動、聯通、電信中3G/2G)下的定位速度和精度;
8、不同環境(室內、室外、電梯)的定位和精度;
9、本地測試外地定位(DDMS模擬)