转载请标明出处: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基站定位——通过手机信号获取基站信息(一)相关推荐

  1. Android基站定位——通过手机信号获取基站信息

    基站定位原理:通过手机信号获取基站信息,然后调用第三方公开的根据基站信息查找基站的经纬度值,想要具体地址信息的再根据经纬度值获取具体的地址信息. 一.通过手机信号获取基站信息 通过TelephonyM ...

  2. 手机基站定位(安卓手机定位源码)

    下面是手机基站定位代码: public class CellIDInfo {public int cellId;public String mobileCountryCode;public Strin ...

  3. Android开发:基于原生API获取位置信息、卫星信号个数及参与定位的卫星个数

    目录 概述 权限申请及开启GPS 调用原生API进行定位 获取设备收到的卫星信号个数 获取用于定位的卫星信号个数 成果图 概述 最近在做室内外无缝定位的相关demo,室外定位中,GNSS定位方法具有精 ...

  4. Android 高德地图在华为手机上获取位置信息失败

    昨天遇到一个特别奇怪的bug,华为手机获取高德定位信息失败,调试打印数据后发现 location.getAddress()这个获取值为空,之前一直选择高精度模式,但是获取不到位置信息 //设置定位模式 ...

  5. Android studio接入高德SDK(1)--获取地址信息

    1.创建一个Empty Activity 的应用项目 a.File->New->New Project b.选择Phone and Table -> Empty Activity - ...

  6. android 推流方案,Android 推流-录屏状态时获取推流信息

    Q:如何获取录屏推流时的推流信息 A:在普通推流(MediaStreamingManager)或者连麦推流(RTCMediaStreamingManager),都有 setStreamStatusCa ...

  7. 解决 {ret:100030,msg:this api without user authorization} android QQ第三发登录成功后获取用户信息失败的问题

    在使用QQ第三发登录时,登录成功后,去获取用户信息的时候,却出现这个错误: {"ret":100030,"msg":"this api without ...

  8. android gsm基站定位,通过SIM卡获取GPS,android基站定位原理

    TelephonyManager telManager=(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); GsmCellLo ...

  9. 【Android工具】安卓手机轻松获取硬件数据和状态信息

    可以获取的硬件信息和软件如上图所示. 硬件中的传感器比较好玩,可以获取手机上所有传感器的数据,还能绘制出变化曲线图 总体来说功能比较多,软件界面也非常干净,就是没有移动网络信号和wifi网络信号强度的 ...

最新文章

  1. 通知:正式迁移至新博客
  2. 为什么说康托尔知道聚宝盆的秘密?
  3. linux下的apache、mysql自启动
  4. python有道翻译接口-Python通过调用有道翻译api实现翻译功能示例
  5. UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0x8b in position 1: invalid start byte
  6. 如何将.FRM,.MYD,MYI文件转换为.SQL导入数据库中
  7. 标题在优化排名的写法
  8. K8S_Google工作笔记0011---通过二进制方式_部署etcd集群
  9. larveral 直接拷贝安装_做一个能引导所有系统的安装盘
  10. matplotlin 入门
  11. POSIX XSI
  12. CentOS 安装JDK8
  13. 升级Win10后Markdown Pad2启动报错‘Awesomium.Windows.Controls.WebControl’解决方法
  14. js防止双击事件触发单击事件
  15. 电信云服务器装系统,天翼云主机重装系统的详细操作步骤
  16. 今日头条的推荐阅读你为什么都喜欢?
  17. 装机春天时刻,盘点4月高性价比国产SSD
  18. 认识Access中的MDE文件
  19. VVIC item_search - 根据关键词取商品列表API
  20. ROS TF2静态坐标发布

热门文章

  1. Magic Leap 2正式发布:3299美元起,9月底出货
  2. DEM的分析相关操作
  3. mac挂载阿里云盘做本地盘【webdav-aliyundriver】【CloudMounter】
  4. 最后一次——时间序列分析
  5. 一份医院必备的「信息化建设项目」指南
  6. 2020-10-24立下目标可好
  7. YII2 中使用PHPExcel
  8. 啊哈添柴挑战Java1499. 骡子和担子
  9. MapReduce求两个人的共同好友算法
  10. 函数凹凸性与黑塞矩阵