基站定位原理:通过手机信号获取基站的信息,然后调用第三方根据基站的信息找到基站的经纬度值。如果想要具体的地址信息,根据经纬度值获取具体的地址信息。1、通过手机信
基站定位原理:通过手机信号获取基站的信息,然后调用第三方根据基站的信息找到基站的经纬度值。如果想要具体的地址信息,根据经纬度值获取具体的地址信息。
1、通过手机信号获取基站信息
通过电话管理员获得lac、mcc、mnc、cell-id(基站信息)的解释;
MCC,移动国家代码,移动国家代码(国内460);
MNC,移动网络代码,移动网络号(0代表中国移动,1代表中国联通,2代表中国电信);
LAC,位置区域代码,位置区域代码;
CID、小区标识、基站号;
BSSS,基站信号强度,基站信号强度。
具体实现代码如下:
[java]
包com . easi pass . test;
导入Java . util . list;
导入Android . app . activity;
导入Android . content . context;
导入Android . OS . bundle;
导入Android . telephony . neighbouring cellinfo;
导入Android . telephony . telephony manager;
导入Android . telephony . CDMA . cdmacelllocation;
导入Android . telephony . GSM . GSM cell location;
导入Android . util . log;
导入Android . view . view;
/**
*功能描述:通过手机信号获取基站信息。
* #通过电话管理器获取lac:mcc:mnc:cell-id
* # MCC,移动国家代码,移动国家代码(国内460);
* # MNC,移动网络代码,移动网络号(0代表中国移动,1代表中国联通,2代表中国电信);
* # LAC,位置区号,位置区号;
* # CID、小区标识、基站号;
* # BSSS,基站信号强度,基站信号强度。
* @作者android_ls
*/
公共类GSMCellLocationActivity扩展Activity {
私有静态最终字符串TAG = " GSMCellLocationActivity
@覆盖
public void on create(Bundle saved instancestate){
super . oncreate(savedInstanceState);
setContentView(r . layout . main);
//获取基站信息
findViewById(R.id.button1)。setOnClickListener(新视图。OnClickListener() {
@覆盖
公共void onClick(视图v) {
TelephonyManager mTelephonyManager =(TelephonyManager)getsystem service(Context。电话_服务);
//返回值MCC+MNC
string operator = mtelephonymanager . getnetworkoperator();
int MCC = integer . parse int(operator . substring(0,3));
int MNC = integer . parse int(operator . substring(3));
//中国移动和中国联通如何获取LAC和CID
GsmCellLocation location =(GsmCellLocation)mtelephonymanager . getcelllocation();
int lac = location . get lac();
int cellId = location . getcid();
Log.i(TAG," MCC = "+MCC+" \ t MNC = "+MNC+" \ t LAC = "+LAC+" \ t CID = "+cellId);
//中国电信如何获取LAC和CID
/* cdmacell location location 1 =(cdmacell location)mtelephonymanager . getcelllocation();
lac = location 1 . getnetworkid();
cellId = location 1 . getbasestationid();
cellId/= 16;*/
//获取邻基站信息。
列表& lt邻居& gtinfos = mtelephonymanager . getneighboringcellinfo();
string buffer sb = new string buffer(" total:"+infos . size()+" \ n ");
for(neighbouringcellinfo 1:infos){//根据邻居总数进行循环
sb . append(" LAC:"+info 1 . get LAC());//取出当前邻域的LAC
sb . append(" CID:"+info 1 . getcid());//取出当前邻居的CID
sb . append(" BSSS:"+(-113+2 * info 1 . getrssi())+" \ n ");//获取相邻基站的信号强度。
}
Log.i(TAG,"获取邻基站信息:"+sb . tostring());
}
});
}
}
在AndroidManifest.xml中添加获取位置信息的权限:
[html]www.2cto.com
& ltuses-permission Android:name = " Android . permission . access _ COARSE _ LOCATION "/& gt;
点击“获取基站信息”按钮后,Logcat的日志输出如下:
1.中国联通:
2.中国移动:
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。
作者:美站资讯,如若转载,请注明出处:https://www.meizw.com/n/110289.html