admin管理员组

文章数量:1534192

2024年6月1日发(作者:)

基于 Android 平台的地震预警终端软平台的设计与一种实现

朱宏;王晓磊;刘磊;赵士达;高文晶

【摘 要】This paper discusses the development technology of Android

platforms for earthquake early-warning ,we introduce the

entire framework of our project design and Android application,then detail

the develop-ment methods of JPush push,the Baidu positioning

service,Baidu Maps API (Application Programming Interface), and other

open-source Android services,and their application to earthquake early-

warning tests reveal that the designed Android terminal can

effectively acquire earthquake early-warning information using the JPush

push technique,which also displays the user’s current position,epicentral

distance,and S-wave arrival aneous Android system testing

showed that this platform can achieve the above functions and is generally

compatible with the mainstream mobile phones on the ed

with other similar software in this industry,this earthquake ear-ly-warning

algorithm and communication technology are relatively open,and can

provide a secondary service for the identification of targeted settings in

different regions.%探讨 Android 平台在地震预警软件中的开发技术。首先介绍

系统的整体框架以及 Android 的架构,然后详细分析极光 JPush 推送、百度定位

服务和百度地图 API 开源服务在 Android 系统上的开发方法及其在地震预警软件

的应用。该系统可实现 Android 终端获取 Jpush 推送的地震预警信息、实时显示

当前场所位置和显示震中距及 S 波到达剩余时间等预警信息功能。

【期刊名称】《地震工程学报》

【年(卷),期】2016(038)006

【总页数】5页(P1016-1020)

【关键词】安卓;地震预警;JPush 推送;百度地图 API

【作 者】朱宏;王晓磊;刘磊;赵士达;高文晶

【作者单位】天津市地震局,天津 300201;天津市地震局,天津 300201;天津市

地震局,天津 300201;天津市地震局,天津 300201;天津市地震局,天津 300201

【正文语种】中 文

【中图分类】TP311.5;P315.75

技术交流

地震灾害一直是人类面临的主要灾害之一。为了减少地震灾害造成的损失[1],中

国地震台网中心已经开始应用云技术和消息推送技术进行地震速报结果的发布工作。

而地震预警的技术更苛刻,要求从报警时间上获取秒量级上的突破。不管是地震速

报还是地震预警,其地震信息获取及发布涉及的技术都可以归结到通讯领域。

为进一步利用通讯领域近年的科学技术,特别是广大用户使用的Android移动平

台[2],有必要从底层核心技术角度开发地震信息推送平台,提高震害防御信息的

信息社会服务功能。基于这些因素,本文结合JPush推送、LBS(定位服务)定位和

百度地图API(应用程序编程接口)的特点,研究基于Android平台的地震预警终端

软平台的设计与应用及相关开发技术。

Android系统是由Google公司和开放手机联盟推出的开放源码的操作系统[3],

主要用于移动设备,如智能手机和平板电脑。该软件层次结构自下而上分为以下几

个层次[4]:

(1) 基于Linux的内核的系统(OS);

(2) 各种库(Libraries)和Android运行环境(RunTime);

(3) 应用程序框架(Application Framework);

(4) 应用程序(Application)。

Android主流的开发环境是Java,开发平台选用Eclipse(一种基于Java的开源的、

可扩展的平台) [1]。Eclipse安装ADT(Android Development Tools,安卓开发

工具)后就可以下载并使用Android的SDK(Software Development Kit, 软件开

发工具包)。同时SDK还提供可视化的模拟器以及DDMS(Dalvik虚拟机调试监控

服务)工具,用于实时查看软件运行情况等操作[8-9]。本文的软平台开发基于以上

工具开发和调试,并最终在手机终端上通过测试和使用。

本团队开发的地震预警软终端显示平台App主要分为三部分:一是通过极光推送

将地震预警信号推送到手机上;二是在界面上实时显示当前位置,即定位功能,并

显示用户当前位置的经纬度;三是通过界面显示地震S波到来的倒计时时间。

2.1 JPush极光推送接收

极光推送(JPush)是极光公司开发者提供的消息推送服务,它通过利用云端与客户

端之间建立稳定、可靠的TCP/IP的长连接来向客户端应用推送实时消息。极光推

送服务提供消息暂存、转发和推送的功能,消息不会丢失,因此客户端无需保持在

线状态及进行反复轮询。单一终端多个应用共享一个服务进程和一条TCP(传输控

制协议)长连接,从而能有效降低手机的耗电量和数据流量[10]。极光推送服务为

开发者提供了一个快速推送信息的管理控制台,将推送功能可视化,可以直接通过

控制台针对特定的用户群完成通知、消息的推送。

2.1.1 JPush推送接收客户端整体设计

在Android平台开发Jpush推送接收客户端需要在项目中添加JPush服务的

Android SDK。如图1所示,JPush SDK起到了用户应用程序与JPush服务器的

桥梁作用,用户的应用程序不需要直接与复杂的Push HTTP/HTTPS API进行交

互,而是由JPush SDK与Push HTTP/HTTPS API进行交互来访问Push服务器,

从而使推送开发简单化[1]。

2.1.2 JPush推送服务SDK的集成

用户应用程序要接收JPush服务器推送的信息就必须对JPush SDK进行集成。在

本设计中采用无账号登录方式,用户无需接入JPush用户体系,每个终端直接通

过API Key向服务端请求用户标识id,服务器根据端上的属性生成userid。

Jpush SDK前端将生成一个SS的服务,启用设备的相关权限进行处理,优化与服

务器进行长连接的链路。例如接驳使用天津移动的网络去接入天津移动本地的机房

是最佳选择,延迟是10~20 ms,但如果因为信道故障等原因导致切换到边远地

区的某一台服务器上,延迟可能在300 ms以上。因此前端增加了可选服务器的设

置,根据接入网络的地点与接入进来的运营商去连接最佳服务器。JPush推送服务

实际上还提供了一个类似于DNS的服务。建立长连接之后,通过JPush推送的

MQ的机制,进到其他的IDC(Internet Data Center互联网数据中心)做处理,实

现各接收机房数据汇集到一起,集中处理。集成所需的核心代码如下:

android:theme=“@android:style/eBar”

android:configChanges=“orientation|keyboardHidden”>

android:name=“tivity” />

android:name=“T” />

android:name=“adService”

android:enabled=“true”

android:exported=“false” >

android:name=“eceiver”/>

2.2 基于百度地图API地震预警的信息显示

百度地图API是一套为开发者免费提供的基于百度地图的应用程序接口,包括

JavaScript、iOS、Andriod、静态地图和Web服务等多种版本,它可以运行百

度地图Android SDK开发的应用程序[11]。

2.2.1 用户当前位置定位和实时显示

百度地图 Android SDK是一套基于Android 2.1及以上版本设备的应用程序接口,

通过调用定位SDK的方法,实现地图当前位置的准确定位。以下定义了一个类来

实现BDLocationListener接口的方法,包含onReceiveLocation方法和

onReceivePoi方法。其中onReceiveLocation方法实现定位并获取用户当前经

纬度和方向。代码如下:

public class MyLocationListenner implements BDLocationListener {public

void onReceive Location(BDLocation location) {

if (location == null || mMapView ==null)

return;

MyLocationData locData=new r()

.accuracy(ius())

.direction(100).latitude(itude())

.longitude(gitude()).build();

ocationData(locData);

if (isFirstLoc){

isFirstLoc=false;

LatLngll=new LatLng(itude(),

gitude());

MapStatusUpdateu=Lng(ll);

eMapStatus(u);

}

2.2.2 利用TextView控件显示当前所在地的地理信息

百度地图SDK提供了获取经纬度的方法。首先需要实例化BDLocation对象,再

通过BDLocation方法的itude()和gtitude()方

法获取到当前经纬度后,利用TextView控件以醒目的颜色和合适的字体在屏幕上

展示出来。TextView控件为Android平台的文本编辑框,显示的重要信息都可以

通过此编辑框。 表示TextView中文字的颜色为红色。

tSize(15)表示文字的大小为15号。核心代码如下:

textView1=(TextView)findViewById(ew1);

t(“纬度:”+itude()+“”);

tColor();

tSize(15);

textView2=(TextView)findViewById(ew2);

t(“经度:”+gitude()+“”);

tColor();

tSize(15);

2.2.3 地震预警S波倒计时时间的显示

地震发生后,首先到达的是上下震动的P波,震动幅度相对较小。由于用户所处

位置与震中位置远近的不同,要过大约几秒、十几秒甚至几十秒,水平运动的S

波才会到来。地震预警就是利用地震发生后P波与S波到达的时间差,提前发布

地震信息。统计显示,在距离震源50 km内的地区,地震S波落后P波约7 s;

90~100 km内的地区落后11~13 s,即震源距离与虚波速度约8 km/s的比值。

地震预警时间(或显示终端显示的S波剩余时间)应小于这个时间才有预警效果。因

此对地震P波信号数据处理的准确性、实时性直接影响整个终端软平台的正常运

行[15]。

1976年7月28日唐山地区发生了里氏7.8级的地震,造成整个华北地区均有强烈

震感,而天津市是首都圈地区唯一遭受过烈度达到Ⅷ度以上的特大城市。通过后台

设置,将软件默认的震中位置设置为唐山“7·28”地震震中进行测试,然后通过

DistanceUtil的getDistance()方法得到当前位置和震中的距离,最后将该距离除以

S波在地壳中传播的平均速度3.5 km/s,得到S波到来的时间。

在.*下存在CountDownTimer这个类,通过继承这个类,实现它的

OnTick和OnFinish方法。将得到的时间值传入这个方法中,实现倒计时的功能。

核心代码如下:

class MyCountDownTimer extends CountDown

Timer{

public MyCountDownTimer(long d,long countDownInterval){

super(d,countDownInterval);

}

public void onFinish(){

t(“done”);

}

public void onTick(long millisUntilFinished) {

textView4=(TextView)findViewById(ew4);

tColor();

t(“倒计时(”+millisUntilFinished/1000+“秒)”);

}

}

其中:d为传入的倒计时时间值;countDownInterval为时间间隔,这里设置为1

000 ms,即1 s。

3.1 行业内同类软件对比

成都高新减灾所推出的“地震预警”软件已经可以在安卓市场和苹果市场上下载。

该软件无论是页面风格搭配、还是功能实现上都已走在了行业的前端。美中不足的

是,在数据来源上,成都高新减灾所使用了自主研发的简易加速度计,使数据的准

确性及权威性及与地震台站的精密仪器之间存在一定的差异,且其预警算法及通讯

技术并不公开,无法直接二次开发。

同高新所“地震预警”App相比,本文自主研发的终端软平台有自己的核心代码,

可以按用户需求随时调整,但也存在一定的劣势,如界面规划布局不甚合理、未能

提供其他避险抢险知识、地震信息获取源尚需进一步完善等。

3.2 应用前景

2014年由天津市地震局牵头申请的国家科技支撑计划“燃气管网地震预警与自动

处置关键技术研究与示范”项目通过了预评审。本文进行终端平台开发的最终目的

是为此项目的地震信息决策与指令发布平台进行服务。后期项目启动后,将燃气管

网的分布示意图集成到软件中进行展示,并通过预警信息决策与指令发布平台对预

警信息进行发布。整个预警信息发布流程如图2所示。

软件仿真采用华为荣耀6手机实机测试,分别对系统的三个主要功能进行测试。

手机主要参数是Android4.4操作系统、3G RAM,海思920八核处理器并支持

WIFI功能。接收JPush推送消息展示测试如图3所示。定位经纬度、地震预警S

波倒计时和距离显示如图4所示。

本文基于Android平台和极光推送服务、百度开源服务(百度定位和百度地图)开

发了地震预警终端显示软件平台。该平台主要获取各类地震预警信息:一是通过

JPush推送消息,最快地获取预警信息;二是获取地震震中后,获取用户当前位置

和震中距;三是计算显示S波剩余到达时间。通过Android系统真机测试证明,

该平台可实现以上功能且对市场上的主流手机普遍兼容。

【相关文献】

[1] 赵士达,张楠,杨爽.基于云计算和Android的地震应急信息获取系统[J].计算机应用, 2014,34(增

刊1): 298-300. ZHAO Shi-da,ZHANG Nan,YANG on Earthquake

Emergency Information Acquisition System of Cloud Computing and Android[J].Computer

Applications,2014,34 (Supp1):298-300.(in Chinese)

[2] 郑云卿,黄琦.基于Android平台的软件自动化监控工具的设计开发[J].计算机应用与软

件,2013,30(2):235. ZHENG Yun-qing,HUANG Design and Development of Software

Automation Monitoring Tools Based on Android Platform[J].Computer Applications and

Software,2013,30 (2):235.(in Chinese)

[3] 彭璇,吴肖.Google Map API在网络地图服务中的应用[J].测绘信息与工程,2010,35(1):25-

27. PENG Xuan,WU Application of Google Map API on the Network[J].Surveying

and Mapping Information Engineering,2010,35(1):25-27.(in Chinese)

[4] 陈璟,陈平华,李文亮.Android内核分析[J].现代计算机,2009(11):112-114. CHEN Jing,

CHEN Ping-hua, LI Kernel Analysis of Android[J].Modern

Computer,2009(11):112-114.(in Chinese)

[5] 宋小倩,周东升.基于Android平台的应用开发研究[J].软件导刊,2011,10(2):104-105. SONG

Xiao-qian,ZHOU ch on Application Development Based on Android

Platform[J].Software Guide,2011,10(2):104-105.(in Chinese)

[6] 高焕堂.Android应用框架原理与程序设计36技[M].台北:广悦文化事业有限公司,2008:13-83.

GAO d Application Framework Principle and Program Design 36

Technology[M].Taipei: Kangyor Culture .,2008:13-83.(in Chinese)

[7] 陈望挺,林满足,陈建,等,竺乐庆.基于JSP和Android的C/S结构问卷系统[J].计算机应用,

2013,33(3):886-889. CHEN Wang-ting,LIN Man-zu,CHEN Jian,et al.C/S Structure

Questionnaire System Based on JSP and Android[J].Computer

Applications,2013,33(3):886-889.(in Chinese)

[8] Ed ,Android:Introducing Google’s Mobile Development

Platform[M].American Pragmatic Bookshelf,2009:278-282.

[9] 孟德欣,谢二莲.使用Google XML APIs Service实现Web查询[J].计算机应用研究,

2004,24(增刊1):252-253. MENG De-xin,XIE Query of WEB in Use Google XML

APIs Service[J].Computer Application Research,2004,24 (Supp1):252-253.(in Chinese)

[10] 张波,王娟,邱宏茂,等.一种自动扫描地震漏检事件方法的研究与实现[J].地震工程学报,

2013,35(2):321. ZHANG Bo,WANG Juan,QIU Hong-mao,et ch and

Implementation of an Automatic Scanning Method of Seismic Event Detection[J].China

Earthquake Engineering Journal,2013,35(2):321.(in Chinese)

[11] 豆瑞星.百度成立LBS事业部[J].互联网周刊,2012,11(5):53-55. DOU Set

up LBS Division[J].Internet Weekly,2012,11(5):53-55.(in Chinese)

[12] 许德玮,桑梓勤,刘磊,等.基于云计算的医疗卫生位置服务平台研究[J].医学信息学杂志,

2013,34(6):8-13. XU De-wei,SANG Zi-qin,LIU lei,et ch on Medical and Health

Location Service Platform Based on Cloud Computing[J].Journal of medical

information,2013,34(6):8-13.(in Chinese)

[13] 马志强.基于Android平台即时通信系统的设计与实现[D].北京:北京交通大学,2009:11-15.

MA and Implementation of Instant Communication System Based on

Android Platform[D].Beijing Jiaotong University,2009:11-15.(in Chinese)

[14] 郭宏志.Android应用开发详解[M].北京:电子工业出版社,2010:42-44. GUO Hong-

ed Introduction to Android Application and Development[M].Beijing:Publishing

House of Electronics Industry,2010:42-44. (in Chinese)

[15] 于凯,左自波,王颖轶,等.基于远程实时监测的高烈度区沉管隧道施工可视化系统[J].地震工程

学报,2014,36(3):762-763. YU Kai,ZUO Zi-bo,WANG Ying-yi,et ization System

of Immersed Tube Tunnel Construction Based on Remote Real-time Monitoring[J].China

Earthquake Engineering Journal,2014,36(3),762-763. (in Chinese)

本文标签: 地震预警推送平台信息