《移动应用开发技术实验指导书(最终版).doc》由会员分享,可在线阅读,更多相关《移动应用开发技术实验指导书(最终版).doc(123页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、实验1 Android SDK开发环境的安装及配置1.1 实验目的 掌握Java SDK和Android SDK开发环境的安装和配置1.2 实验内容 Java SDK的安装和环境变量的配置 Eclipse的安装和配置 Android SDK的安装和环境变量的配置 Eclipse插件ADT的安装和配置 Android模拟器的配置1.3 实验步骤1.Java SDK的安装和环境变量的配置1)下载JDK:官方网址为/downloads/jdk7u9-downloads-.html,根据电脑的操作系统选择正确的版本进行下载(如图1-1)。下载完成之后如图1-2所示。图1-1 JDK下载选择界面图1-2
2、 JDK下载完成示意图2)安装JDK:双击安装包进行安装,显示如图1-3所示的安装向导。图1-3 JDK安装向导3)点击下一步,选中要安装得部分和要安装的路径,建议使用默认配置。“开发工具”是必须安装的,它是JDK的核心,“源代码”是JDK类库包的源代码,建议安装(很多时候都能用到源代码)。“公共JRE”可以选择不安装,因为JDK中包括JRE。这里选择默认的配置,如图1-4所示。图1-4 JDK安装路径选择界面4)选择安装的路径,点击下一步安装JDK,其安装状态如图1-5所示。图1-5 JDK安装状态界面5)当JDK安装完成后会提示是否安装JRE,如图1-6所示。图1-6 JRE安装提示界面6
3、)点击下一步,出现JRE安装进度界面,如图1-7所示。安装完成后如图1-8所示。图1-7 JRE安装进度显示界面图1-8 JRE安装完成界面7)配置环境变量:在Windows操作系统当中配置path和classpath两个环境变量。(1)右击我的电脑-属性,点击“高级”选项卡,单击“环境变量”,如图1-9所示。图1-9 环境变量选择界面(2)选择系统变量中的Path变量,如图1-10所示。图1-10 配置Path变量(3)将安装路径复制到Path路径的最后面,(安装路径的查找如图1-11所示),注意添加路径之前先加英文的分号,如图1-12所示。图1-11 复制安装路径图1-12 添加路径(4)
4、验证环境变量是否配置成功,打开命令行窗口,输入命令java version,如可以出现图1-13所示的信息,则说明JDK已经安装成功。图1-13 验证环境变量配置情况(5)配置环境变量classpath,如上所述,点击环境变量,新建系统变量,变量名为classpath,变量值为英文的句号,如图1-14所示。到此为止,两个环境变量也配置成功。图1-14 配置classpath变量8)下面运行第一个java程序HelloWorld。(1)新建文件HelloWorld.java 。使用文本编辑器NotePad+打开(如图1-15所示),编写简单的HelloWorld程序。 图1-15 编写Hello
5、World程序(2)打开命令行,输入HelloWorld程序所在的磁盘名,对java文件进行编译,编译之后出现一个新的文件HelloWorld.class,最后执行.class文件,打印出“Hello World!”,如图1-16所示。图1-16 编译执行HelloWorld.java文件2. Eclipse的安装和配置1)下载Eclipse:官方网址为http:/www.eclipse.org/downloads/,根据操作系统的位数来选择Windows 32 Bit或者Windows 64 Bit,如图1-17所示。图1-17 Eclipse下载界面下载完成之后是个压缩包,进行解压缩到某个
6、路径,如图1-18所示。图1-18 解压下载文件2)双击eclipse.exe即可打开,选择一个路径作为workspace,如图1-19所示。图1-19 选择workspace路径3.Android SDK的安装和配置1)官方下载地址为图1-20 Android SDK下载2)配置环境变量将tools文件夹所在的路径加入到环境变量path中,如图1-21所示。图1-21 配置环境变量4. Eclipse插件ADT的安装和配置在eclipse中的help选项中选择Install New Software,如图1-22所示。图1-22 Eclipes运行界面1)输入网址https:/dl-图1-2
7、3 下载插件ADT2)点击Next进行安装。然后在window中选择Preferences中进行路径配置。图1-24 路径配置5. Android模拟器的配置1)在eclipse中选择安卓标志图标进行模拟器配置,如图1-25所示。图1-25 Android模拟器的配置第一步2)点解New,配置模拟器的详细参数,如图1-26所示。,图1-26 Android模拟器的配置第二步3)点击Creat AVD,然后选择4.0.3,点击Start,进行发布,如图1-27所示。然后Android应用就可以运行于模拟器上面了。1-27 注册AVD实验2 第一个应用程序HelloWorld2.1 实验目的 熟悉
8、和了解Eclipse开发环境 掌握在Eclipse开发环境下新建Android应用工程及运行Android应用程序的方法。2.2 实验内容 新建Android工程,并正确设置其运行环境。 在模拟器上运行Android应用程序。 在我们的开发平台上运行Android应用程序。2.1 实验步骤1)Eclipse为我们提供了大量的快捷键,要记住每一个快捷键几乎是不可能的,但是掌握一些常用的快捷键,可以大大提升我们的开发效率。 Alt+/(代码助手功能(代码提示) Ctrl+Shift+W(关闭所有已打开的编辑窗口) Alt+Shift+R (重命名文件或变量) Ctrl+Shift+O (自动导入需
9、要的包并删除多余的import的语句) Alt+Shift+F (代码格式化) Ctrl+1 (快速修复) Ctrl+D (删除一行,光标可以放在这行的任意位置) Ctrl+Z (撤销) Ctrl+Y (恢复) Ctrl+/ (添加与取出注释/) Alt+Shift+S (快速添加java Bean类的各种方法)2)打开Eclipse,在菜单栏一次选择:File-New-Project打开new project对话框,点击Android选择Android project,如图2-1所示。图2-1Eclipse工作界面图2- 2新工程命名Project Name:工程名为HelloWorld,如
10、图2-3所示。图2-3建立新工程Application Name:应用程序的名字,可以输入你想要的字符串,这里我们输入HelloWorld,如图6-30所示。Package Name:包名,至少是两级格式,如a.b,这里我们输入。Creat Activity:自动帮我们创建Activity,取名为HelloWorldActivity。Minimum SDK:支持SDK的最低版本为8。到此,一个Android工程建立完毕,其工程目录如图2-4所示。图2-4 新工程目录3)在模拟器上运行该程序选择HelloWorld,右击选择Run As-Android Application,或者Run-Run
11、 Configurations,如图2-5所示。图2-5 运行程序运行结果如图2-6所示。-图2-6 运行结果 右键点击HelloWorld工程,一次选择Run As-Android Application,如图2-7所示。待实验箱出现图2-8所示,表示HelloWorld工程运行成功,图2-7在其他开发平台上运行程序选择图2-8 HelloWorld工程运行成功界面实验3 活动Activity3.1 实验目的 了解Android应用程序中的活动程序Activity. 了解Activity执行状态迁移的生命周期.3.2 实验内容 编写程序测试Android活动程序Activity执行状态迁移的
12、生命周期的具体过程。3.3 实验原理Android操作系统的活动程序(Activity)是最基本的处理工作单元,大部分的活动程序都会有一个相对应的显示窗体,就好像HTML程序都会针对某一个网页来描述。Android应用程序的窗体就好比一个配置了按钮、编辑框和文本框的窗体,一个可用浏览器显示的Web网页或一个播放3D影像的窗体。一个Android应用程序是由一个或多个活动程序组成。Activity有三个状态:(1)当它在屏幕前台时(位于当前任务堆栈的顶部),它是激活或运行状态。它就是响应用户操作的Activity。(2)当它上面有另外一个Activity,使它失去了焦点但仍然对用户可见时,它处于
13、暂停状态。在它之上的Activity没有完全覆盖屏幕,或者是透明的,被暂停的Activity仍然对用户可见,并且是存活状态(它保留着所有的状态和成员信息并保持和窗口管理器的连接)。如果系统处于内存不足时会杀死这个Activity。(3)当它完全被另一个Activity覆盖时则处于停止状态。它仍然保留所有的状态和成员信息。然而对用户是不可见的,所以它的窗口将被隐藏,如果其它地方需要内存,则系统经常会杀死这个Activity。当Activity从一种状态转变到另一种状态时,会调用以下保护方法来通知这种变化:/ 第一次创建是调用。在Acticity整个生命周期只会被调用一次 protected vo
14、id onCreate(Bundle savedInstanceState);/ onCreate 调用之后就会调用 onStart protected void onStart();/ onStart 之后调用 onRestart。此方法之后 Acticity 处于运行(激活)状态。 protected void onRestart(); protected void onResume();/* 当一个新的 Activity 被打开后,原来的 Activity 就会调用这个状态。* 如果新打开的 Activity 并没有完全覆盖原来的 Activity。或者新的*Activity 是半透明状
15、态, 原来的 Activity 还可以见。那么就只会调用这*个方法,使 Activity 处于暂停状态,否则,继续往下调用 stop */ protected void onPause();/ 当一个新的 Activity 被打开之后,而原来的 Activity 被它覆盖掉时,/ 在调完 onPause 方法后,就会调用onStop,使 Activity 处于停止状态 protected void onStop();/当 Activity 被销毁的时候,将调用 onDestroy protected void onDestroy();这七个方法定义了Activity的完整生命周期,实现这些方法
16、可以帮助我们监视其中的三个嵌套生命周期循环。 Activity的完整生命周期自第一次调用onCreate()开始,直至调用onDestroy()为止。Activity在onCreate()中设置所有“全局”状态以完成初始化,而在onDestroy()中释放所有系统资源。例如,如果Activity有一个线程在后台运行从网络下载数据,它会在onCreate()创建线程,而在 onDestroy()销毁线程。Activity的可视生命周期自onStart()调用开始直到相应的onStop()调用结束。在此期间,用户可以在屏幕上看到Activity,尽管它也许并不是位于前台或者也不与用户进行交互。在这
17、两个方法之间,我们可以保留用来向用户显示这个Activity所需的资源。例如,当用户不再看见我们显示的内容时,我们可以在onStart()中注册一个BroadcastReceiver来监控会影响UI的变化,而在onStop()中来注消。onStart() 和 onStop() 方法可以随着应用程序是否为用户可见而被多次调用。Activity的活跃生命周期自onResume()调用起,至相应的onPause()调用为止。在此期间,Activity位于前台最上面并与用户进行交互。Activity会经常在暂停和恢复之间进行状态转换例如当设备转入休眠状态或者有新的Activity启动时,将调用onPa
18、use() 方法。当Activity获得结果或者接收到新的Intent时会调用onResume() 方法。图3-1是官网给出的一个Activity重要的状态路径。直角矩形代表Activity在不同状态之间转换时,你可以调用的回调函数来实现某些操作。带颜色的椭圆代表Activity可以处于的主要状态。图3-1 Activity重要的状态路径3.4 实验步骤1)编程Activity_Lifecycle工程2)在Android模拟器上运行该程序右键单击Activity_Lifecycley应用程序工程,依次选择Run As-Android Application,即会运行此应用程序。一开始运行该应用
19、程序,首先会运行onCreat()方法,直接显示main.XML窗体布局,如图3-2所示。图3-2 main.XML窗体布局接着开始执行FirstActivit的onCreat()-onStart()-onResume()方法,打印出相关信息,如图3-3所示。图3-3 FirstActivit执行界面然后点击按钮,启动SecondActivity,如图3-4所示。图3-4 启动SecondActivity依次执行FirstActivity的onPause(),SecondActivity的onCreat()- onStart()-onResume()和FirstActivity的onStop(
20、)方法,如图3-5所示。图3-5 FirstActivity的执行顺序此时点击模拟器上的按钮,界面回到FirstActivity,如图3-6所示。图3-6FirstActivity界面打印出信息如图3-7所示。图3-7 打印信息此时点击打电话按钮,打印出信息如图3-8所示。图3-8 点击“电话按钮”后的信息打印界面点击回到FirstActivity,打印信息如图3-9所示。图3-9 FirstActivity信息界面点击返回到主界面,打印信息如图3-10所示。图3-10 主界面4)为了加深对这几个方法的了解,可是试着运行Activity_Lifecycle_01,只是把SecondActivi
21、ty变成了窗口样式,代码没有改变,但是打印出的信息不同了,自己可以尝试分析。实验4 Activity&Intent4.1 实验目的了解Android的意图方法Intent了解Android活动程序Activity和意图方法Intent之间的关系4.2 实验内容 编写程序测试Android活动程序Activity如何进行显示窗体的切换 使用Intent在Activity之间传递数据4.3 实验原理一般情况Android应用程序是由以下四种组件构造而成的: 活动 广播接收器 服务 内容提供器需要注意的是,并不是每个Android应用程序都必须构建这四个组件,有些可能由这些组件的组合而成。活动是最基
22、本的Android应用程序组件,应用程序中,一个活动通常就是一个单独的屏幕。每一个活动都被实现为一个独立的类,并且从活动基类中继承而来,活动类将会显示由视图控件组成的用户接口,并对事件做出响应。大多数的应用是由多屏幕显示组成。在这些组件之间的通讯中,主要是由Intent协助完成的。Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。Intent不仅可用于应用程序之间,也可用于应用程序内部的Activity/Service之间的交互。因此,Intent在这里起着一
23、个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。在SDK中给出了Intent作用的表现形式为:通过Context.startActivity()或者Activity.startActivityForResult()启动一个Activity;通过Context.startService()启动一个服务,或者通过Context.bindService()和后台服务交互;通过广播方法(如Context.sendBroadcast(),Context。Send或dereBroadcast(),Context。sendStickyBroadcast()发给broadca
24、st receivers。Intent属性的设置,包括以下几点:(以下为XML中定义,当然也可以通过Intent类的方法来获取和设置)(1) Action,也就是要执行的动作。SDK中定义了一些标准的动作,如表7-1所示。当然,也可以自定义动作(自定义的动作在使用时,需要加上包名作为前缀,如com.example.project.SHOW_COLOR”),并可定义相应的Activity来处理我们的自定义动作。(2)Data,也就是执行动作要操作的数据Android中采用指向数据的一个URI来表示,如在联系人应用中,一个指向某联系人的URI可能为:content:/contacts/1。对于不同
25、的动作,其URI数据的类型是不同的(可以设置type属性指定特定类型数据),如ACTION_EDIT指定Data为文件URI,打电话为tel:URI,访问网络为http:URI,而由content provider提供的数据则为content:URIs。表7-1 SDK中定义的标准动作OnstantTarget componentActionACTION_CALLactivityInitiate a phone call.ACTION_EDITactivityDisplay data for the user to edit.ACTION_MAINactivityStart up as the
26、 initial activity of a task, with no data input and no returned output.ACTION_SYNCactivitySynchronize data on a server with data on the mobile device.ACTION_BATTERY_LOWbroadcast receiverA warning that the battery is low.ACTION_HEADSET_PLUGbroadcast receiverA headset has been plugged into the device,
27、 or unplugged from it.ACTION_SCREEN_ONbroadcast receiverThe screen has been turned on.ACTION_TIMEZONE_CHANGEDbroadcast receiverThe setting for the time zone has changed.(3)type(数据类型),显式指定Intent的数据类型(MIME)。一般Intent的数据类型能够根据数据本身进行判定,但是通过设置这个属性,可以强制采用显式指定的类型而不再进行推导。(4)category(类别),被执行动作的附加信息。例如 LAUNCHE
28、R_CATEGORY 表示Intent 的接受者应该在Launcher中作为顶级应用出现;而ALTERNATIVE_CATEGORY表示当前的Intent是一系列的可选动作中的一个,这些动作可以在同一块数据上执行。还有其他的行为如表7-2所示。表7-2 被执行动作的附加信息ConstantMeaningCATEGORY_BROWSABLEThe target activity can be safely invoked by the browser to display data referenced by a link for example, an image or an e-mail m
29、essage.CATEGORY_GADGETThe activity can be embedded inside of another activity that hosts gadgets.CATEGORY_HOMEThe activity displays the home screen, the first screen the user sees when the device is turned on or when the HOME key is pressed.CATEGORY_LAUNCHERThe activity can be the initial activity o
30、f a task and is listed in the top-level application launcher.CATEGORY_PREFERENCEThe target activity is a preference panel.(5)component(组件),指定Intent的的目标组件的类名称。通常 Android会根据Intent 中包含的其它属性的信息,比如action、data/type、category进行查找,最终找到一个与之匹配的目标组件。但是,如果 component这个属性有指定的话,将直接使用它指定的组件,而不再执行上述查找过程。指定了这个属性以后,Int
31、ent的其它所有属性都是可选的。(6)extras(附加信息),是其它所有附加信息的集合。使用extras可以为组件提供扩展信息,比如,如果要执行“发送电子邮件”这个动作,可以将电子邮件的的标题、正文保存在extras里,传给电子邮件发送组件。(a)Intent-Filter的定义中一些属性设置的例子 (b)Intent用法实例无参数Activity跳转Intent it = new Intent(Activity.Main.this, Activity2.class);startActivity(it); 向下一个Activity传递数据(使用Bundle和Intent.putExtras)
32、Intent it = new Intent(Activity.Main.this, Activity2.class);Bundle bundle=new Bundle();bundle.putString(name, This is from MainActivity!);it.putExtras(bundle); / it.putExtra(“test”, shuju”);startActivity(it); / startActivityForResult(it,REQUEST_CODE);对于数据的获取可以采用:Bundle bundle=getIntent().getExtras()
33、;String name=bundle.getString(name);(c)向上一个Activity返回结果(使用setResult,针对startActivityForResult(it,REQUEST_CODE)启动的Activity)Intent intent=getIntent();Bundle bundle2=new Bundle();bundle2.putString(name, This is from ShowMsg!);intent.putExtras(bundle2);setResult(RESULT_OK, intent);(d)回调上一个Activity的结果处理函数
34、(onActivityResult)Override protected void onActivityResult(int requestCode, int resultCode, Intent data) / TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); if (requestCode=REQUEST_CODE) if(resultCode=RESULT_CANCELED) setTitle(cancle); else if (resultCode=RESULT_
35、OK) String temp=null; Bundle bundle=data.getExtras(); if(bundle!=null) temp=bundle.getString(name); setTitle(temp); 其他的一些应用实例:1) 打电话 a.叫出拨号程序 Uri uri = Uri.parse(tel:);Intent it = new Intent(Intent.ACTION_DIAL, uri);startActivity(it);b.直接打电话出去Uri uri = Uri.parse(tel:);Intent it = new Intent(Intent.A
36、CTION_CALL, uri);startActivity(it);使用這些程序,需要在 AndroidManifest.xml 中,加上 /2) 传送SMS/MMSa. 调用短信程序Intent it = new Intent(Intent.ACTION_VIEW, uri); it.putExtra(sms_body, The SMS text); it.setType(vnd.android-dir/mms-sms); startActivity(it);b.传送消息 Uri uri = Uri.parse(smsto:/); Intent it = new Intent(Intent
37、.ACTION_SENDTO, uri); it.putExtra(sms_body, The SMS text); startActivity(it);c.传送 MMSUri uri = Uri.parse(content:/media/external/images/media/23);Intent it = new Intent(Intent.ACTION_SEND);it.putExtra(sms_body, some text);it.putExtra(Intent.EXTRA_STREAM, uri);it.setType(image/png);startActivity(it);
38、4.4 实验步骤利用Activity_intent应用程序来演示如何利用Intent类来进行显示窗体间的切换。按照前面所属步骤导入工程,程序启动起来,显示的第一个窗体如图4-1所示。图4-1启动程序后所显示的第一个窗体点击按钮,启动OtherActivity,此时,通过以下代码向OtherActivity传递数据:/生成一个Intent对象Intent intent = new Intent();/在Intent对象当中添加一个键值对intent.putExtra(testIntent, 123);/设置Intent对象要启动的Activityintent.setClass(Activity0
39、1.this, OtherActivity.class);/通过Intent对象启动另外一个ActivityActivity01.this.startActivity(intent);OtherActivity启动之后,如图4-2所示,包含一个TextView,用来显示从Activity01传递过来的数据。图4-2 从Activity01传递过来的数据使用Intent启动发短信的Activity,以下的4行代码将启动发送短信的Activity。Uri uri = Uri.parse(smsto:/); Intent intent = new Intent(Intent.ACTION_SENDT
40、O, uri); intent.putExtra(sms_body, The SMS text);startActivity(intent);执行结果如图4-3所示。图4-3使用Intent启动发短信的Activity点击按钮,启动发短信的Activity,如图4-4所示。图4-4 发短信的Activity界面上面的例子说明,Intent在两个Activity之间传递数据,并不要求这两个Activity在同一个应用程序下。实验5 Android常用的控件5.1 实验目的掌握Android常用控件的使用方法和基本属性。5.2 实验内容测试Android应用程序中常用控件的使用方法5.3 实验原理(1)TextView文本显示框xml设计,代码如下所示。代码设计 TextView textView = new TextView(this); /声明对象 textView.setTextColor(Color.RED); /设置字体颜色 textView.setTe