杨 刚 王 曼 屈胜年
(西安邮电大学通信与信息工程学院 陕西 710061)
据世界卫生组织统计显示,意外跌倒是老年人慢性致残的第三大原因。全球每年大约30.3%的65岁以上老人、50%的80岁以上老人都发生过跌倒,造成了骨折、软组织挫伤和脑部损害等意外伤害[1~2]。此外,我国目前高血压患者约有1.6亿且逐年增多[3]。高血压是老年人最常见的心血管疾病,又是导致脑卒中、冠心病、糖尿病、慢性肾病及心肾功能衰竭,致残、致死的主要危险因素之一[4]。由此可见,跌倒及高血压疾病严重影响老人的身心健康和生活质量,而且增加了家庭的痛苦和负担。如何及时发现异常体征,定位救助跌倒老人在监护设备中显得尤为重要。
传统的监护设备采用B/S方式,利用固定的PC监护,不能便捷及时监护老人。近些年随着物联网的发展,市场上已有针对老人监护问题的解决方案。但并不适用于子女等监护人远程便捷使用,且功能单一、易用性差,难以满足老人的健康监护及其对晚年生活质量的更高要求。
本文拟设计与实现基于Android平台的老人远程定位监护系统。通过无线GPRS技术自动将前端设备所采集的信息上传到云服务器,方便子女利用该系统通过手机实时查看老人跌倒状况、血压及位置,同时利用service组件进行异常信息的预警,实现老人远程定位监护功能。
老人远程定位监护系统主要分为下位模块、云服务器、上位Android手机客户端模块。系统架构图如图1所示。为了提高下位机采集模块中各项指标的准确性,加速度传感器采用三轴陀螺仪加速度传感器,血压传感器选用光电脉搏波反射传感器,定位选用sim公司的sim908。云服务器选择乐联网公共云平台,其可以快速搭建实现,且操作简捷运行稳定,可有效地节约成本。
图1 系统总体架构图
下位机主要负责数据的采集与传输,通过从传感器获得血压、经纬度以及加速度数据,完成对健康指标数据的采集和压缩编码的处理,最后通过GSM网络,经过Internet传送给云服务器,客户端可以通过Internet访问服务器并获得指标数据。云服务器是下位机和客户端之间的桥梁。
Android客户端主要完成与服务器间的数据交互以及对自身数据的存储和处理、网络通信等功能,实现对所监护老人血压、位置、跌倒等相应信息的监测及预警功能。
Android是Google开发的基于Linux平台的开源手机操作系统。它包括操作系统、用户界面和应用程序[5]。本系统采用C/S架构,其中服务器采用公共的云平台,客户端部分采用Android JAVA开发。客户端利用sharedpreferences实现数据存储,结合SOCKET完成网络通信,最终编译之后打包生成APK文件[6],可直接安装在Android手机上。相比传统模式的PC监控系统,本设计不受时间、地域、环境、距离等因素限制,利用Android平台设计控制下位的应用软件,操作方便灵活,具体架构图如图2。
图2 Android客户端架构图
Android手机客户端系统测试采用红米手机,Android4.4.4版本,内核3.10.28。开发环境为Android+ADT+SDK+JAVA+JDK1.8+Eclipse。云服务器可以同时与多个手机客户端进行通信,为每个客户端分配1个端口号,用户登录进入首先从shared-preferences中获取默认设备ID,然后随着用户切换页面实时获取当前页面显示的相应数据,并且启动service,在service中的定时器每隔2min向云服务器发起请求实时获取血压、跌倒、位置信息的请求,然后根据用户设置的阈值给出相应的提示。老人远程定位监护系统具体实现流程如图3所示。
图3 客户端运行流程图
Android系统采用脚本语言完成界面设计[7]。本系统主要包含体征监测界面、位置监测界面与设置主界面,并利用三个radiobutton组成的底部导航栏实现主界面的切换。
体征监测界面主要包括两部分,分别为血压监测与跌倒监测。由于两个监测页面所含部分UI元素相同,且便于以后拓展软件监测参数,因此采用Fragment结合viewpager实现血压与跌倒两个标签页的标签点击切换与滑动切换功能。系统采用血压进度条的形式展示老人单词血压,利用血压趋势图分析老人一周血压数据,同时结合ListView以列表的形式展示老人一年的血压测试数据。跌倒监测界面运用人形的跌倒及站立图表示老人实时的运动状态,采用曲线图展示过去14min内加速度值的变化。
位置监测界面利用高德地图绘制老人的位置。同时,通过计算老人位置和子女设置的围栏圆心之间距离与半径做对比,从而进行围栏预警。此外,结合运用grideView实现的日历查询某天老人的运动轨迹。
设置主界面主要分为两部分,一部分为用户个人信息设置,旨在管理用户。另一部分为系统设置,主要包括围栏半径设置、围栏进入提醒、围栏离开提醒以及使用助手。
客户端涉及到大量的数据处理,但为节省手机内存资源,其中大部分数据都采取实时获取显示,只有小部分数据需存储。由于数据量较小,采用SharedPreferences存储方式,相比市场上采用SQLite数据库存储的其它应用,此方法避免了创建数据库,创建表,写SQL语句等诸多操作,相对而言更加方便简洁,更适合客户端。SharedPreferences数 据 存 储 在/data/data/<packagename>/shared_prefs目录下。
具体实现如下:
//获取变量(默认设备ID)值
public static String getId(){
Return mPreferences.getString(mId,“”);
}
//存储变量(默认设备ID)值
public static void setId(String id){
SharedPreferences.Editor editor=mPreferences.edit();
editor.putString(mId,id);
editor.commit();
}
采用SharedPreferences存储的变量有默认监控设备ID,默认监控设备名,历史轨迹查询日期,开启或关闭进入围栏提醒,开启或关闭离开围栏提醒。
上位机可监护多个下位机监护设备,但在同一时刻只可显示默认设备的健康信息,若需查看其它设备的信息,则需通过已知的设备ID绑定设备,并将其设置为默认设备。
客户端的通信模块选用HTTP协议,HTTP协议是应用层协议,属于高层协议;传输层则使用TCP/IP协议。原理上利用Scoket编程实现HTTP协议,Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组API接口[8]。然而实现HTTP协议非常耗时,对Socket套接字以及HTTP协议细节都要非常熟悉,还需经过大量测试和验证,才可正确实现HTTP协议。
Android平台的开发环境中,已经集成apache的相关组件:HttpClient。因此不必写Socket来实现HTTP协议,只需调用HttpClient来完成与服务器对接的REST API接口即可,大大减轻API接口实现。然而由于API接口众多,接口实现中采用工厂模式以保证系统的高效率,如图4。
图4 通信模块工厂设计模式UML图
基于C/S模式,从建立链路的角度可将推送方式分为两类:一类为服务器主动发送信息,客户端显示数据,与此同时保证与服务器的长链接,当服务器需要再次发送一批数据时,客户端显示数据并保持连接,以此类推[9]。另一类为客户端周期性发起链接询问,并建立短链接,接收完信息则释放链路。相比较两种方式,前者推送效率较高,因为不必建立新的链接,但由于当没有消息推送时也必须保持此链接,因此会造成很多资源的浪费。在目前网络流量消费普遍的时代,为避免搭建服务器,可以利用现有的云平台。本系统就是采用后者实现推送。
推送主要采用service实现。service是Android四大组件之一,是一个没有用户界面的后台执行耗时操作的应用组件[10]。其他应用组件都可以启动service,并且当用户切换到另外的用户场景时,service将持续在后台运行。当应用启动时,在程序入口Activity中启动service,为保证系统的高效率,在子线程中设置定时器,每2分钟向服务器发起请求位置、血压与是否跌倒信息,当请求成功时可将信息通过公有类共享给其它需要展示数据的界面组件,同时与用户预设阈值比较。在老人离开或进入预设地理围栏,老人跌倒,老人血压非正常时推送相应的报警信息及时提醒监护人老人可能发生意外,监护人可结合系统提供的老人位置信息及时施救,从而避免救助不及时所引发的身体伤害。此外,每2min的网络请求也可满足推送消息的及时性要求。
乐联网是一个可以迅速实现物联网应用的公共云平台。该云台不需要繁琐编程就可以将传感器与乐联网平台连接,并实现在该平台上存储、查询和测量数据的分析。该平台还提供了网络连接功能模块,可以让所有测量设备都具备联网功能,利于集中监控和设备的管理[11]。该平台同时提供了数据查询、分析、对比等基本功能。
该系统的主要功能是实时获取老人位置、血压及是否跌倒信息,并将获取的信息展示在客户端显示屏上;另外,可以在老人进入与离开用户设置的地理围栏、血压超出用户预设范围以及老人跌倒时给予及时的数据信息推送。
测试时,首先确保下位机电量充足,并邀请2位同学模拟老人一周的生活状态,并令其在某时刻模拟老人跌倒。在本系统的监控下,对这两名同学进行一周不间断的监护测试,部分数据如下列图所示。
图5为其中一位同学一周的血压信息记录以及最近一次的血压状况分析。图6为某时候超出正常血压范围所收到的即时警告信息。
图5 血压一周记录
图6 老人血压超出阈值
图7 为其中一名同学模拟老人跌倒,记录跌倒前后十四分钟内加速度值。其中横坐标表示时间,纵坐标表示加速度值。图8表示加速度值超过预警值时的警告信息,说明老人已跌倒。
图7 老人加速度值记录
图8 老人跌倒的警告消息
图9阴影区域为开启围栏功能,同时用户设置地图上某一位置为围栏中心,500m为半径的围栏区域。图10为老人离开围栏区域的警告信息。
图9 开启地理围栏
图10 老人离开围栏区域
本文设计了一种基于Android的老人远程定位监护系统,在1台Android手机上可以同时对多个老人实现远程定位监护。系统不仅能时刻监测老人血压、心率、跌倒状况和位置,并可在特殊情况下及时给予推送提示。测试结果表明,系统可以实现上述功能,监护人可通过该系统更好地了解老人身体状况,并进行及时救助。
[1]林茵.老年人跌倒的危险因素及预防对策[J].中国老年学杂志,2003,23(1):36-37.LIN Yin.The risk factors and prevention countermeasures of the elderly fall[J].Chinese Journal of Gerontology,2003,23(1):36-37.
[2]朱秀芳,陈建英,赵榕.老年人跌倒的预防及护理[J].实用医技杂志,2008(28):3932-3933.ZHU Xiufang,CHEN Jianyin,ZHAO Rong.The prevention and nursing of the elderly fall[J].Journal of Practical Medical Techniques,2008(28):3932-3933.
[3]涂良珍,芦颜美.老年高血压诊治进展[J].心血管康复医学杂志,2010,19(5):555-559.TU Liangzhen,LU Yanmei.The progress of diagnosis and treatment of senile hypertension[J].Chinese Journal of Cardiovascular Rehabilitation Medicine,2010,19(5):555-559.
[4]徐成斌.高血压治疗新策略——‘SELECT’优化治疗[J].中国心血管杂志,2007,12(6):401-406.XU Chenbin.Hypertension treatment optimization-‘SELECT’new strategies[J].Chinese Journal of Cardiovascular Medicine,2007,12(6):401-406.
[5]詹成国,朱伟,徐敏.基于Android的测控装置人机界面的设计与开发[J].电力自动化设备,2012,32(1):119-122.ZHAN Chengguo,ZHU Wei,XU Min.Man-machine interface design and implementation based on Android for measuring and control unit[J].Electric Power Automation Equipment,2012,32(1):119-122.
[6]尚明华,秦磊磊,王风云,等.基于Android智能手机的小麦生产风险信息采集系统[J].农业工程学报,2011,27(5):178-181.SHANG Minghua,QIN Leilei,WANG Fengyun,et al.Information collection system of wheat production risk based on Android smartphone[J].Transactions of the Chinese Society of Agricultural Engineering,2011,27(5):178-182.
[7]李慧,刘星桥,李景,等.基于物联网Android平台的水产养殖远程监控系统[J].农业工程学报,2013,29(13):175-180.LI Hui,LIU Xingqiao,LI Jing,et al.Aquiculture remote monitoring system based on IOT Android platform[J].Transactions of the Chinese Society of Agricultural Engineering,2013,29(13):175-181.
[8]袁蒙,王明圆,王婉君,等.独居老人智能监护及报警系统[J].中国新通信,2012,14(21):7-12.YUAN Men,WANG Yuanyuan,WANG Wanjun,et al.The elderly who live alone smart monitoring and alarm system[J].China New Telecommunications,2012,14(21):7-12.
[9]武江涛,贾卫,黄小寅,等.无线音乐点播系统的研究与开发[J].控制工程,2009(16):126-129.WU Jiangtao,JIA Wei,HUANG Xiaoyin,et al.Research and Development of Wireless Audio Order System[J].Control Engineering of China,2009(16):126-129.
[10]杨猛,吕卫,宋垣.基于Android的心电监护系统设计[J].电视技术,2015,39(14):34-36.YANG Men,LV Wei,SONG Yuan.Design of ECG Monitoring System Based on Android OS[J].ideo Engineering,2015,39(14):34-36.
[11]肖凡,马娅婕,余湧,等.Arduino和乐联网在PM2.5实时监测系统中的应用[J].自动化仪表,2015,36(12):63-66.XIAO Fan,MA Yajie,YU Yong,et al.Application of Arduino and Lewei 50 in Real-time Monitoring System of PM2.5[J].Process Automation Instrumentation,2015,36(12):63-66.