基站定位原理,通過手機信號獲取基站信息,然后調用第三方公開的基站信息查找基站位置,再根據基站具體經緯度數值獲取具體位置地址信息
1 基站信息
手機號通過TelephonyManager 獲取lac:mcc:mnc:cell-id(基站信息)的解釋:
MCC,Mobile Country Code,移動國家代碼(中國的為460);
MNC,Mobile Network Code,移動網絡號碼(中國移動為0,中國聯通為1,中國電信為2);
LAC,Location Area Code,位置區域碼;
CID,Cell Identity,基站編號;
BSSS,Base station signal strength,基站信號強度。
具體實現代碼如下:
[JAVA]
package com.easipass.test;
import java.util.List;
mport Android.App.Activity;
import android.content.Context;
import android.os.Bundle;
import android.telephony.NeighboringCellInfo;
import android.telephony.TelephonyManager;
import android.telephony.cdma.CdmacellLocation;
import android.telephony.gsm.GsmCellLocation;
import android.util.Log;
import android.view.View;
/**
* 功能描述:通過手機信號獲取基站信息
* # 通過TelephonyManager 獲取lac:mcc:mnc:cell-id
* # MCC,Mobile Country Code,移動國家代碼(中國的為460);
* # MNC,Mobile Network Code,移動網絡號碼(中國移動為0,中國聯通為1,中國電信為2);
* # LAC,Location Area Code,位置區域碼;
* # CID,Cell Identity,基站編號;
* # BSSS,Base station signal strength,基站信號強度。
* @author android_ls
*/
public class GSMCellLocationActivity
獲取基站信息后導入查詢軟件
利用小區號和基站號可以做簡單的GSM定位,下面給出一個取得小區號和基站號的方法。
首先依然是打開AT指令端口。
要取得小區號和基站號,需要首先讓手機輸出這兩個號碼,方法是利用設置命令”AT+CREG=2”。然后再發送AT+CREG?查詢即可取得基站號和ID號。
返回值應該是這樣的:
AT+CREG=2;+CREG?
+CREG: 2,n,”ABCD”,”ABCD”
OK
其中第一個“ABCD”是小區號(LAC),第二個“ABCD”是基站號(CI)。
至于運營商,可以用AT+COPS?獲取。返回值應該類似這樣:
AT+COPS?
+COPS: 0,0,”China Mobile”
OK*460-0-29820-252369797此為基站位置信息
這樣,就可以利用取得的基站號和ID號做基站定位了。
精度的話還是比較感人的,偏遠地區可能會有的誤差。想獲取全國基站信息表