Android 通过基站进行定位
这是百度百科对基站定位的定义:
基站定位一般应用于手机用户,手机基站定位服务又叫做移动位置服务(LBS——Location Based Service),它是通过电信移动运营商的网络(如GSM网)获取移动终端用户的位置信息(经纬度坐标),在电子地图平台的支持下,为用户提供相应服务的一种增值业务,例如目前中国移动动感地带提供的动感位置查询服务等。
我的理解就是
如果你的手机插了手机卡,我就可以实时知道你的位置信息
那代码怎么写呢?
首先要知道得到哪些数据可以准确知道手机的位置。
mcc=460&mnc=1&lac=4301&ci=20986
有了这些数据,我们就可以得到这样的结果(看图):
是不是很爽?在这儿我们还有一些重要东西需要说明一下。
因为电信和移动联通有点儿不一样,所以查询时传输的数据也有点儿不一样,需要着重注意一下。
具体哪儿不一样,先看图
但是归根到底,我们需要这样几个数据
1、mcc 这个值是国家代码,中国就是 460
2、mnc 这个是网络类型,就是自己的手机卡是移动,联通,还是电信。
3、lac 还有 ci(cellId)
知道需要获取什么数据,Android 中怎么获取呢?我们直接上代码。
public class GetIdUtil {private Context mContext;TelephonyManager mTelephonyManager;public GetIdUtil(Context context){this.mContext = context;}/*** 获取 基站 信息* @return*/public String getBaseStationInformation(){if(mTelephonyManager==null){mTelephonyManager = (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE);}// 返回值MCC + MNC (注意:电信的mnc 对应的是 sid)String operator = mTelephonyManager.getNetworkOperator();int mcc = -1;int mnc = -1;if(operator!=null&&operator.length()>3){mcc = Integer.parseInt(operator.substring(0, 3));mnc = Integer.parseInt(operator.substring(3));}// 获取邻区基站信息List<NeighboringCellInfo> infos = mTelephonyManager.getNeighboringCellInfo();StringBuffer sb = new StringBuffer("总数 : " + infos.size() + "\n");for (NeighboringCellInfo info1 : infos) { // 根据邻区总数进行循环sb.append(" LAC : " + info1.getLac()); // 取出当前邻区的LACsb.append("\n CID : " + info1.getCid()); // 取出当前邻区的CIDsb.append("\n BSSS : " + (-113 + 2 * info1.getRssi()) + "\n"); // 获取邻区基站信号强度}int type = mTelephonyManager.getNetworkType();Toast.makeText(mContext,"type:= "+type,Toast.LENGTH_LONG).show();//需要判断网络类型,因为获取数据的方法不一样if(type == TelephonyManager.NETWORK_TYPE_CDMA // 电信cdma网|| type == TelephonyManager.NETWORK_TYPE_1xRTT|| type == TelephonyManager.NETWORK_TYPE_EVDO_0|| type == TelephonyManager.NETWORK_TYPE_EVDO_A|| type == TelephonyManager.NETWORK_TYPE_EVDO_B|| type == TelephonyManager.NETWORK_TYPE_LTE){CdmaCellLocation cdma = (CdmaCellLocation) mTelephonyManager.getCellLocation();if(cdma!=null){sb.append(" MCC = " + mcc );sb.append("\n cdma.getBaseStationLatitude()"+cdma.getBaseStationLatitude()/14400 +"\n"+"cdma.getBaseStationLongitude() "+cdma.getBaseStationLongitude()/14400 +"\n"+"cdma.getBaseStationId()(cid) "+cdma.getBaseStationId()+"\n cdma.getNetworkId()(lac) "+cdma.getNetworkId()+"\n cdma.getSystemId()(mnc) "+cdma.getSystemId());}else{sb.append("can not get the CdmaCellLocation");}}else if(type == TelephonyManager.NETWORK_TYPE_GPRS // 移动和联通GSM网|| type == TelephonyManager.NETWORK_TYPE_EDGE|| type == TelephonyManager.NETWORK_TYPE_HSDPA|| type == TelephonyManager.NETWORK_TYPE_UMTS|| type == TelephonyManager.NETWORK_TYPE_LTE){GsmCellLocation gsm = (GsmCellLocation) mTelephonyManager.getCellLocation();if(gsm!=null){sb.append(" gsm.getCid()(cid) "+gsm.getCid()+" \n "//移动联通 cid+"gsm.getLac()(lac) "+gsm.getLac()+" \n " //移动联通 lac+"gsm.getPsc() "+gsm.getPsc());}else{sb.append("can not get the GsmCellLocation");}}else if(type == TelephonyManager.NETWORK_TYPE_UNKNOWN){Toast.makeText(mContext,"电话卡不可用!",Toast.LENGTH_LONG).show();}Log.d("spp","mTelephonyManager.getNetworkType(); "+mTelephonyManager.getNetworkType());Log.i(TAG, " 获取邻区基站信息:" + sb.toString());return sb.toString();}
}
然后,爽歪歪。
Android 通过基站进行定位相关推荐
- Android基站定位——三基站(多基站)定位(三)
转载请标明出处:http://blog.csdn.net/android_ls/article/details/8673532 这一篇基于:Android基站定位--单基站定位(二) 阐述几个概念: ...
- Android附近基站+Wifi+IP+GPS多渠道定位方案
wifi定位wiki:https://developers.google.com/maps/documentation/geolocation/intro 前言: 在移动客户端的开发中,地理位置定位是 ...
- android中几种定位方式详解
目录 前言: 1.GPS定位 2.NETWORK定位 3.AGPS定位 4.基站定位 5.WIFI定位 6.混合定位 目前,移动端大致通过三种方式来进行设备定位:GPS.基站.wifi.本文就详细的讲 ...
- Android 高德地图(带有定位和点击显示经度纬度)
Android高德地图测试,如下: 1.Android高德地图Demo地址下载: 下载android高德地图Demo 1.2 Android定位SDK 一键下载 1.3 下载好的文件zip ...
- android gps 差分定位,基于Android的高精度GPS定位与土地测量应用设计
摘要: 随着移动平台技术的飞速发展,Android作为一款新兴的嵌入式操作系统,基于Android系统的移动终端应用设计成为当今应用开发的一个主流.而GPS(Global Positioning Sy ...
- Android 原生Wi-Fi室内定位探究
一.关于室内定位的一些技术包括:RFID.蓝牙.红外.UWB. ZigBee.WiFi和行人航迹推算PDR(Pedestrian Dead Reckoning) 参考资料:http://wap.cnk ...
- android实现3种定位的切换,Android 滑动定位+吸附悬停效果实现
在前两篇文章中,分别介绍了tablayout+scrollview 和 tablayout+recyclerview 实现的滑动定位的功能,文章链接: Android 实现锚点定位 Android t ...
- 乾坤物联-UWB定位基站和定位信标的区别
很多人在定位系统的方案或者技术讨论中,总是听到UWB定位基站.信标和定位标签等术语,其中大部分的论述模糊不清,很难分清定位基站和信标究竟有什么区别,以致于在很多招投标的描述中都有将这两个混为一谈的,那 ...
- Android Studio 实现地图定位(移动开发技术作业)
文章目录 一.项目要求 二.项目功能展示 三.项目具体实现方法 1.创建项目及Android studio基础配置 2.将地图进行显示以及定位(代码实现) 四.遇到的问题解决方法及总结 五.项目源代码 ...
最新文章
- Go 学习笔记(67)— Go 并发安全字典 sync.Map
- nodejs-Buffer(缓冲区)
- 普通用户程序使用保留端口 error while loading shared libraries
- 正则在php中的使用
- Gradle中的buildScript代码块
- Java飞行记录器(JFR)
- pythonui教学视频_分享软件开发相关视频教程(Java、C++、Python、UI设计、HTML5、iOS)...
- 入口文件到控制器 php,tp5.0框架隐藏index.php入口文件及模块和控制器的方法分析...
- Beekeeper Studio:一款高颜值且免费的 SQL 开发工具
- java的的socket编程_javasocket编程
- 软件体系结构——设计模式
- 怎么使用计算机唱歌,声卡怎么用手机唱歌
- Windows重新安装系统后安装软件步骤
- 程序员业余时间运营一个技术公众号是种什么体验?
- Fastboot刷机
- 几乎零基础的git入门级分享
- Android 高清加载长图或大图方案
- 计算机信息安全攻防大赛,2018年度信息安全攻防大赛圆满收官
- Codeforces911题解
- 火火火的圣诞帽!微信朋友都给自己头像带上了!
热门文章
- 基于HTML旅游网站设计与实现 途游网站制作 学生DW静态旅游网页设计 html静态旅游风景区网页设计制作 web前端课程设计 web前端课程设计代码 web课程设计
- python拨号_python 宽带拨号
- Super-FAN论文阅读
- 织梦dede:arclist关键词标签keyword动态获取变量
- 基于GAN的小目标检测算法总结(1)——Perpetual GAN
- C语言复习笔记——适合一些需要复习和进阶c语言的朋友,这只能说是个概要。当然,如果朋友你看到某个内容能联想到知识点,那你应该是掌握了的,你可以尝试找找其他的文章去深入理解下,如有错误和疑问可以直接指出
- excel单元格内加空格_怎样在excel的单元格中的一列数字间添加两空格?
- 大学生的期望落差在哪里?——转帖newsmth
- 用pandas_profiling生成数据报告遇到的各种坑
- 基于Twitter的Snowflake算法实现的分布式ID生成器