android信号强度检测(AT指令)

项目介绍

近期我们接收到客户的一个需求,实现一个app,能够在app里面实时检测某个位置的各运营商的信号强度。主要是针对移动,联通,电信等基站等信号进行监控,实时获取4G,3G,2G信号,其中中国电信运营商是没有3G信号的。工程人员(运营商的巡检人员)拿着这款app到某个位置巡检后,检测当前位置的信号强度,并截屏记录下来,以便后面查看历史巡检记录。

技术难点

这样一款app看似简单,在开发过程中还是遇到了很多问题,主要包括以下几个技术点:

基于AT指令获取各运营商信号

首先的了解什么是AT指令,它是一种调制解调器命令语言。从终端设备(Terminal Equipment ,TE ,手机等)向终端适配器(Terminal Adapter,TA)发送AT指令来控制移动台(Mobile Station, MS)的功能,与GSM网络业务进行交互,例如 通过AT指令进行呼叫、短信、通讯录、数据业务等方面的控制。早期的时候,AT指令只是用于对Modem的操作,而且功能比较简。

既然AT指令能够直接操作Modem,也就是说它可以干很多“坏事“。例如安装了具备操作AT指令的android手机,有可能会偷偷的在后台发送短信,损耗掉用户的费用等。庆幸的是,现在的手机厂商还是“比较有良心的“,默认情况下操作AT指令的权限是不开放给第三方应用的(内置应用有可能具备)。

客户给了一款工程手机(innos)上内置了一款应用(JSR),经过了解是系统内置的应用,它就具备了操作AT指令的权限。怎么控制只有这款应用才能操作AT指令的呢?猜想和实践得出是控制应用id和签名来限制的。我们做了如下尝试:

  1. 反编译内置应用JSR,应用id保持一致,但签名不一致。安装到工程手机上无法正常使用功能。
  2. 在普通手机(魅族Mx,小米2,红米,coolpad,华为等)手机上获取ROOT权限并操作尝试操作AT指令,结果是在coolpad 5891上勉强能够操作ATI 和 AT+COSQ 获取到信号强度,但只能获取到电信的信号强度。
  3. 通过adb shell 来操作,查看是否具有 ttyUSB1,ttyUSB2 等文件,结果发现大部分手机都是没有的,除了那部coolpad5891。

基于这些研究,可以断定AT指令的操作是需要特殊的工程机器开放权限才能够操作的,于是反馈给客户,向手机厂商寻求帮助,结果跟我预料的一样,手机上要开放AT操作权限才行,然而,手机厂商大部分是不愿意这么干的,想想看这里还是存在巨大的风险。

开发小组以及作品

面对AT指令操作的技术难点,三个小组进行了各种尝试和技术攻关,虽然没能在AT指令上获得突破,但算是比较完整的完成了其他功能。

第一组:明中,宏心,伟源(技术经理)
这里写图片描述

这里写图片描述

第二组:啊荣(技术经理),小欧,小冯
这里写图片描述

这里写图片描述

第三组:广标,钟优(技术经理)
这里写图片描述

这里写图片描述

这里写图片描述

作品下载

小组一:信号强度检测app
小组二:信号强度检测app
小组三:信号强度检测app

项目总结

为期1周的项目暂告一个段落,因在AT指令操作上存在技术上的难点,需要手机开放权限才能进一步开发。经过这次的项目实战,各小组通力合作,进行技术攻关。虽没能最后完整的完成客户提出的需求,技术上的收获可以说是杠杠的,继续加油!

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值