利用手机基站获取位置
前一段时间,看到一个新闻,竟然光天化日,朗朗乾坤下,居然有人抢孩子,以前是拐卖,现在就开始明抢了!好可怕….
正好项目中遇到了手机基站的一些原理,那今天就在这里分享一下,现在穿戴设备这么发达,如果能有效地利用,说不定能对孩子及时的寻找,起到帮助,同时也是一大商机不是。
什么是基站:简单的说就是我们打电话能连接的信号塔,现在覆盖范围城市里基本达到了一个小区就有一个了。
那么也就是说,你跟踪的范围就是一个小区的范围之内了。
需要工具:能插手机卡的设备(小手机就可以),手机卡(能发信息)
我的实现方式:利用获得的基站信息,根据设定的合适时间发送消息给特定的人(不直接再设备上定位,因为可能没网络,当然有了你的基站位置,警察叔叔的系统很快的分析出你的位置,根据你的基站,分析出嫌疑人使用的基站,还能进行监听…)
那么先来看看效果:
电信手机展示效果
联通、移动展示效果
发送消息:
接受消息:
当然要还要知道各大运营商代码:
46000 中国移动 (GSM)46001 中国联通 (GSM)46002 中国移动 (TD-S)46003 中国电信(CDMA)46004 空(似乎是专门用来做测试的)46005 中国电信 (CDMA)46006 中国联通 (WCDMA)46007 中国移动 (TD-S)46008460094601046011 中国电信 (FDD-LTE)
到这里准备工作完成,开始代码:
一、首先获得运营商:
得到TelephonyManager
tm = (TelephonyManager) UIUtils.getContext().getSystemService(Context.TELEPHONY_SERVICE);
使用它的getNetworkOperatorName方法
tvOperator.setText(PhoneInfo.getTelephonyManager().getNetworkOperatorName());
二、获得网络:
package cn.hnshangyu.basestationdemo.utils;import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.telephony.TelephonyManager;/*** 获取网络连接的工具类*/
public class IntenetUtil {//没有网络连接public static final String NETWORN_NONE = "NONE";//wifi连接public static final String NETWORN_WIFI = "WIFI";//手机网络数据连接类型public static final String NETWORN_MOBILE = "MOBILE";/*** 获取当前网络连接类型** @param context* @return*/public static String getNetworkState(Context context) {//获取系统的网络服务ConnectivityManager connManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);//如果当前没有网络if (null == connManager)return NETWORN_NONE;//获取当前网络类型,如果为空,返回无网络NetworkInfo activeNetInfo = connManager.getActiveNetworkInfo();if (activeNetInfo == null || !activeNetInfo.isAvailable()) {return NETWORN_NONE;}// 判断是不是连接的是不是wifiNetworkInfo wifiInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);if (null != wifiInfo) {NetworkInfo.State state = wifiInfo.getState();if (null != state)if (state == NetworkInfo.State.CONNECTED || state == NetworkInfo.State.CONNECTING) {return NETWORN_WIFI;}}// 如果不是wifi,则判断当前连接的是运营商的哪种网络2g、3g、4g等NetworkInfo networkInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);if (null != networkInfo) {NetworkInfo.State state = networkInfo.getState();String strSubTypeName = networkInfo.getSubtypeName();if (null != state)if (state == NetworkInfo.State.CONNECTED || state == NetworkInfo.State.CONNECTING) {switch (activeNetInfo.getSubtype()) {//如果是2g类型case TelephonyManager.NETWORK_TYPE_GPRS: // 联通2greturn "GPRS";case TelephonyManager.NETWORK_TYPE_CDMA: // 电信2greturn "CDMA";case TelephonyManager.NETWORK_TYPE_EDGE: // 移动2greturn "EDGE";case TelephonyManager.NETWORK_TYPE_1xRTT:return "1xRTT";case TelephonyManager.NETWORK_TYPE_IDEN:return "IDEN";//如果是3g类型case TelephonyManager.NETWORK_TYPE_EVDO_A: // 电信3greturn "EVDO_A";case TelephonyManager.NETWORK_TYPE_UMTS:return "UMTS";case TelephonyManager.NETWORK_TYPE_EVDO_0:return "EVDO_0";case TelephonyManager.NETWORK_TYPE_HSDPA:return "HSDPA";case TelephonyManager.NETWORK_TYPE_HSUPA:return "HSUPA";case TelephonyManager.NETWORK_TYPE_HSPA:return "HSPA";case TelephonyManager.NETWORK_TYPE_EVDO_B:return "EVDO_B";case TelephonyManager.NETWORK_TYPE_EHRPD:return "EHRPD";case TelephonyManager.NETWORK_TYPE_HSPAP:return "IDEN";//如果是4g类型case TelephonyManager.NETWORK_TYPE_LTE:return "LTE";default://中国移动 联通 电信 三种3G制式if (strSubTypeName.equalsIgnoreCase("TD-SCDMA")) {return "TD-SCDMA";} else if (strSubTypeName.equalsIgnoreCase("WCDMA")) {return "WCDMA";} else if (strSubTypeName.equalsIgnoreCase("CDMA2000")) {return "CDMA2000";} else {return NETWORN_MOBILE;}}}}return NETWORN_NONE;}
}tvNetwork.setText(IntenetUtil.getNetworkState(this));
三、获取460代码:
tm = (TelephonyManager) UIUtils.getContext().getSystemService(Context.TELEPHONY_SERVICE);networkOperator = PhoneInfo.getTelephonyManager().getNetworkOperator();if (networkOperator.startsWith("46000") || networkOperator.startsWith("46002")) {//"中国移动";showDatasMoeAndLink();type = 1;} else if (networkOperator.startsWith("46001")) {//"中国联通";showDatasMoeAndLink();type = 1;} else if (networkOperator.startsWith("46003") || networkOperator.startsWith("46011")) {//46003电信3G ,46011电信4G//"中国电信";showDatasTelecom();type = 2;}
四、获得中国移动和联通的基站信息
/*** 如果是中国移动和联通*/private void showDatasMoeAndLink() {llLacd.setVisibility(View.VISIBLE);llLach.setVisibility(View.VISIBLE);llSidd.setVisibility(View.GONE);llSidh.setVisibility(View.GONE);gcl = (GsmCellLocation) PhoneInfo.getTelephonyManager().getCellLocation();lac = gcl.getLac();cid = gcl.getCid();tvLacd.setText(String.valueOf(lac));tvLach.setText(Integer.toHexString(lac));tvCid.setText(String.valueOf(cid));tvCih.setText(Integer.toHexString(cid));
// mhandler.sendEmptyMessageDelayed(88, 10 * 1000);}
五、获得中国电信的基站信息
/*** 如果是中国电信*/private void showDatasTelecom() {llLacd.setVisibility(View.GONE);llLach.setVisibility(View.GONE);llSidd.setVisibility(View.VISIBLE);llSidh.setVisibility(View.VISIBLE);ccl = (CdmaCellLocation) PhoneInfo.getTelephonyManager().getCellLocation();sid = ccl.getSystemId();nid = ccl.getNetworkId();bid = ccl.getBaseStationId();tvSidd.setText(String.valueOf(sid));tvSidh.setText(Integer.toHexString(sid));tvBidd.setText(String.valueOf(bid));tvBidh.setText(Integer.toHexString(bid));tvNidd.setText(String.valueOf(nid));tvNidh.setText(Integer.toHexString(nid));
// mhandler.sendEmptyMessageDelayed(88, 10 * 1000);}
六、发信息:
private void sendSms() {smsManager = SmsManager.getDefault();if (type == 1) {//是中国移动和联通smsManager.sendTextMessage("187****8566", null, "mcc=" + mcc + ",mnc=" + mnc + ",lac=" + lac +",cid=" + cid, null, null);} else if (type == 2) {//是中国电信smsManager.sendTextMessage("187****8566", null, "mcc=" + mcc + ",mnc=" + mnc + ",sid=" + sid +",nid=" + nid + ",bid=" + bid, null, null);Log.e("LogUtils","sendTextMessage,sendTextMessage,sendTextMessage");}}
七、权限:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.SEND_SMS" />
好了基本核心功能就是这了,当然如果需要直接定位的的可以用Google的接口,不过一般使用基站定位都用的是自己后台接口(用谷歌还不如直接用地图了,还方便….)
有什么不足望大家指出,谢谢….
demo下载地址:http://download.csdn.net/download/huangxiaoguo1/9715542
利用手机基站获取位置相关推荐
- Android 高德地图在华为手机上获取位置信息失败
昨天遇到一个特别奇怪的bug,华为手机获取高德定位信息失败,调试打印数据后发现 location.getAddress()这个获取值为空,之前一直选择高精度模式,但是获取不到位置信息 //设置定位模式 ...
- html5经纬度定位 源码_利用HTML5定位功能获取经纬度,在根据经纬度利用百度地图获取位置信息...
一.引入相关js 二.js代码 // 单次位置请求执行的函数 function getLocation(){ navigator.geolocation.getCurrentPosition(mapI ...
- Android 获取定位权限,获取位置信息(国家、地区、经纬)
第一步 授权 在 AndroidManifest.xml 中加上位置信息权限按需要添加 <uses-permission android:name="android.permissio ...
- Spark获取某个手机号在某个基站下停留的时间和当前手机所在的位置的案例
1.业务需求 在拥有手机号在每个基站处停留时间日志 和 基站信息的 算出某个手机号的(所在基站,停留时间),(当前所在经度,当前所在纬度) 其中手机连接基站产生的日志信息类似如下: 186888888 ...
- php 获得手机位置坐标,获取安卓手机的坐标位置
1.打开Android手机"设置"APP,点击"关于手机". 2.在"版本号"上连续点击5次,打开"开发者选项".也有些 ...
- Android基站定位——通过手机信号获取基站信息
基站定位原理:通过手机信号获取基站信息,然后调用第三方公开的根据基站信息查找基站的经纬度值,想要具体地址信息的再根据经纬度值获取具体的地址信息. 一.通过手机信号获取基站信息 通过TelephonyM ...
- Android基站定位——通过手机信号获取基站信息(一)
转载请标明出处:http://blog.csdn.net/android_ls/article/details/8672442 基站定位原理:通过手机信号获取基站信息,然后调用第三方公开的根据基站信息 ...
- 关于fi dd ler 手机抓包 网卡地址地址_关闭手机位置权限,安卓App仍能获取位置...
你信任 Android 的权限管理吗?当一个 Android 应用无端向你寻求位置信息时,十有八九你会点下拒绝,并认为这样就可以阻止它获取到你的位置信息. 但事实并非如此,根据安全研究人员表示,已经有 ...
- Android获取手机基站信息并进行基站定位(基站定位原理)
一,首先普及一下手机基站信息中相关的专业词汇: 通过TelephonyManager 获取lac:mcc:mnc:cell-id(基站信息)的解释: MCC,Mobile Country Code, ...
- android 短信位置,浅析Android手机卫士之手机实现短信指令获取位置
推荐阅读: 获取位置 新建一个service的包 新建一个GPSService类继承系统的Service类 清单文件中注册一下 重写onCreate()方法,服务创建的时候回调 重写onDestroy ...
最新文章
- Kanzi常用操作3
- oSIP开发者手册 (二)
- mysql 存储过程 简书_MySQL学习之存储过程
- MyBatis中resultType返回值类型介绍
- 广度优先算法_算法浅谈——走迷宫问题与广度优先搜索
- Java 核心内容相关面试题【2】
- 物联网云平台四个功能领域
- 远程心电监护系统在现代医疗中的应用
- xshell常用指令
- struct过滤器和拦截器的区别
- 【嵌入式Linux应用开发】移植LVGL到Linux开发板
- Java实现剪切MP3格式的文件_java_java实现酷狗音乐临时缓存文件转换为MP3文件的方法,本文实例讲述了java实现酷狗音 - phpStudy...
- 一文熟练使用spring data jpa
- sql server 2000 版本及sp4补丁说明
- 5G基本原理/5G NR的关键技术
- 让Thinkpad USB键盘支持小红帽中键滚轮的方法(ThinkPad USB Keyboard with TrackPoint)
- Unity3D 使用UGUI实现公告牌
- 提取Linux的下制作生成grldr,如何制作自己的LINUX系统?
- 【外挂逆向】《某涯明月刀》BUFF及技能预判
- iOS 支持webrtc的浏览器 bowser
热门文章
- 上下文无关输入与输出java_正则表达式与上下文无关文法
- java 进制转换_Java 进制转换
- 大数据课程30天掌握 spark内存计算(python )-徐培成-专题视频课程
- 亲测好用的全能视频播放器:OmniPlayer Pro Mac中文版
- RocketMQ(四)Linux搭建RocketMQ集群
- 虚拟机桥接模式连不上网问题(非桥接网卡原因)
- Origin 2021 创建双y轴
- python编写dll文件_.dll 文件编写和使用
- 计算机丢失dll文件怎么弄,电脑缺少dll文件怎么办
- 郑州大学“战疫杯”大学生程序设计在线邀请赛(6)(C++题解+详细思路)2022年5月14日