射电望远镜台站的Android手机干扰管理软件设计与实现*
2020-05-12刘志勇
李 军,王 娜,刘志勇,李 宁,杨 垒,颜 帅
(1. 中国科学院新疆天文台,新疆 乌鲁木齐 830011;2. 中国科学院大学,北京 100049;3. 中国科学院射电天文重点实验室,江苏 南京 210008;4. 成都七中育才中学,四川 成都 610011)
随着不断增加的固定电子设备(如基站、电脑和路由器等)[1]和移动电子设备(如手机、便携式电脑和相机等)[2]的使用,射电天文台站受到的射频干扰日益严重。通常固定电子设备产生的信号可根据射频干扰管理条例采用屏蔽等技术手段抑制或消除[3],而移动电子设备产生的信号具有实时监测困难、管控难度大等特点,尤以可移动、基数大的手机信号更为突出。用户在射电望远镜附近使用手机时产生的信号,如手机与基站之间的通信信号、手机发出的热点信号、手机搜索基站的信号和开关机时产生的瞬时信号等[2,4],影响天文观测数据的质量。据工信部统计,2018年我国手机用户达到15.7亿(1)http://www.miit.gov.cn/newweb/n1146290/n4388791/c6692299/part/6692305.pdf,另据央视网公布,2018年上半年500米口径球面射电望远镜(Five-hundred-meter Aperture Spherical Telescope, FAST)接待游客数量为513万人次(2)http://news.cctv.com/2018/09/19/ARTILC4VdwN79euV5lQj9mKl180919.shtml。若不对游客携带的手机采取管控措施,直接影响射电望远镜观测数据的质量。对于影响天文观测数据的手机信号,现有的解决办法包括设置无线电宁静区、设定警示牌和使用无线探测器检测手机[3]。然而,上述解决办法存在缺陷,如工作人员管理寄存手机会增加管理成本;台站如果不强制寄存手机,用户可能会忘记开启飞行模式或关机;警示牌的数量有限,致使作用收效甚微。可见,现有方式不能主动、实时、有效地管理手机。
针对上述现状,本文设计和开发了一款基于安卓系统的手机干扰管理软件(Mobile Interference Management Application, MIMA)。当用户进入离望远镜较近的区域,如无线电宁静区,手机会以振动和铃声的方式提醒用户开启飞行模式或关机,以降低手机信号对射电天文观测数据的影响。
1 功能需求
设计一款能帮助手机用户在射电望远镜无线电宁静区内主动、智能管理手机运行状态的软件,功能需求包括:(1)当手机用户进入宁静区时,主动提醒用户管理手机;(2)用户离开宁静区,提醒用户恢复正常通信;(3)具有服务端与客户端;(4)初始化配置信息位于服务端,手机干扰管理软件开启后能自动加载数据;(5)记录用户在宁静区内开启/关闭飞行模式或开关机操作,并将操作记录上传至服务端;(6)定位方式包括手机定位、基站定位和第三方定位;(7)能同时管理多个天文台站;(8)增加站点管理功能,并由管理人员负责审核。
2 系统设计
良好的系统设计能保证手机干扰管理软件可扩展、可移植和易维护等特性。本文主要从设计思路、架构设计和流程设计3方面进行阐述。
2.1 设计思路
国内外射电天文台站的无线电宁静区(或电磁波宁静区)是依据望远镜的口径、频率,台址的电磁环境、地形特征、地方规则等因素设置。因此,不同天文台站对无线电宁静区的层级范围不同,命名规则也各不相同,但大多设置为3级,从内到外的要求逐步降低[5-6]。如FAST的3个层级从内到外对应区域的范围分别为半径5 km、10 km和30 km。110米射电望远镜则依托地形特征将无线电宁静区从内到外划分为长方形的核心区和限制区,区域范围分别为2.5 km × 4 km、10 km × 15 km以及半径为30 km的协调区。用户在不同层级的提醒方式存在差异,当处于协调区时,手机干扰管理软件会弹出对话框,且伴有铃声和振动(提醒时长为10 s,提醒2次);进入限制区后(用户不离开限制区),提醒15 s,最多提醒两次;当位于核心区时,提醒时长为20 s且只提醒一次。使用球面距离公式[7]
D=Rarccos [cosβu1cosβt1cos(αu1-αt1)+sinβu1sinβt1]
(1)
计算手机与望远镜的距离,并判断用户所处的区域。其中,ρ1,ρt分别为地球上两个点的坐标(αt1,βt1)和(αu1,βu1);D为点ρ1和点ρt的距离;R为地球的半径。
在调研过程中发现,大多数天文机构有多个台站,手机干扰管理软件能同时管理多个台站。其中,依据手机定位技术、球面距离公式等相结合的方式判断与用户最近的射电望远镜,获取用户与望远镜的距离,判断用户是否处于无线电宁静区,以提醒用户管理手机。
2.2 架构设计
系统由3层模型-视图-控制器(Model-View-Controller, MVC)架构的客户端系统架构和4层分层架构的服务端系统架构组成,这两个架构能提高模块之间的耦合性,降低模块的内聚性,保障系统层级间的接口定义标准,使系统具有可扩展、可移植和易维护的特性[8]。
2.2.1 客户端架构设计
客户端使用3层的MVC架构,图1展示了客户端由用户层、应用层和存储层组成。其中,用户层为用户查看并与之交互的界面,能显示用户与射电望远镜的距离,将存在的缺陷或未添加的望远镜配置信息反馈给管理员,也可快速跳转到全球定位系统或飞行模式界面。应用层是整个客户端架构的核心,通过分析第1部分的功能需求,提出以下解决方法:(1)根据手机耗电量和耗流量的不同,将第三方定位(如百度Android SDK定位)、基站定位和全球定位系统定位等定位方式[9]赋予不同的优先级(见表1);(2)用户所处位置的基站信号差(或无基站信号)、全球定位系统已关闭和未开启飞行模式的情况下,应用程序会提醒用户开启全球定位系统,以判定用户位置;(3)界面退出后,能继续实现定位、数据管理、判别距离、网络传输和进程管理等。存储层能保存位置信息、中间结果及配置信息等。SQLite存储射电望远镜的经纬度,宁静区的范围、层级,用户操作记录等。其中,射电望远镜配置信息表包括射电望远镜唯一编码、名称、无线电宁静区的范围和层级等字段;用户操作记录表包括用户唯一编码、飞行模式状态、开关机状态、距离、手机序列号和开启/关闭飞行模式或开/关机的时间等字段。
图1 客户端系统架构
Fig.1 Architecture of clientsystem
表1 手机定位类型
2.2.2 服务端架构设计
服务端系统架构使用4层的分层架构,由用户层、逻辑层、数据层和存储层构成(见图2),能存储和查询手机用户在手机干扰管理软件上的操作记录。用户层显示用户的操作及搜索操作记录。逻辑层管理用户层的请求分发,将存储层的数据返回用户层。数据层提供数据访问、网络协议等接口,以完成数据的读取。存储层保存手机用户的操作记录及管理员的操作记录。
2.3 设计流程
图3为手机干扰管理软件的设计流程,包括初始化配置信息,计算用户与射电望远镜的距离,识别与用户最近的射电望远镜,判断用户是否处于无线电宁静区,确定是否开启飞行模式或关机,最终将用户操作记录上传到服务端。
3 系统实现
系统实现包括初始化、系统功能实现等,保证手机干扰管理软件在宁静区能主动智能地开启飞行模式或关机,记录用户在宁静区内的操作,并最终将用户在客户端的操作记录上传至服务端。
图2 服务器端系统架构
Fig.2 System architecture of server
图3 手机干扰管理软件系统流程图
Fig.3 Flow chart of MIMA system
3.1 初始化
系统初始化由初始化配置信息和初始化定位组成。配置信息的初始化以键值对的形式存储在JSON中,初始化3种定位方式能获取手机用户的经纬度。其中,初始化Android SDK定位需导入jar、so包和添加开发密钥、权限等,且在应用程序初始化过程中需引用全局变量、调用初始化函数。基站定位初始化包括导入jar、so包及添加权限等,通过调用初始化函数可获取经纬度、地理位置。全球定位系统定位的初始化过程则需导入jar、so包和添加权限等。
3.2 功能模块实现
客户端使用的MVC架构使应用程序的前台界面和后台服务分离。其中,开发环境为Android Studio,界面的开发工具为JAVA + XML,后台服务的开发语言为JAVA。图4为客户端功能模块类图,界面中的类MIMAFront展示用户与望远镜的距离,将展示距离保留两位小数。后台服务是客户端的核心,在界面退出后,类BackService依赖类JudgeDis, KLService和ShowDiag能定位、计算、判断和提醒等。管理进程类KLService确保后台服务类BackService能正常运行,而类JudgeDis依赖初始化配置信息(类InitConInfo)、手机定位(类Location),以判断用户与望远镜的位置关系。类ShowDiag为用户进入宁静区时,能弹出对话框提醒用户管理手机。
图4 客户端模块类图
Fig.4 Class diagram of client module
服务端中的用户层使用开发工具HTML, CSS和JavaScript,逻辑层、数据层和存储层的开发语言为JAVA。图5中的类BehRecSerImpl继承于类DBUtil的数据库操作功能,以获取模型数据,且在类BehRecSerImpl实例化了BehRecSer的接口函数getPageSetting(), getAll()等。与类BehRecSerImpl具有依赖关系的类PageSetting为管理页面的基本设置,pageSize为一个页面显示的信息条数,currentPage, rowCount, pageCount分别为当前页、信息的总条数和页面数量,startIndex, endIndex分别表示首页和尾页。类Page是PageSetting类的部分,为前台页面信息的展示。
4 系统测试
系统测试包括功能测试和结果对比两部分,其中,功能测试为软件在宁静区内提醒用户管理手机,而结果对比则比较手机在开启飞行模式和关闭的状态下产生的信号强度。
4.1 功能测试
在手机上安装该软件后,结合全球定位系统定位、基站定位和Android SDK定位技术可获取用户的经纬度,使用球面距离公式计算用户与射电望远镜的距离,判断离用户最近的望远镜并将数据显示于图6(a),当用户处于无线电宁静区时,会弹出一个图6(b)所示的提醒对话框,此时用户点击 “飞行模式设置” 按钮便可进入图6(c)展示的飞行模式界面。同时,服务端存储用户在手机干扰管理软件上的操作,管理员可查看或搜索手机用户在宁静区的操作记录。
图5 服务端模块类图
Fig.5 Class diagram of server module
图6 手机干扰管理软件系统界面。(a) 获取用户的当前位置;(b) 提醒用户管理手机信号;(c) 进入飞行模式界面
Fig.6 MIMA system interface. (a) Get a user′s location; (b) Remind users to manage mobile signals;(c) Enter an airplane mode interface
4.2 结果对比
在测试手机的开启/关闭飞行模式时发现,正常运行时会发出信号搜索2 G,3 G和4 G的基站,以检测手机是否正常通信,此时搜索手机产生的信号见图7(a);开启飞行模式后,手机不会产生搜索信号,测试结果见图7(b)。因此,手机干扰管理软件能有效地管理手机产生的信号,以减小手机信号对射电望远镜天文观测数据带来的危害。
图7 软件系统管理和抑制干扰前后对比。(a) 手机正常运行;(b) 手机开启飞行模式
Fig.7 Before and after the APP′s interference management and suppression.(a) Mobile runs normally; (b) Mobile in airplane mode
5 总结与讨论
电子设备产生的信号会影响射电望远镜的观测数据质量,且这类信号很难实时监测、追踪和管理,无线电宁静区周围用户随身携带手机产生的信号尤为突出。因此,本文设计和开发了一款基于安卓系统的手机干扰管理软件,当用户进入宁静区时,主动提醒用户开启飞行模式或关机,以降低手机信号对射电天文观测数据的不良影响。相比于其他抑制或消干扰的方法,该方法具有以下优势:(1)相对于投放大量的警示牌,使用手机干扰管理软件的经济成本低;(2)通过手机的友好提醒,使游客知晓移动电子设备对射电天文观测数据的危害;(3)另外,本方法也是对射频干扰管理条例的补充。
手机干扰管理软件的不足之处是目前的测试环境为安卓系统,苹果公司的移动操作系统平台尚未开发完成,需进一步的开发和完善,以实现智能手机平台的全面管理。