基于Android的用药安全客户端的开发毕业设计.docx

上传人:b****1 文档编号:14240699 上传时间:2023-06-21 格式:DOCX 页数:33 大小:1.47MB
下载 相关 举报
基于Android的用药安全客户端的开发毕业设计.docx_第1页
第1页 / 共33页
基于Android的用药安全客户端的开发毕业设计.docx_第2页
第2页 / 共33页
基于Android的用药安全客户端的开发毕业设计.docx_第3页
第3页 / 共33页
基于Android的用药安全客户端的开发毕业设计.docx_第4页
第4页 / 共33页
基于Android的用药安全客户端的开发毕业设计.docx_第5页
第5页 / 共33页
基于Android的用药安全客户端的开发毕业设计.docx_第6页
第6页 / 共33页
基于Android的用药安全客户端的开发毕业设计.docx_第7页
第7页 / 共33页
基于Android的用药安全客户端的开发毕业设计.docx_第8页
第8页 / 共33页
基于Android的用药安全客户端的开发毕业设计.docx_第9页
第9页 / 共33页
基于Android的用药安全客户端的开发毕业设计.docx_第10页
第10页 / 共33页
基于Android的用药安全客户端的开发毕业设计.docx_第11页
第11页 / 共33页
基于Android的用药安全客户端的开发毕业设计.docx_第12页
第12页 / 共33页
基于Android的用药安全客户端的开发毕业设计.docx_第13页
第13页 / 共33页
基于Android的用药安全客户端的开发毕业设计.docx_第14页
第14页 / 共33页
基于Android的用药安全客户端的开发毕业设计.docx_第15页
第15页 / 共33页
基于Android的用药安全客户端的开发毕业设计.docx_第16页
第16页 / 共33页
基于Android的用药安全客户端的开发毕业设计.docx_第17页
第17页 / 共33页
基于Android的用药安全客户端的开发毕业设计.docx_第18页
第18页 / 共33页
基于Android的用药安全客户端的开发毕业设计.docx_第19页
第19页 / 共33页
基于Android的用药安全客户端的开发毕业设计.docx_第20页
第20页 / 共33页
亲,该文档总共33页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于Android的用药安全客户端的开发毕业设计.docx

《基于Android的用药安全客户端的开发毕业设计.docx》由会员分享,可在线阅读,更多相关《基于Android的用药安全客户端的开发毕业设计.docx(33页珍藏版)》请在冰点文库上搜索。

基于Android的用药安全客户端的开发毕业设计.docx

基于Android的用药安全客户端的开发毕业设计

本科毕业设计

 

题目:

基于Android的用药安全客户端的开发

 

摘要

对用药安全客户端的具体实现的技术进行了分析,主要是SQLite数据库技术的使用、JSON数据的解析、使用Http协议的Post请求的网络数据的下载,由Android四大基本组件Activity、Service、BroadCast、ContentProvider、以及Intent和Fragment配合完成。

用药安全客户端软件运行于Android平台,提供对症找药、服药安全警示、家庭药箱、药品/保健食品信息查询、附近药店等功能。

用药安全客户端包含的主要组件有欢迎界面、侧边栏Drawer、ActionBar、ListView图文混排、ViewPagerIndicator和ViewPager分页效果实现、GridView、Spinner、地图、搜索、Camera等。

家庭药箱和服药安全警示,主要由数据库SQLiteOpenHelper、通知Notification、广播BroadcastReceiver等技术的实现。

而对症找药和保健食品则主要用到JSON数据解析、AsyncTask异步任务、ListView图文混排、Activity之间数据传递等技术实现。

 

关键词:

用药安全、Android;SQLite;JSON

 

 

Abstract

Fordrugsafetyclientspecificimplementationtechnologywereanalyzed,andthemainwastheuseofSQLitedatabasetechnology,parsingtheJSONdata,usingtheHttpPostrequestnetworkdatadownload,theActivitybytheAndroidfourbasiccomponents,services,BroadCast,ContentProvider,andIntentandfragmentstocooperatedtocomplete.DrugsafetyclientsoftwarerunningontheAndroidplatform,toprovidefinddrugsaccordingtoSymptomsofillness,medicationsafetywarning,familymedicine,medical/healthcarefoodinformationquery,nearapharmacy,andtheotherfunctions.Drugsafetyclientcontainsthemaincomponentswerewelcomescreen,thesidebarDrawer,ActionBar,ListViewbymixed,ViewPagerIndicatorandViewPagerpagingeffectimplementation,theGridView,Spinner,maps,search,Camera,etc.Familymedicinecabinetandmedicationsafetywarning,mainlyusedthedatabaseSQLiteOpenHelper,notifications,theimplementationoftheNotification,radioBroadcastReceiverandothertechnology.WhilesymptomaticformedicineandhealthfoodmainlyusedtheJSONdataparsing,AsyncTaskasynchronoustasks,ListViewbymixed,thedatatransmissionbetweentheActivityandothertechnicalimplementating.

Keywords:

MedicationSafety;Android;SQLite;JSONdata

 

目录

1前言1

2关键技术概述1

2.1Android操作系统分析1

2.1.1Android分析1

2.1.2Android架构1

2.2SQLite分析2

2.3Android布局管理器3

2.4Android四大基本组件3

2.4.1关于Activity3

2.4.2关于Service服务6

2.4.3关于ContentProvider内容提供者7

2.4.4关于BroadcastReceiver广播接收器7

2.5Intent的详细解析8

2.5.1Intent分析8

2.5.2Intent的抽象描述8

2.5.3Android如何解析Intent9

3系统需求9

3.1用户需求9

3.2系统设计的原则10

4Android用药安全的设计与实现11

4.1系统体系结构11

4.2程序的文件结构和用途11

4.3功能模块对照表13

5详细设计13

5.1首页的实现13

5.2对症找药14

5.3保健食品14

5.4搜索药品名15

5.5左抽屉15

5.6家庭药箱16

5.7服药提醒16

5.8附近药店17

5.9条码扫描17

6用药安全的运行测试18

6.1系统环境的搭建18

6.2软件的运行测试18

总结22

参考文献23

谢辞24

 

1前言

用药安全是一款侧重于家庭用药安全以及平时医疗保健的用药安全客户端软件,提供全面的常用药品使用信息,具有实用性、便利性、多样性。

通过此软件可以查看病症,查找用药方案,方便用户平时生活,节约看诊时间,减轻普通病看诊消费的经济压力。

本设计的任务是基于Android平台,完成用药安全客户端的设计与实现。

本文将分析对基于Android平台开发用药安全客户端的具体实现的技术,报告完成用药安全客户端的设计与实现的实践成果。

2关键技术概述

2.1Android操作系统分析

2.1.1Android分析

Android是Google在2007年11月宣布的基于Linux平台的开源手机操作系统的名称,而在Android系统底层方面,Android使用C/C++作为开发语言[8]。

该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的解决方案。

Android系统就是一个开发式的手机和平台电脑操作系统[9],早期由Google开发,后由开放手机联盟开发[1]。

它提供了从底层操作系统到上层的程序界面的所有软件,使用这个平台无需缴纳任何的授权许可费用,同时不同的厂商还可以根据自身的需求修改和扩展Android平台。

在Android平台下,除了应用程序运行的载体虚拟机之外,所有的Android应用程序之间是完全平等的。

所有的应用程序都运行在虚拟机上面,虚拟机提供了一系列用于应用程序和硬件资源间通信的API。

Android打破了应用程序之间的界限,在Android平台下开发应用程序,可以很方便的实现应用程序之间的数据共享。

一个应用程序不但可以通过API访问系统提供的功能,还可以通过申明自身的功能供其他应用程序调用[2]。

Android为开发人员提供了大量的使用库和工具,使得开发人员可以快速地创建自己的应用程序。

例如Android将著名的GoogleMap集成进来,开发人员通过简单的几行代码就可以快速的开发出基于地图的应用。

2.1.2Android架构

图2-1显示的是Android操作系统的主要组件。

Android同一个核心应用程序包一起发布,该应用程序包括email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。

所有的应用程序都是用Java编写的。

Android应用程序框架即开发者也完全可以访问核心应用程序使用的API框架。

该应用程序架构用来简化组件软件的重用:

任何一个应用程序都可以发布它的功能模块并且任何其他的应用程序都可以使用其所发布的功能模块(不过得遵循框架的安全性限制)。

该应用程序重用机制使得组件可以被用户替换。

图2-1Android系统架构图

2.2SQLite分析

SQLite是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。

Android在运行时(run-time)集成了SQLite,所以每个Android应用程序都可以使用SQLite数据库。

SQLite支持多数SQL92标准,很多常用的SQL命令都能在SQLite上面使用,除此之外Android还提供了一系列自定义的方法去简化对SQLite数据库的操作[3]。

SQLite由以下几个组件组成:

SQL编译器、内核、后端以及附件。

SQLite通过利用虚拟机和虚拟数据库引擎(VDBE),使调试、修改和扩展SQLite的内核变得更加方便。

SQLite和其他数据库最大的不同就是对数据类型的支持,创建一个表时,可以在CREATETABLE语句中指定某列的数据类型,但是你可以把任何数据类型放入任何列中。

当某个值插入数据库时,SQLite将检查它的类型。

如果该类型与关联的列不匹配,则SQLite会尝试将该值转换成该列的类型。

如果不能转换,则该值将作为其本身具有的类型存储[4]。

2.3Android布局管理器

Android本身是一个权限分立的操作系统。

在这类操作系统中,每个应用都以唯一的该系统主要用到的布局有线性布局,帧布局和相对位置布局。

(1)LinearLayout类

线性布局是最简单的布局之一。

android:

orientation可以设置线性布局的朝向,可以是水平(horizontal)或者垂直(vertical)两种排列方式。

同时使用android:

gravity设置控件的对齐方式,还可以通过设置控件的weight参数控制各个控件在容器中的相对大小。

(2)FrameLayout类

FrameLayout帧布局在屏幕上开辟出了一块区域,在这块区域上可以添加多个子控件,但是所有的子控件都被对齐到屏幕的左上角。

帧布局的大小由子控件尺寸最大的那个子控件来决定。

如果子控件一样大,同一时刻只能看到最上面的子控件,因为在FrameLayout中,子控件是通过栈来绘制的[5]。

(3)RelativeLayout类

RelativeLayout相对位置布局,即子控件的位置可以取决于兄弟控件或父控件的位置,与Linearlayout相比,可以减少嵌套,避免生成不要的对象,代码简洁,是本程序中主要使用的布局。

2.4Android四大基本组件

Android四大基本组件分别是Activity,Service服务,ContentProvider内容提供者,BroadcastReceiver广播接收器。

2.4.1关于Activity

Activity是android最常用的组件,是应用程序的表示层,Activity一般通过View来实现应用程序的用户界面,相当于一个屏幕,用户与程序的交互是通过该类实现的。

Activity类创建了一个窗口,开发人员可以通过setContentView(View)接口把UI放到activity创建的窗口上,当activity指向全屏窗口时,也可以用其他方式实现:

作为漂浮窗口(通过windowIsFloating的主题集合),或者嵌入到其他的activity,使用ActivityGroup[6]。

Android平台是个手机作业系统。

撇掉其他功能不谈,手机的特性,就是应该能随时在未完成目前动作的时候,暂停正在使用的功能,切换到接电话、接收短信模式,而且在接完电话回到应用程序时,还希望能看到一样的内容。

现在用户使用智能手机,大多已习惯使用多工的作业系统(如windowsMobile),可以在用手机听音乐的同时,执行其他多个程序。

同时执行多个程序有它的明显好处,但也有它的缺点。

每多执行一个应用程序,就会多耗费一些系统内存,而手机里的内存是相当有限的。

当同时执行的程序过多,或是关闭的程序没有正确释放掉内存,系统运行时就会觉得越来越慢,甚至不稳定。

为了解决这个问题,Android引入了一个新的机制—生命周期。

Android应用程序的生命周期是由Android框架进行管理,而不是由应用程序直接控制。

通常,每一个应用程序(入口一般会是一个活动的onCreate方法),都会占据一个进程。

当系统内存即将不足的时候,会依照优先级自动进行进程的回收。

不管是使用者或开发者,都无法确定应用程序何时会被回收。

关于进程的生命周期将在下一节中介绍,本节主要介绍活动的生命周期。

一个活动类别除了OnCreate方法之外,还预先定义了onPause(暂停)、OnResume(继续)等的基本方法,当从一个活动切换到另一个活动的时候,原来的活动将经过一连串的状态改变。

开发者可以在程序中添加一些各状态相对应的流程,每次活动状态改变时,就会执行相对应的流程。

要让用户有好的使用体验,活动需要在各个周期中负责保管状态、恢复状态、传送资料等工作。

Android的虚拟机是使用堆栈管理。

主要有四种状态:

(1)活动状态

活动状态是指用户启动应用程序或活动后,活动运行中的状态。

在Android平台上,同一个时刻只会有一个活动处于活动或运行状态。

其他的活动都处于未启动、停止或是暂停的状态。

(2)暂停状态

暂停状态是指当活动暂时暗下来,退到背景画面的状态。

当警告对话框或电话来了时,都会让原来运行的活动退到背景画面。

新出现的警告对话框等界面元件盖住了原来的活动画面。

活动处在暂停状态时,用户无法与原活动互动。

(3)停止状态

停止状态是指有其他活动正在执行,而这个活动己经离开屏幕,不再动作的状态。

通过按返回键,可以调出所有处于停止状态的应用程序列表。

处于停止状态的活动,还可以通过通知来唤醒。

(4)已回收或未启动状态

已回收或未启动状态是指活动尚未被启动、已经被手动终止或己经被系统回收的状态。

要手动终止活动,可以在程序中调用finish方法。

如果是被系统回收,可能是因为内存不足了,所以系统根据内存不足时的回收规则,将处于停止状态的活动所占用的内存回收。

图2-2所示的七个状态又可以归纳成三组:

(1)资源分配(创建/销毁)

完整的活动生命周期由创建状态开始,由销毁状态结束。

创建时分配资源,销毁时释放资源。

(2)可见与不可见(启动/重新启动/停止)

当活动运行到启动状态时,就可以在屏幕上看到这个活动。

相反地,当活动运行到停止状态时,这个活动就会从屏幕上消失。

当用户按下返回键回到上一个活动时,会先到重新启动状态,再到一般的启动状态。

(3)用户取得屏幕的控制权(继续/暂停)

当有个警告对话框、短信、电话等信息进入时,原来的活动会进入暂停状态,暂时放弃屏幕的控制权,被中断到背景去,将前景交给优先级高的事件。

当这些优先级高的事件处理完后,活动就改进入继续状态,此时又取得屏幕的控制权。

图2-2Activity生命周期

由实际运行来看,我们可以归纳出所有Android应用程序都遵循的运作流程:

(1)一般启动

启动一个活动的基本流程为onCreate→onstart→onResume。

该流程首先分配资源给这个活动(创建状态),然后将活动的内容显示到屏幕上(启动状态);在一切就绪后,取得屏幕的控制权(恢复状态),用户可以开始使用这个程序。

(2)调用另一个活动

调用另一个活动的基本流程为onause

(1)→onCreate

(2)→onstart

(2)→0nResume

(2)→

onStop

(1)。

该流程首先冻结原来的活动,再交出屏幕控制权;直到活动2完成一般启动流程后,活动1才会被停止。

(3)回到原来活动

回到原来活动的基本流程为onPause

(2)→onRestart

(1)→onstart

(1)→onResume

(1)→

onstop

(2)→onDestroy

(2)。

另外按返回键也可以回到原来的活动。

(4)退出结束

退出结束的基本流程为onPause→onStop→onDestroy。

如果程序中有直接调用finish方法来关闭活动的话,系统会跳过先冻结的阶段,直接暂停,停止,然后销毁。

(5)回收后再启动

回收后再启动的基本流程为oncreate→onstart→onresume。

如果被回收掉的活动一旦又重新被调用时,会像一般启动一样再次调用活动的onCreate方法。

当在模拟器上已经执行过多个应用程序,只要按下返回键,就会开启最近一次开启过的活动。

所以如果要让再次被创建的活动跟原来开启过的一样,那么在活动之间切换时,就要保存资料:

即在每次活动运行到暂停或停止状态时先保存资料,然后在创建时将资料读出来。

2.4.2关于Service服务

一个Service是一段长生命周期的,没有用户界面的程序,可以用来开发如监控类程序。

比较好的一个例子就是一个正在从播放列表中播放歌曲的媒体播放器。

在一个媒体播放器的应用中,应该会有多个activity,让使用者可以选择歌曲并播放歌曲。

然而,音乐重放这个功能并没有对应的activity,因为使用者当然会认为在导航到其它屏幕时音乐应该还在播放的。

在这个例子中,媒体播放器这个activity会使用Context.startService()来启动一个service,从而可以在后台保持音乐的播放。

同时,系统也将保持这个service一直执行,直到这个service运行结束。

另外,我们还可以通过使用Context.bindService()方法,连接到一个service上(如果这个service还没有运行将启动它)。

当连接到一个service之后,我们还可以service提供的接口与它进行通讯。

拿媒体播放器这个例子来说,我们还可以进行暂停、重播等操作。

Service使用步骤如下:

继承service类;AndroidManifast.xml配置清单文件中节点里对服务进行配置;服务不能自己运行,需要通过Contex.startService()或Contex.bindService()启动服务。

通过startService()方法启动的服务于调用者没有关系,即使调用者关闭了,服务仍然运行想停止服务要调用Context.stopService(),此时系统会调用onDestory(),使用此方法启动时,服务首次启动系统先调用服务的onCreate()→onStart(),如果服务已经启动再次调用只会触发onStart()方法使用bindService()启动的服务与调用者绑定,只要调用者关闭服务就终止,使用此方法启动时,服务首次启动系统先调用服务的onCreate()→onBind(),如果服务已经启动再次调用不会再触发这2个方法,调用者退出时系统会调用服务onUnbind()→onDestory(),想主动解除绑定可使用Contex.unbindService(),系统依次调用onUnbind()→onDestory()。

2.4.3关于ContentProvider内容提供者

ContentProvider,即内容提供商或者内容提供器。

再具体解释就是:

CP是移动数据业务内容提供商,或者叫移动增值业务内容提供商。

ContentProvider认证,即CP认证,指允许内容提供商提供内容。

(如腾讯CP认证允许QCC商家提供QCC虚拟服务内容并自行销售。

)Android中的Contentprovider机制可支持在多个应用中存储和读取数据。

这也是跨应用共享数据的方式之一,还有文件,sharePreference,SQLite数据库等方式存储共享数据库,但是ContentPrivider更好的提供了数据共享接口的统一性。

在android系统中,没有一个公共的内存区域,供多个应用共享存储数据。

Android提供了一些主要数据类型的Contentprovider,比如音频、视频、图片和私人通讯录等。

可在android.provider包下面找到一些android提供的Contentprovider。

可以获得这些Contentprovider,查询它们包含的数据,当然前提是已获得适当的读取权限。

总的一句:

内容提供器是应用程序之间共享数据的接口,Android系统将这种机制应用到方方面面。

比如:

联系人提供器专为不同应用程序提供联系人数据;设置提供器专为不同应用程序提供系统配置信息,包括内置的设置应用程序等。

2.4.4关于BroadcastReceiver广播接收器

广播接收器是一个专注于接收广播通知信息,并做出对应处理的组件。

很多广播是源自于系统代码的──比如,通知时区改变、电池电量低、拍摄了一张照片或者用户改变了语言选项。

应用程序也可以进行广播──比如说,通知其它应用程序一些数据下载完成并处于可用状态。

应用程序可以拥有任意数量的广播接收器以对所有它感兴趣的通知信息予以响应。

所有的接收器均继承自BroadcastReceiver基类。

广播接收器没有用户界面。

然而,它们可以启动一个activity来响应它们收到的信息,或者用NotificationManager来通知用户。

通知可以用很多种方式来吸引用户的注意力──闪动背灯、震动、播放声音等等。

一般来说是在状态栏上放一个持久的图标,用户可以打开它并获取消息。

BroadcastReceiver事件分类:

系统广播事件,比如:

ACTION_BOOT_COMPLETED(系统启动完成后触发),ACTION_TIME_CHANGED(系统时间改变时触发),ACTION_BATTERY_LOW(电量低时触发)等等。

用户自定义的广播事件有以下几种:

注册广播事件:

注册方式有两种,一种是静态注册,就是在AndroidManifest.xml文件中定义,注册的广播接收器必须要继承BroadcastReceiver类;另一种是动态注册,是在程序中使用Context.registerReceiver注册,注册的广播接收器相当于一个匿名类。

两种方式都需要IntentFIlter。

发送广播事件:

通过Context.sendBroadcast来发送,由Intent来传递注册时用到的Action。

接收广播事件:

当发送的广播被接收器监听到后,会调用它的onReceive()方法,并将包含消息的Intent对象传给它。

onReceive中代码的执行时间不要超过5s,否则Android会弹出超时dialog。

2.5Intent的详细解析

2.5.1Intent分析

所谓Intent,就是一种运行时的绑定机制,在应用程序运行时连接两个不同的组件。

一般的应用是通过Intent向android系统发出某种情求或者意愿,然后android系统会到根据请求查询各个组件声明的IntentFilter,找到需要的组件并运行它。

Activity、Service和BroadcastReceiver,他们都是通过Intent机制激活的,不同类型的组件有传递Intent的不同方式[7]。

而本

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2