基站定位原理,通过手机信号获取基站信息,然后调用第三方公开的基站信息查找基站位置,再根据基站具体经纬度数值获取具体位置地址信息
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;
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号做基站定位了。
精度的话还是比较感人的,偏远地区可能会有的误差。想获取全国基站信息表