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

一、通过手机信号获取基站信息

通过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.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";

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

// 获取基站信息

findViewById(R.id.button1).setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

TelephonyManager mTelephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);

// 返回值MCC + MNC

String 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()); // 取出当前邻区的LAC

sb.append(" CID : " + info1.getCid()); // 取出当前邻区的CID

sb.append(" BSSS : " + (-113 + 2 * info1.getRssi()) + "\n"); // 获取邻区基站信号强度

}

Log.i(TAG, " 获取邻区基站信息:" + sb.toString());

}

});

}

}

在AndroidManifest.xml添加获取位置信息的权限:

[html]  www.2cto.com

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

点击“获取基站信息”的按钮后,Logcat的日志输出如下:

1、中国联通:

2、中国移动:

Android基站定位——通过手机信号获取基站信息相关推荐

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

    转载请标明出处:http://blog.csdn.net/android_ls/article/details/8672442 基站定位原理:通过手机信号获取基站信息,然后调用第三方公开的根据基站信息 ...

  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. GitHub 大热!也许会成为你心中的OCR开源工具NO1!
  2. Linux 3D 编程学习总结
  3. 利用指针的指针,修改被调函数的局部值【传引用】
  4. 数字图像处理同态滤波(matlab)
  5. idea创建Package时出现包名累加,而不是树形结构解决方法
  6. Android 为应用添加默认加载页
  7. 车道线检测综述及近期新工作
  8. Springboot使用FastJson后,接口返回中文乱码的问题解决。
  9. redis的批量操作命令pipeline(PHP实现)
  10. Excel、Word VBA 学习笔记
  11. 多媒体信息技术对远程教育的影响
  12. itest听力答案2020_itest答案
  13. hook技术截取服务器信息,Windows Hook技术
  14. 反激电源电路电磁干扰抑制措施
  15. android 加载第三方so文件,Uni-app 以Module方式开发Android插件,引入第三方资源包so文件,但无法读取...
  16. 计算机怎么设置加密文件,怎么把电脑文件加密_怎么把文件加密-win7之家
  17. 回顾过去展望未来之2015
  18. OpenLayers 3 之 添加地图网格
  19. 思考与分析:中国黑客的现状与发展(转)
  20. oracle数据库:ORA-12528: TNS: 监听程序: 所有适用例程都无法建立新连接

热门文章

  1. android+屏幕色彩度,对比度/色阶/色彩 屏幕显示对比_索尼 Xperia Z2_手机Android频道-中关村在线...
  2. abb机器人指令手册_ABB机器人速度设置
  3. 人脸识别——使用谷歌Firebase-ML Kit实现
  4. RDIFramework.NET 框架之组织机构权限设置
  5. 微信最火html5游戏平台,盘点五个热门HTML5游戏微信公众号
  6. 实操:基于LNMP搭建zabbix监控
  7. 送H-1B 及其他I-129 申请别忘用新表
  8. LBS:利用IP地址,获取地理位置
  9. 分享 10 个最常见的 JavaScript 问题
  10. qnap虚拟linux,QNAP进阶教程:威联通NAS 虚拟机教程 安装精简版win10、软路由、群晖NAS系统!...