《手持设备软件开发》实验指导.docx
《《手持设备软件开发》实验指导.docx》由会员分享,可在线阅读,更多相关《《手持设备软件开发》实验指导.docx(28页珍藏版)》请在冰豆网上搜索。
《手持设备软件开发》实验指导
手持设备软件开发
实验指导书
高晋树编写
信息科学与工程学院
2012年9月10日
前言
《手持设备软件开发》课程是信息科学与工程学院计算机科学与技术系计算机科学与技术专业及其他系相关专业的模块选修课之一,其主要特点就是实践性很强,因此课堂教学应该与实践环节紧密结合。
根据教学计划的安排和教学大纲的总体要求,以配合课程教学为主要目标,并兼顾其他考虑,编制手持设备软件开发实验指导书,旨在规范实验内容,严格实验训练,达到实验教学的目的。
本实验指导书内容涵盖Android应用程序开发所涉及的主要方面,包括集成开发环境的搭建,用户界面和关键组件的使用以及数据库的访问等各个方面,实验项目主要侧重于对Android编程的基本应用。
实验指导书共列出了六个实验项目,其中,实验一是关于开发环境搭建方面的内容,实验二是关于Activity组件方面的实践,实验三主要关于界面设计的应用,实验四是组件通信方面的内容,实验五的内容与进程服务相关,实验六主要是数据存储与访问方面的灵活应用,通过这些实验,有助于对课堂教学内容的理解。
总之,列出的六个实验,可根据课程安排的实际情况进行适当的调整,适用于计算机、自动化、通信等专业。
本实验指导书由信息科学与工程学院计算机科学与技术系计算机网络教研室组织编写,主要由高晋树负责编写工作。
本实验指导书由一人编写完成,限于编者水平,加上时间仓促,不足之处在所难免,恳请批评指正。
编者
2012年9月
实验一Android开发环境的搭建
一、实验目的
1.了解AndroidSDK的安装、配置、使用;
2.熟悉ADT组件,开发工具eclipse的使用;
3.熟悉Android程序的基本框架。
二、实验内容
1、搭建及配置Android开发平台
(1)安装JDK
JDK下载地址:
在Windows2000、XP或Win7系统下,鼠标右击“我的电脑”->属性->高级->环境变量(假设JDK安装在C盘根目录下)。
系统变量->新建->变量名:
JAVA_HOME 变量值:
C:
\jdk1.6.0_21\
系统变量->新建->变量名:
CLASSPATH变量值:
.;%JAVA_HOME%\lib
系统变量->编辑->变量名:
在Path变量最前面加上:
%JAVA_HOME%\bin;
(2)安装Eclipse
Eclipse下载地址:
http:
//www.eclipse.org/downloads/,下载后直接解压缩即可使用。
(3)安装AndroidSDK
AndroidSDK下载地址:
(4)安装ADT插件
Android为Eclipse定制了一个插件,即AndroidDevelopmentTools(ADT),目的是为用户提供一个强大的综合环境用于开发Android应用程序。
ADT扩展了Eclipse的功能,可以让用户快速地建立Android项目,创建应用程序界面,在基于Android框架API的基础上添加组件,以及用SDK工具集调试应用程序,甚至导出签名(或未签名)的APKs以便发行应用程序。
安装ADT插件有两种方法,一种方法是手动下载ADT插件压缩包,然后在Eclipse中安装;另一种方法在Eclipse中输入插件的下载地址,然后在线安装。
第一种方法
手动下载ADT插件的地址是:
->InstallNewSoftware,打开Eclipse的插件安装界面,如图1.1所示。
图1.1Eclipse的插件安装界面
点击“Add…”按钮,在弹出的界面上点击“Archive…”按钮,添加ADT-20.0.3.zip,并填上名称“AndroidPlugin”(名称可以自定义),界面如图1.2所示。
图1.2AddRepository界面
点击OK后回到Eclipse的插件安装界面,此时会出现ADT插件的安装选项,如图1.3所示。
图1.3ADT插件安装选项
选中DeveloperTools复选框,然后点击Next按钮,在ADT插件许可界面选择Iacceptthetermsofthelicenseagreements,点击Finish后开始安装插件。
安装结束后会出现Eclipse重启提示界面,选择Yes重新启动Eclipse,使ADT插件生效。
第二种方法
打开Eclipse,在菜单栏上选择Help->InstallNewSoftware,打开Eclipse的插件安装界面,如图1.1所示。
点击“Add…”按钮,在弹出的界面上Location处输入地址:
图1.4AddRepository界面
(5)安装需要的包
在Eclipse菜单栏上选择Window->AndroidSDKManager,进入SDK管理界面如图1.5所示,其中Tools和Android4.1(API16)下的全部选上,另外Extras下的AndroidSupportLibrary必须选上,其余采用默认选择的安装即可。
图1.5AndroidSDKManager界面
点击“Install9packages…”,进入安装界面,如图1.6所示,选中AcceptAll,然后点击Install,等待一段时间后(时间长短与网速相关),安装即可完成。
图1.6SDK包安装界面
(6)配置
安装好插件后,还需要做些配置才可以使用Eclipse创建Android项目。
在菜单栏上依次点击Window->Preferences,在弹出的界面左侧选中"Android"项,然后在右侧设定AndroidSDK的目录,在SDKLocation中输入第3步中AndroidSDK的安装目录(假设SDK安装在C:
\Android下),配置界面如图1.7所示,最后点击Apply使配置生效。
图1.7Android配置界面
(7)创建AVD(AndroidVirtualDevice)
为使Android应用程序可以在模拟器上运行,必须创建AVD。
在Eclipse菜单栏上选择Window->AVDManager,界面如图1.8所示。
图1.8AVD管理界面
然后点击右侧的New,弹出界面如图1.9所示。
在其中填入Name,选择Target的API,SDCard大小任意,其余保持默认值,点击CreateAVD即可完成创建AVD。
图1.9创建AVD界面
创建完AVD后选择该AVD并点击“Start”即可运行该AVD,AVD的启动过程比较慢,耐心等待,运行成功后的界面如图1.10所示。
图1.10Android模拟器界面
2、创建HelloWorld程序
有两种方法可以在Eclipse里建立Android工程,一种是在菜单栏上选择File->New->Project…,然后在弹出对话框中选择Android->AndroidProject;另一种是在菜单栏上选择File->New->Other…,然后在弹出对话框中选择Android->AndroidProject。
两种方法都可以打开Android工程向导,如图1.11所示。
图1.11Android工程向导
其中ProjectName为HelloWorld,PackageName修改为edu.cczu.helloworld,其余都采用默认值。
然后一直点击Next,最后点击Finish完成工程的创建。
HelloWorld工程的基础文件和目录结构如图1.12所示。
可以看到Android工程向导已经自动创建好了工程所需的基础文件和目录结构,不需要向HelloWorld工程中添加任何代码,即可运行程序。
图1.12HelloWorld工程基础文件和目录结构
在Eclipse菜单栏上选择Run->Run或者点击工具栏按钮
,在弹出的对话框中选中AndroidApplication,然后点击OK运行程序,耐心等待一段时间,运行结果如图1.13所示,到此为止HelloWorld程序就实现了。
图1.13HelloWorld运行结果
三、思考与练习
1、如何把Android完全从Eclipse中卸载掉?
实验二Activity组件的生命周期
一、实验目的
1.了解Activity组件的生命周期;
2.了解Activity组件的运行状态;
3.掌握Activity事件回调函数的作用和调用关系。
二、实验内容
Activity中有7个与生命周期有关的函数。
其中onCreate()是Activity第一次启动时执行,主要是初始化一些变量,绑定数据或恢复信息等;onStart()是Activity界面被显示出来的时候执行;onRestart()是当前Activity重新被启动时调用;onResume()是当该Activity与用户能进行交互时被执行;onPause()是另一个Activity被启动,当前的Activity就被暂停了,一般在该函数中执行保存当前的数据或资源;onStop()表示另一个Activity被启动完成时,当前Activity对用户完全不可见时才调用;onDestroy()是退出当前Activity时调用的,另外,如果程序中调用finish()或者Android系统当前资源不够用时也会被调用。
这7个生命周期函数的调用顺序如图2.1所示。
图2.1Activity生命周期函数的调用顺序
1、创建Activity生命周期程序
在Eclipse中建立Android工程,工程名为LifeCycle,建好后在LifeCycle.java中添加与Activity生命周期有关的函数:
onStart(),onRestart(),onResume(),onPause(),onStop(),onDestroy()。
【参考代码】
@Override
protectedvoidonStart(){
super.onStart();
}
2、添加日志点
向步骤一中建立的LifeCycle.java中相关的生命周期函数添加日志点,使用Android中的Log类可以实现添加日志点。
android.util.Log常用的方法有5个,分别为:
Log.v(),Log.d(),Log.i(),Log.w()以及Log.e()。
根据首字母分别对应VERBOSE,DEBUG,INFO,WARN,ERROR,对应的优先级也是由低到高。
说明:
(1)Log.v的输出颜色是黑色,任何消息都会输出,这里的v代表verbose,表示详细信息,用法是Log.v("参数1","参数2"),参数1是标签,参数2是提示信息;
(2)Log.d的输出颜色是蓝色,输出调试信息(debug),也会显示i、w和e的信息;
(3)Log.i的输出颜色是绿色,一般提示性的消息(information),它不会输出Log.v和Log.d的信息,但会显示i、w和e的信息;
(4)Log.w的输出颜色是橙色,可以看作为警告信息(warning),同时它还会输出Log.e的信息。
(5)Log.e的输出颜色是红色,可以想到是错误信息(error),这里仅显示红色的错误信息。
【参考代码】
@Override
protectedvoidonStart(){
super.onStart();
Log.i(“LIFECYCLE”,“
(2)onStart()”);
}
3、打开控制台LogCat窗口
在Eclipse菜单栏上选择Window->ShowView->Other,在弹出的窗口中展开Android项,然后选中LogCat,点击OK,如图2.2所示。
图2.2ShowView中选择LogCat
这样,LogCat便显示在Eclipse下方的控制台区域。
如图2.3所示
图2.3Eclipse中的LogCat
为了便于观察,可以设置LogCat过滤器,点击LogCat窗口中SavedFilter部分的绿色加号,打开LogCat信息过滤器设置窗口,设置一个名为LogFilter,过滤条件为“标签名=LIFECYCLE”的过滤器,如图2.4所示。
图2.4LogCat过滤器
4、观察并记录生命周期函数的调用情况
分别在不同情况下运行程序,观察7个Activity生命周期函数的调用情况,同时记录下来。
(1)全生命周期
正常启动LifeCycle程序,然后通过模拟器的返回键关闭程序,观察并记录控制台的输出。
(2)可视生命周期
正常启动LifeCycle程序,然后通过“呼出/接听键”启动内置的拨号程序,再通过“返回键”退出拨号程序,重新回到LifeCycle程序,观察并记录控制台的输出。
(3)活动生命周期
正常启动LifeCycle程序,然后通过DDMS工具模拟电话呼叫,再通过“挂断键”挂断电话后重新回到LifeCycle程序,观察并记录控制台的输出。
三、思考与练习
1、除了使用log类添加日志点方法之外,还有什么其他方法可以实现类似的效果?
实验三界面设计
一、实验目的
1.熟悉和掌握界面控件设计;
2.掌握Android界面布局;
3.掌握控件的事件处理。
二、实验内容
1、创建工程
创建一个Android工程,工程名称为Experiment,包名为edu.cczu.experiment,其余默认,然后一直Next,在NewBlankActivity页面下把ActivityName改为Experiment,最后点击Finish完成工程创建。
2、添加相关控件
打开res->layout下的activity_experiment.xml布局文件,分别添加TextView、EditText、Button、RadioGroup、Spinner控件。
其中RadioGroup中加入两个RadioButton控件,分别为“男”和“女”,默认选择“男”;Spinner控件中要加入三个子选项,分别为“常州”、“苏州”和“无锡”,“常州”为默认选项。
界面效果如图3.1所示。
图3.1控件界面
3、界面布局
分别使用不同的界面布局设计图3.1的控件界面,并对比各种布局实现的复杂程度和对不同屏幕尺寸的适应能力。
使用的界面布局包括:
线性布局、框架布局、表格布局、相对布局、绝对布局和网格布局。
4、添加菜单
修改原有工程中的选项菜单,将“Settings”改为“设置”,效果如图3.2所示。
图3.2选项菜单
为“设置”菜单项添加两个子菜单项,分别是“城市设置”和“参数设置”,效果如图3.3所示。
图3.3子菜单
5、操作栏
将步骤4中的选项菜单“设置”添加到操作栏,效果如图3.4所示。
图3.4操作栏
6、界面事件
为步骤2中的“关闭”按钮添加事件,当点击“关闭”按钮时则退出程序。
为步骤2中的“添加”、“删除”、“更新”和“查询”这4个Button控件分别添加事件,当编号输入框为空时,按下任何一个Button都会给出提示信息:
编号不能为空,效果如图3.5所示。
图3.5Button事件
【参考代码】
Button.OnClickListenerbuttonListener=newButton.OnClickListener(){
publicvoidonClick(Viewv){
Toast.makeText(v.getContext(),"编号不能为空!
",Toast.LENGTH_LONG).show();
}
};
添加按键事件,图3.1的“编号”中只能输入数字,无法输入其他字符,当输入其他字符要给出相应提示,“身高”和“体重”中只能输入数字和字符“.”,无法输入其他字符,当输入其他字符要给出相应提示。
实验四Intent的调用
一、实验目的
1.了解Intent的组成;
2.掌握使用Intent启动Activity的方法;
3.掌握获取Activity返回值的方法。
二、实验内容
在实验三的Experiment工程基础上,添加若干Activity,利用Intent实现Activity组件之间的相互调用。
本实验中涉及的相关数据项可以自行设计,也可参考“4、附录”中给出的数据。
1、建立信息列表Activity
在res->layout下添加list_experiment.xml布局文件,在src下的experiment包内创建Infolist.java文件,对应list_experiment.xml布局文件,列表中的数据显示实验三中图3.1的前两项,具体内容可以随意。
另外添加相应的ListView子项的点击事件,获取点击某个子项时对应的编号。
界面效果如下图4.1所示。
图4.1列表界面
然后实现如下功能:
当点击图3.1中的查询按钮时,将会启动信息列表Activity,而点击图4.1中的返回按钮则会回到图3.1的界面。
2、建立详细信息Activity
在res->layout下添加detail_experiment.xml布局文件,使用TextView和Button控件,文字大小都为20dp。
在src下的experiment包内创建Detail.java文件,对应detail_experiment.xml布局文件,界面效果如下图4.2所示,其中点击“返回”按钮将会回到图4.1的列表界面。
图4.2详细信息界面
3、建立快捷菜单
在步骤1中建立的信息列表Activity上添加快捷菜单,其包括三个菜单项,分别为“详细信息”、“删除信息”和“更新信息”,界面效果如下图4.3所示。
图4.3快捷菜单界面
然后添加菜单选择事件:
当点击图4.1中的“详细信息”菜单时,将会启动详细信息Activity,此时界面上应该显示出对应编号的所有字段信息;当点击图4.1中的“删除信息”菜单时,将会删除对应编号的相关信息;当点击图4.1中的“更新信息”菜单时,将会回到实验三中的图3.1的界面,此时界面上应该显示出对应的编号、姓名以及其他已有的信息。
4、附录
本实验中涉及的数据可以自行随意设置,也可参考表4.1中的数据。
表4.1本实验涉及的数据
编号
姓名
性别
城市
身高(cm)
体重(kg)
1001
赵明
男
常州
175
72
1002
李晓
男
苏州
173
86
1003
王丽
女
无锡
163
48
三、思考与练习
1、当点击图3.1界面上的“关闭”按钮时如何实现退出整个程序?
实验五Service的使用
一、实验目的
1.了解Service的原理和用途;
2.掌握本地服务的管理方法;
3.掌握远程服务的绑定和调用方法。
二、实验内容
在实验四的基础上,通过调用后台服务实现计算BMI指数的功能。
1、BMI指数简介
BMI指数(身体质量指数,简称体质指数,又称体重指数,英文为BodyMassIndex,简称BMI),是用体重公斤数除以身高米数平方得出的数字,是目前国际上常用的衡量人体胖瘦程度以及是否健康的一个标准。
BMI指数的定义:
BMI指数=体重(kg)÷身高(m)^2。
例如,某人体重70kg,身高1.75m,则某人的BMI指数为:
70÷(1.75×1.75)=22.86。
目前,国际上通用BMI指数来衡量肥胖。
中国肥胖问题工作组根据20世纪90年代中国人群有关数据的汇总分析报告,首次提出了适合中国成人的肥胖标准:
体重指数大于等于24为超重,大于等于28为肥胖。
具体的中国成年人肥胖标准如下。
Ø体重偏瘦:
BMI<18.5
Ø健康体重:
18.5≤BMI<24
Ø超重:
24≤BMI<28
Ø肥胖:
BMI≥28
Ø最理想的BMI指数是22
但是,BMI指数只能作为评估个人体重和健康状况的多项标准之一。
因为BMI指数没有把一个人的脂肪比例计算在内,所以一个BMI指数超重的人,实际上可能并非肥胖。
例如,一个练健身的人,由于体重有很重比例的肌肉,他的BMI指数会超过30。
如果他的身体的脂肪比例很低,那就不需要减重。
2、实现本地进程服务
建立本地服务,通过本地服务计算BMI指数,当在实验三中的图3.1的界面上输入编号、身高和体重数据后,点击“添加”按钮后调用本地服务计算BMI指数,然后根据计算得出的BMI指数,分别给出对应的提示信息。
例如,计算得出某人的BMI指数是20,则给出提示信息“健康体重”。
同时在实验四中的图4.2的详细信息界面中增加一项“体质状况”,根据计算得出的BMI指数给出相应的体质状况,界面效果如下图5.1所示。
图5.1增加“体质状况”后的详细信息界面
3、实现跨进程服务
建立远程服务,通过远程服务实现与步骤2同样的功能。
实验六数据存储与访问
一、实验目的
1.掌握SharedPreferences的使用方法;
2.掌握各种文件存储的区别与适用情况;
3.了解SQLite数据库的特点和体系结构;
4.掌握SQLite数据库的建立和操作方法;
5.理解ContentProvider的用途和原理;
6.掌握ContentProvider的创建与使用方法。
二、实验内容
在实验五的基础上实现数据存储与访问功能。
本实验中涉及的相关数据项可以自行设计,也可参考“7、附录”中给出的数据。
1、简单存储
简单存储指的是Android系统提供的SharedPreferences数据保存方式,将数据以最简单的方式进行永久性保存。
应用程序在使用过程中会被用户或系统关闭,如果能够在程序关闭前保存用户输入的数据,就可以在程序再次启动程序时恢复这些数据,进而提升用户体验。
使用SharedPreferences方式在程序关闭时保存用户在实验三中图3.1的界面上输入的数据,并在程序重新启动时自动恢复这些数据。
2、建立参数设置Activity
在res->layout下添加parameter_experiment.xml布局文件,在src下的experiment包内创建Parameter.java文件,对应parameter_experiment.xml布局文件。
parameter_experiment.xml布局文件中包括1个RadioGroup(其中包括2个RadioButton,默认选中第一个)和2个Button控件,具体内容如图5.1所示。
图5.1参数设置界面
当点击实验三中图3.4的“参数设置”选项时,则进入图5.1的参数设置界面。
点击图5.1的“确定”按钮则采用选择的存储方式保存数据,点击“取消”按钮则保持上次的存储方式不变,之后都退回