基于Android的手机计步器的设计与实现源代码.docx
《基于Android的手机计步器的设计与实现源代码.docx》由会员分享,可在线阅读,更多相关《基于Android的手机计步器的设计与实现源代码.docx(31页珍藏版)》请在冰豆网上搜索。
基于Android的手机计步器的设计与实现源代码
Standardizationofsanygroup#QS8QHH-HHGX8Q8-GNHHJ8-HHMHGN#
基于Android的手机计步器的设计与实现源代码
专业工程综合实训设计报告
第一章绪论
课题的背景及意义
当今社会,手机已经成为人们工作生活中必不可少的一项通讯和娱乐工具,随着手机的不断更新,手机的各种高层服务和应用层出不穷。
现在智能手机可谓是爆发式增长,与此同时传统手机在不断地消失,诺基亚就是在这样的环境中受到了重创。
现在主要有三个使用率和关注度最高的手机平台,分别是:
Android,ios和windowsphone平台,在这三个平台中Android的占有率最高。
自2007年11月Google公司发布Android系统以来,短短几年时间,Android已经占据了智能手机市场的半壁江山,成为目前最为炙手可热的智能手机操作系统。
Android走进了越来越多人的生活,成为他们获取信息的主要平台。
Android平台对于Google和用户的意义不在于手机本身,而在于为了推动移动互联网产业链的迅速成型。
具有开源性的Android手机平台与之前Symbian、windowsmobile等操作系统不同,它们收取高额的授权费用,而Android不需要,这样使得应用开发成本大大降低;也正是由于它的源代码是开放的,使得开发者可以随心所欲的开发应用。
同时,手机生产商和软件开发商也能够在这里得到利润,手机软件得到有效的维护协调发展。
这正是Google发布Android平台的意义,也是Android平台的使命所在。
同时目前搭载Android平台的应用有很多,但针对传感器而开发的应用市场上还不多见。
本应用正是针对Android手机内置的加速度传感器而特别设计的应用。
所以鉴于移动端应用开发是目前软件开发行业正在兴起并会越来越炙手可热的一个分支,并且针对传感器的开发相对空白我选择了研究此课题。
系统框架
在设计一款软件时一般都会把它分成几个模块,在模块的基础上还会再分小模块,这样就达到了软件模块化设计的要求,然后再对各个小模块进行详细设计和编写,采用模块化的管理方式可以使软件结构更清晰,也使得软件的管理更有秩序,使别人容易理解和阅读,但是这些模块也要根据别的模块来设计和约束,不能随便设计脱离框架,设计完成后需要把每个设计完成的模块根据总体框架结合起来。
根据本软件的功能需求,将本软件分为以下几个功能模块,如图1-1所示:
图1-1整体框架图
第二章系统分析
系统可行性分析
可行性分析(FeasibilityAnalysis)也称为可行性研究,是在系统调查的基础上,针对刚刚开发打算进一步应用的系统的必要性和可能性的分析和研究。
可行性研究的目的主要在于,用最小的代价在尽可能短的时间内确定问题是否能够解决。
[1]
该阶段通过对系统总目标的初步调研与分析,提出可行性方案并进行论证。
功能可行性分析
1、计步功能:
根据用户设置的步长和体重,估算用户步行运动所消耗的热量。
当距离发生改变时在前台界面上刷新用户步行的步数、距离、和消耗的卡路里;该计步功能还实现了Notification后台运行的功能。
2、设置参数功能:
设置用户的步长、体重2个参数信息。
通过设置体重可以估算出不同体重的人运动所消耗的卡路里量。
3、退出系统功能:
当用户想终止计步软件时,可以点击退出菜单后退出本系统。
4、历史记录功能:
用户可以查看以往的历史记录。
5、保存功能:
有户可以保存当天的运动量,以便之后查看。
运行环境可行性分析
本软件是在windows7操作系统中,利用Eclipse开发工具搭载AndroidSDK工具包,结合Android手机自带的sqlite数据库进行开发。
开发环境简介
JavaDevelopmentkit(JDK)介绍
JDK是Java语言的软件开发工具包。
本应用用的是JDK的J2ME版,它主要用于移动设备、嵌入式设备上的Java应用程序。
没有JDK的话,无法编译Java程序,所以这是开发Java程序必须安装的工具。
AndroidSDK介绍
SDK(softwaredevelopmentkit)软件开发工具包。
被软件开发工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。
因此,AndroidSDK指的是Android专属的软件开发工具包。
Eclipse开发工具介绍
Eclipse是一个开放源代码的、基于插件的可扩展性平台。
也可以说它只是一个框架和一组服务,用于通过插件组件构建开发环境。
Eclipse附带了一些标准的插件集,包括Java开发工具(JDK)。
本次应用就是将Eclipse当作Java集成开发环境来使用,但是它的作用并不仅仅如此。
由于Eclipse中的每样东西都是插件,所以只要有插件就可以使用它,因而不仅仅是Java语言,C/C++、PHP等语言也可以使用Eclipse。
AndroidDevelopmentTools(ADT)介绍
目前Android开发所用的开发工具是Eclipse,在Eclipse编译IDE环境中,安装ADT,为Android开发提供开发工具的升级或者变更,简单理解为在Eclipse下开发工具的升级下载工具。
ADT扩展了Eclipse的功能,让我们能快速建立新的Android项目、创建应用程序的用户界面。
它可以帮助Eclipse找到AndroidSDK,再加上Android框架的API组件调试使用AndroidSDK工具,以便APK分发给应用程序。
同时大大减轻了Android应用程序的开发工作量,工具集成XML编辑器,将给开发者一个令人难以置信的开发Android应用环境。
当然如果你不用Eclipse作为你的开发工具,你就不需要下载ADT,只下载SDK即可开发。
[2]
第三章Android开发常用到的技术及环境搭建
Android开发常用到的技术
Activity
Activity是Android应用程序开发中最重要的组件。
一个Activity提供一个屏幕,用户可以用来交互以完成某项任务,例如点击、拍照、拨号等。
它是用户与应用交互的直接且最重要的组件。
Activity生命周期可以用几个函数说明:
onCreate():
Activity开始创建时调用;
onStart():
在Activity开始执行时调用,这时Activity已经可见;
onResume():
在Activity获得用户焦点时调用,此时Activity可以和用户交;
onPause():
在Activity被暂停时调用,失去用户焦点,但没有被摧毁;
onStop():
在Activity被停止时调用,此时Activity已经不可见,但仍然没有被摧毁;
onRestart():
在Activity被重新启动时调用;
onDestory():
在Activity被彻底摧毁时调用。
下面用一张图来解释Activity的生命周期在各函数之间的跳转。
如图3-1:
图3-1Activity的生命周期图
Service
一个Service是一段长生命周期的,没有用户界面的程序,可以用来开发如监控类程序。
一个很好的例子就是用手机在播放音乐时,用户可以进行其它应用的活动而此时并没有播放音乐的界面,但是音乐在后台播放并不受影响,这就是Service的功劳。
还有就是闹钟提醒,当你设置好闹钟后并不需要一直显示在闹钟那个界面,甚至手机也可以关掉但是只要时间到了,闹钟依然可以提醒,这也是Service的作用。
ContentProvider内容提供者
android平台提供了ContentProvider,它是一个应用程序的指定数据集提供数据给其他应用程序。
这些数据可以存储在文件系统中、在一个SQLite数据库、或以任何其他合理的方式。
本文用到了文件存储和SharedPreferences的存储方式。
文件存储大家都很熟悉,就是以文件为操作对象,向文件中写入或读取数据。
SharedPreferences可以将数据保存到应用程序的私有存储区,这些存储区中的数据只能被写入这些数据的软件读取。
它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。
例如:
登陆时用到的用户名和密码。
Intent信使
Intent也是Android开发者比较重要的一部分,它主要用来解决Android应用的各项组件之间的通讯,被称为Android应用中的信使。
Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将Intent传递给调用的组件,并完成组件的调用。
所以它常被用来启动一个Activity或Service,[3]例如当从一个Activity启动另一个Activity时,可以这样操作,Intentintent=newIntent();,s
;(intent)。
环境搭建
首先要有一台安装有Windows系统的计算机,接下来就是安装过程。
1.我的电脑—>属性—>环境变量—>系统变量;
2.JAVA_HOME值为:
D:
\ProgramFiles\jdk(你安装JDK的目录);
3.CLASSPATH值为:
;%JAVA_HOME%\lib\;%JAVA_HOME%\lib\;
%JAVA_HOME\bin;
4.Path:
在开始追加%JAVA_HOME\bin;
如果安装成功,打开cmd窗口,输入java--version会出现如图3-1显示的信息:
图3-1JDK安装成功提示信息
AndroidSDK安装
在AndroidDevelopers下载最新版本的压缩包,下载完成后解压到任意路径,运行SDK。
选定你要安装的内容。
这里也需要配置环境变量,在用户变量中新建PATH值为:
AndroidSDK中的tools绝对路径。
[5]
ADT安装
[6]。
第四章手机计步器的设计与实现
计步器功能的设计
软件采用最主流的Android软件应用开发风格,并使用Android的原生组件进行开发,界面友好,简洁易懂,组建布局具有诱导性,用户使用极其方便快捷。
1、主界面操作流程见图4-1:
图4-1图为主界面操作流程图
2、设置界面操作流程见图4-2:
图4-2图为设置界面操作流程图
3、日历选择界面操作流程见图4-3:
图4-3日历选择界面操作流程图
4、历史界面操作流程见图4-4:
图4-4历史界面操作流程图
5、复位界面操作流程见图4-5:
图4-5复位界面操作流程图
6、关闭程序界面操作流程见图4-6:
图4-6关闭程序界面操作流程图
计步器功能的实现
计步器的主要功能有:
计步开始/暂停,设置,显示运动所消耗的卡路里,走过长度。
本软件是一个结合手机用户特别是智能手机用户常用功能的一个软件平台,本软件可以通过界面快速获取运动的情况,获取信息后可以对这些信息进行个性化处理以方便用户直观的感受运动量。
计步开始及暂停
首先对暂停/开始键做一个监听(new()
同时还要对此时状态做一个判断
复位键
对清零按钮做一个View即:
实现清零的语句很简单,对“开始”键做一个监听,当用户点击“开始”键时,即:
(new()[7]
执行一下命令:
{
publicvoidonClick(Viewv)
{
resetValues(true);
}
};
这样记录数据清零的按钮就完成了。
对于设置步长,首先要获取用户所输入的步长信息:
return("step_length","70")
若用户未对步长信息进行编辑,则默认为70.
在DistanceNotifier中使用mStepLength来计算走过的距离:
mDistance=mDistance+(float)(mStepLength/;
notifyListener();
对于设置体重,首先要获取用户所输入的体重信息:
return("body_weight","50"
若用户未对步长信息进行编辑,则默认为50.
在CaloriesNotifier中使用mBodyWeight来计算用户因运动所消耗的卡路里:
mCalories+=(mBodyWeight*(mIsRunningMETRIC_RUNNING_FACTOR:
METRIC_WALKING_FACTOR))*mStepLength/;
notifyListener();
publicclassView1extendsActivity{getInstance("GMT+08:
00"));
mYear=;
mMonth=+1;
mDay=;
if(mMonth<10)
{today=mYear+"-"+"0"+mMonth;}
else
{today=mYear+"-"+mMonth;}
cur=(today);
from=newString[]{"date","Distance"};
to=newint[]{cur=(today);
mAdapter=newSimpleCursorAdapter(this,cur,from,to);
(mAdapter);
(newOnItemLongClickListener(){
@Override
publicbooleanonItemLongClick(AdapterView
intposition,longid){
etTitle("提示").setMessage(
"确定删除该细节").setIcon"确定",
new(){
publicvoidonClick(DialogInterfacedialog,intwhichButton){
otifyDataSetChanged();
finish();
"ok");
(mAdapter);
}
}).setNegativeButton("取消",
new(){
publicvoidonClick(DialogInterfacedialog,intwhichButton){
}
}).show();
returnfalse;
}
});
tvTitle=(TextView)findViewById(mYear+"-"+mMonth+"-"+"01"+"---"+mYear+"-"+(mMonth+1)+"-"+"01");getInstance("GMT+08:
00"));
mMonth++;
(mYear+"-"+mMonth+"-"+"01"+"---"+mYear+"-"+(mMonth+1)+"-"+"01");
if(mMonth==12)
{
(mYear+"-"+mMonth+"-"+"01"+"---"+(mYear+1)+"-"+1+"-"+"01");
}
elseif(mMonth>12)
{
mMonth=1;
mYear=mYear+1;
(mYear+"-"+mMonth+"-"+"01"+"---"+mYear+"-"+(mMonth+1)+"-"+"01");
}
if(mMonth<10)
{today=mYear+"-"+"0"+mMonth;}
else
{today=mYear+"-"+mMonth;}
cur=(today);
(cur);
((SimpleCursorAdapter)mAdapter).notifyDataSetChanged();
}
privatevoidleftView(){
mMonth=mMonth-1;
if(mMonth<1)
{
mMonth=12;
mYear=mYear-1;
(mYear+"-"+mMonth+"-"+"01"+"---"+(mYear+1)+"-"+"1"+"-"+"01");
}
elseif(mMonth>=12)
{
mMonth=1;
mYear=mYear+1;
(mYear+"-"+mMonth+"-"+"01"+"---"+(mYear+1)+"-"+"1"+"-"+"01");
}
else
(mYear+"-"+mMonth+"-"+"01"+"---"+mYear+"-"+(mMonth+1)+"-"+"01");
if(mMonth<10)
{today=mYear+"-"+"0"+mMonth;}
else
{today=mYear+"-"+mMonth;}
cur=(today);
(cur);
((SimpleCursorAdapter)mAdapter).notifyDataSetChanged();
}
}
}
第五章计步器的界面效果
用户界面
图5-1用户主界面
设置界面
图5-2设置体重界面
图5-3设置步长界面
历史界面
图5-4记录历史界面
日历选择界面
图5-5日期选择界面
用户离开界面
图5-6用户离开界面
第六章系统测试与分析
测试过程
1)点击应用图标,如图6-1所示:
图6-1图为计步器主界面
2)计步器主界面开始记录数据,如图6-2所示:
图6-2图为计步器主界面
3)在主界面点击暂停,如图6-3所示:
图6-3图为停止计步界面
4)继续运动观察主界面数据是否有变化,如图6-4所示:
图6-4图为停止计步后仍在运动界面
5)进入体重设置界面,如图6-5所示:
图6-5图为体重设置界面
6)进入步长设置界面,如图6-6所示:
图6-6图为步长设置界面
7)选择日期界面,如图6-7所示:
图6-7图为日期选择界面
图6-8图为日期选择后的界面
8)历史界面,如图6-9所示:
图6-8图为历史界面
9)历史查询界面如图6-9所示:
图6-9图为历史查询界面
10)历史删除界面如图6-10所示:
图6-10图为历史删除界面
图6-11图为历史删除后的界面
11)退出程序界面如图6-12所示:
图6-12图为退出程序界面
测试分析
本软件中几个模块的功能经过测试,均测试通过,测试结果和最初的设计基本一致,所有的功能均能正常运行,软件需要比较特殊的运行环境,首先手机的重力感应功能必须有,而且Android系统的版本过低将不能使用。
至此基于安卓平台的手机计步器的设计基本完成。
结论
经过了数月的努力,Android平台手计步器软件终于完成了。
本软件能实现用户对计步器的基本要求。
方便用户开启关闭计步器,对运动情况和运动量可以直观的从主界面获取信息,设置选项中的智能人机交互平台也可以明了的对用户信息进行编辑,不需要复杂的操作不需要学习,一目了然。
对于智能手机用户来说,基于安卓平台的手机计步器提供了一个快捷方便的平台。
为用户提供随时随地的服务,节省用户不必要的资金消耗与时间消耗是本软件设计的一个宗旨,整个框架和细节的设计都是围绕这个宗旨进行的,虽然整个软件还不是很成熟,还有很多不足和需要改进的地方,或者还有很多信息提供不到位,例如我们可以加入音乐播放模块,是用户在运动的同时享受轻松快乐的环境,这些还需要日后慢慢优化和改善,但是最初的设计都实现了。
在现在的功能基础上本软件可以进行扩展升级。
本软件最初设计的时候就是一个可以扩展的框架,所以为将来加入新的功能提供了很大的方便。
本软件虽然不是很强大,但是是我自己亲手编写的,开发一个能在时下最流行的软件,使之顺利的在平台上运行是一件令人兴奋的事情。
把自己的想法一步一步地付诸实践,最后成为一个真实的实物,被别人使用和称赞,此时得到的成就感是尤为强烈的。
参考文献
[1]高焕堂.GoogleAndroid应用程序框架原理与程序设计.
[2]E2ECloud工作室着.深入浅出GoogleAndroid[M].北京:
人民邮电出版社,2009-08-1.
[3]
[4]王家林.大话企业级Android应用开发实战[M].电子工业出版社,2011,8
[5]差沙.用Android手机开发应用.程序员.2008.
[6]万玛,宁关永,韩相军.嵌入式数据库典型技术SQLite和Berkeley的研究.微计算机信息,2006.
[7]马越.Andriod的架构与应用.北京:
中国地质大学,2008.
[8]高昂,冯大祥等.GoogleAndroid开发入门与实践.北京:
人民邮电出版社,2009.
[9]张孝祥着.java就业培训教程[M].北京:
清华大学出版社,2007.
[10]MichaelMcRoberts着,杨继志,郭敬译.Arduino从基础到实践[M].北京:
电子工业出版社,2013.
附录:
1.启动界面
publicclassWelcomeextendsActivity{tart();
mHandler=newHandler(){
@Override
publicvoidhandleMessage(Messagemsg){
(msg);
(alpha);
();
}
};
}
publicvoidupdateApp(){
alpha-=5;
if(alpha<=0){
b=2;
界面代码
publicclassViewextendsActivity{oString().trim();
if(!
"".equals(a)){
booleanflag=true;
for(inti=0;i<();i++){
flag=false;
}
}
if(flag){
(a));
}
}
}
});
("取消",new(){
@Override
publicvoidonClick(DialogInterfacearg0,intarg1){
oString().trim();
if(!
"".equals(a)){
booleanflag=true;
for(inti=0;i<();i++){