




已阅读5页,还剩72页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
LANZHOUUNIVERSITYOFTECHNOLOGY毕业设计题目基于ANDROID的便携式健康监测系统ANDROID系统开发学生姓名学号专业班级通信2011级3班指导教师学院计算机与通信答辩日期2015年6月16日摘要随着移动互联网的迅速发展,利用便携终端监测人体健康状态成为一种愈发可行的医疗手段。本设计针对此问题提出了一套切实可行的设计方案,设计中首先通过脉搏传感器采集到人体的脉搏信号,然后借由蓝牙以无线形式发送给ANDROID终端,同时在ANDROID下提取蓝牙信号,以及实现数据的读取与存储,并以接收到的数据实时绘制波形,最终通过对波形的处理分析可得出测试者当前的心率,并对测试者当前的健康状态作出简单的评测和建议。本设计的数据来源为光电脉搏传感器,是通过透光性检测血液浓度变化并以光强度的变化引起的电压变化作为数据传出;此数据经蓝牙开发板处理为数字信号,并由蓝牙形式不断广播;在ANDROID下开发的应用通过开启设备的蓝牙功能搜索到广播的蓝牙信号,通过协议建立连接并获取数据服务,实时接收采集的脉搏信号;应用对采集的数据进行算法处理,存入文本文件,并在图表中给出实时的波形图;通过分析此波形,应用可计算出测试者当前的心率,并由心率对测试者的健康状况作初步的判断。其他功能诸如注册功能,静态显示等也可通过在应用中添加相应代码实现,目的是通过保证数据的准确性和添加必要的功能,丰富并完善应用,使之可以广泛使用。关键词脉搏;蓝牙;ANDROID;波形;健康ABSTRACTALONGWITHRAPIDDEVELOPMENTOFMOBILEINTERNET,MONITORINGTHEHEALTHSTATUSBYPORTABLETERMINAL,BECOMESAMOREFEASIBLECHOICEOFMEDICALTREATMENTTHISDESIGNPUTFOWARDANAVAILABLESCHEMEAIMEDATTHEPROBLEMINTHEDESIGN,FIRSTOFALL,COLLECTINGHUMANPULSESIGNALBYPULSESENSOR,THENSENDITTOTHEANDROIDTERMINALBYBLUETOOTHASWIRELESSFORM,EXTRACTTHESIGNALFROMBLUETOOTHONANDROIDSYSTEM,REALIZESTHEDATAREADANDDATASTORE,ANDTHENDRAWTHEREALTIMEWAVEFORMACCORDINGTORECEIVEDDATA,THECURRENTHEARTRATECOULDBEOBTAINEDTHROUGHTHEHANDLINGOFWAVEFORMANALYSISANDTESTING,FINALLYWELEARNONTHECURRENTHEALTHSTATUSOFTHETESTERANDMAKEASIMPLEREVIEWANDADVICETHEDATASFORTHEDESIGNCOLLECTEDBYPHOTOELECTRICPULSESENSOR,THEPLUSESENSORWORKSBYTHETRANSMISSIONOFLIGHT,TODETECTTHECHANGEOFBLOODCONCENTRATIONWITHTHECHANGEOFLIGHTINTENSITY,RESULTINVOLTAGECHANGINGTHEDATACONVERTEDTOTHEDIGITALSIGNALONTHEBLUETOOTHDEVELOPMENTBOARD,ANDBROADCASTCONSTANTLYTHEAPPLICATIONONTHEANDROIDCOULDSTARTBLUETOOTHOFTHEEQUIPMENTANDGAINEDTHEBROADCASTINGBLUETOOTHSIGNAL,THENESTABLISHEDACONNECTIONANDACCESSTODATASERVICES,RECEIVEDTHEPULSESIGNALINREALTIMESTATETHEDATAWOULDBEPROCESSEDBYALGORITHMINAPPLICATION,SAVEDINTHETEXTFILE,ANDREALTIMEWAVEFORMISGIVENINTHECHARTONTHEVIEWOFSCREENAANALYZINGTHEWAVEFORM,THEAPPLICATIONCOULDCALCULATETHECURRENTHEARTRATEOFTESTER,ANDTHENAPPLICATIONCOULDSHOWTHETHEHEALTHYCONDITIONOFTHETESTERACCORDINGTOTHEHEARTRATEOTHERFUNCTIONSSUCHASREGISTRATION,ANDSTATICDISPLAYCANBEACHIEVEDBYADDINGTHECORRESPONDINGCODEINTHEAPPLICATION,SUCHAPPROACHENSURETHEACCURACYOFTHEDATAANDADDTHENECESSARYFUNCTION,ENRICHANDPERFECTTHEAPPLICATION,MAKEITCANBEWIDELYUSEDKEYWORDSPLUSEBLUETOOTHANDROIDWAVEFORMHEALTH目录第一章绪论111移动医疗的背景112设计的意义与目的213设计的内容和功能实现214设计的可行方案3141MATLAB压电传感器3142ANDROID应用光电传感器3第二章硬件设计421ANDROID硬件平台4211模拟器GENYMOTION4212智能手机622蓝牙开发平台8221蓝牙40BLE简介8222开发板CC254X823心率传感器9231压电传感器9232光电传感器10第三章软件设计1231软件整体结构12311软件功能说明12312整体流程说明1332各功能模块设计13321蓝牙传输模块13322数据接收模块16323数据处理模块17324图表显示模块19325界面布局21326注册模块22327设置模块25第四章运行及测试2741运行效果27411测试与咨询27412注册及设置3042技术难点33421硬件难点33422软件难点34总结38参考文献39附录一外文文献翻译40附录二程序源代码63致谢70第一章绪论11移动医疗的背景移动医疗,国际医疗卫生会员组织HIMSS给出的定义为,MHEALTH,就是通过使用移动通信技术例如PDA、移动电话和卫星通信来提供医疗服务和信息,具体到移动互联网领域,则以基于安卓和IOS等移动终端系统的医疗健康类APP应用为主。它为发展中国家的医疗卫生服务提供了一种有效方法,在医疗人力资源短缺的情况下,通过移动医疗可解决发展中国家的医疗问题1。随着时下智能手机的普及,如何利用便携的智能手机辅助移动医疗监测,成为一个新兴的热门话题,在医学,IT领域掀起一股“移动医疗”的潮流2。就时代科技背景而言,一切与便民服务相关的工作最终都将被“移动”,成为一股股“移动XX”潮流,而“移动医疗”恰恰是其中的一种,也是相当重要的一种。眼观当下,衣,可以在“淘宝”手机客户端直接购买,食,可以在“大众点评”中获得有利信息,行,可以在“百度地图”“携程旅行”中随时得知路况或踩点,住,可以在“58同城”中查看租房买房信息可以预见的是,医疗和教育将来也必会在移动互联网中大放异彩,然后成为生活中耳熟能详的一部分。当下移动医疗才刚刚起步,其应用模式中大多都是借助相应的传感器(例如红外,压电,光电等)来采集医疗信号,实现的功能也以信号显示为主,而智能手机作为拥有高速的数据传输能力和强大数据处理能力的便携终端设备,可以作为医疗传感器信号的移动接收和中转平台,甚至成为最终的处理平台。智能手机可以通过蓝牙、WIFI等方式和外设进行无线连接,基于此,可将便携传感器获得的数据以无线方式发送给智能手机,智能手机把医疗数据通过WIFI、INTERNET等方式与服务器完成通信。这有利于扩大数据采集、健康监护的应用范围,使得人们可以在携带一些传感器的情况下,比较灵活地实现远程数据采集、医疗监护3。随着谷歌眼镜、智能手表等智能消费终端的推出,一股由可穿戴设备掀起的科技浪潮正试图开启物联网20时代的大门。相较于物联网10时代对传统行业的信息化模式,由可穿戴医疗设备带动的物联网20时代,正在致力于突破孤岛,实现各种应用的互联。而在亚健康和个性化健康管理的观念日益普及下,可穿戴设备也在成为唤醒医疗物联网20的潮流先锋4。目前大型应用市场中已经涌现了一批用于简单医疗的APP应用,有根据输入的参数(如身高,体重)判断体型是否合格的,有一些日常健康指导的(比如预防传染病或感冒的常识),还有和硬件设备结合开发的计步器(用于跑步时),用于调整生物钟的睡眠闹钟,测心率的心率应用但是也明显表明,在不配合硬件的情况下,仅仅软件是无法完成太多测试的,也无法提供用户太多有用的信息或数据。如果在未来,医用设备能够便携化,就代表着移植到智能设备中的可能性很大,也就意味着,那是一个带着手机就能随时随地检测身体健康状态的时代,一个真正的移动医疗时代。12设计的意义与目的脉搏即体表可触摸到的动脉搏动。当大量血液进入动脉将使动脉压力变大而使血管直径扩张,在体表较浅处动脉即可感受到此扩张,即所谓的脉搏。中医将脉搏变化作为治病的主要手段,称为“切脉”。测量脉搏是病人必须检查的一个项目,通过脉搏的测量可以知道很多信息,这也成为了一个切入点如果可以实时测量脉搏,那么就意味着可以实时通过脉搏了解病人的大致状况。以此推导,如果手机应用能够实时测量脉搏,那么只要有手机的用户都可以测量自己的脉搏PLUSEWAVE5,并通过其测量的数据得到有用的信息。传统模式下,测量脉搏由专用的医用设备或有专业经验的医师完成,在日常生活中非专业人士也不能准确测量自己的脉搏,更难说察觉脉搏的起伏变化,这也是医疗不能深入日常生活的最主要原因。本设计则充分利用手机的无线通信功能,使用传感器采集脉搏信号,通过手机蓝牙接收信号,将智能手机变成一个“医疗设备”(MEDICALEQUIPMENT6)。相对于传统模式下,采集的医疗数据需要上传到专门的服务器进行分析,移动医疗模式下,智能手机完全可以实现在手机本地对数据进行智能分析。利用智能的计算能力,处理采集的脉搏数据,并得出测量结果,用户可以在更短时间内看到数据分析结果和相关的健康建议,也避免了时间的浪费。而随着智能手机性能的迅速提高,在本地进行复杂医疗数据的处理将会愈加具有可行性。13设计的内容和功能实现设计的主要内容是开发一个ANDROID应用,以蓝牙的形式接收传感器采集的脉搏信号,并将信号数据绘成波形反馈给用户,并根据数据分析为用户做初步诊断,并给出简单的健康建议;在此基础上,对应用功能进行扩展,如存下信号数据以供有需要的用户自行查看分析,力求更方便地服务于用户。本设计主要是软件上的功能,因此以实现软件功能为核心。软件功能主要分蓝牙模块,数据传输模块,数据处理模块和绘图模块。蓝牙模块负责通过蓝牙通信协议检测周围匹配的蓝牙设备(BLE设备),并显示到应用界面中以供用户选择,用户选择点击之后可以开启蓝牙数据传输服务。数据传输模块承接蓝牙模块,开启蓝牙传输服务之后,程序会自动接收传输过来的数据并拟进行二次处理。数据处理模块即在传输的数据基础上,对其数据进行一系列算法处理,可将数据存入文件,也可用于绘图。绘图模块是建立在ANDROID下ACHARTENGINE绘图引擎的基础的,此处将已经处理的数据通过曲线图的方式在图表中绘制出来,并实时更新显示。14设计的可行方案设计主体在于通过特有的传感器脉搏信号,经由一定的传输手段传至某个智能平台,并由智能平台上的一个处理软件对接收到的信号进行数据化,并加以图形描绘。经过前期的调研和准备,本设计之初需要以下设备和方案。1脉搏传感器,采集脉搏信号2信号发送器,将信号发送出来3信号接收器,接收信号4处理器,将信号进行数据处理5绘图器,将数据绘成波形图6分析器,将波形做算法分析7显示器,将分析的结果反馈给用户以此判断,其中只要有一个环节不同,就会产生不同的实施方案,信号的发射和接收任务在本设计中均采用蓝牙承载,其他环节中影响最大的就是脉搏传感器和处理器,这两个环节的不同会使整个设计有不同的实施方案。传感器和传输手段的不同产生了两个不同的实施方案,一是通过有线传输压电传感器采集的脉搏数据,另一个是通过蓝牙传输光电传感器采集的脉搏数据。141MATLAB压电传感器本设计早期使用压电脉搏传感器,通过USB接口连接电脑,利用压敏电阻的特性将手腕脉搏跳动的起伏值模拟为传感器反应出的电压值,并以MATLAB串口读取作为软件处理方案,用MATLAB将压电传感器传出的电压值绘成波形图。问题在于压电传感器过于灵敏,且受干扰较大,测出的波形噪声信号难以处理,故而进度缓慢。142ANDROID应用光电传感器由于ANDROID系统的移植性强,装载ANDROID系统的设备越来越多且便携性大大提高,计划将此软件移植到ANDROID平台中,利用光电传感器和相应的蓝牙开发板,将传感器采集到的脉搏信号传输通过蓝牙的形式传输到智能设备中,并利用ANDROID下较为流行的图表引擎ACHARTENGINE绘制相应的波形。问题在于光电传感器所配套的蓝牙开发板属于蓝牙40BLE设备,只有ANDROID43以上的系统和装载了BLE的智能设备才能检测到,不过随着手机的更新换代,应该会具有更好的兼容性。第二章硬件设计21ANDROID硬件平台ANDROID系统需要相应的硬件平台支持,并且由于蓝牙40BLE的特殊性,需要能够支持ANDROID43系统及以上和装载蓝牙40的智能平台才能应用到实际开发中。若不考虑蓝牙,WIFI,以及传感器相关的开发,那么GENYMOTION完全可以胜任开发的绝大部分需求;当然若需要实际的硬件支持,最佳方案就是用一款智能手机进行真机联调。211模拟器GENYMOTIONGENYMOTION是一套完整的工具,它提供了ANDROID虚拟环境7。开发ANDROID的ECLIPSEADT开发包中其实有自带的模拟器EMULATOR,之所以选用另外的模拟器原因有二。EMULATOR运行速度缓慢,对比之下,GENYMOTION由于基于VIRTUALBOX,本质是虚拟机,无论是启动速度或者是应用载入速度都要更加快捷,性能更优越,在GENYMOTION出现之后,被ANDROID开发者们冠以“史上最快ANDROID模拟器”的称号,这是一方面原因。图21GENYMOTION和EMULATOR的创建设备界面另一方面,GENYMOTION的源码包较为简洁明了,创建虚拟设备时只需填入设备名称即可,其他属性均按照实际型号的真机定制,而EMULATOR自定义的属性较多,自主性较强,但大多设置并没有必要,而且其启动后尺寸是固定的,不能随时进行调整,默认的屏幕尺寸高度会和PC的高度一致,导致开发视图的不便(任务栏会遮住屏幕下方),相反GENYMOTION就可以在启动虚拟设备后自由调整其宽高度,以方便不同视图的需要。图21为两者创建虚拟设备时的界面。GENYMOTION安装流程如下1注册GENYMOTION账号2下载GENYMOTION安装包3安装VITUALBOX4安装ECLIPSE或者INTELLIJ插件注册需要通过其官方网址HTTP/WWWGENYMOTIONNET/,注册后,开发者可以选择模拟器的系统环境,如图22所示。图22GENYMOTION选择系统环境界面选择好开发的系统环境之后,在联网状态下会自动下载源码包,这里我们选择ANDROID43的系统,安装并创建完毕后如图23。图23GENYMOTION已经创建好的系统环境启动虚拟设备,可以看到界面与真实手机一般无二,如图24所示。图24GENYMOTION虚拟界面同时,可以在ECLIPSE的DDMS视图中看到已经检测到的ANDROID设备,如图25所示。图25ECLIPSE中检测到的虚拟设备至此,GENYMOTION虚拟的硬件开发环境已经搭建完成。212智能手机涉及到蓝牙或传感器之类模拟器暂时不能模拟出的部件时,开发就需要借助真实的ANDROID设备。本次设计用到的智能手机为华为荣耀4X,操作系统为ANDROID44,支持蓝牙40BLE。相对于模拟器来说,真机并不需要人为创建定制设备,可以直接投入开发使用。不过由于智能手机仍需要连接电脑进行开发中的通信,所以一些注意事项需要注意一下1手机需进入“USB调试模式”,不同的手机有不同的设置,开发者需根据相应的机型提前设置好,类似图26。图26手机上的USB设置2需要特定的驱动需要安装相应的驱动,否则无法检测到连接的ANDROID设备,一般是由PC系统自动匹配安装,安装的驱动为“ANDROIDCOMPOSITEADBINTERFACE”,打开“设备管理器”后会显示相应的接口,如图27。图27ANDROID设备调试驱动3安装好驱动,开发工具ECLIPSE切换至DDMS视图,此处表明已经检测到了ANDROID设备,如图28所示。图28ECLIPSE检测到的真机22蓝牙开发平台蓝牙平台在本设计中属于前置部分,主要负责将传感器采集到的信号通过蓝牙形式发送出来,然后由开发的ANDROID应用接收处理,蓝牙部分可以从原理和实际设备两个部分进行介绍。221蓝牙40BLE简介蓝牙40协议是2010年6月由SIG(SPECIALINTERESTGROUP)发布的最新标准,它有2种模式BLE(BLUETOOTHLOWENERGY)只能与40协议设备通信,适应节能且仅收发少量数据的设备(如家用电子);BR/EDR(BASICRATE/ENHANCEDDATARATE),向下兼容(能与30/21/20通信),适应收发数据较多的设备(如耳机)。BLE即BLUETOOTHLOWENERGY,低功耗蓝牙,属于蓝牙40中的单模制式。其主要特点如下国际蓝牙联盟BTSIG,TI是企业成员之一通过的一个标准蓝牙无线协议主要新特性是在蓝牙标准版本上添加了40蓝牙规范(2010年6月)针对无线应用程序与低功耗,低延迟,小数据包的传输需求主要是围绕手机和个人电脑系统,但也可用于其他应用程序就单模而言,和经典蓝牙设备不兼容蓝牙40开发至少要做两方面的准备。硬件方面,需要购买TI公司蓝牙迷你套件,即蓝牙40开发板(一般指CC254X)以及CCDEBUGGER传真器;软件方面,安装IARFOR8051,TI公司BTOOL软件。222开发板CC254XCC254X模块是低成本,低功耗的SOCSYSTEMONACHIP,系统级芯片方案,广泛用于蓝牙低功耗应用,花费非常少的材料成本即可构建BLEMASTER或SLAVENODE。CC254X内含一个性能优良的RF收发器和工业标准的增强型8051MCU,集成可ISP的FLASHMEMORY,8KBRAM,以及其他性能优异的特性和外设。CC254X可提供低功耗睡眠模式,操作模式的转换时间非常短,低至微秒级,特别适合需要低功耗的系统。其特性如下A兼容蓝牙低功耗技术B优异的连接设计(高达97DB)C长距应用D精准的数字RSSIE符合FCCMBLUETOOTHADAPTERBLUETOOTHMANAGERGETADAPTER3开启蓝牙服务;PRIVATEBLUETOOTHADAPTERMBLUETOOTHADAPTER/ENSURESBLUETOOTHISAVAILABLEONTHEDEVICEANDITISENABLEDIFNOT,/DISPLAYSADIALOGREQUESTINGUSERPERMISSIONTOENABLEBLUETOOTHIFMBLUETOOTHADAPTERNULL|MBLUETOOTHADAPTERISENABLEDINTENTENABLEBTINTENTNEWINTENTBLUETOOTHADAPTERACTION_REQUEST_ENABLESTARTACTIVITYFORRESULTENABLEBTINTENT,REQUEST_ENABLE_BT4搜索BLE设备;/ACTIVITYFORSCANNINGANDDISPLAYINGAVAILABLEBLEDEVICES/PUBLICCLASSDEVICESCANACTIVITYEXTENDSLISTACTIVITYPRIVATEBLUETOOTHADAPTERMBLUETOOTHADAPTERPRIVATEBOOLEANMSCANNINGPRIVATEHANDLERMHANDLER/STOPSSCANNINGAFTER10SECONDSPRIVATESTATICFINALLONGSCAN_PERIOD10000PRIVATEVOIDSCANLEDEVICEFINALBOOLEANENABLEIFENABLE/STOPSSCANNINGAFTERAPREDEFINEDSCANPERIODMHANDLERPOSTDELAYEDNEWRUNNABLEOVERRIDEPUBLICVOIDRUNMSCANNINGFALSEMBLUETOOTHADAPTERSTOPLESCANMLESCANCALLBACK,SCAN_PERIODMSCANNINGTRUEMBLUETOOTHADAPTERSTARTLESCANMLESCANCALLBACKELSEMSCANNINGFALSEMBLUETOOTHADAPTERSTOPLESCANMLESCANCALLBACK5搜索到蓝牙设备后,可以由一个列表将之显示出来,如下用一个配置文件将之列出(具体可见LISTITEM_DEVICEXML),加载配置文件的类为LEDEVICELISTADAPTERJAVA;6接下来还需连接到GATT服务端并读取蓝牙的一些固定属性值,此处不再赘述,读者可以自行至官方查询或查看附录资源中的DEVICESCANACTIVITYJAVA。322数据接收模块此模块承自蓝牙模块,当蓝牙服务端准备就绪后,通过点击设备列表进入下一个活动页面,而在页面切换间,就已经启动了数据接收功能,此处会判断点击的设备是否为开发板配套的心率传感器,如果是则会进入切换,否则是无法进入下一个页面的。数据接收并不是可以单一存在的功能,因此代码是嵌在类中的,由DEVICESCANACTIVITYJAVA调用PLUSEEXAMJAVA中的静态方法来达到目的。PRIVATEBLUETOOTHLECLASSONDATAAVAILABLELISTENERMONDATAAVAILABLENEWONDATAAVAILABLELISTENER/BLE终端数据被读的事件OVERRIDEPUBLICVOIDONCHARACTERISTICREADBLUETOOTHGATTGATT,BLUETOOTHGATTCHARACTERISTICCHARACTERISTIC,INTSTATUSPLUSEEXAMRECDATAUTILSBYTESTOSTRINGCHARACTERISTICGETVALUE,CHARACTERISTICGETVALUE,CHARACTERISTICGETUUIDTOSTRING/收到BLE终端写入数据回调OVERRIDEPUBLICVOIDONCHARACTERISTICWRITEBLUETOOTHGATTGATT,BLUETOOTHGATTCHARACTERISTICCHARACTERISTICPLUSEEXAMRECDATAUTILSBYTESTOSTRINGCHARACTERISTICGETVALUE,CHARACTERISTICGETVALUE,CHARACTERISTICGETUUIDTOSTRING接收到的数据即CHARACTERISTICGETVALUE,是一个字节数组(BYTE),是因为从蓝牙发送过来的数据是16位的,此处就由一个字节数组接收,接收得来的数据就为两个字节,以方便之后的处理。UUID(UNIVERSALLYUNIQUEIDENTIFIE)是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。这里的CHARACTERISTICGETUUID即得到蓝牙设备的UUID值,整个应用中也是通过判断UUID值来确定是否为配套的设备12。323数据处理模块数据处理模块被设计为对接收到的数据进行一定的算法处理,并在用户选择下将接收到的所有数据以文件形式保存下来,以便之后静态观察;另一方面,将接收到的数据进行条件分析,判断波形的周期,并以此计算BPM(BEATPERMINUTES)。首先,蓝牙传来的值就波形来看是上下颠倒了,故而为了波形显示将传过来的值一律取反,并转换为整型值。接着,将此整型值以追加模式写入SD卡目录下PLUSE_DATATXT文件中,并在绘图过程中调用PLUSESURE方法以计算BPM。部分代码如下/从蓝牙接收数据的方法体PUBLICSTATICVOIDRECDATASTRINGSTR,BYTEDATA,STRINGUUIDIFUUIDEQUALSDEVICESCANACTIVITYUUID_HERATRATEINTPLUSEDATA1/PLUSE0PLUSE/PLUSEPLUSE200DATALISTCLEAR/将接收到的数据加入集合DATALISTADDPLUSE/如果读写标志为真,则将接收到的数据写入文件IFSAVEFLAGTRYIFDATAFILEEXISTSDATAFILECREATENEWFILEFILEWRITERFWNEWFILEWRITERDATAFILE,TRUEFWAPPENDSTRINGVALUEOFPLUSE“RN“FWCLOSECATCHIOEXCEPTIONEEPRINTSTACKTRACE/判断BPM的方法体PROTECTEDSTATICVOIDPLUSESURE/调用此方法时的时间LONGCURTIMESYSTEMCURRENTTIMEMILLIS/将每次调用此方法的时间加入时间集合TIMELISTADDCURTIMEINTTIMELISTSIZETIMELISTSIZE/求得此时与初始时刻所经历的时间间隔DURTIMECURTIMETIMELISTGET0/求得BPMBPPFLOATTIMELISTSIZE11000/DURTIMEBPMINTBPP60STRINGBPMSTRSTRINGVALUEOFBPM/判断心率曲线是否稳定IFTIMELISTSIZE4LONGTMPTIMECURTIMETIMELISTGETTIMELISTSIZE4/如果连续4个心率曲线上扬的时间不在正常范围内,则将时间集合清0,否则显示IFTMPTIME3000|TMPTIME2IFYTEMP0FORINTI0I以上代码为主界面布局,力求简洁明了,设置了三个按钮及两个文本,都有对应的点击事件相应,具体效果可以在运行及测试中看到。其开发界面如下图。图35图形开发界面326注册模块应用用户分为三种,未注册用户,注册用户,管理员。未注册用户只能使用测试功能,注册用户开放咨询与部分设置功能,管理员则拥有完整的权限。在应用启动后,未注册只会显示一个测试按钮可用,其他按钮则处于“不可用”状态,通过SETENABLE对其设置,代码如下BTNCONSULTSETENABLEDFALSEBTNPREFERENCESETENABLEDFALSE而注册界面,因为暂时不需要输入太多信息的缘故,采用了弹出对话框的模式,设置“用户名”和“密码”两个文本编辑框,三个按钮“取消”“注册”“登录”,用户不论是注册还是登录都在此对话框中进行。对话框与SQLITE轻量数据库连接,会将注册的用户名和密码封装为一个对象”USER”存入数据库USERDB中,凡是存取用户皆由数据库接管,部分代码如下;DIALOG_EDIT_USERNAMEEDITTEXTVIEWFINDVIEWBYIDRIDDIALOG_EDIT_USERNAMEDIALOG_EDIT_PASSWORDEDITTEXTVIEWFINDVIEWBYIDRIDDIALOG_EDIT_PASSWORDBUILDERSETVIEWVIEWSETPOSITIVEBUTTON“登录“,NEWONCLICKLISTENEROVERRIDEPUBLICVOIDONCLICKDIALOGINTERFACEDIALOG,INTWHICHREGCLICKLISTENERLOGLISTENERREGCLICKLISTENERGETACTIVITYLOGLISTENERONLOGDIALOG_EDIT_USERNAMEGETTEXTTOSTRING,DIALOG_EDIT_PASSWORDGETTEXTTOSTRINGSETNEUTRALBUTTON“注册“,NEWONCLICKLISTENEROVERRIDEPUBLICVOIDONCLICKDIALOGINTERFACEDIALOG,INTWHICHREGCLICKLISTENERREGLISTENERREGCLICKLISTENERGETACTIVITYREGLISTENERONREGDIALOG_EDIT_USERNAMEGETTEXTTOSTRING,DIALOG_EDIT_PASSWORDGETTEXTTOSTRINGSETNEGATIVEBUTTON“取消“,NULL以上代码为设置对话三个按钮的响应事件,可以看到为“注册”“登录”两个按钮都设置了相应的监听器,并将文本编辑框中填写的文本传入处理方法中。对填写文本的处理方法则放在了主界面代码下,这是因为要判断用户是否注册,功能相当于判断是否能在数据库USERDB中找到相应对象,部分代码如下;OVERRIDEPUBLICVOIDONREGSTRINGUSERNAME,STRINGPASSWORDLISTUSERSUSERMGRQUERYBOOLEANEXISTFLAGFALSEFORUSERUUSERSIFUGETUSERNAMEEQUALSUSERNAMEEXISTFLAGTRUELOGV“E“,STRINGVALUEOFEXISTFLAGIFEXISTFLAGTOASTMAKETEXTGETAPPLICATIONCONTEXT,“用户名已存在“,TOASTLENGTH_SHORTSHOWELSEIFUSERNAMELENGTHUSERSUSERMGRQUERYUSERUSERNEWUSERUSERNAME,PASSWORDIFUSERSCONTAINSUSERBTNCONSULTSETENABLEDTRUEBTNPREFERENCESETENABLEDTRUETEXTCURRENTUSERSETTEXTUSERNAMEEDITORPUTSTRING“USER“,USERNAMEEDITORCOMMITELSEBTNCONSULTSETENABLEDFALSEBTNPREFERENCESETENABLEDFALSE可以看到,在这两个方法中出现了USER与USERMGR两个类,USER为一个封装的用户对象,成员变量仅两个,即用户名与密友;USERMGR为USERMANAGER一个实例,USERMANAGER则为继承SQLITEOPENHELPER的一个子类,用于管理数据库,具体代码过多,此处不再赘述,读者可自行查阅源码13。此模块已有功能,可由下列流程图进行说明,如图36所示;否是开始注册符合要求存入数据库登录功能开放部分功能未开放结束已注册是否图36注册模块流程示意图327设置模块设置模块主要用于设置一些常规的配置,分为普通用户和管理员进行设置权限分配,管理员可以使用“用户管理”中的全部功能,即“增加用户”“删除用户”以及“查询用户”,普通用户则只能使用“查询用户”功能,这是为了防止普通用户无意将修改其他用户资料而造成的数据泄漏。除此之外,还有设置绘图中的自动定时功能,和个人用户的密码修改功能。设置模块主要是布局文件的编写,将视图层层嵌套,以达到界面美观舒适的效果,如下为查询用户的布局代码14;在相应的设置界面下,有此文本的监听器,以响应点击事件。点击“查询用户”后,会给出当前已注册的用户列表,部分代码如下;PROTECTEDVOIDUSERLISTLISTUSERSUSERMGRQUERYLISTUSERITEMSNEWARRAYLISTFORINTI0IUSERITEMNEWHASHMAPUSERITEMPUT“USERNAME“,USERGETUSERNAMEUSERITEMPUT“PASSWORD“,USERGETPASSWORDUSERITEMSADDUSERITEMSIMPLEADAPTERADAPTERNEWSIMPLEADAPTERTHIS,USERITEMS,RLAYOUTITEMS,NEWSTRING“USERNAME“,“PASSWORD“,NEWINTRIDTEXTUSERNAME,RIDTEXTPASSWORDUSERLISTSETADAPTERADAPTER上述代码初始化了LISTVIEW组件,并将从数据库中查询而得的用户信息填入列表以显示出来,此处为了体现查询效果,将用户名与密码一起查询,用户可以看到当前所有已经注册的用户名与密码。第四章运行及测试41运行效果411测试与咨询1在应用程序中找到HEALTHPLUSE,打开后可以显示主界面,点击“测试”按钮,应用会提示打开蓝牙,点击“允许”后,显示设备列表,如图41所示;图41应用主界面2列表会显示周围可检测到的BLE设备,如图42所示;图42显示扫描到的BLE设备3点击设备名称,进入测试页面,因为没有接触传感器的缘故,传输的数据一直是稳定在一个固定的数值,当手指接触传感器后,就会有明显起伏,然后逐渐规律下来,并且这时也可计算出BPM,如图43所示;图43测试脉搏时的波形4当波形较为稳定时,点击“定时”按钮,定时器就会打开,用户可根据自己需要保存一定时间的波形数据,点击“保存”即可,如图44所示;44定时保存数据文件5退出此界面,回到主界面,点击“咨询”按钮,可以进入到咨询页面,点击页面底部的三个按钮可切换页面,如图45;图45咨询页面6点击“播放”按钮(开关),可以动态或观察在测试界面下保存的数据文件,因为处理经过处理的关系,数据会比测试时的绘图更加精确,但波形效果较差,如图46所示;图46重读数据文件绘图412注册及设置1在主界面左下方点击“注册”文本,可弹出注册对话框,如图47所示;图47弹出注册对话框2填入用户名及密码后,点击“注册”回到主界面,此时咨询和设置按钮已经成可用状态,且主界面右上角也显示当前登录的用户名称,如图48所示;图48注册登录后的主界面3点击“设置”按钮,进入设置选项,显示设置菜单,目前开放的有用户管理,绘图参数修改,和用户密码修改功能,如图49所示;图49设置界面4点击“设置”按钮,设置选项中对普通用户开放的有查询用户功能,及绘图和个人设置,增加或删除用户的功能被默认为仅管理员可用,此处是设计者自己保留的账号,仅以自娱,效果如图410所示;图410删除用户功能5删除用户会弹出一个多选框,被选中的用户都会从数据库中删除,由查询功能可得知删除已经生效,如图411所示;图411删除用户的效果6点击“参数设置”选项,可以打开绘图属性的设置对话框,输入相应的数值数据,确定之后可以在测试功能下显示出图表对应的参数变化,如图412;图412绘图参数修改42技术难点421硬件难点1传感器接触引起的数据不稳定由于光电传感器没有经过任何封装,器件皆裸露在外,所以使用的方式不当,会明显影响传输的可靠性,一般表现为数据起伏剧烈,体现在波形上就是数据没有规律性,如下图413所示。图413数据不稳定时波形显示左图中数据看似有规律性但是波形矮小,一般是因为没有实际接触上硬件;而右图中波形起伏不规律,一般是由于突然接触传感器,使得传感器自身没有调整数据,蓝牙发送出的数据也因此不规律。解决的方法较为简单,即测试时用指肚将传感器的发光灯完全覆盖住,光没有在边缘漏出时效果最好,传输的数据也最稳定。2数据抽样率过高引起的波形不稳定通过蓝牙开发板可设置蓝牙传输数据的频率,即数据抽样率,一般为100HZ,但由于每次更新图表时,需要更新整个图表视图以保留之前的数据,数据量相对较大,这也就造成了绘图频率过高时,整个图表会有闪烁感甚至线程直接崩溃。解决方法是从程序代码中去修改绘图的频率,即以下代码块的中用于除数的数字,2即代表将传来的数据以21的比例用于绘图,IFDATALISTSIZE20/绘图方法体经测试,绘图频率一般保持在30HZ以下效果较为流畅,因此可以将蓝牙传输的数据的频率设为50HZ,然后在接收绘图时以21比例采集绘图数据。422软件难点1绘图时的线程运作由于要实现实时传输效果,传输数据频率和ANDROID端更新数据频率须保持一致,也就让线程压力较大,所以在传输数据的基础上对线程进行一定的控制和优化才能让程序稳定运行,否则程序就会经常崩溃,后果轻则应用中断退出,重则占用设备内存甚至引起内存泄漏。ANDROID的线程操作有效的主要有两种方法,如下方法一RUNABLEHANDLERSTATICHANDLERPLUSEHANDLERNEWHANDLERRUNNABLERUNNEWRUNNABLEOVERRIDEPUBLICVOIDRUNTRYINITLINELINEMAIBOCATCHIOEXCEPTIONEEPRINTSTACKTRACECHARTPOSTINVALIDATEPLUSEHANDLERPOSTDELAYEDTHIS,20PRIVATEVOIDREFRESHCHARTPLUSEHANDLERPOSTDELAYEDRUN,0方法二TIMERTIMERTASKHANDLERTIMERTIMERNEWTIMERHANDLERMHANDLERNEWHANDLERPUBLICVOIDHANDLEMESSAGEMESSAGEMSGSWITCHMSGWHATCASE1REFRESHCHARTBREAKCASE2BREAKSUPERHANDLEMESSAGEMSGTIMERSCHEDULENEWTIMERTASKOVERRIDEPUBLICVOIDRUNMESSAGEMESSAGENEWMESSAGEIFMSGFLAGMESSAGEWHAT1ELSEMESSAGEWHAT2MHANDLERSENDMESSAGEMESSAGE,0,20其他还有一些管理或优化线程的方法,原理都类似,需要注意的是ANDROID的线程更新和JAVA下并不尽然相同,ANDROID下只有主线程即UI线程才能被更新,因此关于HANDLER的方法调用都应该放在更新视图的方法中,即ONCREATE或ONCREATEVIEW方法中,具体方法可见工程代码或见附录。2注册权限开放问题(包括管理数据库)本设计中将权限分为三级,管理员拥有最高权限,普通注册用户,未注册用户;这其中要对用户使用应用的功能部分做一定的限制,而限制用户,首先要判断目前是否有登录的用户,或是登录的用户是属于哪一类用户。注册的用户信息被添加进了USERDB,方法可见上文注册模块,在每次进行注册用户判断的时候,都会使用QUERY方法得到一个已经注册的用户列表,然后将当前的用户进行遍历判断,即如果列表中CONTAINS该用户,就不再允许注册,或是可直接登录;登录后会用一个XML文件,使用SHAREDPREFERENCE来保存当前登录的用户名,并将用户名显示到主界面的文本上;EDITORPUTSTRING“USER“,USERNAME使用上述语句可将当前用户名USERNAME以USER键存入CURRENT_USERXML;然后问题又出现了,如果用户已经登录过一次,那么每次打开应用还需要重新登录么用户肯定是不认同的,所以每次打开应用时,程序会检测应用路径下是否有CURRENT_USERXML,并寻找CURRENT_USERXML中存入的键值,如果找到了,说明已经登录过,用户不用登录即可直接使用,如果没有找到,则需要用户再次注册登录;PROTECTEDVOIDUSERISEMPTYSTRINGUSERSHAREPREFERENCESGETSTRING“USER“,NULLIFUSERNULLTEXTCURRENTUSERSETTEXTUSERBTNCONSULTSETENABLEDTRUEBTNPREFERENCESETENABLEDTRUEELSEBTNCONSULTSETENABLEDFALSEBTNPREFERENCESETENABLEDFALSE上述代码放在主界面中,即一进入应用就进行判断工作,以方便用户;此外,有登录功能,肯定也要有相应的注销功能,注销功能即是将当前的CURRENT_USERXML的信息清空;EDITORCLEARCOMMITTEXTCURRENTUSERSETTEXT“无“BTNCONSULTSETENABLEDFALSEBTNPREFERENCESETENABLEDFALSE可以从代码中看出,注销以后需要将权限恢复至未注册的状态;同样地,对于管理员权限也是进行同样的判断,同样是在主界面中判断当前用户是否为管理员用户;此处也存在一个问题,即“设置”中的查询用户功能可以查看当前所有用户的用户名与密码,为了弥补此漏洞,设计者将显示列表中的管理员用户的密码设置为“”,即防止注册用户看到密码后用管理员用户进行登录;管理员用户应该是内置的,即程序本身已经创建的,而不是通过注册界面进行创建的,这就需要在启动应用时就创建一个管理员用户,并且在其后的启动过程中判断用户数据库中是否有此管理员用户,如果不存在,则创建管理员用户,且此管理员是固定用户名和密码的;PRIVATEVOIDADDADMINLISTUSERSUSERMGRQUERYUSERUSERNEWUSER“ADMIN“,“IFUSERSCONTAINSUSERELSEUSERMGRADDUSER/判断是否为管理员用户,是则开放功能PUBLICVOIDISADMINSTRINGUSERSHAREPREGETSTRING“USER“,NULLIFUSEREQUALS“ADMIN“ADDUSERSETENABLEDTRUEDELETEUSERSETENABLEDTRUEELSEADDUSERSETENABLEDFALSEDELETEUSERSETENABLEDFALSE第一个方法放在主界面下,即添加管理员用户,第二个方法放在设置界面,因为管理员主要是在设置中拥有较大的权限,比如删除用户。3对比分析波形问题波形的分析涉及到一系列数学问题,首先是对波形的除噪去噪,然后是对波形进行小波变换或传统傅立叶变换,得到频域的频谱,接着利用相应的数学工具对频谱进行解析,得到一定的结论。首先出现的问题是由传感器采集给出的波形并不精细,本设计是采用50HZ的抽样频率,以保证波形图可以手机终端成功绘出或是及时保存下数据文件,而面对专业分析时,这样的采样频率偏低,很难分析出有用的信息;接着是对于波形周期及其波峰波谷的确定,确定波峰的算法称
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年彭州市第二人民医院招聘笔试真题
- 2024年宁波余姚市公益性岗位招聘笔试真题
- 2024年南平市第二医院招聘笔试真题
- 有效的内容营销策略计划
- 战略创新与风险管理考题及答案
- 法学概论的法律理论与试题及答案分析
- 2025年法学概论考试的法律语境变化与试题及答案
- 基于云端的AI服务架构设计试题及答案
- 2025法学概论考试高分秘籍及试题答案
- 2025届吉林省大安市第三中学八下数学期末学业水平测试模拟试题含解析
- 2025年广州体育职业技术学院单招职业倾向性考试题库及答案1套
- 苏教版五年级数学下册典型例题第五单元分数的加法和减法·单元复习篇(原卷版+解析)
- 技术文件核查审核和审批制度
- 口腔科新冠防控培训课件
- 甘肃省历年中考作文题(2003-2024)
- 2025年安徽安庆市交通控股集团有限公司招聘笔试参考题库含答案解析
- 2025年中远海运考试题及答案
- 《在校不做显眼包》文明礼仪班会演讲稿
- 钢轨探伤培训
- 转正答辩流程
- 共享加盟合同范例
评论
0/150
提交评论