APP下载

基于Android 的老年人辅助APP 研发

2016-06-17叶旺旺汤琼葛灿飞

电脑知识与技术 2016年11期
关键词:智能机

叶旺旺++汤琼++葛灿飞

摘要:随着智能机的普及,各种各样App的触角伸向了人民生活的方方面面,为老年人居家生活提供智能辅助的应用也越来越受到大众的关注。该文在分析了智能机和Android为使用者带来便利的基础上,针对老年人群体智能养老的需求,该文详细介绍基于Android平台为老年人生活提供辅助功能的App设计和开发。该App的应用将为老年人的居家生活提供有力的支持。

关键词:Android;智能机;智能辅助

中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2016)11-0068-04

Abstract: With the popularity of smart phone, the tentacles of various Apps have extended to every aspect of people's lives, and the applications provided the elder people with intelligent assisted living are increasingly concerned by the general public. Based on the analysis of the convenience and benefits from Android and smart machine, the design and development of the App for the elder people is introduced in the paper, which will provide strong support for the elderly living at home.

Key words: Android; Smartphone; intelligent assistant

1 背景

进入老年阶段,人们往往会随着年龄越大记忆力越来越衰退,近期愈演愈烈的老年性痴呆症引起人们的普遍关注。据人民日报刊载,中国老年痴呆患者已超 6 百万人。很多人认为,人老了犯糊涂是正常现象,实际上这是一种病,学名老年性痴呆,也称阿尔茨海默病。该病在我国发病率约为 5%,多发于 65 岁以上人群,患病人数约为 600 万人,并以每年三四十万人的数量增长。老年性痴呆是一种渐进性的大脑功能衰退性疾病,其多表现为丢三落四、健忘、迷路等等。

近年来,随着智能手机和移动互联网的迅速普及,其应用涵盖了生活的方方面面。这不仅因为手机使用起来方便,更源于移动应用可以帮人们做很多事情[1]。因此,在智能手机上实现协助老年群体安居生活的辅佐应用软件,提供类似护工时刻在身边提示老人生活细节的功能,具有一定研究价值和实用价值。

2 Android介绍

2.1 Android简介

Android是由Google公司和开放手机联盟领导及开发的基于Linux的自由及开放源代码的操作系统,主要用于移动设备,如智能手机和平板电脑。目前Android尚未有统一的中文命名,但我们习惯称之为“安卓”。Android的一个最大优势在于其开放性,开放的平台允许任何移动终端厂商加盟,显著的开放性也使其拥有更多的开发者。随着用户和应用的日益丰富,一个崭新的平台也将很快走向成熟。

2.2 Android四大核心组件

Android拥有4大核心组件,分别如下。

组件一:活动(Activity)

对于Android 来说,Activity是所有程序的根本,所有程序的事物处理流程都运行在Activity 之中;应用程序中,一个Activity显示一些控件也可以监听并处理用户的事件做出响应。

组件二:服务(Service)

Service与Activity的级别差不多,但不能自己运行,他是一个在后台运行的组件,用来执行长期操作或执行远程过程,并且可以和其他组件进行交互。

组件三:广播接收器(Broadcast)

Broadcast是一个专注于接收广播通知信息、并做出对应处理的组件。它们可以启动一个activity来响应它们收到的信息,或者用NotificationManager来通知用户。

组件四:内容提供者(Content Provider)

Content Provider的主要功能在于将一些特定的应用程序数据供给其他应用程序使用。

这些组件之间的通讯要是由Intent协助完成的。Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用[3]。

3 系统设计与实现

3.1 MVC

本项目的应用开发框架为MVC(Model View Controller)。MVC是一种软件设计典范,用一种把业务逻辑、数据、界面显示分离的方法组织代码。MVC主要分三块,模型(model)-视图(view)-控制器(controller)[2]。

模型是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。在本项目中主要职责是为视图提供数据和信息以及把用户输入的数据传送给控制器。

视图是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的。在本项目中视图主要为Activity类和定义界面的XML文件组成,他们共同负责将模型中的数据以一种用户能理解的形式显示在界面上。

控制器是应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。在本项目中,控制器负责大量的业务逻辑处理,主要是对视图传达的操作进行处理并返回,根据视图中传送来的参数,封装好对应的模型,在处理后将结果封装入模型后再交给视图进行显示,以此来满足用户交互的需求。

综上所述,本项目的系统框架图如图1所示。

3.2 SQLite数据库

本项目的数据库为SQLite。SQLite是一款非常流行的轻型数据库,是遵守ACID(事务的四个基本要素)的关系型数据库管理系统,支持 SQL 语言,并且只需使用很少的内存就有很好的性能;并因为它是开源的,所以受到了越来越多的开发者的喜爱。

4 系统功能设计

通过调研和分析,系统的功能如图2所示进行设计。

账户管理:WEB端,用户可以在该页面上进行账户的注册和登录;

手机端混合+GPS定位:该功能是一个service,运行于手机后台。每隔一段时间会向后台服务器上传用户的定位信息;

日程设置:手机上,用户可以设置日程安排。由一个运行于后台的service负责管理,到了用户设置的时间后,将自动点亮用户手机并发声告知用户;

语音播报:对日程设置的文本内容和求助语音的内容进行语音合成后调用系统的扬声器进行播报;

一键求助:按下后将用户的定位信息发送到指定的家属手机上。

5 核心功能的实现

5.1 登录功能

为了配合登录功能,作者专门写了JSP的服务端。服务端使用MVC框架,域名为http://lncdz.iok.la/myant/运行在tomcat7.0的服务容器中,手机端的登录都将通过这个域名进行操作。家属也可以登录该网站获取当前手机端用户的一些基本信息,包括用户的最近一次定位位置,日程设置信息等。

服务端主要是使用Servlet来提供服务,用户在手机端输入用户名和密码后,手机端通过HttpURLConnection类的openConnection()建立与服务器的连接,并将用户名和密码传输至服务器。服务器接收到请求后,根据GET还是POST的的方法调用Servlet的doGet()或者doPost()方法。我们继承javax.servlet.http.HttpServlet类并覆盖这2个方法,实现自定义对数据的处理和结果的返回。即可实现登录,又不仅限于登录的功能。

5.2 首页设计

首页使用Android的DrawerLayout和Fragment来实现侧边滑动的功能菜单栏。向左滑动可以调出,选择相应的菜单可以前往不同的功能模块。具体实现如下:

在activity_main.xml文件中,使用FrameLayout定义了首页的容器,即容纳内容显示的区域,并用ListView定义了侧边栏滑动出来的宽度和背景色等样式。程序运行时,手指从左侧屏幕边缘,持续滑动到屏幕中心之后的位置即可呼出侧边的功能菜单栏。

5.3 定位功能

目前Android 定位 SDK可以实现混合定位、GPS 定位和网络定位(基站+ WiFi)。混合定位方式,定位 SDK 会自动根据用户的实际情况进行智能判断使用网络定位或 GPS 定位,以达到最佳的定位效果。

1)在HelpMain_Fragment类上实现定位接口AMapLocationListener接口,该类继承至Fragment。AMapLocationListener是高德地图SDK包中提供的类。这样该类就可以操作定位的功能了。

2)初始化定位对象LocationManagerProxy,该对象使用LocationManagerProxy的getInstance()方法获取,其需要一个Activity对象作为参数。而由于我们的是Fragment,不用通过this来给LocationManagerProxy传入一个Activity对象。不过Fragment提供了this. getActivity()来获取一个Activity对象。所以这里可以通过调用this. getActivity()来传入一个Activity对象。

3)注册定位。使用之前初始化的对象LocationManagerProxy的requestLocationData(LocationProviderProxy.AMapNetwork, -1, 15, this)方法来定位。该方法的四个参数分别是定位类型,LocationProviderProxy.AMapNetwork表示使用高德定位的混合定位模式即GPS+网络定位,定位频率,移动距离,回调监听。鉴于应用的实际使用情况,使用-1表示定位一次即可,15表示移动距离15米即调用定位一次。定位的结果接受对象为this即实现了AMapLocationListener的HelpMain_Fragment。

4)onLocationChanged()为定位回调方法。无论定位是否成功,该方法都将会被调用。该方法内,定位成功后,我们将地址信息保存起来,并组装成指定格式的短信文本信息。通过SmsDeliveredBroadcastReciver类将短信文本广播给手机的短信服务“SMS_DELIVERED_ACTION”。这是Android系统提供的一种系统服务,他将代我们将短信通过移动运营商发送的指定的手机上并返回接受结果。具体代码如下:

5.4 语音提醒

讯飞语音是国内较为成熟的语音合成平台,目前其免费对开发者提供语音合成,语音+等免费服务。鉴于实际情况,作者最终决定使用讯飞语音提供的SDK来开发语音提醒功能。

1)创建VoiceTTS类,并在其中实例化语音合成对象SpeechSynthesizer ,该对象为语音合成的核心对象。此过程中使用SpeechSynthesizer类的createSynthesizer()方法,该方法需要(context,myInitListener)2个参数,第一个是Activity本身,第二个为初始化监听接口的一个实现对象InitListener。SpeechSynthesizer对象可以使用setParameter方法,通过设置 (SpeechConstant.VOICE_NAME, "xiaoyan") (SpeechConstant.PITCH, "50") (SpeechConstant.VOLUME, "50")这几组参数来分别设置发音人,音调和音量。

2)为语音合成对象设置开发者应用ID,该ID可在讯飞语音开放平台注册应用获得,如果没有该ID,将导致在线语音合成失败。使用SpeechUtility对象的createUtility(context, "appid=xxx")方法设置,该方法有2个参数,分别为Activity本身和字符串”appid=xxx”,xxx就是注册获得的appid如557ecf58

3)在HelpMain_Fragment,当要播放求救语音时,可以通过调用VoiceTTS类来播放语音内容。

该段代码从UserInfoBean中取出之前的设置的求助语音文本,并实例化了一个VoiceTTS类,传入了需要语音合成的文本。在云端合成后将返回用户端,并调用手机的扬声器将合成后的声音播放出来。以期周围的人能听到,并通过语音的内容帮助老人。

5.5 日程功能

日程功能是通过日历的设置和提醒功能来安排老年痴呆患者的行程。

创建一个CalendarActivity类作为该日程显示的activity,该类的视图效果在main.xml中定义。

其他还有CalendarConvert类是用来阴阳历的转换,ScheduleView类作为该日程添加日程功能的activity。通过LunarCalendar、SpecialCalendar这两个类来设置一年中的节日、特殊日子。

6 结束语

老年人辅助项目使用了当前流行的Android平台,其丰富的开发资源和各类Jar包以及API大大减少了开发者开发应用的难度,满足了开发一个应该的大部分需求。Android还具有开放性特征,使的普通的开发者进入Android开发应用零门槛。另外,Android应用使用可视化操作界面,通过简单易懂的图标和文字,能让用户快速学会使用一个Application(应用)。随着移动平台的普及率越来越高,Android应用如智能养老必将进入我们生活的方方面面。

参考文献:

[1] 王健生. 我国现代养老方式将逐步走向智能化[J]. 中国改革报, 2012(11).

[2] 孙久腾. 未来智能手机界面发展趋势[J]. 科技与创新, 2015(11).

[3] 传智播客高教产品研发部. Android移动应用基础教程[M]. 北京: 中国铁道出版社, 2015: 102-105.

猜你喜欢

智能机
百变智能机
智能机柜在取消高速公路省界收费站中的应用
高速公路ETC门架系统一体化智能机柜浅谈
无人机升空播种 智能机施肥浇水
联发科技携智能机解决方案隆重亮相通信展3D、双核、多媒体引领平价智能机新风尚