Android基站定位——通过手机信号获取基站信息(一)
转载请标明出处:http://blog.csdn.net/android_ls/article/details/8672442
基站定位原理:通过手机信号获取基站信息,然后调用第三方公开的根据基站信息查找基站的经纬度值,想要具体地址信息的再根据经纬度值获取具体的地址信息。
一、通过手机信号获取基站信息
通过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,基站信号强度。
具体实现代码如下:
package com.easipass.test;import java.util.List;import 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 extends Activity {private static final String TAG = "GSMCellLocationActivity";@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);// 获取基站信息findViewById(R.id.button1).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {TelephonyManager mTelephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);// 返回值MCC + MNCString operator = mTelephonyManager.getNetworkOperator();int mcc = Integer.parseInt(operator.substring(0, 3));int mnc = Integer.parseInt(operator.substring(3));// 中国移动和中国联通获取LAC、CID的方式GsmCellLocation location = (GsmCellLocation) mTelephonyManager.getCellLocation();int lac = location.getLac();int cellId = location.getCid();Log.i(TAG, " MCC = " + mcc + "\t MNC = " + mnc + "\t LAC = " + lac + "\t CID = " + cellId);// 中国电信获取LAC、CID的方式/*CdmaCellLocation location1 = (CdmaCellLocation) mTelephonyManager.getCellLocation();lac = location1.getNetworkId();cellId = location1.getBaseStationId();cellId /= 16;*/// 获取邻区基站信息List<NeighboringCellInfo> infos = mTelephonyManager.getNeighboringCellInfo();StringBuffer sb = new StringBuffer("总数 : " + infos.size() + "\n");for (NeighboringCellInfo info1 : infos) { // 根据邻区总数进行循环sb.append(" LAC : " + info1.getLac()); // 取出当前邻区的LACsb.append(" CID : " + info1.getCid()); // 取出当前邻区的CIDsb.append(" BSSS : " + (-113 + 2 * info1.getRssi()) + "\n"); // 获取邻区基站信号强度}Log.i(TAG, " 获取邻区基站信息:" + sb.toString());}});}}
在AndroidManifest.xml添加获取位置信息的权限:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
点击“获取基站信息”的按钮后,Logcat的日志输出如下:
1、中国联通:
2、中国移动:
关于定位部分请查看: Android基站定位——单基站定位(二)
Android基站定位——通过手机信号获取基站信息(一)相关推荐
- Android基站定位——通过手机信号获取基站信息
基站定位原理:通过手机信号获取基站信息,然后调用第三方公开的根据基站信息查找基站的经纬度值,想要具体地址信息的再根据经纬度值获取具体的地址信息. 一.通过手机信号获取基站信息 通过TelephonyM ...
- 手机基站定位(安卓手机定位源码)
下面是手机基站定位代码: public class CellIDInfo {public int cellId;public String mobileCountryCode;public Strin ...
- Android开发:基于原生API获取位置信息、卫星信号个数及参与定位的卫星个数
目录 概述 权限申请及开启GPS 调用原生API进行定位 获取设备收到的卫星信号个数 获取用于定位的卫星信号个数 成果图 概述 最近在做室内外无缝定位的相关demo,室外定位中,GNSS定位方法具有精 ...
- Android 高德地图在华为手机上获取位置信息失败
昨天遇到一个特别奇怪的bug,华为手机获取高德定位信息失败,调试打印数据后发现 location.getAddress()这个获取值为空,之前一直选择高精度模式,但是获取不到位置信息 //设置定位模式 ...
- Android studio接入高德SDK(1)--获取地址信息
1.创建一个Empty Activity 的应用项目 a.File->New->New Project b.选择Phone and Table -> Empty Activity - ...
- android 推流方案,Android 推流-录屏状态时获取推流信息
Q:如何获取录屏推流时的推流信息 A:在普通推流(MediaStreamingManager)或者连麦推流(RTCMediaStreamingManager),都有 setStreamStatusCa ...
- 解决 {ret:100030,msg:this api without user authorization} android QQ第三发登录成功后获取用户信息失败的问题
在使用QQ第三发登录时,登录成功后,去获取用户信息的时候,却出现这个错误: {"ret":100030,"msg":"this api without ...
- android gsm基站定位,通过SIM卡获取GPS,android基站定位原理
TelephonyManager telManager=(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); GsmCellLo ...
- 【Android工具】安卓手机轻松获取硬件数据和状态信息
可以获取的硬件信息和软件如上图所示. 硬件中的传感器比较好玩,可以获取手机上所有传感器的数据,还能绘制出变化曲线图 总体来说功能比较多,软件界面也非常干净,就是没有移动网络信号和wifi网络信号强度的 ...
最新文章
- 通知:正式迁移至新博客
- 为什么说康托尔知道聚宝盆的秘密?
- linux下的apache、mysql自启动
- python有道翻译接口-Python通过调用有道翻译api实现翻译功能示例
- UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0x8b in position 1: invalid start byte
- 如何将.FRM,.MYD,MYI文件转换为.SQL导入数据库中
- 标题在优化排名的写法
- K8S_Google工作笔记0011---通过二进制方式_部署etcd集群
- larveral 直接拷贝安装_做一个能引导所有系统的安装盘
- matplotlin 入门
- POSIX XSI
- CentOS 安装JDK8
- 升级Win10后Markdown Pad2启动报错‘Awesomium.Windows.Controls.WebControl’解决方法
- js防止双击事件触发单击事件
- 电信云服务器装系统,天翼云主机重装系统的详细操作步骤
- 今日头条的推荐阅读你为什么都喜欢?
- 装机春天时刻,盘点4月高性价比国产SSD
- 认识Access中的MDE文件
- VVIC item_search - 根据关键词取商品列表API
- ROS TF2静态坐标发布