十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
可以。
创新互联公司专注于沂南网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供沂南营销型网站建设,沂南网站制作、沂南网页设计、沂南网站官网定制、成都微信小程序服务,打造沂南网络公司原创品牌,更为您提供沂南网站排名全网营销落地服务。
在Android操作系统下,基站定位其实很简单,先说一下实现流程:
调用SDK中的API(TelephonyManager)获得MCC、MNC、LAC、CID等信息,然后通过google的API获得所在位置的经纬度,最后再通过google
map的API获得实际的地理位置。(google真牛!)
华为 安卓手机
在拨号键盘输入 *#*#4636#*#* , 选择 “手机信息”
“位置”那行显示的就是当前的16进制基站信息,把LAC和CID 填入到本站的 基站查询 页面,选择16进制查询,即可显示地图位置。
该命令显示的信息非常多,除了LAC,CELLID外,还可以显示当前的信号强度,网络类型等等。
许多国产软件都会使用基站进行定位,android模拟器是没有流量卡的,所以没有基站位置,但是我们可以通过Xposed来让模拟器拥有指定的基站信息。拥有基站信息的模拟器就可以在地图app中定位了,这种方式比通过hook修改经纬度要更加好一点,可能大多数软件都是基站来判断,而不是经纬度。
基站定位使用到如下概念
通过telephonyManager # getNetworkOperator()获取得到,它返回一个字符串长度为5的值,前3位就是MCC ,后两位为MNC
接下来就是我们Xposed出场的时候了,通过真机运行BaseStationInfoDemo项目(包含上面这些方法)得到真实数据信息。将数据记录并运行HookCellInfoDemo项目(修改了模拟器的基站信息),然后在模拟器上运行BaseStationInfoDemo项目,观察日志输出,并可以在模拟器上打卡百度地图等地图软件观察当前位置。
getCellLocationMethodHook的实现如下:
就是在beforeHookedMethod中直接通过setResult将新建的带有基站LAC和CID信息的GsmCellLocation 返回。
首先看下源码中NerworkInfo类的实现方式,发现其是一个实现了Parcelable接口的序列化对象,它拥有多个成员变量,这里只需要修改6个,其他的在wifi或者4g网络的情况下的值不变
这样的话,最终模拟器的网络情况是有wifi图标,但是在指定包名内获取到的网络类型和NetworkInfo却是4g类型的数据,符合我们的业务需求。
附上源码地址:
里面的两个文件夹分别就是BaseStationInfoDemo项目和HookCellInfoDemo项目
定位服务可以通过gps、基站还有wifi数据实现,而且对应用程序开发者还是透明的定位服务可以用基站和wifi吗?? Gps可以确定你的经纬度 基站和wifi好像不行