贾泳蓓
(常州工学院计算机工程学院,江苏常州213002)
JIA Yongbei
(School of Computer Information & Engineering,Changzhou Institute of Technology,Changzhou 213002)
基于蓝牙的血糖管家助手手机App的设计与实现
贾泳蓓
(常州工学院计算机工程学院,江苏常州213002)
随着“物联网”概念的提出,智能手机的运用达到了一个新高度。血糖管家助手是一款面向需要糖尿病监护人群的、基于蓝牙的移动医疗终端App。该终端基于Android平台,以JDK为开发环境,采用Java语言和SQL数据库设计并实现,拥有人工输入数据和蓝牙自动上传数据2种数据传输形式,同时可根据获得的测量数据智能分析血糖指标的严重程度,并将这些数据绘制成趋势图表统计某天的健康状况。
Android;Java;蓝牙;血糖管家手机App
JIA Yongbei
(School of Computer Information & Engineering,Changzhou Institute of Technology,Changzhou 213002)
自进入21世纪以来,全球糖尿病例呈逐年递增趋势,这是一种易发、多发病症,已经成为继心脑血管病和癌症之后,严重侵害人类健康的“第三大杀手”。就目前医疗技术和设施条件来讲,始终无法从根本上有效治疗糖尿病,只能通过连续的血糖监测加以控制[1]。随着近几年来家用医疗器械的迅速发展,家用血糖检测仪器已经开始逐渐普及。目前,已有不少在售的家用血糖检测仪器附带了简单的随机软件,其界面各异,功能不同,但是基本功能都一样,即数据的存储和趋势图的绘制,或者增加一个计算血糖检测结果平均值的功能。这些功能其实更适合于提供给主治医师作为治疗依据,患者个人参考价值并不大。
以罗氏为代表的传统血糖监测仪由于附带了自己的血糖管理软件,因此价格上相比普通的家用血糖仪昂贵。而血糖管家助手作为家用血糖检测仪器的辅助软件,仅需通过蓝牙连接普通的血糖检测设备,在保留多用户管理、标准血糖值快速对比、趋势图绘制等功能的基础上,还增加了血糖指标高低程度判断的全新功能。
现如今,常见的智能手机开发平台有Symbian、IOS、Windows以及当下正在蒸蒸日上的Android。而Android系统基于其开源和免费性,有着极高的市场普及率。基于上述原因,本课题最终采用Android为开发平台。
蓝牙作为一种短程通信技术,虽然与NFC相比功耗较高,设置程序也略长,但其网络类型支持单点对多点,传输速度与距离也有很大优势,目前仍是众多移动设备之间进行无线信息交换的主流技术。因此,本课题也采用了蓝牙作为智能手机与家用血糖仪之间数据交换的载体。
基于蓝牙的血糖管家助手手机App,在Android平台下,辅以科学的血糖分析方法,符合大多数糖尿病患者对于血糖监测管理方面的要求。本系统的主要功能包括数据管理模块、用户管理模块、蓝牙上传数据模块和曲线拟合模块。数据管理模块主要是实现记录功能,用户手动输入数据,主要包括血糖值、性别、身高及所在地址;用户管理模块包括修改个人信息、查询个人信息、修改密码及注销登录;蓝牙上传数据模块是通过蓝牙连接血糖仪,并控制血糖仪测量血糖从而实现蓝牙数据传送;曲线拟合模块是显示曲线,比对标准血糖曲线进行初步的判断,再根据血糖预测算法,分析病患血糖指标的高低程度,最终给出健康评估报告。
1.1设计方案
1)搭建开发平台。这里包括JDK的下载安装与环境配置、Eclipse的下载与安装、SDK的下载与安装以及ADT的下载与安装[2]。
2)设计手机的程序框架。根据需求分析,对每个模块进行程序实现方法的规划。血糖管家助手主要有4个功能模块,即数据管理模块、个人信息管理模块、蓝牙上传数据模块和曲线拟合模块。
3)编写代码。用Java语言进行程序编写,实现血糖测量和管理的基本功能。
4)调试程序。程序完成后,为检测软件是否符合需求分析和能否实现任务书要求的功能,需要进行系统测试。系统测试主要采用黑盒测试和白盒测试,然后根据测试结果来修改程序,使之更加完善。
5)优化用户界面。界面的优化主要是为了使用户体验更好、更流畅。
1.2功能模块设计
系统总体应划分为四大模块(不包括登录注册模块),具体的划分如图1所示。
图1 功能结构模块示意图
2.1系统模块实现
基于对功能作用的考核,整个程序应划分成如下四大版块,分别是程序启动、用户界面、后台服务和数据库适配器,模块关系图[3]如图2。
图2 模块关系图
从模块结构图中可以看出,后台服务是中心枢纽。其中,主要的就是“数据获取模块”,它负责获取由蓝牙连接血糖仪后测出的血糖值。后台服务处在服务器位置,时刻保证正常工作态势。
用户界面可以在数据库内搜索资料,其优点在于:一方面可以保证客户端的稳定性;另一方面,后台服务持续对数据进行更新,从而保证其实效性和准确度。
数据库适配器包涵了可以对SQLite进行作用的所有工作流程,用户界面对其实施调配达到操作数据库的目的。
用户界面、数据库及模块设计包涵了程序设计的几乎所有内容。
2.2曲线拟合模块实现
系统生成曲线的方法有很多。为了让曲线不受数据的范围限制,可以沿X轴和Y轴灵活地拖拉,本文使用的方法是导入第三方jar包和achartengine-0.7.0.jar包,然后调用其中已经封装好的类和函数。
曲线拟合模块设计的类也比较多,主要的类是XueTang_Chart_Activity。曲线拟合模块的主要设计思路是将输入的数据与专家数据进行对比,以便分析曲线并得出结论,其布局就是调用setContentView( )语句,采用R.layout下的xuetang_chart_activity布局文件。
向后台请求获取专家数据并返回是用GetPostOper( )语句,访问的服务器名称是WebUrl。这里返回涉及JSONObject jsonObject=new JSONObject( )语句。JSONObject-lib包是1个beans,collections,maps,java arrays,xml和JSON互相转换的包,而JSONObject( )是创建1个JSONObject( )对象。返回的内容包括获取的专家数据和用户名。这里调用了MyApplication中的1个存放着用户信息的全局变量infoBean来获取用户信息。
选择日期用的是日历控件,包括年、月、日且是轮转的。整体的对话框用AlertDialog.Builder builder=new AlertDialog.Builder(this)语句来实现。AlertDialog是Dialog的一个直接子类,也是Android系统中常用的对话框之一。AlertDialog所有的构造方法都是写保护的,因此不能通过AlertDialog的构造函数产生1个AlertDialog,而只能通过AlertDialog.Builder来产生。一旦监听到“请选择日期”被确定,就会用Thread t1=new Thread( )来启动线程。
获取特定日期的值大致与获取专家数据类似,也是通过GetPostOper( )语句来向后台请求数据。返回的数据是用户名、日期及特定日期的值。与获取专家数据不同,这里调用的是MyDataBean类。MyDataBean类中定义了获取的时间(精确到小时)及获取的地址、数据值。
获取数据值后要显示曲线,需要数据dataset和视图渲染器renderer。曲线有2条,即输入的数据曲线和专家数据曲线。曲线显示在坐标轴中,分为X轴和Y轴,X轴是时间,Y轴是血糖值。
首先,设置X轴的当前方向,语句是XYMultipleSeriesRenderer mRenderer=new XYMultipleSeriesRenderer( ),还要设置Y轴的最小单位及刻度个数、背景颜色、X轴和Y轴的标题属性、图表标题的属性。设置这些属性用的语句都是mRenderer.set。
其次,分别设置专家数据和个人数据的数据点的属性并将点的值显示出来。设置第1条曲线上点的属性采用r.set语句,设置第2条曲线上点的属性采用rTwo.set语句。
最后,更新界面和分析数据并得出结论。主体是用switch-case语句,当然也有消息提示,仍然用Toast.makeText( ).show( )语句来实现。分析曲线的大致过程就是比较个人数据和专家数据的差距,如果差值小于0.5,则显示在某时刻血糖正常;反之,如果差值大于0.5,则显示在某时刻血糖不正常。曲线拟合模块的流程图如图3所示。
图3 曲线拟合模块流程图
3.1手动测试方案
该部分主要以测试系统功能为主,并对功能模块进行手动测试,保证系统符合设计功能。所有的流程处理按照系统设计方案完成,所有处理正确。
测试的功能有注册个人信息、登录、修改资料、修改密码、手动输入血糖值和地址、蓝牙上传数据、生成曲线图并分析出健康报告。
3.2工具测试方案
该部分测试主要以方便编写测试脚本的单元测试和无需编写测试脚本的系统测试为主,不承担测试系统功能的任务。
3.2.1单元测试
单元测试的步骤如下:①编写测试脚本。测试脚本是进行自动化测试的执行代码。单元测试要以一个功能函数为单位进行用例的测试。②建立测试。将所有测试脚本按照单元特性组织成测试组件,并对其全部内容实行统一性的测验,在降低测试频次的同时也方便统计测试结果。
3.2.2系统测试
为了验证血糖管家助手手机App是否符合规定的需求,笔者进行了系统测试。将手机与计算机连接起来,进行实际运行,并在实际运行环境下检测软件的潜在问题。
主要工作内容分为2块,即功能测试和健壮性测试。功能测试,即测试App的功能是否正确,是否符合需求分析的内容。健壮性测试,即测试系统在异常情况下能否正常运行,表现为容错能力和恢复能力良好。
系统测试的流程如图4所示。
图4 系统测试的流程
3.3辅助测试工具
系统调试中进行各种测试都需要相关的辅助测试工具,所用辅助测试工具[4]如表1所示。
表1辅助测试工具
软件工具EclipseJunitMxdpefstatMonkeyrunner功能开发单元测试及白盒测试性能测试黑盒测试
现在很多中、老年人对糖尿病的概念很模糊,到底什么症状才是糖尿病,糖尿病又有什么具体的标准?是不是某一次的指标超标就表明得了糖尿病或者说血糖控制失衡?为此,患者只能定期去医院检查。依托血糖指标深入分析的进阶功能,血糖管家助手以人为本,以患者为中心,辅以科学的分析手段,给出合理的治疗建议,让患者得到最贴心的照顾,能免去患者来回奔波和办理繁琐就医手续的痛苦,随时了解自己的血糖情况,帮助高血糖患者管理血糖,让患者自觉主动地改变原来的生活方式,养成科学的饮食习惯,进行必要的体育活动。凭着Android系统的开源与廉价,以极少的支出达到了昂贵检测设备的运用价值。
本课题在Android平台及在这个平台上进行的软件开发进行了大量工作,但仍有很多不足,系统的健壮性还不够,许多地方仍有待改进。目前本软件只是具备最基本也是最核心的分析功能,为了满足用户更多的需求,提高软件的友好性,未来还将增加其他功能,比如自动定位功能、提醒用药功能、短信通知功能和社交软件分享功能等。
[1]李本富.基于智能手机的血糖监测系统[J].计算机系统应用,2012(8):140.
[2]叶达峰.Eclipse编程技术与实例[M].北京:人民邮电出版社,2006:10-11.
[3]郝俊寿,丁艳会.基于Android平台的校园通软件设计与实现[J].福建电脑,2012(9):98.
[4]张大治,应群.精通Eclipse[M].北京:清华大学出版社,2006:17.
责任编辑:陈亮
Design and Realization of a Mobile APP Named Blood Glucose Assistant Based on Bluetooth Technology
With the proposal of ″Internet of Things″,applications for smart phones have reached a new height.Blood glucose assistant is a trendy mobile App for health care based on Bluetooth targeting people in need of blood glucose monitoring.Based on the Android platform,this mobile App of blood glucose assistant was designed and realized via Java language and SQL database under the JDK development environment.The terminal had two data transmission forms including manual input and automatic uploading via Bluetooth.The terminal could intelligently analyze the severity of blood glucose index according to the data and draw a trend chart to describe the physical condition on a certain day.
Android;Java;Bluetooth;mobile phone App of blood glucose assistant
10.3969/j.issn.1671-0436.2016.04.006
2016- 06-23
贾泳蓓(1984—),男,硕士。
TN929.5;TP311.5
A
1671- 0436(2016)04- 0024- 04