基于Android的习惯培养应用的设计与实现2013-09《电信工程技术与标准化》
陈岑,沈奇威,廖建新
北京邮电大学网络与交换技术国家重点实验室,北京,100876
东信北邮信息技术有限公司,北京,100191
Design and Implementation of a Habit Develop Software Based on Android Platform
Cen Chen,Qiwei Shen,Jianxin Liao
Beijing University of Posts and Telecommunications Networking and Switching Technology, State Key Laboratory, Beijing, 100876
EBUPT Information Technology Co., Ltd., Beijing, 100191
摘要
Android是以Linux为核心的手机操作平台,本文介绍了一款基于Android系统的名为 “习以为常”的习惯培养应用的设计与开发,包括应用的总体设计、模块分析和关键技术点。此外,还结合了社交化和游戏化的思路来提高用户粘度,并且对未来的设计与优化进行展望。
关键字: Android 习惯培养 习以为常 游戏化
ABSTRACT
Android is a mobile operating platform based on Linux.This paper introduced the general design, module analysis and the key technologies of design and develop a habit develop application under Android platform. In addition, a combination of socializing and game-oriented ideas to improve the user viscosity, and the functional design of the future prospects do.
Key words: Android Habit JustHoldOn Gamification
引言
随着人们对便携需求的不断变化,手机的使用越来越普及,进入了寻常百姓的生活当中。然而随着生活水平的不断提高,人们对移动设备的要求日益提高,移动设备开始向微型化智能化方向发展。移动互联网给用户带来的全新的体验,代表了移动增值业务未来的发展方向[1]。
近年来,Google智能手机平台Android得到了手机行业及客户的普遍认可[2],呈爆炸性的趋势发展,为移动运营商、手机制造商、软件开发商及客户提供了无限的发展空间[3],使市场上不断涌现出大量的基于Android平台的软件和增值服务。
目前市面上有不少习惯培养的网站,但是由于网站本身的局限性,不能让用户可以随时随地的记录下自己习惯培养的过程。故由此角度出发,利用手机的随时、随地、随身的特性,开发了一款名为“习以为常”的习惯培养的Android应用,突破了碎片化的限制,应用可以随时提醒用户进行习惯签到,用户也可以随时随地记录下自己的习惯培养过程。应用内引入的用户间的交互,以及一些激励机制,鼓励用户更好的坚持好习惯。
1.总体设计及模块分析
1.1总体设计
这是一款意在帮助用户坚持培养好习惯的应用,主要功能是为用户推荐好习惯;用户选择希望坚持的好习惯,并定制详细的培养计划;通过签到的方式来记录习惯培养的过程。为了鼓励和督促用户的坚持,应用引入了社交化和游戏化的思路。社交化是通过与好友间的互动来实现,而游戏化的思路则是通过一些激励机制来实现。
图 1 习以为常总体设计图
总体结构如图1所示。按照功能划分,应用主要由服务器交互模块、数据模块、功能模块和UI模块这四大模块组成。
服务器交互模块负责检查网络环境以及与服务器端进行数据的交互,包括数据信息的获取以及上传,例如获取好友信息以及提交习惯签到。
数据模块包括应用中的SQLite数据库、Preference存储和文件存储。数据模块统一管理了应用中的数据处理及缓存。
功能模块包含了应用的核心功能——用户、习惯和签到这三个主要功能的处理。
UI模块则是面向用户,获取用户的操作,并以友好的方式将用户所需的信息呈现给用户。
这四个模块分工合作,完成了整个应用的良好运作。
1.2 模块分析
1.2.1 服务器交互模块
这个模块主要是向其他模块提供服务以及与服务器进行交互。主要分为HTTP请求模块和HTTP结果解析模块。
HTTP是应用层协议,用于分布式协作超媒体信息系统,是一个客户端和服务器端请求和应答的标准。HTTP被广泛地运用于移动终端与服务器端的交互,它是一个基于“请求-响应”模式的协议,一个客户机与服务器建立连接后,发送一个请求给服务器。服务器接到请求后,给予相应的响应信息[4]。
HTTP请求模块统一封装了应用与服务器交互的接口,使得其他模块可以方便快捷的向服务器发起请求获取数据,而不用考虑细节。请求的方式包括GET和POST两种。
HTTP结果解析模块采用的是轻量级的数据传输格式JSON,载荷高、易于通过编码进行解析的特点使其非常适合移动互联网领域的数据传输。解析模块根据获取的结果类型,将结果封装到对应的对象结构中,方便其他模块的调用使用。例如,请求获取习惯库信息后,将得到的习惯信息解析封装到习惯对象中。
1.2.2 数据模块
数据模块对应的正是Android手机应用中数据存储的3种主要方式,即SQLite数据库、Preference存储和文件存储[5]。该模块的数据来源主要是服务器交互模块提供的服务器数据以及本地的缓存数据,数据处理后则提供给功能模块进行下一步操作。
(1) SQLite数据库
Android中通过SQLite数据库引擎来实现结构化数据存储, 从而可以高效的存储获取信息[6]。在本应用中,将用户信息以及消息信息存储在SQLite中,便于启动时快速的获取用户信息实现自动登录,以及及时呈现消息列表。
(2)Preference存储
Preference提供了一种轻量级的数据存储方式,应用场合主要是数据比较少、单一的配置信息。它以“键-值”对的方式将数据保存在一个XML配置文件中[7]。应用中对Preferences的存取方式进行了封装,优化了整体的代码架构。
该存储方式主要应用于记录用户的设置选择以及操作习惯,例如记录用户是否选择将习惯的签到信息分享至新浪微博,之后再签到的时候就会默认呈现用户之前的选择,为用户提供更好的使用体验。
(3)文件存储
除了SQLite数据库和Preference存储这两种方式存储之外,文件存储也是Android平台重要的存储方式。文件存储方式适用于文本文件、PDF文件、音视频文件和图片等。应用中的图像以及习惯、签到等信息由于数据较大,所以采用文件存储的方式进行缓存。
这些信息的缓存可以大大节约用户的流量损耗,并且缩短信息呈现至用户的耗时,大大优化了用户体验。同时考虑到长时间缓存造成的耗费空间的问题,我们也在应用中为用户提供清除缓存的功能,用户可以根据自己的需要选择性的删除缓存。
1.2.3功能模块
这是应用的核心模块,包含了最主要的功能,以及相关的处理流程和处理逻辑。该模块从UI模块获取用户的需求,从数据模块中获取相应的数据,再返回给UI模块呈现给用户。该模块主要划分为签到、习惯、用户模块。
(1)习惯模块
该模块提供了如下功能:系统习惯库的查看、用户习惯的新建或者加入、自己或者其他用户的习惯查看、习惯修改等功能。
通过数据统计与分析,我们为用户推荐了一些优质的习惯,包括学习、养生、工作、运动和其他这五大分类,用户可以看到每个习惯的概况以及正在坚持该习惯的其他用户的动态。此外,用户还可以根据自己的需求创建新的习惯。
如图2所示,用户在加入习惯时,需要设定每一个习惯的详细目标、每周计划的完成次数以及可见权限,成功加入习惯之后,应用还会推荐用户设置提醒闹钟以及邀请好友一起来培养这个习惯。
如图3所示,用户正在坚持的习惯不仅仅展示了上述信息,还包括当前进度的展示、每周完成的情况等详细数据,让用户从多角度对自己的进度进行评估。
图2 习惯定制界面 图3 用户习惯列表界面
(2)签到模块
该模块提供如下功能:对习惯的签到、签到详情的呈现、多种签到流的呈现以及对签到的鼓励及评论等。
如图4所示,应用中为习惯的每一次签到提供了多种类型的可选信息,包括文字、图片、是否保存地址、是否发送至新浪微博、是否@好友这些内容。用户可以根据自己的需求进行选择,让用户可以全面的记录下自己每一次的习惯签到。
如图5所示,应用中以信息流的形式来呈现签到信息,类型包括了热门动态、最新动态、好友动态、某个习惯下参与者的动态等,让用户可以多维度的查看签到信息。此外,用户还可以对每条签到进行鼓励和评论。
图4 习惯签到界面 图5 签到动态界面
(3)用户模块
该模块提供了如下功能:优质用户及微博好友的推荐、用户的交互等功能。
应用引入了新浪微博的用户信息,让用户可以在应用内便捷的与新浪微博好友进行互动,同时好友间的互动行为,例如评论、鼓励和提醒签到,也是对用户坚持习惯的一个督促。
1.2.4 UI模块
该模块是与用户直接交互的部分,总体框架采用左侧抽屉拉出的方式来组织菜单结构,并在首页中嵌套基于Tab的菜单结构,这种结构可以让用户很便捷的点取最重要的功能,同时将比较次要的功能隐藏在左侧抽屉中,不占主要内容的呈现空间。如图6和图7所示。
图6 抽屉界面 图7 首页界面
2.关键技术点
2.1图像缓存机制
Android主要应用在嵌入式设备当中,而嵌入式设备由于一些条件限制,通常都不会有很高的配置,特别是内存是比较有限。为了能够使得Android应用程序安全且快速的运行,Android 的每个应用程序都会使用一个专有的Dalvik虚拟机实例来运行,也就是说每个应用程序都是在属于自己的进程中运行的。一方面,如果程序在运行过程中出现了内存泄漏的问题,仅仅会使得自己的进程被杀掉,而不会影响其他进程。另一方面Android为不同类型的进程分配了不同的内存使用上限,如果应用进程使用的内存超过了这个上限,则会被系统视为内存泄漏,从而被杀掉。
在应用中会需要呈现大量的图片,图片获取的机制是首先判断是否已经缓存在内存中,如果内存中没有,再去SD中读取,如果两者都没有则从网上采取异步的方式获取。这些大量的图片会损耗大量的内存,所以我们需要对这些缓存在内存中的图像进行统一的管理与处理,避免造成内存溢出。
在应用中使用Softreference<Bitmap>软存储机制来对图片进行统一管理。SoftReference即对象的软引用。如果一个对象具有软引用,内存空间足够,垃圾回收器就不会回收它;如果内存空间不足了,就会回收这些对象的内存。只要垃圾回收器没有回收它,该对象就可以被程序使用。软引用可用来实现内存敏感的高速缓存。使用软引用能防止内存泄露,增强程序的健壮性。应用中采用这种方式后,很好的避免了图像造成的内存溢出问题,运行良好,加强了应用的健壮性。
2.2 Fragment实现代码复用
在应用中,每个界面会根据当前的需求,对习惯、签到、用户模块进行组合呈现,而每个模块都会根据不同的参数设置,有不同的具体呈现。在这里我们引入了设计模式中的策略模式,并通过 Android中的Fragment类来实现这个功能。Fragment是Android honeycomb 3.0新增的概念,与Activity类十分相似,但是可以在Activity类中复用不同的Fragment类,这样实现了界面和功能的复用,可以快速拓展新功能和迭代新版本。
例如,在图8中,习惯列表HabitsFragment、签到动态ChecksFragment和好友列表UsersFragment组成了个人信息界面PersonActivity。而在图9中,使用详细进度CalendarFragment和签到动态ChecksFragment又可以组成习惯详情界面HabitActivity。可见,使用Fragment来组织功能与界面,极大的提高了应用的灵活性和可拓展性。
图8 个人信息界面 图9 习惯详情界面
3.游戏化的功能设计思路
根据全球技术研究和咨询公司Gartner的预测,到2014年,超过70%的全球2,000家组织机构将拥有至少一个“游戏化”的应用。游戏化描述了在非游戏环境下运用游戏机制以激励人们并改变行为的大趋势。Gartner研究副总裁Brian Burke表示:“游戏化旨在激发更深入参与的关系以改变行为,但需要周密的实施。成功且可持续的游戏化能够将顾客转变成粉丝,寓工作于乐,或将学习变成一种享受,这种潜力巨大。”本节将从游戏激励大脑的几种方式入手[8],介绍应用中功能的设计。
3.1 用经验值条来度量进程
网络游戏中会经常看到将玩家逐级分级,以进度条的方式呈现玩家的成长,玩家在不断肯定自我的过程中有更大的前进动力。借鉴这个思路,我们记录用户在每一个习惯培养中的进度,包括总进度和每周进度,并通过数字以及进度条的方式将这些信息最直观的呈现给用户,让用户清晰的了解到自己当前的状况,激励用户更好的去坚持培养习惯。
3.2 把任务分割成可计量的短期和长期目标
游戏中经常把目标分成很多小任务,让用户可以较为简单的完成这些小任务,逐步达到最后的目标。借鉴该思路,我们将每个习惯划分为培养、巩固和完成阶段,让用户从一开始就对总体有清晰的了解;同时我们还将阶段继续细分,以周为单位对用户的签到进行统计总结,从而在每个阶段也都有更为详细的短期目标。
3.3 奖励成就
在游戏中,每达到一个小目标,你就会得到奖励。每一个小小的奖励都能最大化地满足人们的自尊心。所以我们在应用中,鼓励用户去鼓励和评论好友的签到,鼓励可以加强被鼓励用户的信心,而评论加强了用户间的交流,你可以由此找寻到志同道合的伙伴。这种情况下,你也将更有信心去坚持。
3.4 及时的反馈
在网络游戏中当你完成一个任务、学习到一种新的技能时,你能马上去施展这项技能,这种反馈让人们更加确信奖励。如果行动和结果的时间跨度很大,那么是比较难意识到这两者之间的关系,所以及时的反馈是非常的重要。在应用中,每一次的用户签到都会收到鼓励的话语,每一次周计划达标都会得到醒目的提示,来增强用户的成就感。
3.5 合作和集体的归属感
最最刺激大脑的关键因素其实来自于其他人。与他人合作,产生的集体归属感让用户对游戏产生更深的依赖。所以在该应用中,我们引入了社交化,通过导入用户的新浪微博好友,通过丰富的交互手段,如鼓励用户邀请好友一起培养习惯,或者结实培养相同习惯的好友等等,实现用户间的彼此鼓励与监督,共同进步。
4.未来展望
该应用目前主要是借鉴了游戏化的一些思路,未来可以考虑将游戏化直接融入到应用中,来增加应用的趣味性以及用户黏度,从此角度我们提出了“植物养成”的游戏模式。
在应用中,每一个习惯培养,都将得到一颗植物种子,通过不断的签到,植物会逐次经历发芽——生长——花苞——开花的生长过程,至于每一个习惯对应的花朵,需要用户成功培养该习惯之后才能看到,这样增加了用户的好奇心,增加了用户坚持习惯的动力。同时结合本应用的社交功能,也为用户提供相互浇水、施肥的功能,鼓励用户一起培养植物。这种游戏模式与习惯培养紧密的结合,相信会对用户有一定的激励作用。
5.结束语
基于Android平台的程序开发设计,有很好的应用前景。本设计实现了基于Android的习惯培养应用,并讨论了借鉴游戏化的功能设计思路。该应用界面友好,操作简单,用户可以便捷的进行习惯培养,为Android工具类应用的开发提供了一定的参考价值。
参考文献
[1] 徐童,廖建新.移动互联网与移动智能网的互通研究[J],计算机工程与应用,2005,20(1):9-12
[2] 王希贝.Android开源手机与知识产权保护浅析[J].中国发明与专利,2010(11):68—69.
[3] 贾理华,乐燕芬,施伟斌.基于Android平台简易即时通讯的研究与设计[J].常州工学院学报,2010(4):51—53
[4] Balachander Krishnarnurthy、Jennifer gexford.Web协议与实践[M].北京:科学出版社.2005:120.
[5] 黄佳星,王晶,沈奇威.基于Android的移动互联网应用框架方案[J],电信工程技术与标准化,2012,25(8)77-80
[6] http://www.ibm.com/developerworks/cn/opensource/os-cn-sqlfte/
[7] 郭宏志.Android应用开发详解[M].北京:电子工业出版社. 20j0:195,190
[8] http://v.163.com/movie/2010/11/M/4/M78DCK15U_M78DCO0M4.html