android手机计步软件的设计与实现毕业论文.doc_第1页
android手机计步软件的设计与实现毕业论文.doc_第2页
android手机计步软件的设计与实现毕业论文.doc_第3页
android手机计步软件的设计与实现毕业论文.doc_第4页
android手机计步软件的设计与实现毕业论文.doc_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

武汉纺织大学2013届毕业设计论文android手机计步软件的设计与实现毕业论文目 录1 绪论31.1 研究背景31.2 研究目的和意义31.3 研究内容41.4 本文结构42 相关技术综述52.1 Android52.1.1 Android简介52.1.2 Android特性62.1.3 Android 基本框架62.1.4 Android系统的四大组件82.2 开发环境介绍92.2.1 Eclipse简介92.2.2 ADT102.2.3 Android SDK102.2.4 SQLite数据库102.3 GPS相关理论技术知识102.3.1 GPS定位原理102.3.2 Android中GPS类简介113 需求分析123.1 功能需求123.2 数据的需求分析133.3 系统运行环境144 系统设计144.1 功能模块设计144.1.1 计步功能144.1.2 查询运动信息功能164.1.3 设置参数功能184.1.4 退出系统功能194.2 数据设计205 系统实现215.1 Android环境搭建215.2 软件结构设计235.3 计步功能255.4 查询运动信息功能295.5 设置参数功能305.6 退出系统功能316 结束语33参考文献34附 录35致 谢561 绪论1.1 研究背景自上世纪80年代第一部手机诞生以来,随着计算机技术的进步,手机也经历了从模拟器到GSM、2.5G再到今天的3G手机如此一个发展历程1。特别是进入21世纪后手机的硬件性能得到很大的提高,当前主流手机普遍配有主频500MHZ的微处理器和500MB容量的存储器。与之同步发展的还有支持手机运行的手机操作系统,从当初的单片机系统到后来的专用嵌入式系统,到后来开始为智能手机设计开发出可以更高效管理手机软硬件资源的操作系统,其中有不少属于开源项目的手机操作系统。目前全球的智能手机操作系统主要以Google公司开发的Android系统、苹果公司开发的iPhone系统、诺基亚公司开发的Symbian系统、微软公司开发的WindowsMobile系统和Linux系统为代表。Android平台是一个面向大众的系统,分布在低端,中端和高端市场中,在各个阶段的是市场中都有很受欢迎的机型,并且Android是开源的,开发者随时都可以查看系统源代码,并且使用时下最流行的java作为其主要的开发语言。由于这些特点,使得Android成为现在市场占有量最大的软件平台。近来越来越多的人对自身健康问题感到关注,运动健身类软件也逐渐成为了移动互联网业务的一个主要应用方向。因此,本文以运动健身作为研究方向,设计并实现一款基于Android智能手机的计步应用软件。1.2 研究目的和意义 随着移动互联网的发展和社会文明程度的不断提高,人们的生活观念也在不断转变。运动休闲作为一种新时代的休闲理念,己逐渐成为现代人生活的一种时尚,显示出旺盛的社会需求,它所强调的正是在运动中放松身心,在休闲中锻炼体质,随时随地随心,而步行无疑是最好的、简单实用的方法。对于步行这种简单易行的运动,要是能有一个优秀的搭档与步行构成完美组合,那么我们的步行运行便会立竿见影,显现在健康活动中的重要作用,这个优秀的搭档便是计步器。本文针对现在市面上现有的计步器产品进行了广泛的调查。目前为止,此类产品可分为两大类:一类是电子计步器,是独立的硬件产品,与火柴盒体积相仿,内部设有加速度传感器,外部设有显示屏和操作按键,价格在几百元;另一类是运行于智能手机平台上的运动类应用软件,使用手机自带的硬件模块,包括GPS和加速度传感器,使用手机屏幕作为统计结果输出,手机按键或触屏作为操作输入。本文从两类中分别挑选一个有代表性的产品,西铁城TW700电子计步器和SPortyPal运动软件进行对比,结果显示,运动类应用软件具有以下几个明显的优势:1.不需要另外携带,减少了用户的携带成本;2.价格相对便宜,其中很大部分为免费安装使用;3.智能手机功能强大,且易于应用软件的扩展。另外,Android操作系统凭借着自己开放的平台允许任何移动终端厂商加入到Android联盟中,从而使得越来越多的用户倾向于选择操作系统为Android的手机品牌。选择设计基于Android平台的计步器软件,毫无疑问能覆盖更多的用户,让用户的步行运动显现效果。1.3 研究内容 本文围绕android手机计步软件的设计与实现展开研究,设计了基于GPS的研究实现方案。通过获取GPS数据来对用户的运动情况进行统计。本文的工作主要集中在以下几个方面: 1、 学习Android和GPS相关知识和技术。本文将通过Android手机GPS功能来获取用户实时的经纬度信息,借助地球球面两点间的距离公式计算用户的运动距离,从而测得用户所走的步数、速度以及消耗的热量。 2、设计实现辅助功能:查询用户的运动信息,通过柱状图来直观的显示用户以往的运动情况,激励用户挑战自我,增强体质;设置软件的配置参数:身高、体重、运动目标,以便更准确的实现计步功能,为用户所青睐。 3、根据以上功能设计来实现用户交互界面,让计步器软件不仅是逻辑功能,在视觉和交互上能够提供让用户满意的使用体验。1.4 本文结构本论文一共有6章,每章内容介绍如下:第1章 绪论。介绍Android手机计步软件研究的背景、目的、意义以及内容。第2章 相关技术综述。介绍Android平台开发所设计到的开发环境和实现本软件开发的GPS技术。第3章 需求分析。主要介绍系统的需求分析。第4章 系统设计。介绍本系统的设计。第5章 系统实现。介绍本系统的实现。第6章 结束语。对自己工作的总结,指出工作的不足,并且对系统的一些后续的发展提供一些建议。2 相关技术综述2.1 Android2.1.1 Android简介Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。Android是基于Linux内核的软件平台和操作系统,早期由Google开发(在华注册商标名为“安致”),后由开放手机联盟(Open Handset Alliance)开发。它采用了软件堆层(software stack,又名以软件叠层)的架构,主要分为三部分。低层以Linux内核工作为基础,只提供基本功能;其他的应用软件则由各公司自行开发,以Java作为编写程序的一部分。另外,为了推广此技术,Google和其它几十个手机公司建立了开放手机联盟。Android在未公开之前常被传闻为Google电话或gPhone。大多传闻认为Google开发的是自己的手机电话产品,而不是一套软件平台。到了2010年1月,Google开始发表自家品牌手机电话的Nexus One,目前最新SDK版本为Android 4.2.2。对于一个Android应用程序来说,是由Activity、IntentReceiver、Service、Content Provider四部分组成。在应用程序中使用时,需要在配置文件AndroidManifest.xml中进行配置。2.1.2 Android特性Android系统有如下的几大特性2: 1 应用程序框架 支持组件的重用与替换 2 Dalvik虚拟机 专门为移动设备做了优化 3 内部集成浏览器 该浏览器基于开源的WebKit引擎 4 优化的图形库 包括2D和3D图形库,3D图形库基于OpenGL ES 5 SQLite 用作结构化的数据存储 6 多媒体支持 包括常见的音频、视频和静态印象文件格式 7 GSM电话(依赖于硬件) 8 蓝牙Bluetooth, EDGE, 3G, and WiFi (依赖于硬件) 9 照相机,GPS,指南针,和加速度计 (依赖于硬件) 10丰富的开发环境 包括设备模拟器,调试工具,内存及性能分析图表,和Eclipse集成开发环境插件。2.1.3 Android 基本框架图 21 Android 体系结构 Android 的软件层次结构包括一个操作系统,中间件,应用程序。其软件层次结构自上而下可分为: (1)应用程序:以java语言编写,设计用户界面交互设计。Android本身提供了桌面,联系人,电话,浏览器等很多核心的应用。 (2)应用程序框架:为应用程序提供系统的API。通过Android的应用程序框架,开发人员可重用各种组件和服务3。应用程序的框架组成部分:l UI组件:包括列表,文本框,按钮等UI组件,是用户可视的部分。l Content Providers:提供了一种应用程序可实现数据的访问和共享的机制。l Notification Manager:能让应用程序将自己的警告信息显示在状态栏上。l Activity Manager:管理应用程序的生命周期,并提供应用程序页面退出的机制。 (3)各种库和Android的运行时环境:Android包含了一些C/C+库,这些库能通过JNI技术供系统的各种组件使用。下面是部分核心库:l 界面管理(Surface Manager):管理访问显示子系统4和无缝组合多个应用程序的二维和三维图形层。l 媒体库(Media Framework):包括多种常用的音频,视频格式回放和录制。同时支持静态图像文件,支持MPEG4,MP3,AAC,JPG,PNG,H.264,ARM等多种编码格式。l SQLite:一个通用型很强的轻型关系型数据库引擎。l OpenGL|ES:提供了对3D的支持。l FreeType:位图和矢量字体渲染。l WebKit:一个最新的web浏览器引擎,支持android浏览器和一个可嵌入的web视图。l SGL:底层的2D图形引擎。l SSL:位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。l Android运行环境主要指的虚拟机技术-Dalvik,android包括了一个核心库的集合,该核心库提供了java编程语言核心库的大多数功能。每一个android应用程序是Dalvik虚拟机中的实例,运行在它们自己的进程中。 (4)Linux内核:Android使用Linux2.6作为操作系统,基于Linux2.6的内核提供了一系列的系统服务,如安全性,进程管理,内存管理,网络协议栈和驱动模型。Linux内核也同时作为硬件和软件栈之间的抽象层,这一层隐藏了具体的硬件特性为上一层提供统一的标准服务。Android对操作系统的使用还包括驱动抽象,主要驱动有:显示驱动,照相机驱动,wifi驱动,音频驱动。2.1.4 Android系统的四大组件在Android系统中,为我们提供了四大基本组件,每个组件是一个视图,但是有些是可见的,有些是不可见的视图,像Activity,ContentProvider是可见的视图,Service和BroadcastReceiver是不可见的,它们只在系统的后台运行。下面分别介绍四大组件5: (1)Activity 简介在Android系统中Activity提供可视化的用户界面,一个Android应用通常由多个Activity组成。多个Activity组成了Activity栈(Stack),当前活动的Activity处于栈顶。Activity有自己的生命周期,由Android系统来控制。 (2)Service 简介顾名思义Service就是运行在后台的一种服务程序,一般很少和用户交互,因此没有可视化界面定义一个Service类比较简单,只要继承Service类,实现其生命周期中的方法就可以了。一个定义好的Service必须在AndroidManifest.xml配置文件注册,通过元素声明才能使用.Service有自己的生命周期,我们可以调用startService()启动一个Service或者bindService()方法来绑定一个存在的Service (3)Broadcast Receiver 简介Broadcast Receiver 顾名思义广播接收器,它和事件处理机制类似,只不过事件处理机制是程序组件级别的(例如,某个按钮的单击事件),而广播事件处理机制是系统级别的。到目前为止我们可以使用Intent来启动一个程序组件,我们还可以通过使用sendBroadcast()方法来发起一个系统级别的事件广播来传递消息。我们可以在你的应用程序中实现Broadcast Receiver来监听和响应这些广播的Intent (4)ContentProvider简介Content Provider 用来保存和检索数据,并且使应用程序之间相互访问数据成为可能。它是跨应用程序共享数据的唯一方法。Android 为常用的数据类型(如:音视频、图片和联系方式等)提供了大量的Content Provider。它们被定义在vider包下面。通过这样定义好的ContentProvider 我们可以方便的进行数据操作。当然我们必须拥有适当的权限。我们也可以自己来定ContentProvider共享我们的数据,方便用户的访问。2.2 开发环境介绍2.2.1 Eclipse简介 Eclipse是一个开放源代码的、基于Java的可扩展开发平台6。最初是由IBM公司开发的替代商业软件Visual Age for Java的下一代IDE开发环境。2001年11月贡献给开源社区,现在它是由非营利软件供应商联盟Eclipse基金会管理的。Eclipse是著名的跨平台的自由集成开发环境(IDE)。最初用java语言开发,但是目前也可以通过插件使其作为其他计算机语言的开发工具。Eclipse是一个开放源代码的软件开发项目,专注于为高度集成的工具开发提供一个全功能、具有商业品质的工业平台,主要有Eclipse项目、Eclipse工具项目和Eclipse技术项目三个项目,具体包括Eclipse Platform、JDT、CDT和PDE四个部分组成。JDT支持java开发、CDT支持C开发、PDE用来支持插件开发、Eclipse Platform就是一个开放的可扩展的IDE,提供一个通用的开发平台。Android工程是在Eclipse工具上编写的,进行android工程的编写,首先需要在Eclipse上安装ADT插件,然后指定SDK所在的路径,便可以创建android虚拟机了。虚拟机模拟的是android智能手机的界面,通过操作虚拟机可以体验到android智能手机的部分应用。同时虚拟机是作为开发的android应用运行的场所,它提供基本的人机交互功能。2.2.2 ADT目前Android开发所用的开发工具是Eclipse,在Eclipse编译IDE环境中,安装ADT,为Android开发提供开发工具的升级或者变更,简单理解为在Eclipse下开发工具的升级下载工具。2.2.3 Android SDKSDK:(software development kit)软件开发工具包。被软件开发工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。因此,Android SDK 指的既是Android专属的软件开发工具包。 2.2.4 SQLite数据库SQLite是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。SQLite第一个Alpha版本诞生于2000年5月, 最新版本为3.7.9。2.3 GPS相关理论技术知识2.3.1 GPS定位原理 GPS,中文全称为全球定位系统,由21颗使用中的卫星和3颗备用卫星组成,在2万高空以12小时为周期围绕地球旋转。GPS利用到达时间测距原理(TOA)来确定用户的位置。这种原理需要测量信号从位置己知的发射源(例如无线电信标或卫星)发出至到达用户接收机所经历的时间,将这个称为信号传播时间的时间段乘以信号的速度(光速),便得到从发射源到接收机的距离。接收机通过测量从多个位置己知的发射源(即导航台)所广播的信号的传播时间,便能确定自己的位置。大多数民用GPS的精度在15米以内,个别高端产品可以保持在5米左右。 GPS测量的原理是将卫星视为“动态”的控制点,在己知其瞬时坐标(可根据卫星轨道参数计算)的条件下,以GPS卫星和用户接收天线之间的距离(或距离差)为观测量,采用空间距离后方交会方法7(前方交会),从而确定用户接收机天线所处的位置。 通过以上方法,手机GPS模块定时向卫星发送请求,获取用户的实时经纬度信息,提供给逻辑运算模块进行处理。2.3.2 Android中GPS类简介 Android支持地理定位服务的API.该地理位置可以用来获取当前设备的地理位置。应用程序可以定时请求更新设备当前的地理定位信息。Android关于定位8功能的android.location包中比较重要的类: LocationManager:本类提供访问定位服务的功能,也提供获取最佳定位提供者的功能。另外,临近警报功能也可以借助该类来实现。 LocationProvider:定位提供者的抽象类。定位提供者具备周期性报告设备地理位置的功能。 LocationListener:提供定位信息发生改变时的回调函数。必须事先在定位管理器中注册监听器对象。Criteria:该类使得应用能够通过在LocationProvider9中设置的属性来选择合适的定位提供者。Android也提供了一组访问Google MAP的API,借助Google MAP及定位API,我们就能在地图上显示用户当前的地理位置。Android中定义了一个名为com.google.android.maps的包,其中包含了一系列用于在Google MAP上显示,控制和层叠信息的功能类,以下是该包中最重要的几个类:MapActivity:这个类是用于显示Google MAP的Activity类,它需要连接底层网络。MapView:用于显示地图的View组件,它必须和MapActivity配合使用。MapController:用于控制地图的移动。Overlay:一个可显示于地图之上的可绘制的对象。GeoPoint:一个包含经纬度位置的对象。3 需求分析3.1 功能需求 本文主要功能模块包括以下几个:计步功能模块、查询运动信息功能模块、设置参数模块、退出系统模块。 1、计步功能:通过Android手机GPS功能来获取用户实时的经纬度信息,借助地球球面两点间的距离公式计算用户的运动距离,根据用户设置的身高可以估算出步长,从而测得用户所走的步数;计时功能根据用户运动的时间可以计算出用户步行的速度,然后可以根据用户设置的体重,估算用户步行运动所消耗的热量。当距离发生改变时在前台界面上刷新用户步行的步数、距离、每分钟的步数、每千米的距离和消耗的卡路里;该计步功能还实现了Notification后台运行的功能。2、查询运动信息功能:通过输入日期后查询数据库里的每天运动信息表来显示每天的运动历史信息。该功能可以实现查询最近一个月的运动信息,运动信息的显示分为两部分:通过柱状图来直观的显示用户每天步行的步数所达到期望目标的百分比以及通过文本框来显示用户运动的详细信息包括步数、距离、总用时、消耗的热量。 3、设置参数功能:设置用户的身高、体重、运动目标3个参数信息。通过设置身高可以大致计算出不同身高的人的步长是多少,以便根据距离来计算用户所行走的步数;通过设置体重可以估算出不同体重的人运动所消耗的卡路里量;通过设置运动目标可以在用户查询最近运动信息时提示用户达到期望目标的百分比,更好的激励用户去运动。 4、退出系统功能:当用户想终止计步软件时,可以点击退出菜单后退出本系统。 系统的用例图如3-1所示: 图 31计步软件用例图3.2 数据的需求分析本文的计步软件的数据结构和功能如下:(1) 每次运动信息。存放用户一天当中所有运动次数的历史记录信息,E-R图见图3-2所示。(2) 每天运动信息。存放用户一天当中运动的累积总量信息,E-R图见图3-3所示。 日期开始时间卡路里每次运动信息运动时间速度每分钟步数步数距离 图 32 E-R图 图 33 E-R图3.3 系统运行环境 本软件是在windows 7 操作系统中,利用Eclipse 开发工具搭载Android SDK工具包,结合Android手机自带的sqlite数据库进行开发。 4 系统设计4.1 功能模块设计4.1.1 计步功能 计步功能的核心为用户运动距离的统计,该模块包括三个部分:GPS定位、Notification管理,实时更新数据。完成该功能所涉及到的类有:计步界面类(StepActivity)主要负责渲染计步功能的步数、速度、距离、卡路里数据显示的界面,后台服务类(PedometerService)主要负责计步功能的实现,完成GPS定位的操作和计算需要在前台界面上更新的数据,接口类(IBinder)使用了onBind方法返回绑定服务的对象,IBinder接口的实现类(StepBinder)主要负责提供后台服务的service对象,及获取计步中的步数、速度、距离、卡路里的值的方法以供绑定的service对象调用,通信类(Handler)主要负责将后台服务的数据发送到前台界面上显示出来。按钮的监听类(onClickListener)主要负责监听不同的按钮操作,从而执行不同的操作。这些类图之间的关系如图4-1所示: 图 41 计步功能的类图完成计步功能的时序图描述为:当用户点击底部菜单的“首页”选项时进入到计步的视图界面,点击开始按钮后与后台服务进行绑定,创建后台服务的service对象,从而能够获取service中的方法。后台服务调用创建(onCreate)方法后显示notification 后台提示。当用户想关闭该计步软件的界面使用手机中的其它软件而又不想停止计步软件运行的情况下,在计步功能与后台服务绑定时,会在界面的顶部菜单栏提示该软件的运行通知,关闭计步软件的界面后,菜单栏的提示任然存在,这时可以通过点击提示再次进入到上次关闭的界面上,当用户退出系统后,顶部的菜单栏提示就会关闭。调用开始(onStart)方法后获取前台传递的时间参数信息,接着向Activity中返回Service的绑定对象,从而实现界面信息与后台服务的绑定。在后台服务中创建GPS定位的监听器,当经纬度发生变化时调用位置变化函数获取不同位置的经纬度信息,然后可以根据两点间的不同经纬度来求得距离,通过计算求得步数、速度、消耗的卡路里,将发生变化的数据通过开启一个新的线程发生消息发生到UI线程进行界面的更新操作。 完成该功能的时序图如图4-2所示: 图 42 计步时序图4.1.2 查询运动信息功能作为人们日常工作生活的运动助手,除了能够对用户的运动情况进行实时监测,还应该能将之前的运动数据以历史记录的形式提供给用户进行查询,因此,本文设计了查询运动数据功能的模块,通过柱状图来显示步行的步数所达到期望目标的百分比,和文本框显示步行的详细信息:步数、总用时、距离和消耗的卡路里。完成该功能所涉及到的类有:柱状视图类(Configuration)主要负责绘制柱状图的操作,可以实现动态的绘画和静止的显示柱状图形,运动信息界面类(ChartActivity)主要负责查询最近一个月的运动信息情况并把这些信息通过文本框和柱状图的形式显示在界面上,分页类(ViewPager)主要负责实现分页的效果,适配器类(MyAdapter)主要负责完成界面的显示操作,页面监听类(MyPageListener)主要负责当页面发生改变时执行相应的操作。它们的类图关系如图4-3所示:图 43 查询运动信息类图完成该功能的时序图如图4-4所示:图 44 查询运动信息时序图完成查询运动信息功能的时序图描述为:当用户点击底部菜单的“统计”选项时进入到查询运动信息的视图界面,定义实现分页的布局容器后创建ViewPager的适配器,然后进行设置适配器。 创建ViewPager的页面监听器,然后进行设置页面监听器,当页面发生切换操作时调用翻页onPageScrolled()方法,并在切换时查询SQLite数据库中每天的运动信息表来显示步行的详细信息,根据查询到的步数来设置柱状图的大小直观的显示达到期望运动目标的百分比。4.1.3 设置参数功能 为了实现计步功能,需要设置一些辅助信息,如用户的身高、体重,用户运动的目标步数,以便能更准确的统计步数和消耗的卡路里量。实现该功能所涉及到的类有:PedometerSettings类主要负责从配置文件中读取存储的数据值,设置参数界面类(SettingsActivity)主要负责渲染设置参数的界面,后台服务类(PedometerService)在设置参数的功能中主要负责获取从配置文件中读取的参数配置信息,以用来计算步数、消耗的卡路里量。这些类图之间的关系如图4-5所示: 图 45 设置参数类图完成该功能的时序图如图4-6所示: 图 46 设置参数时序图完成设置参数功能的时序图描述为:当用户点击底部菜单的“设置”选项时进入到设置参数的视图界面,当用户点击分别设置身高、体重、运动目标并保存后,修改的值会保存到配置文件中,后台服务类会通过调用获取身高、体重、运动目标的方法来对这些数据进行操作。4.1.4 退出系统功能 当用户想停止步行运动时需要退出该软件系统。实现该功能的类有主界面类(MainActivity)主要负责显示本软件的四个功能。该类图如图4-7所示: 图 47 退出系统类图完成该功能的时序图如图4-8所示: 图 48 退出系统时序图完成退出系统功能的时序图描述为:当用户点击计步软件的图标通过欢迎界面进入到主界面进行操作后默认为计步界面,当用户想退出系统时,点击系统的菜单选项“退出”,系统会弹出一个警示框,询问是否要退出本软件,若选择确定,则退出系统,计步界面会调用销毁方法解除service绑定,后台服务就会调用销毁方法取消Notification后台运行;若选择取消,则继续计步软件的使用。4.2 数据设计1、表4-1为每次运动信息表HistoryByTimes,该表记录每次步行的历史信息。表中的字段有运动的日期、开始时间、运动的用时、步数、每分钟的步数、距离、每千米的距离、消耗的卡路里。每次的运动信息的获取是当用户点击了停止按钮之后,将此次的运动信息保存到该表中。2、表4-2为每天运动信息表HistoryByDay,该表记录每天步行的历史信息。表中的字段有运动的日期、运动的用时总量、步数、距离、平均速度、消耗的卡路里。每天的运动信息的获取是当用户点击了开始按钮之后,先判断是否已保存前一天运动总量,若没有,则保存到该表之中。表 41 每次运动信息表列名数据类型允许空说明dateTimevarchar(20)Y日期startTimevarchar(20)Y开始时间totalTimevarchar(20)Y时长stepsIntegerY步数paceIntegerY每分钟步数distancesdoubleY距离speedfloatY速度caloriesfloatY卡路里表 42 每天运动信息表列名数据类型允许空说明dateTimevarchar(20)Y日期totalTimevarchar(20)Y时长stepsIntegerY步数distancesdoubleY距离avgSpeedfloatY平均速度caloriesfloatY卡路里5 系统实现5.1 Android环境搭建任何事物要运行,都要有它的环境,Android也有它的环境才能够运行,下面介绍Android的开发环境配置.搭建开发环境需要的软件:1、操作系统:Windows 7或Linux2、软件包:Android SDK(Software Development kit Java Development kit) 、ADT(Android Develoopment Tool)3、IDE环境:Eclipse IDE4、JDK:Java Runtime Environment虚拟机 、(JDK)Java Development kit安装步骤如下:第一步:安装Java虚拟机sun-java6-jdk版本第二步:在官网/sdk/index.html,如图5-1所示下载软件包和开发环境13。图 51 开发环境下载图 下载完解压后在系统环境变量中设置platform-tool的路径即可进行开发了。由于本软件的GPS定位需要使用Google APIs,而该简化版开发环境中没有安装,点击SDK Manager.exe后勾选相应的Google APIs进行下载安装。如图5-2所示: 图 52 下载google api图 这样就可以进行本软件的开发了。5.2 软件结构设计本软件程序结构如图5-3所示: 图 53 程序结构图 为了使源代码文件的结构更加清晰,Pedometer工程设置了多个命名空间,分别用来保存用户界面、数据库、后台服务和工具实体的源代码文件,源代码文件的名称以及说明如表5-4所示。表 54 pedometer工程的文件用途说明包名称文件名说明com.pedometer.tabActivityWelcomeActivity.java软件的欢迎界面com.pedometer.tabActivityMainActivity.java主界面com.pedometer.tabActivityStepActivity.java计步界面com.pedometer.tabActivitySettingsActivity.java设置参数界面com.pedometer.tabActivityChartActivity.java查询运动信息界面com.pedometer.tabActivityPedometerService.java后台服务com.pedometer.tabActivityPedometerSettings.java获取参数信息com.pegometer.daoPedometerDAO.java持久层负责数据的存储访问com.pedometer.modelHistoryByTimes.java每次运动信息类com.pedometer.modelHistoryByDay.java每天运动信息类com.pedometer.utilConfigurationView.java绘画柱形图的类com.pedometer.utilMySQLiteHelper.java操作数据库的类本软件资源文件结构设计如图5-5所示: 图 55 资源结构图 Android的资源文件保存在/res的子目录中。其中/res/drawable目录中保存的是图片文件,/res/layout目录中保存的是界面的布局文件,/res/menu目录中保存的是菜单文件,/res/values目录中保存的是用来自定义字符串、自定义颜色、图片、样式的文件,/res/xml目录中保存的是XML格式的数据文件。所有在程序开发阶段可以被调用的资源都保存在这些目录中,具体每个资源文件的用途如图5-6所示。表 56 pedometer工程的文件用途说明包名称文件名说明layout main_welcome.xml软件的欢迎界面的布局maintabs.xml主界面功能的布局main_step.xml计步界面的布局main_chart.xml设置参数界面的布局chart_bar.xml查询运动信息界面的布局drawablebg_box.9.png等工程中所用的图片menumenu_main.xml设置菜单的布局valuescolors.xml保存颜色的XML文件dimens.xml保存字体大小的XML文件drawables.xml保存图片资源的XML文件strings.xml保存字符串的XML文件styles.xml保存样式的XML文件xmlpreferences.xml保存参数设置的XML文件5.3 计步功能一个好的软件界面既能使画面美观也能提高对用户的吸引力。因而本软件设置一个进入计步器界面之前的一个欢迎界面,如图5-7所示。 该欢迎界面通过动画的方式来显示,主要代码如下:.AnimationSet animationset=new AnimationSet(true); AlphaAnimation alphaAnimation=new AlphaAnimation(1, 0); alphaAnimation.setDuration(5500); animationset.addAnimation(alphaAnimation); image.startAnimation(animationset); .欢迎界面的详细代码请见附录1。 图 57欢迎界面图当欢迎界面的动画结束后就进入主程序,默认是进入计步器功能界面。该主界面是通过TabHost标签来实现底部菜单功能,有计步、设置、历史三个底部菜单项,如图5-8所示。实现主界面中的底部菜单功能的核心代码如下:.mTabHost.addTab(buildTabSpec(Step_TAB, R.string.main_home, R.drawable.ic_step, this.mAIntent); mTabHost.addTab(buildTabSpec(Settings_TAB,R.string.main_settings, R.drawable.ic_settings, this.mBIntent); mTabHost.addTab(buildTabSpec(Chart_TAB,R.string.main_chart, R.drawable.ic_chart, this.mDIntent);.实现底部菜单功能的代码请见附录2。 图 58 tab标签底部菜单界面图当用户点击开始按钮后开始统计步数,使用Chronometer完成计时功能,与后台服务进行绑定后,会在标题栏显示计步功能的通知信息,可以在后台通过GPS定位获取用户步行过程中的经纬度的变化,从而计算出用户所步行的距离,根据距离来统计用户的步数、每分钟的步数、每小时步行的距离、消耗的卡路里。通过Handler类来进行前台界面与后台服务的异步通信,将用户步行的情况实时地更新到界面上。也可以使用暂停按钮,若想继续步行,则按继续按钮,若想停止计步,则按下停止按钮。当停止计步时会将此次步行的信息保存到SQLite数据库中。在下一次运动点击开始按钮时,会先判断前一天的运动信息总量是否保存到每天运动信息表中,若没有保存,则将前一天的运动信息总量也保存到数据库的每天运动信息表之中。本软件的计步功能是通过在模拟器上通过输入经纬度的值来测试的,在Emulator Control中更改经纬度信息后,前台的界面信息发生改变,如图5-9所示:图 59计步界面图 在实现了基本的距离测算功能后,软件增加了步数、速度、能量的消耗的功能。资料显示,步长与用户的身高与速度成正比。所以不同的运动状态下需要使用不同的计算公式。为此软件提供了步行和跑步两种状态,本文中提供的步长的计算公式12分别如下所示:1、 走路:stepLength(walk)=height/3;2、 跑步:stepLength(run)=1.2*height. 卡路里(calories)的消耗量与诸多因素有关,故对其进行近似计算,具体计算公式如下: Calories=weight*distances(total)*1.036距离和体重的单位分别为米和千克,能量的单位为cal.在变化经纬度信息后获取到距离时,根据用户的身高算出步长,从而计算出步数,已知用户运动的时间,可以算出用户每分钟运动的步数和每千米运动的距离,根据用户的体重,可以计算出用户运动所消耗的热量。计步功能的核心代码如下:public void onLocationChanged(Location location) gp2=getGeoByLocation(location);distance+=GetDistance(gp1,gp2); updateView(distance);gp1=gp2; 完成计步功能的详细代码请见附录3。5.4 查询运动信息功能在应用主界面中点击历史tab则进入到查询运动信息界面,该界面通过分页的形式左右侧滑来显示最近一个月以内的所有运动信息。该界面分为2个部分:柱状图来显示用户每天运动的步数所达到期望的运动目标的百分比,文本框来显示用户每天运动的具体运动信息。如图5-10所示: 图 510查询运动信息界面图完成用户运动信息查询的功能的分页效果是通过ViewPager来实现的,ViewPager提供了多界面切换的新效果。新效果有如下特性:1、 当前显示一组界面中的其中的一个界面。2、 当用户通过左右滑动界面时,当前的屏幕显示当前的界面和下一个界面的一部分。3、 滑动结束后,界面自动跳转到当前选择的界面中。for(int i=0;i=30;i+) .list.add(viewi);.titleList.add(yestedayDate);viewPager.setAdapter(new MyAdapter();实现分页效果的核心代码如下: 分页功能的详细代码请见附录4。 在界面中显示柱状图,需要传入参数-步数。柱状图会根据数值的大小来变换显示的颜色,如绿色、土黄色、红色。柱状图的升高采用了类似于动画效果,可以在创建时设置是否启动动画效果。柱状图的显示核心代码如下:layout = (LinearLayout) findViewById(R.id.configLayout);bar=new ConfigurationView(this,steps*100/targetSteps,步数/%, true);layout.addView(bar,new LayoutParams(50, LayoutParams.FILL_PARENT); 实现柱状图的代码请见附录5。5.5 设置参数功能为了时计步软件更好的为用户所服务,设置用户的个人信息参数是很必要的。该功能主要设置用户的身高、体重、期望的运

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论