1、 基于 Android 平台的工业应用终端设计Android 应用程序开发流程 一 开发平台 1. Android 平台介绍 1.1 Android简介 Android 是由 Google 与 开放手机联盟 ( Open Handset Alliance,OHA) 合作开发 的 ,是基于 Linux 平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整 的移动软件。 Android 开发平台允许任何移动终端厂商加入到 Android 联盟中来 ,它 提供给第三方开发商一个十分宽泛、自由的环境,不会受到各种条条框框的阻扰 。 G
2、oogle 强大的搜索引擎以及其相关的 Google Maps、Gmail等业务有着相当大的用户群,而 Android平台手机将无缝结合这些优秀的 Google服务 ,使人们更便捷的使用互联网络 。 1.2 Android 核心模块 Android 作为一个移动设备的平台,其软件层次结构包括了一个操作系统( OS),中间件( MiddleWare)和应用程序( Application)。 Android 的软件层次结构自下而上分为以下几个层次: 图 1 Android 的架构模型 第一、 内核 ( Linux Kernel) Android 使用 Linux2.6 作为操作系统, Linux2
3、.6 是一种标准的技术, Linux 也是一个开放的操作系统。 Android 对操作系统的使用包括核心和驱动程序两部分, Android 的 Linux核心为标准的 Linux2.6 内核, Android 更多的是需要一些与移动设备相关的驱动程序。 第二、各种库( Libraries)和 Android 运行环境( RunTime) Android 包含一套 C/C+库 , 被用于 Android 系统中的各种组件中 . 这些功能通过Android 应用框架展现给开发人员 。 Android 运行时 Android 包含一组核心库 , 提供了 Java语言核心库内的大部分功能 。 第三、应
4、用程序框架( Application Framework) Android 应用程序由一个或多个组件组成 , Android 的应用程序框架为应用程序层的开发者提供 APIs,它实际上是一个应用程序的框架。由于上层的应用程序是以 JAVA构建的,因此本层次提供的首先包含了 UI 程 序中所需要的各种控件 。 第四、应用程序( Application) Android 的应用程序主要是用户界面( User Interface)方面的,通常以 JAVA程序编写,其中还可以包含各种资源文件(放置在 res 目录中) JAVA 程序及相关资源经过编译后,将生成一个 APK包。 Android 本身提供
5、了主屏幕( Home),联系人( Contact),电话( Phone),浏览器( Browers)等众多的核心应用。同时应用程序的开发者还可以使用应用程序框架层的 API 实现自己的程序。 2. Windows 平台上搭建 Android 开 发环境 2.1 安装 JDK 安装 Eclipse 的开发环境需要 JRE 的支持,而开发 Android 应用程序需要完整的 JDK( JDK包含了 JRE)的支持。 首先在 Sun 官网 http:/ JDK,要求版本在 1.5+以上。这里我们下载 Java SE (JDK) 6。 JDK 安装完成之后要设置系统环境变量: 我的电脑点右键,选择“属
6、性”,选择“高级”标签,进入环境变量设置。 环境变量设置,分别设置 两个 个环境变量: Path 变量、 classpath变量。 变量名 : Path; 变量值 : C:Program FilesJavajdk1.6.0_17bin; 变量名 : Classpath; 变量值 : C:Program FilesJavajdk1.6.0_17lib;C:Program FilesJavajdk1.6.0_17jrelib 单击“开始”,选择“运行”,输入 CMD 命令,打开 CMD 窗口,分别输入 java, javac,如果有如下信息则表示 JDK安装成功,否则需要重新检查配置环境变量。 2
7、.2 安装 Eclipse 打开 Eclipse 的下载页面 http:/www.eclipse.org/downloads/进行下载。 Eclipse 无须执行安装程序,解压后可直接使用,下载完成后,找到压缩包进行解压,进入解压目录,双击可执行文件“ eclipse.exe”直接运行 Eclipse, Eclipse 可以自动找到用户安装的 JDK路径。 2.3 安装 Android SDK 打开网页 http:/ SDK 的下载页面进行下载,同 Eclipse 一样不需要安装,直接解压就可以使用,将 SDK文件夹下的 tools 目录的绝对路径添加到系统环境变量 Path 中,打开一个 C
8、MD 窗口,输入 android h,如果有如下信息则表示 SDK安装成功。 2.4 安装 ADT Android 为 Eclipse 定制了一个插件 ADT,是为 了用户可以更好利用 Eclipse 开发Android 应用程序。 ADT 可以让用户方便的创建 Android 项目,在基于 Android 框架 API 的基础上添加组件,以及使用 SDK工具集调试应用程序,甚至导出 APK以便发行应用程序。 打开 Eclipse,单击 Help-Install New Software 项,单击“ Add ”,输入: Name: android plugin Location: https:
9、/dl- 单击“ OK”,安装完成后,重启 Eclipse。 2.5 为 Eclipse 配置 Android SDK 安装好 ADT 插件后,还需要配置才可以使用 Eclipse 创建 Android 项目。单击 windows-Preferences 项,在弹出的界面左侧可以看到“ Android”,选中后在 SDK Location里设定 Android SDK 所在目录,单击“ OK”完成配置。 2.6 创建 Android模拟器( AVD) 单击 windows-Android SDK and AVD Manager,在弹出的界面左侧可以看到“ Virtual Devices”,选中
10、 后单击“ New ”,输入: Name: Android_1.5, Target:选择 Android 1.5 API Level 3,单击“ Create AVD”创建成功。 单击“ Start”,单击“ Launch”, AVD 模拟器运行如下: 二 开发流程 1. 新建一个 Android 工程 打开 Eclipse,选择 File-New-others 项,选择 Android project。然后填写所要创建工程的名字,包的名字, Activity 的名字和应用的名字。如下所示: 点击“ Finish”,一个 Android 工 程便成功创建了。 2. Android 工程文件的组
11、成 创建的 test 工程文件结构如下: src 目录 : 包含 Activity 的源文件 , 该文件夹是放项目的源代码的。 我们新建一个简单的 test 项目,系统为我们生成了一个 test.java 文件。他导入了两个类 android.app.Activity 和android.os.Bundle, test 类继承自 Activity 且重写了 onCreate 方法。 注: Override 在重写父类的 onCreate时,在方法前面加上 Override 系统可以帮你检查方法的正确性。例 如, public void onCreate(Bundle savedInstanceS
12、tate) .这种写法是正确的,如果你写成public void oncreate(Bundle savedInstanceState) .这样编译器回报如下错误 The method oncreate(Bundle) of type HelloWorld must override or implement a supertype method,以确保你正确重写 onCreate 方法。(因为 oncreate 应该为 onCreate) 而如果你不加 Override,则编译器将不会检测出错误,而是会认为你新定义了一个方法 oncreate。 android.app.Activity 类:
13、因为几乎所有的活动( activities)都是与用户交互的,所以 Activity类关注创建窗口,你可以用方法 setContentView(View)将自己的 UI 放到里面。然而活动通常以全屏的方式展示给用户,也可以以浮动窗口或嵌入在另外一个活动中。有两个方法是几乎所有的 Activity 子类都实现的: 1. onCreate(Bundle):初始化你的活动( Activity),比如完成一些图形的绘制。最重要的是,在这个方法里你通常将用布局资源( layout resource)调用 setContentView(int)方法定义你的 UI,和用 findViewById(int)在
14、你的 UI 中检索你需要编程地交互的小部件( widgets)。setContentView 指定由哪个文件指定布局( main.xml),可以将这个界面显示出来,然后我们进行相关操作,我们的操作会被包装成为一个意图,然后这个意图对应有相关的 activity 进行处理。 2. onPause():处理当离开你的活动时要做的事情。最重要的是,用户做的所有改变应该在这里提交(通常 ContentProvider 保存数据)。 android.os.Bundle 类:从字符串值映射各种可打包的( Parcelable)类型( Bundle 单词就是捆绑的意思,所有这个类很好理解和记忆)。如该类提供
15、了公有方法 public boolean containKey(String key),如果给定的 key 包含在 Bundle 的映射中返回 true,否则返回 false。该类实现了 Parceable 和 Cloneable 接口,所以它具有这两者的特性。 gen 目录: 包含 R.java 文件, R.java 是在建立项目时 由 Ec lipse 自动生成的,这个文件是只读模式的,不能更改。 R.java 文件中定义了一个类 R, R 类中包含很多静态类,且静态类的名字都与 res 中的一个名字对应,即 R 类定义该项目所有资源的索引。 通过 R.java 我们可以很快地查找我们需要
16、的资源,另外编绎器也会检查 R.java 列表中的资源是否被使用到,没有被使用到的资源不会编绎进软件中,这样可以减少应用在手机占用的空间。 Android 1.5 目录: 包 含 Android SDK1.5 的库。 该文件夹下包含 android.jar 文件,这是一个 Java 归档文件,其中包含构建应用程序所需的所有的 Android SDK 库(如 Views、 Controls)和 APIs。通过android.jar 将自己的应用程序绑定到 Android SDK 和 Android Emulator,这允许你使用所有Android 的库和包,且使你的应用程序在适当的环境中调试。例
17、如上面的 test.java 源文件中的: import android.app.Activity; import android.os.Bundle; 这里两行代码就是从 android.jar 导入包。 assets 目录: 主要放置一些多媒体文件 res 目录: 主要放置应用程序用到的资源文件。 包含你项目中的资源文件并将编译进应用程序。向此目录添加资源时,会被 R.java 自动记录。新建一个项目, res 目录下会有三个子目录:drawabel、 layout、 values。 drawable 目录:主要放置图片资源。 layout 目录:主要放置布局文件,该布局文件全部是 XML
18、 文件。 values 目录:主要放置字符串( strings.xml)、颜色( colors.xml)、数组( arrays.xml)。 AndroidManifest.xml: 项目的总配置文件,记录应用中所使用的各种组件。这个文件列出了应用程序所提供的功能,在这个文件中,你可以指定应用程序使用到的服务 (如电话服务、互联网服务、短信服务、GPS 服务等等 )。另外当你新添加一个 Activity 的时候,也需要在这个文件中进行相应配置,只有配置好后,才能调用此 Activity。 AndroidManifest.xml 将包含如下设置: application permissions、
19、Activities、 intent filters 等。 default.properties: 记录项目中所需要的环境信息,比如 Android 的版本等。 HelloWorld 的 default.properties文件代码如下所示,代码中的注释已经把 default.properties 解释得很清楚了。 3. 界面 UI 的布局 对于一个 Android 应用来说 , Activity 类实例是一个最基本的功能单元。一个 Activity 实例可以做很多的事情,但是它本身无法显示在屏幕上,而是借助于 View 和 Viewgroup, 这两个才是 Android 平台上最基本的两个
20、用户界面表达单元。 3.1 视图组件( View) Android 中的 View 类是最基本的一个 UI 类,基本上所有的 Android 应用程序的 UI 组件都是继承 View 类而实现的,常用的 UI 组件 TextView(文本框)、 Button(按钮)、 List(列表)、 EditText(编辑框)、 RadioButton(多选按钮)、 Checkbox(选择框)等都属于 View 类。 3.2 视图容器组件 ( ViewGroup) ViewGroup 是一个特殊的 View 类,它继承于 android.view.View。它的功能就是装载和管理下一层的 View 对象和
21、 ViewGroup 对象。 ViewGroup 是布局管理器( layout)及 view 容器的基类。 ViewGroup 中,还定义了一个嵌套类 ViewGroup.LayoutParams。这个类定义了一个显示对象的位置、大小等属性, view 通过 LayoutParams 中的这些属性值来告诉父级,它们将如何放置。 ViewGroup 的一些主要的布局类如下: FrameLayout:最简单的一个布局对象。它里面只显示一个显示对象。所有的显示对象都将会固定在屏幕的左 上角,不能指定位置。但允许有多个显示对象,但后一个将会直接在前 一个之上进行覆盖显示,把前一个部份或全部挡住(除非后
22、一个是透明的)。 LinearLayout:以单一方向对其中的显示对象进行排列显示,如以垂直排列显示,则布局管理器中将只有一列;如以水平排列显示,则布局管理器中将只有一行。同时,它还可以对个别的显示对象设置显示比例。 TableLayout:以拥有任意行列的表格对显示对象进行布局,每个显示对象被分配到各自的单元格之中,但单元格的边框线不可见。 AbsoluteLayout:允许以坐标的方式,指 定显示对象的具体位置,左上角的坐标为 (0, 0),向下及向右,坐标值变大。这种布局管理器由于显示对象的位置定死了,所以在不同的设备上,有可能会出现最终的显示效果不一致。 RelativeLayout:
23、允许通过指定显示对象相对于其它显示对象或父级对象的相对位置来布局。如一个按钮可以放于另一个按钮的右边,或者可以放在布局管理器的中央。 3.3 XML编程实现 UI 布局 打开 Android 项目 里的 reslayoutmain.xml,用 xml 语言来编辑程序。 首先确定界面的布局,适当嵌套 ViewGroup 的几种布局,根据 需要给android:layout_width 、 android:layout_height 、 android:background 、 android:padding 、android:orientation、 android:gravity 等设置各自适
24、当的参数值 ,以达到满意的整体布局。 然后在不同 的 ViewGroup 布局中添加 View 控件,根据实际需要 给各个控件的 android:id、android:layout_height、 android:layout_width、 android:text、 android:textSize 等 设定不同的参数值 。 通过调整布局排列,控件位置,字体大小,最终完成对 Android 应用程序 UI 的布局。 4. Java 程序的编写 打开 Android 项目 里的 srccom.yiyang.testmain.java,用 java 语言编写程序来实现对各自不同的响应。 首先将
25、Activity 的 java 程序和相关 xml 界面程序相关联,先对控件进行声明并关联各自控件的 id,然后为控件添加各自的监听程序和响应程序来完成控件所实现的功能。 5. Android 应用程序体系结构介绍 一般来说 Android 应用程序由以下四 个部分组成,它们分别是: Activity、 Broadcast Intent Receiver、 Service、 Content Provider。并不一定所有的程序都涉及到这四个部分,有些也许只涉及到了 Activity。 在 Android 项目里有一个 AndroidManifest.xml 的描述文件。在这个文件里,需要申明上
26、述四个部分,以及为每个部分的功能和需求进行描述。 5.1 Acitivity 在 Android 应用程序中, Activity 一般代表手机的一个屏幕,在 Activity 中可以添加一些View 并对这些 View 做一些事件的处理。一个应用程序一般是由多个 Activity 组成的,相互之间可以跳转。 Activity 是由 Android 系统进行维护的,它有自己的生命周期。 5.2 Broadcast Intent Receiver Broadcast Intent Receiver 可以让应用程序对一个外部的事件作出响应,它不能生成 UI,是通过 NotificationManag
27、er 来通知用户事件的发生的,当事件来临时,即使程序没有启动,系统也在需要的时候启动应用程序。 5.3 Service Service 是一个没有用户界面的程序,可以 运行很长时间。例如后台播放的音乐就是由Service 进行控制的 5.4 Content Provider Android 中的数据是私有的,要想实现不同程序之间的数据交换就需要用到 Content Provide 类,它实现了一组标准的方法接口,从而能够让其他应用程序保存或 读取此 Content Provider 的各种数据类型。 三 相关资源 1. Android SDK 提供的开发工具 1.1 Android模拟器( e
28、mulator.exe) 能够在计算机上运行的模拟器,可以在模拟器上运行,调试和测试应用程序。 1.2 集成开发环境( ADT) ADT 使 Eclipse 开发 Android 程序更便捷和迅速,具体作用如下: 可以进行截屏、管理端口转发、设置断点、查看线程和进程信息的一系列操作。 提供一个向导用于快速创建新的 Android 应用程序。 使构建 Android 程序自动化和简单化。 提供一个 Android 代码编辑器,为 Android 的 manifest 和资源文件编写有效地 XML。 1.3 调试监视服务( ddms.bat) 集成在 Dalvik( Android 平台的虚拟机)
29、中,用于查看和管理 Android 程序进程并协助进行调试。 1.4 Android调试桥( adb.exe) 用于向模拟器或手机安装 apk 文件和从命令行访问模拟器或手机。 1.5 Android资源打包工具( aapt.exe) 通过 aapt.exe 创建 apk 文件,该文件包含了 Android 应用程序的二进制文件和资源文件。 1.6 Android接口描述语言( aidl.exe) 生成进程间的借口代码。 1.7 SQlite3 数据库( sqlite3.exe) Android 程序可以创建和使用 SQlite 数据库文件,开发者和使用者也可以方便的访问这些数据文件。 1.8
30、 跟踪显示工具( traceview.bat) 生成跟踪日志数据的图形分析视图,日志 数据由 Android 程序产生。 1.9 创建 SD 卡工具( mksdcard.exe) 帮助创建磁盘镜像,用于在模拟器上模拟储存卡。 1.10 DX工具( dx.bat) 将 class 字节码重写为 Android 字节码储存在 dex 文件中。 1.11 生成 Ant 构建文件( activitycreator.bat) 它是一个脚本,用来生成 Ant 构建文件。 Ant 构建文件用来编译 Android 应用程序。 1.12 Android虚拟设备( AVD) 每个 Android AVD 都模拟
31、了单一的虚拟设备来运行 Android 平台。开发者可以创建并保存多种虚拟设备配置,只需 要在运行时候指定需要哪个来运行即可。 2. Android API 核心开发包 android.util 包含一些底层辅助类,如:特定的容器类, XML 辅助工具类等。 android.os 提供基本的操作服务,如:消息传递和进程间通信 IPC。 android.graphics 提供图形渲染功能。 android.text android.text.method android.text.style android.text.util 提供一套丰富的文本处理工具,支持富文本,输入模式等。 android
32、.database 包含底层 API 处理数据库,操作数据库表和数据。 android.content 提供各种服务访问在手机设备上,程序安装到手机和其他相关的资源,以及内容提供动态数据。 android.view 核心用户界面框架。 android.widget 提供标准的用户界面元素, list、 buttons、 layout managers 等。 android.app 提供高层应用的程序模型,实现使用 Activity。 android.provider 提供方便调用系统提供的 content providers 的接口。 android.telephony 提供 API 交互和手机设备的通话接口。 android.webikit 包含一系列工作在基于 Web 内容的 API。