Android基站定位——三基站(多基站)定位(三)

Android基站定位详解 本文主要介绍android基站定位的基本思路,介绍了一些TelephonyManager中用到方法。最后简单说明google定位服务与android提供参数之间的联系。 阅读详情


转载请标明出处:http://blog.youkuaiyun.com/android_ls/article/details/8673532

这一篇基于:Android基站定位——单基站定位(二)

阐述几个概念:

基站:类似于WIFI热点,官方解释,移动通信系统中,连接固定部分与无线部分,并通过空中的无线传输与移动台相连的设备。基站即公用移动通信基站是无线电台站的一种形式,是指在一定的无线电覆盖区中,通过移动通信交换中心,与移动电话终端之间进行信息传递的无线电收发信电台。

单基站定位是指:通过手机获取当前连接到的基站信息,来确定用户的大概位置(用户可能在某个基站(手机当前连接的基站)发出的无线电覆盖区域中)。

三基站或多基站:通过手机获取附近区域的基站信息(不是用户当前连接的基站,得到的是一组基站信息),来确定用户的大概位置。

获取邻区基站信息:

        // 获取邻区基站信息
        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"); // 获取邻区基站信号强度
        }


注:中国联通的基本上获取不到附近的基站,我测的时候使用的是中国移动。

一、探索:

       1、我猜想请求参数的Json是这样组装的:     

        JSONObject json = new JSONObject();
        json.put("version", "1.1.0");
        json.put("host", "maps.google.com");
        json.put("location_area_code", "6338");
        json.put("mobile_country_code", "460");
        json.put("mobile_network_code", "0");
        json.put("age", 0);
        
        JSONArray array = new JSONArray();
        JSONObject json1 = new JSONObject();
        json1.put("cell_id", "62291");
        json1.put("signal_strength", -95);
        array.put(json1);
        
        JSONObject json2 = new JSONObject();
        json2.put("cell_id", "62290");
        json2.put("signal_strength", -101);
        array.put(json2);
        
        json.put("cell_towers", array);

           2、组拼好的JSON字符串:

 {
    "mobile_network_code":"0",
    "location_area_code":"6338",
    "host":"maps.google.com",
    "cell_towers":
        [
          {
             "signal_strength":-95,
             "cell_id":"62291"
          },
          {
              "signal_strength":-101,
              "cell_id":"62290"
           }
         ],
         "age":0,
         "mobile_country_code":"460",
         "version":"1.1.0"
 }

       3、通过HTTP请求返回的JSON形式结果:

   {
    "location":
        {
            "latitude":"0.0",
            "longitude":"0.0",
            "address":
            {
                "city":"基站信息不存在,请从手机上读取正确的基站信息。",
                "country":"",
                "country_code":""
                ,"county":"",
                "postal_code":"",
                "region":"",
                "street":"",
                "street_number":""
             }
         },
         "access_token":"dummytoken"
   }


二、可行的方式:

        1、通过单个附近的基站信息定位:

        组装参数:

 /**
     * 获取JSON形式的基站信息
     * @param mcc 移动国家代码(中国的为460)
     * @param mnc 移动网络号码(中国移动为0,中国联通为1,中国电信为2); 
     * @param lac 位置区域码
     * @param cid 基站编号
     * @param bsss 基站信号强度
     * @return json
     * @throws JSONException
     */
    private String getJsonCellPos(int mcc, int mnc, int lac, int cid, int bsss) throws JSONException {
        JSONObject jsonCellPos = new JSONObject();
        jsonCellPos.put("version", "1.1.0");
        jsonCellPos.put("host", "maps.google.com");

        JSONArray array = new JSONArray();
        JSONObject json1 = new JSONObject();
        json1.put("location_area_code", "" + lac + "");
        json1.put("mobile_country_code", "" + mcc + "");
        json1.put("mobile_network_code", "" + mnc + "");
        json1.put("age", 0);
        json1.put("cell_id", "" + cid + "");
        json1.put("signal_strength", bsss);
        array.put(json1);

        jsonCellPos.put("cell_towers", array);
        return jsonCellPos.toString();
    }

       请求的JSON字符串:

          {
            "cell_towers":
                [
                 {
                     "mobile_network_code":"0",
                     "location_area_code":"6338",
                     "cell_id":"62291",
                     "signal_strength":-95,
                     "age":0,
                     "mobile_country_code":"460"
                  }
                 ],
             "host":"maps.google.com",
             "version":"1.1.0"
          }

          返回JSON形式结果:

        {
            "location":
            {
                "latitude":"31.214667405",
                "longitude":"121.59903152499999",
                "address":
                {
                    "city":"上海市浦东新区郭守敬路;上海奥威科技开发公司、科威国际技术转移中心公司、张江高科技园区热力中心[附近]",
                    "country":"",
                    "country_code":"",
                    "county":"",
                    "postal_code":"",
                    "region":"",
                    "street":"",
                    "street_number":""
                }
           },
           "access_token":"dummytoken"
        }

 

        2、通过多个附近的基站信息定位:

              又一次猜想:

              请求JSON:

         {
            "cell_towers":
                [
                 {
                     "mobile_network_code":"0",
                     "location_area_code":"6338",
                     "cell_id":"62291",
                     "signal_strength":-95,
                     "age":0,
                     "mobile_country_code":"460"
                 },
                 {
                     "mobile_network_code":"0",
                     "location_area_code":"6338",
                     "cell_id":"62290",
                     "signal_strength":-101,
                     "age":1,
                     "mobile_country_code":"460"
                  }
                 ],
                 "host":"maps.google.com",
                 "version":"1.1.0"
         }

 

              返回JSON:

        {
            "location":
            {
                "latitude":"31.21485922285714",
                "longitude":"121.59990774285711",
                "address":
                {
                    "city":"上海市浦东新区郭守敬路276号;上海奥威科技开发公司、科威国际技术转移中心公司、张江高科技园区热力中心[附近]",
                    "country":"",
                    "country_code":"",
                    "county":"",
                    "postal_code":"",
                    "region":"",
                    "street":"",
                    "street_number":""
                 }
            },
            "access_token":"dummytoken"
        }

        结论:第三方服务器端可能有限制,每次只接受JSONArray中的第一个元素。如果要想一次性查找附近多个基站的经纬度及所在的地址,就只能编写for循环,一次一次的访问第三方的服务器。

 

        3、个人观点:所谓的三点定位或多点定位,只是让想知道用户当前位置的人多了一个选择而已。三点定位得到的是三个点,并非是一个比较准确的点。

三、测试网址:http://www.minigps.net/map3.html

利用基站定位手机                                                                                                                                                                     利用基站定位手机             在手机拨号键盘处输入... 阅读详情

相关推荐

Android附近基站+Wifi+IP+GPS多渠道定位方案

本文主要介绍了使用使用基站+Wifi+IP+GPS多渠道定位的实现方案和相关的Android源码,主要包括Google service SDK的GPS获取方式,获取手机附近基站信息的相关Android API,扫描手机wifi环境的Android API,谷歌提供的基站+Wifi热点+IP定位 API的调用方法。并且阐述了多渠道定位结果的择优策略和省电策略。并且介绍了一下在开发这套功能期间碰到几个细节上的问题。力图构建一套准确完整的手机客户端地理位置解决方案

lvshaorong的博客 2万+

Android 通过基站进行定位

这是百度百科对基站定位的定义:基站定位一般应用于手机用户,手机基站定位服务又叫做移动位置服务(LBS——Location Based Service),它是通过电信移动运营商的网络(如GSM网)获取移动终端用户的位置信息(经纬度坐标),在电子地图平台的支持下,为用户提供相应服务的一种增值业务,例如目前中国移动动感地带提供的动感位置查询服务等。我的理解就是如果你的手机插了手机卡,我就可以实时知道你的位

ShoppingChen的博客 1万+

android 移动网络定位服务器地址,安卓定位方式全总结-gps定位,network定位,ip定位,基站定位...

一般我们使用的是第三方定位,因为第三方定位比较成熟,有些场景我们不需要或者不可以使用第三方定位的时候我们就需要自己去获取定位了。文章目录定位方式1.gps和network(时效性差)1.1 使用条件1.1.1 需要开启位置服务:1.1.2 安卓6.0以上还需要开启位置权限android.permission.ACCESS_COARSE_LOCATION,android.permission.ACC...

weixin_35643153的博客 2408

基站定位与Wi-Fi定位?看这篇就够了

Wi-Fi定位原理就是模块收集周围Wi-Fi的mac地址和信号质量,然后带着这些信息去访问Wi-Fi定位服务器,由服务器去自己数据库里搜索对应Mac地址,再根据信号质量确定设备离对应的Wi-Fi信息源距离,进而返回对应坐标。当手机同时搜索到至少三个基站信号时,手机除了连接信号最好的一个之外,还会根据基站信号的强弱大致估计出距离基站的远近。根据设备获取的Wi-Fi的信息进行定位,Wi-Fi定位精度一般不受使用环境影响,主要和单一Wi-Fi辐射半径、Wi-Fi覆盖密度有关。搜索到的小区越多,定位的精度越高;

Heishuiwolaile的博客 3275

Android基站定位技术详解及代码实践

在“帮助类.java”中,功能模块被仔细划分,以便于管理和扩展。类的设计遵循单一职责原则,确保每个模块只负责一项任务。模块的划分基于以下功能点:数据获取模块:负责与Android系统通信,获取基站相关信息。数据解析模块:将获取的原始数据解析为可理解的格式。数据处理模块:对解析后的数据进行进一步处理和计算。数据存储模块:将处理后的数据保存到本地或其他存储介质。异常处理模块:处理过程中可能发生的异常,并提供错误信息。

weixin_42524864的博客 1345

Android GPS与基站定位实战指南

Android设备中的全球定位系统(GPS)是一种广泛使用的技术,它能够提供准确的位置信息。GPS定位技术依靠的是卫星信号,能够在室外环境中提供精确至几米的位置数据。尽管如此,GPS定位在室内或者信号覆盖较差的区域准确性会降低,因此开发者需要结合其他定位技术来提升应用的整体定位性能。在Android平台上,利用Google Play Services提供的Location API,开发者可以轻松集成GPS定位功能。

weixin_32673065的博客 1191

多基站wifi混合定位

多基站wifi混合定位  多基站定位,wifi高精度混合定位 http://www.haoservice.com/docs/3 请求参数: 名称 类型 必填 说明 key string 是 API KEY requestdata Object 是 参数对象(Json格式),查询数据中至少传入celltowers和wifilist中一组数据       celltowers L

guegu的专栏 813

获取基站信息android

获取基站信息相关的内容,包括的想尽的信息内容,很清晰,很好用

Android 基站定位技术的实现

本文介绍了通过Android手机信号获取基站信息并进行单基站定位的技术实现。主要内容包括:1)使用TelephonyManager获取基站参数(MCC国家代码、MNC网络代码、LAC位置区号、CID基站编号);2)通过HTTP请求调用第三方API(minigps.net)将基站信息转换为经纬度坐标和地址;3)详细展示了Java代码实现过程,包括JSON参数组装、网络请求处理和结果解析。文章还探讨了单基站定位与多基站定位的区别,指出第三方服务可能对多点定位存在限制。实现该功能需要获取ACCESS_COARSE

hnjzfwy的博客 1185

Android开发笔记之简单基站定位程序的实现

主要介绍了Android开发笔记之简单基站定位程序的实现,详细的介绍了基站定位其实很简单,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。

Enterprise Architect 中文经典教程

本文使用到的EA工程文件下载 一、Enterprise Architect简介 Enterprise Architect是一个对于软件系统开发有着极好支持的CASE软件(Computer Aided Software Engineering)。EA不同于普通的UML画图工具(如VISIO),它将支撑系统开发的全过程。在需求分析阶段,系统分析与设计阶段,系统开发及部署等方面有着强大的支持,...

2万+

如何通过AT指令获取基站定位

基站定位描述 基站定位一般应用于手机用户,手机基站定位服务又叫做移动位置服务(LBS——Location Based Service),它是通过电信移动运营商的网络(如GSM网)获取移动终端用户的位置信息(经纬度坐标),在电子地图平台的支持下,为用户提供相应服务的一种增值业务。 基站定位的大致原理为:移动电话测量不同基站的下行导频信号,得到不同基站下行导频的TOA(Time of A...

weixin_30681121的博客 3204

NVIDIA DRIVE SDK深度解析(一)——核心组件与安全架构设计

本文深度解析NVIDIA DRIVE SDK的核心组件与安全架构设计,涵盖DriveOS、加速库和应用框架三层架构,以及虚拟化与安全隔离机制。重点探讨了安全岛设计、媒体处理流水线和功能安全监控体系,为开发者提供自动驾驶系统开发的实战建议和性能优化技巧。

weixin_28704565的博客 565

基站位置查询系统_Android获取手机基站位置并进行基站定位的原理

一、首先普及一下手机基站信息中相关的专业词汇: 通过TelephonyManager 获取lac:mcc:mnc:cell-id(基站信息)的解释: MCC,Mobile Country Code,移动国家代码(中国的为460); MNC,Mobile Network Code,移动网络号码(中国移动为0,中国联通为1,中国电信为2); LAC,Location Area Code,位置区域码;...

weixin_39852276的博客 6326

SSD性能测试进阶:用fio的io_uring引擎榨干你的NVMe硬盘

本文深入探讨了如何利用fio的io_uring引擎对NVMe SSD进行深度性能测试。通过对比传统libaio引擎,详解了io_uring低开销、高并发的优势。文章提供了从测试矩阵设计、队列深度分析到写入放大观察和尾延迟可视化的完整进阶方法,并附有实战案例与脚本,旨在帮助用户科学压榨NVMe硬盘的极限性能,获取更真实的评估数据。

weixin_29247219的博客 326

深入解析时钟同步技术:相位同步、频率同步与同源时钟的实战应用

本文深入解析时钟同步技术的三种核心方式:相位同步、频率同步与同源时钟,详细阐述其技术原理、实现方案及实战应用。通过对比分析不同同步方式的特点与适用场景,为电子系统设计提供选型指南,帮助工程师优化时钟网络设计,提升系统稳定性和性能。

weixin_29240711的博客 449

无线基站定位服务器,android 基站定位api

android 基站定位api 内容精选换一换网络告警需要有确切的发生时间、所在网元、告警名称等信息,且告警能挂载于拓扑数据的网元之上。具体告警数据格式参见API文档。设备之间需要有确定的拓扑关系,包括:基站与传输网元、传输网元与传输网元之间的连接拓扑关系;动环与基站、动环与传输网元之间的供电关系。具体拓扑数据格式参见API文档。需要专家参与,确认服务上线后基于新产生的告警传播关系进android...

weixin_42297519的博客 1045

802.1x之EAP-TLS测试方法

CA证书一般是由权威的认证机构发出,用来验证该机构签名的证书,持有CA证书的设备可以验证对端的证书是否由自己信任的机构颁发的。在我们内部使用证书时,我没可以自己充当CA认证机构,管理私钥和CA证书,使用他们签名服务器、客户端证书。2、使用证书请求文件server_csr.pem、CA私钥、CA公钥生成服务器证书(正常情况下自己不拥有CA私钥,是把证书请求文件发给认证机构,由认证机构返回证书)进行802.1x EAP-TLS认证时需要IPC、服务器分别存储CA证书、设备证书、私钥,通过交换证书实现身份验证。

写作是为了更好的思考 2163

java 基站定位_android基站定位 | 学步园

基站定位首先要通过TelephonyManager得到手机的信号信息,比如基站的国家编码,小区id等......得到这些后需要向google提供的接口提交这些参数,然后就会返回基站的相关信息。import java.io.Serializable;import java.util.ArrayList;import java.util.List;import android.content.Cont...

weixin_30693337的博客 3360

FPGA进位链(Carry Chain)实战:从Xilinx CARRY8原语到性能优化全解析

本文深入解析了FPGA进位链(Carry Chain)的原理与应用,重点剖析了Xilinx CARRY8原语的端口功能与内部机制。通过实测数据揭示了进位链的真实延迟特性与温度影响,并详细阐述了如何利用DI和S信号进行动态路径优化、实现减法运算与条件进位选择,从而有效提升设计性能。最后,文章探讨了系统级的流水线拆分、布局约束等实战优化策略与常见陷阱。

weixin_29313817的博客 451

YOLOv26详解 | 一文带你从代码角度深入理解ultralytics最新作品yolov26的创新 | 训练、推理、验证、导出 (附网络结构图PPT可用,全网最全)

YOLOv26带来多项创新:1)采用双检测头机制(One-to-Many和One-to-One)实现端到端无NMS推理;2)移除DFL简化边界框回归;3)引入ProgLoss+STAL优化小目标检测;4)使用MuSGD优化器提升训练稳定性。网络结构方面,SPPF模块增加shortcut连接,并在C3k2中引入PSABlock注意力机制。该版本更注重实际部署,简化了推理流程,提升硬件兼容性。教程涵盖模型训练、验证、推理及导出全流程,支持多种格式转换如ONNX、TensorRT等,适合工业应用场景。

Snu77的博客 4064
上一篇: Android基站定位——通过手机信号获取基站信息(一)
下一篇: Android百度地图——路径规划(驾车、步行和公交线路搜索)
android_ls
博客等级 码龄16年 662粉丝 87原创
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值