李华明,康宝生
(西北大学 信息科学与技术学院,西安710127)
基于NTP的Android时间同步系统设计与实现
李华明,康宝生
(西北大学 信息科学与技术学院,西安710127)
针对移动设备保持精确系统时间的需求,在对适用的时间同步协议分析的基础上,设计并实现了一种基于NTP协议的Android系统时间同步系统。阐述了系统功能模块和完整的时间同步工作流程,设计中采用了跨编译的开发模式,形成了多层模块化、可复用的系统架构。经过适配性测试、性能测试和实验结果分析,表明系统可为移动设备提供毫秒级精度的授时功能,并具备较好的设备适配性和运行时系统资源占用率低的特点。
NTP协议; Android系统; 时间同步; 跨编译; 设备适配性
随着智能设备和网络带宽的技术发展,移动终端不再局限于通讯功能,高速的计算能力和智能操作系统使移动终端具备了巨大的发展空间,移动终端自身也发展出多种形式的产品,例如手机、平板电脑、电子书、手持游戏设备甚至工业控制设备等,越来越多的网络服务和应用被移植到移动终端上。
精确的系统时间作为分布式网络应用系统的基础支撑指标之一[1],其精确性对于移动设备而言越来越重要。例如手机商务办公系统和事务提醒软件,准确的系统时间是保证效率的关键因素之一;针对手机开发的订票系统、电子商务软件以及学习考试系统,也不能缺少准确的时间控制;运动监测系统、医疗辅助软件则需要在准确的时间内进行身体状态分析或医疗措施的记录等。从移动设备的安全性出发,时间同样是一个不可缺少的基础参数,智能操作系统用日志的方式记录下每个时刻系统中运行的应用程序,以及这些程序进行的操作,准确的系统时间在安全评估中将起到重要的作用。不论是用户应用的实际需要还是系统安全的保障需求,都对于移动设备保持时间的精度提出了更高的要求。
利用已被广泛应用的成熟可靠的授时体系,通过时间同步技术可以达到使移动设备保持准确时间的目的。可以应用于移动终端的时间同步方法主要有4种。第1种是采用NITZ(Network Identity and Time Zone)协议[2]的网络对时方法,NITZ需要电信运营商和网络设备支持,通过基于短波跳频通信的时间信息同步法进行时间同步。目前移动设备使用最广泛的Android操作系统和IOS操作系统中,内置的时间同步功能都是基于NITZ协议实现的。由于NITZ自身的限制,其时间精度只能保持在分钟级,而且在很多地区实际上是无效的。第2种方式是通过NTP协议[3]在网络上获得高精度的时间。NTP协议是基于TCP/IP的同步时间协议,利用协议包含的一个64 bit时间戳进行时间同步,其获取国际标准时间UTC的来源是网络中众多的NTP时间服务器,通常可获得毫秒级的精度[4]。由于其稳定性和高精度的特点,使用NTP协议进行时间同步,成为目前互联网应用中使用最为广泛的方法。第3种是通过卫星信号实现时间同步的方法。随着硬件技术的发展,大部分移动终端都包含了GPS模块,部分移动终端也包含了“北斗”授时定位模块,其中以GPS信号授时最为常见。GPS授时有多种途径,例如通过1 PPS秒脉冲信号、串口通信、IRIG-B输出等[5],在工业应用中可以保持毫秒级的时间精度。但手机等移动设备因为硬件限制不能采用这些时间同步方式。通过直接应用NMEA-0183协议[6]解析GPS信号,获取$GPGGA或$GPRMC数据信息中的UTC时间,是第3种可行的移动设备时间同步方法,但这种方法依赖于卫星信号的接收强度,对终端使用的环境和位置有明显的限制条件。第4种方法是基于IEEE1588协议[7]进行时间同步,该协议又称为精确时钟同步协议PTP(precision time protocol),在设备之间建立主从关系,实现时间和频率的同步,在1588v2版本推出后,其时间精度可以达到微秒级。Hsu[8]等将PTPd守护进程成功地部署在Android手机上,实现了移动设备之间的PTP时间同步。但由于该协议需要多个设备共同参与计算,因此对于普通用户而言,不具备实用性。
从上述的4种同步方法可以看出,对于移动设备的程序开发而言,NTP协议是硬件依赖性最小的时间同步协议,其应用的环境和位置也不受特殊限制,毫秒级的同步精确度能够满足各种移动应用系统需求。因此,本文选择使用NTP协议作为时间同步系统实现的基础协议。
在开源智能操作系统Android平台基础上,本文基于NTP协议设计了一个时间同步系统,系统通过互联网访问NTP授时服务器获得UTC时间,根据获得的标准时间同步设备本机时间,以满足移动设备用户对时间的精确性的需求。整个系统的功能包括5个部分:①时间获取及同步功能;②系统Root检验功能;③儒略日计算功能;④农历计算功能;⑤系统参数设置。
时间获取及同步功能,实现的是从授时服务器上获取的标准时间和本机时间同步的功能,系统功能中的Root检验、儒略日计算和农历计算3个功能都是贯穿在整个时间获取及同步工作流程中的。完整的工作流程如图1所示。
图1 时间获取及同步工作流程
时间获取及同步工作流程中,需要进行3次状态检验,第1次为网络连接状态的判断,通过Android系统提供的网络连接管理器接口,可以获取当前系统的连接状态,无论是采用2G、3G还是Wi-Fi连接方式,只要移动设备中存在有效的连接,即可进行下一步操作;第2次检验是针对是否获得UTC标准时间,通过预先设定的超时阈值,在限定的时间内由线程获取授时服务器的标准时间,如果超时则标示服务器无应答;第3次判断是针对应用程序是否具备修改时间的权限,出于安全性的目的,Android系统禁止在没有Root权限的情况下,由程序修改系统时间,因此要执行时间同步操作,必须先进行权限的检查。应用程序级的Root权限检测,可在静默状态下通过调用Shell环境下的su命令,向系统提出临时切换用户权限至Root高权限状态,通过判断系统返回的信息,确定是否可以获得高级别权限。
儒略日和农历计算是将获得的标准时间转化成简化儒略日和阴历的时间信息。计算的阴历的时间信息,包括阴历日期、时辰、天干、节气和属相这些具有中国传统特色的时间信息。系统参数设置功能是用来设置访问的NTP授时服务器地址信息、访问超时阈值、以及是否进行儒略日和农历计算。
移动应用App开发目前处于一个技术快速发展的时期,新的开发技术和架构不断出现,跨平台的App开发是必然的发展趋势[9]。本文中设计并开发的Android时间同步系统名为SmartTime,开发中选择Microsoft Visual Studio 2010作为开发平台,使用C#作为开发语言,通过Xamarin.Android框架实现了跨编译环境的开发模式。应用程序在编译时,被编译为.NET框架中间语言IL代码,运行时将由Xamarin框架自动转换为机器码。这种开发模式不同于传统App开发,它实现了统一编码语言实现的业务逻辑代码,可以在Android、IOS、Windows Phone甚至PC上的Windows多种操作系统上重用[10]。平台间共享代码模式,简化了多平台应用开发的复杂性,当针对某一具体平台进行开发时,仅需要对其表示层根据操作系统特点进行定制开发。同样,系统的开发必须采用分层架构设计,对表示层和业务层进行分离。
SmartTime系统采用多层模块化的架构设计,不但实现了表示层、业务层、数据层的分离,而且实现了面向对象的模块化高内聚、结构清晰的特点,提高了代码的重用性。整个系统架构设计如图2所示。
图2 SmartTime系统架构设计
在表示层的实现过程中,SmartTime采用了多页显示的标签界面模式,内嵌了3个屏幕界面,不同界面切换采用Tab标签的方式进行。当执行时间获取操作时,系统启动TimeThread线程,获取时间信息并进行相关计算,计算的结果反馈给主UI线程,绘制在设备屏幕上。多线程的异步任务模式,使SmartTime具备了良好的用户体验效果。图3为时间同步系统实际运行界面图。
图3 时间同步系统实际运行界面图
移动应用程序的部署和测试,与传统开发过程不同,不能只局限于算法正确性和鲁棒性(robustness)的测试,还必须进行软件与移动设备的兼容适配性测试。大量终端厂商采用各式各样的硬件配置、定制化非标准的Android系统,使得应用程序与终端的适配性问题越来越严重,无法安装、意外崩溃和闪退、屏幕比例失调、UI错位、无响应等问题十分普遍。对SmartTime的兼容性测试采用了百度移动云测试中心的Native App云测试方法,针对HTC、三星、华为、中兴等15个品牌的134台移动设备进行了兼容测试,基本覆盖了目前主流的硬件解决方案、屏幕分辨率和Android版本以及测试结果如表1所示。
表1 终端兼容性测试
在测试未通过的8台设备中,3台设备存在无法安装的错误,4台设备出现了闪退现象,1台设备运行正常但存在程序无法卸载的情况。同时,使用monkey测试工具对系统进行了性能测试,在性能测试中,使用魅族MX3和三星Galaxy Note II两台手机作为测试设备,测试后的性能指标数据见表2。
表2 性能测试数据
在实验中采用30 s的时间间隔,由SmartTime向NTP授时服务器(pool.ntp.org)发出时间请求,并对时间偏差数据进行记录,累计300次后对数据进行分析,图4为时间偏差结果图。图中X轴为次数,Y轴为偏差秒数。分析计算后得出时间偏差的均值为0.203 ms,标准差为5.445 ms(分析结果的有效位数取小数点后3位)。
图4 测试时间偏差结果图
从上述实验结果可以看出,SmartTime能够为移动设备提供毫秒级精度的时间同步功能。根据表1的终端适配率可以看出,采用此架构设计开发出的应用程序具备了良好的设备兼容性,表2中的数据证明了不同的硬件配置对于应用程序的加载、电池耗量以及显示帧率影响较大,但整体系统在运行过程中占有的系统资源小,能够提供良好的用户体验。
本文针对移动智能设备的精确定时需求,对适用的时间同步方法和协议进行了探讨,选择了使用NTP协议作为底层时间同步协议,设计并实现了一个应用于Android系统环境下的时间同步系统。系统整体架构采用了多层模块化设计,实现了表现层与业务层的分离,开发过程中应用了跨编译环境的开发模式。架构中业务代码重用性高的优势,也使其可以通过定制表现层,快速构建出应用于其他智能系统环境下的时间同步系统。经过实验测试,该系统具有设备兼容率高、运行资源占用率低的特点,并能够为移动设备提供毫秒级精度的时间同步功能。
[1]赵英, 王旖旎, 马严, 等.基于NTP的时钟调整策略分析[J].小型微型计算机系统, 2008, 29(10): 1811-1815.
[2]BARI F, BONNER T W.Network identity and time zone(nitz) functionality for non-3gpp devices: United States, 20080 032736A1[P].2008-02-07.
[3]MILLS D L.Network Time Protocol Version 4 Reference and Implementation Guide[R].Electrical and Computer Engineering Technical Report.State of Delaware: University of Delaware, 2006.
[4]刘立月, 王更生, 魏永军, 等.分布式系统时钟同步设计与实现[J].计算机工程, 2006, 32(2): 279-281.
[5]DANA P H.Global positioning system(GPS) time dissemination for real-time applications[J].Real-Time Systems, 1997, 12(1): 9-40.
[6]KLAUS B.The NMEA 0183 Protocol(2001)[EB/OL].(2013-04-02)[2014-05-26].http://www.tronico.fi/OH6NT/docs/NME A0183.pdf.
[7]IEEE Std.1588-2008, IEEE Standard for a Precision Clock Synchronization Protocol for Networked Measurement and Control Systems[S].2008.
[8]HSU Wang-hsin, LIU You-shun, LIN Wen-yen, et al.A measurement of time synchronization on mobile devices[C]// IEEE International Instrumentation and Measurement Technology Conference, 2012(5): 2692-2694.
[9]GAVALAS D, ECONOMOU D.Development platforms for mobile applications: status and trends[J].IEEE Software, 2011, 28(1): 77-86.
[10]PUDER A, ANTEBO I.Cross-compiling Android applications to iOS and windows phone 7[J].Mobile Networks and Applications, 2013, 18(1): 3-21.
Design and implementation of an NTP-based time synchronization system for Android
LI Hua-ming,KANG Bao-sheng
(College of Information Science and Technology,Northwest University,Xi′an 710127,China)
Aiming at keeping accurate system time for mobile devices to maintain,and according to an analysis of applicable protocols,we designed and implemented an Android time synchronization system based on NTP protocol.The system modules and whole synchronization workflow were described,a cross-compiler development model was used in the design,a multi-layered modular and reusable architecture was formed.The equipment suitability testing,the performance testing and the analysis of the experimental results demonstrated that the system can provide a timing precision of millisecond for mobile devices,and it has characteristics of good suitability and low resources occupancy at runtime.
NTP; Android; time synchronization; cross-compiler; equipment suitability
P127.1
A
1674-0637(2015)02-0082-06
10.13875/j.issn.1674-0637.2015-02-0082-06
2014-09-12
李华明,男,博士研究生,高级工程师,主要从事虚拟现实,分布式计算,高性能计算研究。