版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录TOC\o"1-4"\h\z\u摘要 4Abstract 5第一章引言 61.1 课题背景及意义 61.1.1 课题背景 61.1.2 课题意义 71.2 国内外的研究现状 71.3 课题研究内容 81.4 Android系统平台简介 8第二章相关技术简介 92.1 Android手机平台 92.1.1 Android平台的起源 92.1.2 Android系统的优势 92.2 Android体系结构 92.3 Android平台功能特征 102.4 Android活动的生命周期 112.5 Android蓝牙通讯介绍 122.6 Android数据库介绍 132.7 Android画图机制 13第三章需求分析 143.1 项目描述 143.2 开发目的 143.3 系统需求分析 143.4 功能需求分析 143.5 功能模块需求分析 153.5.1 管理员登陆功能 153.5.2 蓝牙通信功能 153.5.3 数据库管理功能 153.5.4 动态画图功能 153.5.5 数据上传下载功能 163.5.6 数据回放功能 163.6 数据需求分析 163.7 界面需求分析 16第四章概要设计 174.1 逻辑结构图 174.2 数据流程图 184.3 功能模块划分 194.3.1 管理员登陆模块 194.3.2 蓝牙数据接收模块 194.3.3 心电图显示模块 194.3.4 数据储存模块 194.3.5 上传下载模块 194.4 数据结构设计 20第五章详细设计 225.1 开发环境及平台的搭建 225.1.1 JDK安装 225.1.2 Eclipse安装 225.1.3 AndroidSDK安装 235.1.4 ADT安装 245.2 管理员登陆界面 255.3 菜单栏详细设计 265.4 数据采集设计 285.4.1 设置蓝牙通信 285.4.2 发现蓝牙设备 285.4.3 连接蓝牙设备 305.4.4 管理蓝牙连接 315.5 数据转化设计 325.6 动态显示心电数据 335.7 数据库详细设计 355.7.1 病人信息数据库 355.7.2 任务信息数据库 355.7.3 报表数据库 365.7.4 管理员数据库 36第六章论文工作总结 376.1 完成情况 376.2 总结 37致谢 39参考文献 40摘要近年来,以计算机为主体的现代信息技术与现代医学科学的结合,使得心电图的自动诊断和分析成为计算机在生物医学领域里应用最成功的范例之一。心电数据库是发展心电分析自动化的基础,也是医学信息数据库的一个有机组成部分,在心血管病的研究和诊断、心电图仪及自动分析软件的检测评估等领域发挥着重要作用。目前,在国际上已形成一种约规,即心电自动化分析软件或仪器研制成果,只有通过权威性心电数据库的检测才能得到公认。目前,国内生产心电图仪与心电信息分析软件的公司和科研单位很多,生产的产品和软件质量良莠不齐,其心电图成像的质量和自动分析诊断的结果差别较大,使得医生对患者诊断的准确程度受到影响,严重的甚至会导致误诊。因此,如何评价这些心电图仪的性能和其自带的自动分析诊断程序的准确性,就成为一个非常重要和迫切的任务。2008年Google推出了一款名为Android的开源智能手机操作系统,它采用Linux内核,开放手机联盟(OHA)成员可以任意使用和修改SDK包,系统的开源性使其具有良好的拓展性。这款软件包括了操作系统、用户界面和应用程序,即智能手机工作所需要的全部软件。Android的最大特点是其开放性体系架构,不仅具有非常好的开发、调试环境,而且还支持各种可扩展的用户体验,包括丰富的图形组件、多媒体支持功能以及强大的浏览器。因此,对于软件从业人员来说,Android平台具有无限的吸引力。本文就在分析讨论Android手机软件开发技术原理的基础上,开发出能为用户提供更好的基于Android平台的心电图仪。接下来对采用Sqlite关系数据库,来进行心电图数据库的开发,存储数据做一些介绍。在本文中,对于心电图仪系统,运用面向对象(OOP)的软件设计方法,通过对数据库模块、采集人员信息采集编辑模块、综合查询模块以及性能分析模块的设计,实现对心血管病患者的心电图及其临床病理资料的采集、组织、存储、查询等综合管理。关键词:计算机,心血管病,心电图,心电分析系统,Android智能操作系统AbstractInrecentyears,combinationofthemoderninformationtechnologytakingcomputerassubjectandmodernmedicalsciencemakeautomaticdiagnosisandanalysisofECGbecomecomputeroneofthemostsuccessfulexampleofapplicationinbiomedicalfield.ECGdatabaseisthefoundationofdevelopmentautomaticanalysisandanorganiccomponentofthemedicalinformationdatabase.Itisplayinganimportantroleinthefieldofdetectionassessmentoftheelectrocardiograph,automaticanalysissoftware,researchinganddiagnosisatthecardiovasculardisease.Now,aruleintheworldisthatthesoftwareinECGautomationanalysisortheachievementintheinstrumentdevelopmentcanbegenerallyacknowledgedonlythroughthedetectionoftheauthoritativeECGdatabase.Therearemanycompaniesandscientificresearchinstitutionsofproducingtheelectrocardiographandsoftwareofelectricinformationanalysisofheart.Thequalityofproductsandsoftwareproducedbythemareverydifferent.ThequalityofformationtheimageofECGandresultsofautomaticanalysisanddiagnosisareverydifferent.Itinfluencestheaccurateintensityofthedoctordiagnosingthepatient,evenresultsinmisdiagnosing.So,howtoappraisetheperformanceoftheseelectrocardiographsandtheirdiagnosticprogramofautomaticanalysisbecomesaveryimportantandurgenttask.In2008,GoogleintroducedasmartphonecalledtheAndroidopensourceoperatingsystem,whichusesLinuxkernel,OpenHandsetAlliance(OHA)memberscanbefreetouseandmodifytheSDKpackage,thesystemIthasagoodopen-sourcenatureoftheexpansionof.Thesoftwareincludestheoperatingsystem,userinterfaceandapplicationsthatneedtoworksmartphonesallthesoftware.Android'sbiggestfeatureisitsopenarchitecture,notonlyhasaverygooddevelopmentanddebuggingenvironment,butalsosupportsavarietyofscalableuserexperience,includingrichgraphicalcomponents,multimediasupport,andpowerfulbrowser.Therefore,forsoftwareprofessionalsis,Androidplatformhasunlimitedappeal.Inthispaper,theanalysisanddiscussionAndroidmobilephonesoftwaredevelopmenttechnologyonthebasisoftheprinciple,developedtoprovideuserswithbetterECGbasedonAndroidsoftwarePlatform.ItgivesusaintroductionaboutthedevelopmentandstorageofthenormalECGdatabasethatisadoptedbySqliterelateddatabase.Inthispaper,makinguseoftheOOPmethodisusedtodesignsoftwareoftheECG.Andtocollect,organize,storeandinquirethecardiogramofthepatientsandthefilesoftheclinicbydesigningthedatabasemodule,informationofcollectedworkerinquiresmoduleandperformanceanalysismodule.Keywords:Computer,Cardiovasculardisease,ECG,AutomaticanaIysissystem,Androidsmartoperatingsystem第一章引言课题背景及意义
课题背景
人体是由各个器官和组织共同维系着的一个生命体。而心脏是核心人体的核心器官,活着的生命体依靠着心脏每时每刻不停歇的运动为细胞提供必须的营养物质血液。近些年来,随着人们生活水平的日益提高,不合理的饮食和作息习惯使得心血管类疾病的发生率也逐年增高。我国心脏病患者约有七千万人,死亡原因主要是致命性心率失常和急性心梗。据北京急救中心统计,71%以上病发于家中或工作现场,大部分人因失去抢救时间死于医院外。人们在呼吁健康的同时对自身的身体状况也给予了非同寻常的关注。心电图的发现使得医疗机构能够更加准确的了解心脏内部机能状况。心电图检测是20世纪建立起来并广泛应用于临床诊断和监测的重大技术成果之一。心电图仪的开发生产是在1901年爱因托芬制造的第一台弦线式电流计的基础上开始的。心电图是记录人体心脏电活动的一种检查方法,心脏是循环系统中重要的器官。由于心脏不断地进行有节奏的收缩和舒张活动,血液才能在闭锁的循环系统中不停地流动。心脏在机械性收缩之前,首先产生电激动。心脏在激动过程中能产生电势变化,这种电的变化可通过人体这个容积导体传到体表,如通过导联线把电势变化用心电图机将其放大并记录出,形成一条连续的曲线就是心电图。它可记录心脏节律和频率以及电压的高低,用于诊断各种心律失常、心肌病变、心肌梗塞及心肌缺血等,心血管病最常用的检查手段。早期的监护仪由于技术的限制,只能对模拟心电信号进行显示、报警和记录,功能比较单一,实用性较差。[1]在移动终端技术与互联网不断发展与融合的今天,智能手机系统这一全新的概念也走进了人们的生活之中,随着技术的进步,人们对于产品的方便和舒适程度也提出了更高的要求。除期望所用的软件拥有强大的功能外,更期望应用软件能尽可能的为他们提供一个轻松、愉快、感觉良好的操作环境。Android是Google开发的基于Linux平台的开源手机操作系统。正占据着越来越多的市场份额。随着Android平台在Pad(平板电脑)上的越来越普及,能够适应Android平板电脑的应用程序更能受到用户的欢迎。课题意义
基于以上的课题背景,心电图作为检测病人最常用的检查手段,同时Android平台作为一种很受用户欢迎的系统,将心电图仪移植到Android平台,还能实现数据存储,数据上传,方便管理病人信息等一些传统心电图仪没有的优点,这样一款基于Android平台的心电图仪应运而生。国内外的研究现状德国的西门子和霍尔斯克公司在心电处理方法上做出了突出的贡献:他们在1921年率先在其制造的仪器上采用了真空管和示波器两大技术,这不仅大大提高了仪器的灵敏度,而且导致体积的小型化和信号记录的屏幕化。美国在50年代首先开始研究用计算机处理心电图。20世纪50年代末,美国科学家Holter先生首先发明了Holter心电仪或叫动态心电仪,1961年正式用于临床,以后Holter心电仪得到了飞速发展,并广泛应用于临床。其优点是十分明显的:它可以长时间监测病人在各种工作、生活等状态下的心肌生理变化和病变情况及严重程度,尤其对各类偶发、一过性和隐性心律失常,对无痛性(无症状)心肌局部缺血的检测都十分有效。许多人常常有这种体会,当自己在工作中或剧烈活动时,或劳累时觉得心脏不舒服,甚至昏倒,但到医院作常规心电图却查不出任何问题,做动态心电图,则问题就较容易发现。近几年来,日、美等国家开始利用动态心电仪进行心律变异分析,已取得了大量经验,其临床意义越来越大,受到医疗专家的高度重视,发达国家已普遍采用。目前国外有相关类的产品问世,例如由Signalife公司(Greenville,SC,USA;)制造的Fidelity100型流动监护器,是一款12导联的心电监护装置,它可以高质量地记录行走患者的心电图信号。日本光电的便携式心电图机“RAC-3103”,体积和重量都大幅减小。产品内置液晶显示屏,可以用来确认心电图波形,因此有助于防止发生数据收录错误。我国于20世纪70年代末期开始从国外引进动态心电图仪,在临床上开展动态心电图的检查工作。目前全国各大城市的主要医疗单位都已能进行此项检查并积累了不少经验。20世纪80年代初我国有关单位科技人员研制成功了我们自已的动态心电仪。到目前为止,我国已生产了高中低档各种类型的动态心电仪,有的已达到国际先进水平。更可喜的是,经过广大科技人员的努力,我国已生产出适合于我国国情的特别适合广大中小医院使用的动态心电仪。随着我国广大乡镇医院的动态心电仪的普及应用,一个临床应用动态心电图检查的高潮很快就要到来。[2]课题研究内容本课题主要研究人体心脏在激动过程中能产生电势变化规律,产生的电势表现出来的数据的范围,如果通过Android设备接收这些产生的数据,如何转化这些数据,如何通过Android设备将这些数据实时的显示出来,Android设备如何储存数据,如何通过网络上传数据,如何管理病人信息。Android系统平台简介Android是一种以Linux为基础的开放源码操作系统,主要使用于便携式移动设备。目前尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。Android操作系统最初由AndyRubin开发,最初主要支持手机。2005年由Google收购注资,继续对Android系统开发运营,并组建开放手机联盟开发改良,逐渐扩展到平板电脑及其他领域上。它采用了软件堆层(softwarestack,又名软件叠层)的架构,主要分为三部分。底层Linux内核只提供基本功能,其他的应用软件则由各公司自行开发,部分程序以Java编写。Android的主要竞争对手是苹果公司的iOS以及RIM的BlackberryOS。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。2012年2月数据,Android占据全球智能手机操作系统市场52.5%的份额,中国市场占有率为68.4%。[3]第二章相关技术简介Android手机平台
Android平台的起源Android操作系统最初由AndyRubin开发,最初主要支持手机。2005年由Google收购注资,并组建开放手机联盟开发改良,逐渐扩展到平板电脑及其他领域上。Android的主要竞争对手是苹果公司的iOS以及RIM的BlackberryOS。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。2012年2月数据,Android占据全球智能手机操作系统市场52.5%的份额,中国市场占有率为68.4%。 Android系统的优势源代码完全开放,便于开发人员更清楚的把握实现细节,便于提高开发人员的技术水平,有利于开发出更具差异性的应用。采用了对有限内存、电池和CPU优化过的虚拟机Dalvik,Android的运行速度比想象的要快很多。运营商(中国移动等)的大力支持,产业链条的热捧。良好的盈利模式(3/7开),产业链条的各方:运营商、制造商、独立软件生产商都可以获得不错的利益。将移动终端的评价标准从硬件向软件转变,极大的激发了软件开发者的热情。Android的源代码遵循ApacheV2软件许可,而不是通常的GPLv2许可。有利于商业开发。具有强大的Linux社区的支持。[4]Android体系结构Android的系统架构和其它操作系统一样,采用了分层的架构。android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层。Android是以Linux为核心的手机操作平台,作为一款开放式的操作系统,随着Android的快速发展,如今已允许开发者使用多种编程语言来开发Android应用程序,而不再是以前只能使用Java开发Android应用程序的单一局面,因而受到众多开发者的欢迎,成为真正意义上的开放式操作系统。在Android中,开发者可以使用Java作为编程语言来开发应用程序,也可以通过NDK使用C/C++作为编程语言来开发应用程序,也可使用SL4A来使用其他各种脚本语言进行编程(如:python、lua、tcl、php等等),还有其他诸如:Qt(qtforandroid)、Mono(monoforandroid)等一些著名编程框架也开始支持Android编程,甚至通过MonoDroid,开发者还可以使用C#作为编程语言来开发应用程序。另外,谷歌还在2009年特别发布了针对初学者的Android
Simple语言,该语言类似Basic语言。而在网页编程语言方面,JavaScript,ajax,HTML5,jquery、sencha、dojo、mobl、PhoneGap等等都已经支持Android开发。而在Android系统底层方面,Android使用C/C++作为开发语言。Android平台功能特征Android的特征有哪些呢!Android系统早期由原名为"Android"的公司开发,谷歌在2005年收购"Android.Inc"后,继续对Android系统开发运营,它采用了软件堆层(softwarestack,又名软件叠层)的架构,主要分为三部分。底层Linux内核只提供基本功能,其他的应用软件则由各公司自行开发,部分程序以Java编写。Android的特征主要如下:丰富而又可扩展的视图(Views),可以用来构建应用程序,它包括列表(lists),网格(grids),文本框(textboxes),按钮(buttons),甚至可嵌入的web浏览器。内容提供器(ContentProviders)使得应用程序可以访问另一个应用程序的数据(如联系人数据库),或者共享它们自己的数据。资源管理器(ResourceManager)提供非代码资源的访问,如本地字符串,图形,和布局文件(layoutfiles)。通知管理器(NotificationManager)使得应用程序可以在状态栏中显示自定义的提示信息。活动管理器(ActivityManager)用来管理应用程序生命周期并提供常用的导航回退功能。Android活动的生命周期OnCreate:当活动第一次创建时被调用。在这里你应该做你所有的正常静态设置——创建视图、绑定数据到列表等等。这个方法的参数是一个包含活动之前状态的Bundle对象,如果那个状态被捕获,紧跟着的方法总是OnStart()。OnRestart:当活动已经停止,然后又重新启动时调用。紧跟着的方法是onStart()。OnStart:当活动变为可视之前调用。如果活动是变为前台接下来调用onResume();如果活动变为隐藏,接下来调用onStop()。OnResume:在活动与用户交互前调用。在活动栈的栈顶,紧跟其次的是onPause()。OnPause:当系统准备启动另外一个活动时调用。这个方法典型地用于提交没有改变的修改到持久数据,停止动画和其他消费CPU的东西等待。不管做什么都必须要做的很快,因为下一个活动不会重新启用直到他结束。如果活动返回到前台,接着调用onResume(),如果对用户不可见,接着调用onStop()。OnStop:当活动对用户不再可见时调用。这可能发生在活动即将被销毁,或者另外一个活动重新启动并覆盖它。接下来如果活动与用户交互将调用onRestart(),如果活动被销毁将调用onDestory()。OnDestory:在活动销毁前调用。这是活动受到的最后的调用。他可能在以下情况调用,活动结束或者系统临时销毁活动的实例节省空间。你可以通过isFinish()方法来区分。[5]Android蓝牙通讯介绍Android操作系统提供了蓝牙通信Bluetooth网络协议组件,允许采用蓝牙无线通信方式来和其他蓝牙设备互相交换数据。蓝牙通信可以在已经设置配成对的设备间通信,或者在广大蓝牙无线通信环境中寻找可以连接的其他蓝牙设备。Android操作系统架构提供Android蓝牙通信BluetoothAPI来获取蓝牙通信功能。这些API可以让Android应用程序以无线通信方式来连接其他蓝牙设备,可以是点对点通信或者多任务(Multiple)无线通信功能。使用Android蓝牙通信BluetoothAPI,Android应用程序可以执行下列功能:扫描其他蓝牙设备查询本地的蓝牙套接字,进而组成配对的蓝牙设备建立RFCOMM协议管道通过发现蓝牙设备所列表的项目来连接其他蓝牙设备与其他蓝牙设备互相传递数据管理多任务蓝牙连接Android数据库介绍嵌入式设备常常需要存储一些重要的数据,当关机时,先将这些重要的数据存储在内存里,待下次开机时,可以马上读取这些数据,恢复到上回关机前的状态。应用程序彼此之间相互沟通也需要公开一些数据,共享这些公开的数据。应用程序实时的存储自己建立好的数据到数据库,随时可以更快速地检索。Android操作系统采用标准的SQLite数据库,提供管理数据库相关的API。SQLite数据库与常用的PostgreSQL和MySQL一样,是属于关系型数据库管理系统(RDBMS)的一种,但不同的是SQLite数据库可以用在本地应用程序的轻量级数据库,并不提供在服务器上使用。Android画图机制Android操作系统提供二维(2D)绘图库和OpenGLES1.0高性能三维(3D)绘图功能。最常见的二维绘图API可以从Drawable包取得,而OpenGLAPI使用KhronosOpenGLES包,再加上Android所加上的一些绘图设施。Android中的画图主要通过继承View或SurfaceView这两个接口来实现,也可以在XML配置文件中定义,然后在java代码中调用,可以改变图像对象或修改它的属性。第三章需求分析项目描述
在移动终端技术与互联网不断发展的今天,智能系统这一全新的概念也走进了人们的生活之中,随着技术的进步,人们对于产品的方便和舒适程度也提出了更高的要求。期望所用的产品拥有强大的功能外,更期望应用软件能尽可能的为他们提供一个轻松、愉快、感觉良好的操作环境。Android是Google开发的基于Linux平台的开源手机操作系统,正占据着越来越多的市场份额。本课题主要结合了人体心电图的实用性和Android平台的优势,不仅有传统心电图的功能,更有像数据存储、数据上传、蓝牙无线接收、信息录入与修改等新功能,操作方便,界面友好,实用性强。开发目的传统的心电图仪由于技术的限制,只能对模拟心电信号进行显示、报警和记录,功能比较单一,实用性较差。本课题将传统的心电图仪引进到Android平台,使之更具实用性,携带方便,功能更强。系统需求分析系统支持:Android2.3以上版本分辨率:1024*600以上分辨率主频:500MHz以上内存:256M以上带蓝牙和Wifi模块功能需求分析实现管理员权限操作,添加系统登录功能,。实现接收蓝牙数据发生器产生的数据。对接收到的数据进行转化,按比例缩放,便于在显示屏上显示。添加画图功能,能够实时的接收数据,并将数据以动态的波形显示出来。添加数据库,记录病人信息,任务信息等。实现数据库的管理功能,能够对数据库的信息进行查看、添加、修改和删除。添加上传数据功能,能通过无线网将记录的数据上传到服务器。添加下载功能,能下载服务器上的数据到本地。对接收到的数据进行储存。对储存的数据能进行回放。功能模块需求分析管理员登陆功能要实现这一功能,需要添加管理员数据库,打开软件的时候,需要键入用户名和密码,点击登陆后在数据库中查找用户名是否存在,且密码正确,若正确,则进入系统,否则退到管理员登陆界面。蓝牙通信功能蓝牙通讯功能主要用于数据的实时发送和接收,发送端是将采集到的人体心电数据通过蓝牙发送出来,接收端要对数据进行有选择性的接收,对无用的数据要丢弃,接收到的数据先放入缓存。数据库管理功能涉及到对病人信息的储存,任务的下达,病人心电数据的记录,管理员信息记录,用数据库可以很方便的对这些信息进行储存和管理。动态画图功能接收到的数据要实时的显示出来,数据是通过蓝牙源源不断的接收到的,经过转化后显示,但如何在有限的屏幕上显示出着源源不断的数据呢,就要在屏幕显示满后,动态的覆盖掉之前的数据。数据上传下载功能病人信息,下达的任务,记录的数据,处理后的数据,都要保存到服务器,以免数据丢失;同时,如果数据丢失或数据经过修改后想复原,就可以通过下载功能,将服务器上的数据下载到本地。数据回放功能记录的心电数据需要储存下来,同时还要方便的查看,回放功能就可以从数据库取出数据,并以波形的形式显示出来,方便且直观。数据需求分析需要记录病人信息(病人姓名,性别,年龄等),病人心电数据信息(数据量大),任务信息(任务的名称,任务的采集时间,是否完成等),任务下达信息(任务的下达时间,解决方案等),报表信息(检测日期,数据标示等),管理员信息(用户名,密码)。为了方便的对这些信息进行管理,如增、删、改、查等,用Android中的数据库Sqlite就可以很方便的实现这些功能。界面需求分析登陆界面:界面用对话框的形式,要在主页面显示前显示,登陆后再从其他页面跳转主页面时不再显示登陆页面。数据库中的数据显示:Android中没有像C++那样专门用于显示数据库的表格控件,只能用表格布局显示,但是有一些功能无法实现或不容易实现,如动态删除修改信息等。心电数据的显示:由于心电数据需要实时的接收,数据量比较大,要用动态的波形显示,同时需要将数据储存下来,方便回放,由于接收数据和画图要同时进行,设计到多线程编程,数据库的使用等。第四章概要设计逻辑结构图AndroidAndroid远程心电图仪新任务取报告上传数据回放退出记录心电登陆菜单栏连采样盒病人信息表打开蓝牙,接收数据,显示病人心电图,记录心电数据……连采样盒双击
新任务取报告上传数据回放退出记录心电登陆菜单栏连采样盒病人信息表打开蓝牙,接收数据,显示病人心电图,记录心电数据……连采样盒双击数据流程图
功能模块划分管理员登陆模块系统中因为涉及到用户的一些私人信息,包括病人信息的储存,修改,删除等操作,病人心电数据的收集,需要对有权限的人才能使用,否则信息容易被篡改,造成不可预知的后果,为了解决这个问题,需要添加管理员登陆模块,只有管理员才能进行这些操作。蓝牙数据接收模块系统对数据的传送都是通过无线的方式,病人的心电数据,是通过蓝牙不断的接收并储存下来,所以需要添加蓝牙数据接收模块。心电图显示模块病人的心电数据是通过蓝牙不断接收的,这些数据需要以波形的形式显示出来,便于医生分析病人的病情,由于数据是不断的接收的,这些数据就需要实时的动态的显示。数据储存模块病人信息,下达的任务,管理员信息等,这些信息的储存需要用到数据库,也方便数据的管理;病人心电数据的记录,由于数据量大,可以直接储存在文本文件中,方便读取,但不方便管理。上传下载模块各种数据信息,都要保存到服务器,以免数据丢失;同时,如果数据丢失或数据经过修改后想复原,就可以通过下载功能,将服务器上的数据下载到本地。通过无线网,将数据上传到指定的服务器。数据结构设计病人信息表:病人信息编号性别病床号姓名病人信息编号性别病床号姓名年龄住院号注册时间权限任务表:任务任务编号性别病床号采集时间年龄住院号姓名下达时间上传备注未完成原因管理员:管理员编号管理员编号密码用户名报表:数据文件名数据文件名编号姓名编号姓名年龄报表年龄报表检测日期检测日期住院号病床号住院号病床号数据标示数据标示第五章详细设计开发环境及平台的搭建在开始Android开发之旅启动之前,首先要搭建环境;JDK安装安装JDK,设置环境变量步骤如下:我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量:JAVA_HOME值为:D:\ProgramFiles\Java\jdk1.6.0_18(你安装JDK的目录)CLASSPATH值为:.;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\bin;Path:在开始追加%JAVA_HOME%\bin;NOTE:前面四步设置环境变量对搭建Android开发环境不是必须的,可以跳过。安装完成之后,可以在检查JDK是否安装成功。打开cmd窗口,输入java–version查看JDK的版本信息。出现类似下面的画面表示安装成功了:Eclipse安装先下载如下图所示的EclipseIDEforJavaDevelopers(92M)的win32bit版:解压之后即可使用。AndroidSDK安装在AndroidDevelopers下载android-sdk_r05-windows.zip,下载完成后解压到任意路径。运行SDKSetup.exe,点击AvailablePackages。如果没有出现可安装的包,请点击Settings,选中Misc中的"Forcehttps://..."这项,再点击AvailablePackages。选择希望安装的SDK及其文档或者其它包,点击InstallationSelected、AcceptAll、InstallAccepted,开始下载安装所选包在用户变量中新建PATH值为:AndroidSDK中的tools绝对路径(本机为D:\AndroidDevelop\android-sdk-windows\tools)。“确定”后,重新启动计算机。重启计算机以后,进入cmd命令窗口,检查SDK是不是安装成功。
运行android–h如果有类似以下的输出,表明安装成功:ADT安装打开EclipseIDE,进入菜单中的"Help"->"InstallNewSoftware"点击Add...按钮,弹出对话框要求输入Name和Location:Name自己随便取,Location输入\o"/android/eclipse"/android/eclipse。如下图所示:确定返回后,在workwith后的下拉列表中选择我们刚才添加的ADT,我们会看到下面出有DeveloperTools,展开它会有AndroidDDMS和AndroidDevelopmentTool,勾选他们。如下图所示:然后就是按提示一步一步next。完成之后:选择Window>Preferences...在左边的面板选择Android,然后在右侧点击Browse...并选中SDK路径,本机为:
D:\AndroidDevelop\android-sdk-windows点击Apply、OK。配置完成。[6]管理员登陆界面在主对话框中调用子对话框,登陆成功则加载数据库信息,登陆失败则提示用户名或密码错误停留在当前登录页面,取消则退出程序;LayoutInflaterflater=LayoutInflater.from(ThECGActivity.this); finalViewDialogView=flater.inflate(R.layout.login_dialog,null); newAlertDialog.Builder(ThECGActivity.this) .setTitle("管理员登陆") .setView(DialogView) .setPositiveButton("登录",newOnClickListener(){ @Override publicvoidonClick(DialogInterfacearg0,intarg1){ //TODOAuto-generatedmethodstub finalProgressDialogdlg=ProgressDialog.show(ThECGActivity.this,"请等待……","正在为你登录……",true); newThread(){ publicvoidrun(){ try{ sleep(3000); }catch(Exceptione){ e.printStackTrace(); }finally{ dlg.dismiss(); } } }.start(); } }).setNegativeButton("取消",newOnClickListener(){ @Override publicvoidonClick(DialogInterfacearg0,intarg1){ //TODOAuto-generatedmethodstub ThECGActivity.this.finish(); } }).create().show();菜单栏详细设计设计菜单项XML配置文件,有连采样盒,重登陆,记录心电,新任务,上传,取报告,回放,退出共8项。<menuxmlns:android="/apk/res/android"> <itemandroid:id="@+id/connect" android:title="连采样盒"/> <itemandroid:id="@+id/reLogin" android:title="重登陆"/> <itemandroid:id="@+id/record" android:title="记录心电"/> <itemandroid:id="@+id/newWork" android:title="新任务"/> <itemandroid:id="@+id/upload" android:title="上传"/> <itemandroid:id="@+id/get" android:title="取报告"/> <itemandroid:id="@+id/playBack" android:title="回放"/> <itemandroid:id="@+id/exit" android:title="退出"/></menu>重写Activity的onOptionsItemSelected方法,将菜单配置文件添加到界面中:publicbooleanonCreateOptionsMenu(Menumenu){ //TODOAuto-generatedmethodstub MenuInflatermi=getMenuInflater(); mi.inflate(R.menu.menu,menu); returntrue; }数据采集设计设置蓝牙通信使用蓝牙进行通信之前,你需要确认你的设备支持蓝牙,启动蓝牙需要两个步骤,并且需要BluetoothAdapter类。获得BluetoothAdapter类任何蓝牙activity都需要BluetoothAdapter类。使用静态方法getDefaultAdapter()获得一个BluetoothAdapter的实例,这代表了设备本身的蓝牙适配器(theBluetoothradio)。整个系统只有一个蓝牙适配器,你的程序可以通过获取到BluetoothAdapter实例与之交互。如果getDefaultAdapter()方法返回null则说明你的设备不支持蓝牙。BluetoothAdapterbtAdapt=BluetoothAdapter.getDefaultAdapter();If(btAdapt==null){Toast.makeText(this,“没有提供蓝牙设备”,Toast.LENGTH_LONG).show();Finish();return;}启动蓝牙
接下来,你必须确保用户启动了蓝牙。调用isEnabled()方法来检查当前蓝牙是否启动。如果该方法返回false,那么说明蓝牙没有启动。这时需要使用“ACTION_REQUEST_ENABLE”actionIntent作为参数,调用startActivityForResult()方法来请求启动蓝牙。这将通过系统设备来发出启动蓝牙的请求(不会停止你的程序)。例如:if
(!mBluetoothAdapter.isEnabled())
{
Intent
enableBtIntent
=
new
Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBtIntent,
REQUEST_ENABLE_BT);}
发现蓝牙设备发现蓝牙设备列表是一连串的扫描过程,可以查询到本地已启动的蓝牙设备,然后请求一些信息。已启动的蓝牙设备会提供一些信息,比如设备名称、MAC地址、类和互连状态。使用这些信息可以和远程蓝牙设备建立一个连接。查询配对设备在执行devicediscovery之前,最好在已配对的设备列表中查看所要发现的设备是否已经存在。通过调用getBondedDevices()函数可以获得代表已经配对的设备的BluetoothDevice集合。
例如,你可以查询所有已经配对的设备,然后通过一个ArrayAdapter添加和显示每个设备的名字给用户:Set<BluetoothDevice>pairedDevices=mBluetoothAdapter.getBondedDevices();//Iftherearepaireddevicesif(pairedDevices.size()>0){ //Loopthroughpaireddevices for(BluetoothDevicedevice:pairedDevices){ //AddthenameandaddresstoanarrayadaptertoshowinaListView mArrayAdapter.add(device.getName()+"/n"+device.getAddress()); }}发现设备调用startDiscovery()开始设备发现的过程,这个过程是异步的,startDiscovery()方法会立即返回一个boolean的值表示启动是否成功。这个发现过程通常包括大约12秒的查询扫描,之后是在发现的设备中查询其蓝牙名称。你的应用程序中必须注册一个ACTION_FOUNDIntent的BroadcastReceiver,用于接收发现一个蓝牙设备时发出的信息。对于每一个设备,系统将广播ACTION_FOUND的Intent。这个Intent包含了一些附加数据域—EXTRA_DEVICE和EXTRA_CLASS,分别包含BluetoothDevice类和BluetoothClass类的实例。//CreateaBroadcastReceiverforACTION_FOUNDprivatefinalBroadcastReceivermReceiver=newBroadcastReceiver(){ publicvoidonReceive(Contextcontext,Intentintent) { Stringaction=intent.getAction(); //Whendiscoveryfindsadevice if(BluetoothDevice.ACTION_FOUND.equals(action)){ //GettheBluetoothDeviceobjectfromtheIntent BluetoothDevicedevice=intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); //AddthenameandaddresstoanarrayadaptertoshowinaListViewmArrayAdapter.add(device.getName()+"/n"+device.getAddress()); } }};//RegistertheBroadcastReceiverIntentFilterfilter=newIntentFilter(BluetoothDevice.ACTION_FOUND);registerReceiver(mReceiver,filter);//Don'tforgettounregisterduringonDestroy启动发现功能如果你想要你的设备能被其他设备发现,调用startActivityForResult(Intent,int),传递一个ACTION_REQUEST_DISCOVERABLEactionIntent给它。这将发送一个请求给系统设置以启动可被发现模式。可被发现模式一般默认持续120秒,你可以通过给Intent添加一个EXTRA_DISCOVERABLE_DURATIONIntentextra来更改可被发现模式的持续时间,这个时间最大是300秒。IntentdiscoverableIntent=newIntent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION,300);startActivity(discoverableIntent);连接蓝牙设备为了在两个蓝牙设备之间建立一条应用程序的连接,你必须建立一个服务器和一个客户端的机制,其中服务端要打开蓝牙套接字接口,而客户端使用服务器端得MAC地址来启动一条连接。当服务端和客户端彼此之间都认为是连接上了,他们在RFCOMM协议管道上都会有一个蓝牙套接字接口BluetoothSocket。每一个蓝牙设备都会收到输入数据流和发出输出数据流,可以开始互相传递数据。服务端连接当要连接两个蓝牙设备时,其中一个蓝牙设备必须是已经打开BluetoothServerSocket的服务端,同时开始监听请求连接的信息,当一个蓝牙设备被接受时,会提供一个连接BluetoothSocket。当一个连接BluetoothSocket已被BluetoothServerSocket接受后,BluetoothServerSocket可以丢弃,除非你希望接受多个连接。建立服务端的蓝牙套接字接口和接受一个连接的基本步骤:调用listenUsingRfcommWithServiceRecord(String,UUID)方法来取得BluetoothServerSocket;调用accept()方法请求开始监听服务端的蓝牙套接字;可以调用close()方法释放服务端的蓝牙套接字,除非你希望接受更多其它连接;客户端连接为了要和远程蓝牙设备启动一个连接,这个设备要拥有一个公开的服务端的蓝牙套接字。首先你必须获得一个BluetoothDevice对象代表远程蓝牙设备。你必须使用这个BluetoothDevice来获取BluetoothSocket并启动连接。启动客户端的蓝牙通信连接的基本步骤:步骤1使用这个BluetoothDevice,调用createRfcommSocketToServiceRecord(UUID)方法来取得BluetoothSocket。步骤2调用connect()方法来启动蓝牙通信连接。管理蓝牙连接当你成功连接一个或多个蓝牙设备时,每一个蓝牙设备都有一条连接BluetoothSocket,此时蓝牙设备彼此间可以传递数据。使用BluetoothSocket,传递任何数据的过程都很简单,其步骤如下所示:步骤1通过InputStream和OutputStream接口来传递数据,分别调用getInputStream()和getOutputStream()方法来实现。步骤2调用read(byte[])和write(byte[])方法来读写数据流。最后可以使用canncel()方法来结束连接,关闭BluetoothSocket。[7]数据转化设计导联数据的帧格式: 一帧数据中含有各路数据的一次采样值,每个值的宽度为12bit,量化单位为(16×2400)÷8388607mV 一帧数据含16个字节,意义如下表。字节序号数据名称AAH第1引导符帧起始标志55H第2引导符S1状态字节1,包含导联脱落、心跳等信息附加信息暂不用S2状态字节1,包含其他信息[VL-VR]H导联Ⅰ的高8位8路有效数据,每路12bits[VF-VR]H导联Ⅱ的高8位[VL-VR]L,[VF-VR]H导联Ⅰ的低4位与导联Ⅱ的低4位拼合成1字节。[VC1]H导联C1的高8位[VC2]H导联C2的高8位[VC1]L,[VC2]L导联C1的低4位与导联C2的低4位拼合成1字节。[VC3]H导联C3的高8位[VC4]H导联C4的高8位[VC3]L,[VC4]L导联C3的低4位与导联C4的低4位拼合成1字节。[VC5]H导联C5的高8位[VC6]H导联C6的高8位[VC5]L,[VC6]L导联C5的低4位与导联C6的低4位拼合成1字节。publicvoidprocessData(byte[]byteBuf){ mShortBuffer=newshort[12]; byte[]temp=newbyte[2]; intj=2; for(inti=0;i<8;){ temp[0]=byteBuf[j+2]; temp[1]=byteBuf[j]; temp[0]=(byte)(temp[0]>>4); mShortBuffer[i]=temp[1]; mShortBuffer[i]=(short)(mShortBuffer[i]<<4); mShortBuffer[i]+=temp[0]; i++; temp[0]=byteBuf[j+2]; temp[1]=byteBuf[j+1]; temp[0]=(byte)(temp[0]<<4); temp[0]=(byte)(temp[0]>>4); mShortBuffer[i]=temp[1]; mShortBuffer[i]=(short)(mShortBuffer[i]<<4); mShortBuffer[i]+=temp[0]; i++; j+=3; } mShortBuffer[8]=(short)(mShortBuffer[1]-mShortBuffer[0]); mShortBuffer[9]=(short)(mShortBuffer[1]+mShortBuffer[8]/2.0); mShortBuffer[10]=(short)(mShortBuffer
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度电气设备安装与维修合同
- 总经理聘请合同模板
- 房地产代理合同范文:委托与代理
- 代理合同:房地产估价委托协议书
- 广告业务经营权转让合同
- 产品责任保险合同专业版解析
- 自动化机器租赁协议
- 2024装修工程转包合同范本
- 年度长期合作协议范例
- 全面购销合同模板珍藏
- 小学数学教师家长会ppt
- 君子自强不息课件
- 2022人教版高二英语新教材选择性必修全四册课文原文及翻译(英汉对照)
- WDZANYJY23低压电力电缆技术规格书
- 抗高血压药物基因检测课件
- 医院管理医院应急调配机制
- (公开课)文言文断句-完整版课件
- 小学生性教育调查问卷
- 医院感染管理质量持续改进反馈表
- 旅游行政管理第二章旅游行政管理体制课件
- 学生岗位实习家长(或法定监护人)知情同意书
评论
0/150
提交评论