1、Android移动开发项目式教程(第2版)教学要求教学要求l 讲课+上机=90学时 讲课:50个学时 上机:40个学时l 基本练习+完整项目 每一章知识的实训项目 期末项目l 成绩 平时成绩(40%):平时练习+考勤 考试成绩(60%):闭卷(现场编写完成一个项目)课程导论课程导论课程导论课程导论背景知识:移动应用开发技术背景知识:移动应用开发技术移动通信技术背景移动通信技术背景l 2014 年底,我国手机用户数已经达到了 12.86 亿户,移动电话用户普及率达 94.5 部/百人l 现有移动通信网络分2G、3G、4G三种,4G 是第四代移动电话行动通信标准的简称,该技术集 3G 与 WLAN
2、 于一体,并能够快速传输数据、高质量的音频、视频和图像等。4G 理论上能够以 100Mbps 以上的速度下载,比 4 兆的家用宽带 ADSL 快 25 倍,并能够满足几乎所有用户对于无线服务的要求l 除了支持传统的通信业务之外,4G 的无线高速业务也将会在移动终端上产 生新的应用,如流媒体点播应用,与物联网、云计算和大数据的综合应用等课程导论课程导论移动应用程序的平台(一)移动应用程序的平台(一)l Java ME:是Java 2,Micro Edition的缩写,于1999年6月在JavaOne开发者大会上公布,它和标准版的J2SE、企业版的J2EE一起构成Java技术的三大版本。l Sym
3、bian:Symbian公司成立于1998年6月,是由爱立信、摩托罗拉、诺基亚等公司共同持股组成的合资公司。2008年6月Symbian公司被诺基亚全资收购,成为其旗下公司。Symbian曾经是手机领域中应用范围最广的操作系统。Symbian主要支持的开发语言为C+和Java。l Windows Phone:早期版本是微软公司在2003年6月发布的Windows Mobile,最新版本是Windows 10 Mobile。Windows Phone主要支持的开发语言为C#、C+、C和VB。课程导论课程导论移动应用程序的平台(二)移动应用程序的平台(二)l iPhone:由苹果公司在2007年1
4、月上宣布推出。iPhone使用了众多增强用户体验的领先技术,多触点式触摸屏技术允许用户同时通过多个触点进行操作,基于传感器的隐式输入技术提高了手机的智能水平,全新用户界面设计技术提高了手机使用的易用性,手机应用商店提供了源源不断的实用程序。l iPhone将原来普通的手机电话变成一个潮流时尚且功能强大的随身工具,引起了手机设计领域的一次新变革。l iPhone主要支持的开发语言为Objective-C、C、C+、JavaScript。课程导论课程导论移动应用程序的平台(三)移动应用程序的平台(三)l Android:是Google公司于2007年11月宣布的基于Linux平台的开源手机操作系统
5、,该平台由操作系统、中间件、用户界面和应用软件组成。l Android产品线较为丰富,覆盖到商务、时尚、娱乐、中低端市场等各种人群。l Android的优势在于对第三方软件完全开放,免费向开发人员提供,而且集成了大量的Google应用:Google地图 Gmail邮箱等l Android主要支持的开发语言为Java和C+课程导论课程导论手机应用商店手机应用商店l 手机应用商店为程序开发者提供了更大的平台,程序开发者可将手机应用程序发布到网站上,分享自己的作品,通过用户下载程序来和服务商按一定的比例进行收益分配,此举大大激发了程序开发者的积极性。课程导论课程导论课程导论课程导论典型移动应用案例术
6、典型移动应用案例术移动办公移动办公l 移动办公是指办公人员可以随时随地处理与业务有关的事情。课程导论课程导论 个人应用个人应用l 针对手机自带软件功能的不足,设计开发出新的功能,为日常生活中的“衣、食、住、行”提供便利,担任智能化助手的角色。课程导论课程导论 手机游戏手机游戏l 手机游戏的优势是提供娱乐休闲,在坐车、等人的空虚时间可以打发时间。课程导论课程导论 课程导论课程导论安装安装Sun JDK任务分析任务分析l 本次任务要求完成JDK的下载、安装和配置。要完成本次任务,需要思考如下几个问题:JDK是什么软件,对于本项目有何作用?从何处获得合适的JDK?JDK对电脑硬件和操作系统的安装要求
7、?如何安装JDK?如何配置JDK?课程导论课程导论JDKl JDK(Java Development Kit)就是为Java开发者提供的一组开发工具包,包括了Java运行环境(JRE,Java Runtime Environment),一组Java工具和Java标准API类库l 主流的JDK由Sun公司开发(注:2009年Sun公司已经被著名的数据库公司Oracle收购)。l 一些公司和组织也先后推出自己的JDK,例如IBM JDK、GNU JDK。l JDK有适合于Windows、Linux、Solaris等不同操作系统的版本。课程导论课程导论Java运行环境运行环境l 包含一个Java虚拟
8、机(JVM,Java Virtual Machine)和运行Java程序所需类库 Java虚拟机的主要作用是解释字节码(bytecode),实现Java程序的跨平台。Java标准API类库:API(Application Programming Interface)又称应用程序编程接口,通过提供一些预先定义的函数,达到简化开发人员工作的目的。开发人员无需访问源码或理解内部工作机制的细节,通过调用API就可以实现程序的特定功能。编程语言或二次开发的软硬件环境一般会提供相应的API。l JRE一般是包含在JDK中,也可以独立安装JRE。课程导论课程导论任务实施(一)任务实施(一)l 下载Sun J
9、DK:http:/课程导论课程导论任务实施(二)任务实施(二)l 安装JDK软件:双击上一步所下载的JDK文件【jdk-6u21-windows-i586.exe】课程导论课程导论任务实施(三)任务实施(三)l 配置环境变量:主要是需要配置两个环境变量,一个是PATH,另外一个是CLASSPATHl PATH的作用是表示JDK命令的所在路径(安装JDK的bin目录)。CLASSPATH的作用是表示JDK类库的所在路径(安装JDK的lib目录)。课程导论课程导论课程导论课程导论安装安装Android开发环境开发环境任务分析任务分析l 本次任务是要求完成Android开发软件的下载、安装和配置。要
10、完成本次任务,需要思考如下几个问题:Eclipse和Android SDK是什么软件,与任务一的JDK软件有何关系,对Android项目开发有何作用?从何处获得正确的Android开发软件?Android开发软件对电脑的硬件和操作系统的安装要求?如何安装Android开发软件?如何配置Android开发软件?课程导论课程导论IDEl 集成开发环境(IDE,Integrated Development Environment)旨在提供一个综合的图形用户开发环境,方便程序员进行软件开发。一般集成了程序生成器、代码编辑器、编译器、调试器和发布器等,具有代码编写、管理、分析、编译、调试和发布等功能。著
11、名的IDE开发环境有微软的Visual Studio.NET,Boland的JBuilder等。开发Java程序常用的IDE工具有Eclipse、MyEclipse、NetBeans。Google公司在2013年5月推出了针对Android的IDE开发工具:Android Studio课程导论课程导论Eclipsel Eclipse最初是由IBM公司开发,2001年捐献给开源社区,现由Eclipse基金会管理。l Eclipse所提供的项目致力于建立开放的开发平台,具有可扩展性的框架、工具和运行环境的建立、发布以及软件生命周期的管理。l Eclipse社区提供了适合J2EE、Java、Java
12、 ME、C/C+、JavaScript等语言的IDE开发工具。l Eclipse很重要的一个特色是通过插件来扩展开发平台的功能。Eclipse本身只是一个框架平台,运行在Eclipse平台上的各种插件提供我们开发程序的各种功能。Eclipse 的发行版本带有最基本的插件,软件开发人员可以在此基础上通过开发插件建立自己的IDE。课程导论课程导论建立建立Android的的开发环境开发环境l 目前提供了两种配置Android开发环境的方法。一种做法:分别下载Eclipse和Android的SDK,然后在Eclipse的菜单中选择Help-Install New Software,输入https:/d
13、l- SDK的所在路径。第二种方法:下载Eclipse的Android集成开发包,包括:Eclipse开发工具,并且已经配置好Android ADT,以及指定好Android SDK的所在路径。由此可见该方法更加简单快捷。但目前在Android的官网上只提供Android Studio的集成开发包,不再提供Eclipse的Android开发集成包。可以在百度上输入下面的搜索字:”Android ADT Bundle下载下载”课程导论课程导论Eclipse的快捷键的快捷键l Ctrl+Shift+O:自动导入代码中用到类的所属包,此组合键在此组合键在编程中非常有用编程中非常有用。l Alt+/:
14、代码助手完成一些代码的提示插入,例如类名补全,方法提示等。l Ctrl+Shift+F:格式化当前代码,使代码整齐。l Ctrl+/:注释当前行,再按则取消注释。l Ctrl+D:删除当前行。l Ctrl+T 快速显示当前类的继承结构。课程导论课程导论任务实施(一)任务实施(一)l Android SDK的下载:登录Android的下载主页:http:/ 首先将下载压缩文件进行解压,会看到如下结构:课程导论课程导论l 进入eclipse目录,点击eclipse.exe文件打开IDE开发环境,即可进行Android开发。l 如果需要建立多种Android平台版本,可以点击Eclipse菜单的Wi
15、ndow-Android SDK Manager来下载其他版本的Android。l 如果需要建立不同尺寸或者版本的模拟器,可以点击Eclipse菜单的Window-Android Virtual Device Manager进行配置Android SDK Manager课程导论课程导论Android Virtual Device Manager课程导论课程导论Android Studiol 感兴趣的同学也可以尝试使用来进行Android开发,下载的网址是:http:/ Android Studio采用的是intellij IDE的开发工具,而IntelliJ在业界被公认为最好的java开发工具
16、之一,它的运行速度要较Eclipse快。课程导论课程导论课程导论课程导论测试开发环境测试开发环境任务分析任务分析l 要看前面任务的软件安装配置是否能够正常工作,一个比较简单直接的方法是尝试通过IDE开发环境开发一个Android程序:开发一个Android程序的主要步骤?如何运行一个Android程序?如何调试一个Android程序?课程导论课程导论课程导论课程导论Android基本基本概念概念Android基本概念基本概念l Android是一个用于移动设备的软件集,包括操作系统,中间件和关键的应用程序。l Android SDK提供了必须的工具和APIs用于在Android平台上使用Jav
17、a编程语言开发应用程序l Android具有如下的特征 允许重用和替换组件的应用程序框架 具有专门为移动设备优化的Dalvik虚拟机 集成基于开源引擎WebKit的浏览器 通过自定义的2D图形库优化显示图形,提供基于OpenGL ES 1.0和2.0规范的3D图形支持 用于结构数据存储的SQLite 为常见的声音,视频和图形格式,例如:MPEG4,MP3,PNG GSM、CDMA、TD SCDMA电话(依赖于硬件)蓝牙、EDGE、3G和WiFi(依赖于硬件)照相机、GPS、指南针和加速度传感器(依赖于硬件)丰富的开发环境:设备模拟器、调试工具、内存和性能分析课程导论课程导论Android的主要
18、版本发展的主要版本发展课程导论课程导论 Android的体系结构的体系结构课程导论课程导论 Android体系结构各层功能说明(一)体系结构各层功能说明(一)l 应用程序(APPLICATIONS):是Android推出的一组使用Java编写的核心应用程序,如:Email客户端,短信程序,日历,地图,通信录。l 应用程序框架(Application Framework):是是Android为开发者提供的一为开发者提供的一个开放平台,在应用程序的下一层个开放平台,在应用程序的下一层。开放者可以通过它们自由地充分利用设备硬件,访问位置信息,运行后台服务,设置告警,在状态栏上增加通知等。开发者可以和
19、核心应用程序那样调用同样的框架APIs。应用程序框架提供的是一组服务和系统,这些会在程序开发过程中直应用程序框架提供的是一组服务和系统,这些会在程序开发过程中直接使用到接使用到,包括:丰富且具有可扩展性的视图:可用于构建应用程序的界面 内容提供者:允许应用程序访问其它应用程序的数据(例如:通信录),或者共享它们自己的数据 资源管理器:提供对非代码资源,如本地化字符串,图像的管理 通知管理器:允许应用程序在状态栏上显示定制的警报。活动管理器:管理应用程序的生命周期,提供导航回退功能课程导论课程导论 Android体系结构各层功能说明(二)体系结构各层功能说明(二)l Libraries:Andr
20、oid包括的一组C/C+库,它们用于Android系统不同的组件。这些功能通过Android应用程序框架对开发者开放,包括:C语言系统库、多媒体库、外观管理器、LibWebCore、SGL、3D库、FreeType、SQLite等。l Android Runtime:Android包括的一组核心库,提供大部分Java编程语言核心库的功能。每一个Android应用程序是在Dalvik虚拟机的实例下以进程形式运行。Dalvik虚拟机执行的文件是Dalvik可执行格式(Dalvik Executable,称为.dex),它被优化成最小内存占用。与Java虚拟机时基于堆栈不同,Dalvik虚拟机是基于
21、寄存器的,它通过转换工具dx将Java字节码转换成dex格式。l Linux内核:内核:Android依赖于Linux某个版本的核心系统服务,例如:安全、内存管理、进程管理、网络堆栈、驱动程序模型。内核也作为硬件和软件堆栈其余部分之间的抽象层。课程导论课程导论对对Android应用程序的理解应用程序的理解l Android应用程序主要是由Java语言编写,但对于特殊性能要求的功能,也可以先使用C或者C+编写代码,建立动态库,再通过NDK将其与Java应用一起打包成apk。l Android SDK工具将代码、数据和资源文件编译为一个Android包,它是一个后缀为.apk的归档文件。.apk归
22、档文件将被用在设备上安装应用程序。l Android应用程序是可以访问系统服务的,例如:应用程序可以请求访问用户的通讯录,短信,SD存储卡,摄像头,蓝牙,以及更多的设备,但要求用户在安装应用程序时必须被授予相应的权限。课程导论课程导论Android的组件的组件l 应用程序组件是一个Android应用程序的重要基石,在编程时根据需要编写相应的组件。有四种不同类型的应用程序组件。每个类型服务于不同的目的:Activity:活动表示一个用户界面,可以和用户进行交互。例如,Email应用程序可以有一个显示新邮件的activity,一个撰写电子邮件的activity和一个阅读邮件的activity。虽然
23、这些activities一起为Email应用程序提供用户体验,但它们每个都是相互独立 Service:服务是一个运行在后台的组件(并不提供用户界面),一般用于执行需要长时间运行的操作或执行远程进程的工作。例如:某个service可能会在后台播放音乐。Content provider:内容提供者管理应用程序共享的数据集。例如:读取系统自带的联系人信息。Broadcast receiver:广播接收者是一个负责全系统广播通知的组件。例如:广播电池没有电。课程导论课程导论认识手机模拟器认识手机模拟器l 手机模拟器(Mobile Emulator)的作用是在电脑上模拟手机环境,从而可以在电脑上进行手机
24、程序开发、调试和发布。l 针对不同平台版本、不同尺寸的手机有不同的手机模拟器。课程导论课程导论Activity应用程序的生命周期应用程序的生命周期l Activity是Android程序图形用户界面的基本组成部件。Android程序由一个或者多个Activity类组成,而程序都是从Activity类开始执行,系统规定了Activity的生命周期有创建,开始,唤醒,暂停和销毁五种状态。l Android 定义了一系列与生命周期相关的方法,在我们自己的 Activity中,只是根据需要重写需要的方法来实现相应的数据初始化,和回收等操作。开发一个Android程序,首选需要创建一个继承于Activi
25、ty的类。以下为编写Activity程序,并实现其生命周期相应操作的示例:课程导论课程导论Activity应用程序的应用程序的生命周期代码示例生命周期代码示例课程导论课程导论public class MyActivity extends Activity protected void onCreate(Bundle savedInstanceState)/一个一个 Activity 的实例启动时调用的第一个方法。一般情况下,在这里编写的实例启动时调用的第一个方法。一般情况下,在这里编写初始化数据、从初始化数据、从Xml布局文件中加载设计好的用户界面等方面的操作布局文件中加载设计好的用户界面等方
26、面的操作protected void onStart()/在在 onCreate()方法执行之后被调用,或者在方法执行之后被调用,或者在 Activity 从从 Stop 状态转换为状态转换为Active状态时被调用状态时被调用protected void onResume()/在在 Activity 从从 Pause 状态转换到状态转换到 Active 状态时被调用,或者在状态时被调用,或者在onStart()方法执行之后被调用。方法执行之后被调用。onResume()方法也较为适合放入初始化数据的操作方法也较为适合放入初始化数据的操作 protected void onPause()/从从
27、 Active 状态转换到状态转换到 Pause 状态时被调用状态时被调用protected void onStop()/从从 Active 状态转换到状态转换到 Stop 状态时被调用,一般在这里保存状态时被调用,一般在这里保存 Activity 的的状态信息状态信息 protected void onRestart()/当处于当处于stop状态时,当前状态时,当前Activity被重新向用户显示时调用该方法被重新向用户显示时调用该方法protected void onDestroy()/在在 Activity结束时调用,在这里一般做些释放资源,清理内存等工作结束时调用,在这里一般做些释放资
28、源,清理内存等工作 Activity应用程序的生命周期应用程序的生命周期课程导论课程导论开发第一个开发第一个Android程序程序l 第一步是选择创建一个Android Application Project项目,在创建向导中指定应用程序名称、包名称、运行的Android版本等信息。l 第二步是根据项目的需要在Activity类中编写代码,或者新创建其它类,在Activity类中进行引用。课程导论课程导论Android项目项目主要主要目录的作用目录的作用课程导论课程导论自动生成的代码自动生成的代码public class MainActivity extends Activity protec
29、ted void onCreate(Bundle savedInstanceState)super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);public boolean onCreateOptionsMenu(Menu menu)/Inflate the menu;this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main,menu);return true;课程导论课程导论代码分析
30、代码分析l MainActivity类继承了Activity抽象类。l s e t C o n t e n t V i e w 方 法 是 设 置 用 户 界 面,其 中 参 数R.layout.activity_main是一个表示界面布局信息的XML文件。在Android开发中,界面设计很多是依靠布局文件来完成。这在后面的项目中有详细的介绍。l onCreateOptionsMenu方法是创建程序的菜单,其中R.menu.main也是一个描述菜单信息的XML文件。onCreateOptionsMenu方法在程序中并不是必须的,可以删除掉。l 在Android项目中会自动生成一些由XML编写的
31、配置文件,他们在Android开发中起到很重要的作用。课程导论课程导论AndroidManifest.xml文件的作用文件的作用l AndroidManifest.xml文件可以理解为关于Android应用程序的清单文件,用于向Android系统提供关于应用程序的重要信息。例如:一个Android应用程序中一般包含多个Activity类,要具体区分Android程序首先执行的是哪个Activity类,程序有哪些Activity类可由系统识别,系统有哪些权限可以交由应用程序使用,应用程序的图标、程序名称管理、应用程序需要用的第三方包等。l 在Android系统开始启动一个应用程序组件时,系统必须
32、读取AndroidManifest.xml文件以便知道组件是否存在。l 任何一个Android项目都需要使用该文件,并要求放在项目的根目录下。课程导论课程导论XML基础知识简述基础知识简述l 标记语言采用一套标记标签来表示文本信息,标签是由尖括号包围的关键词,如,其作用是描述文本信息。l XML(eXtensible Markup Language)称为可扩展标记语言。XML文档的后缀是.xml,既可以使用专门的编辑工具,也可以使用文本编辑器对其进行编写。l XML的标记没有被预定义,用户可以自行定义标记来描述数据。与HTML(HyperText Markup Language)的差异在于,X
33、ML主要用来存储规范的数据信息。l 每个XML元素都以一个起始标签开始,以一个结束标签收尾。起始标记以符号结束。结束标签以 符号结束。l XML元素可以带有多个属性,属性值需要添加引号。课程导论课程导论AndroidManifest.xml文件的描述文件的描述l 声明组件:AndroidManifest.xml文件的主要任务是通知Android系统应用程序包含的组件。可以这样定义一个Activity。课程导论课程导论 .l 在元素中,android:icon属性指明应用程序图标用到的资源,在元素中,android:name属性指明Activity子类的完整名称,android:label属性作
34、为Activity在手机界面上用户可见的标签。Android应用程序的运行和调试方法应用程序的运行和调试方法l 选中Android项目,点击右键,选择Run AS-Android Applicaion。也可以使用Eclipse工具栏上的图标 来运行项目l 选中Android项目,点击右键,选择Debug AS-Android Applicaion。该运行方法相当于对Android项目进行断点调试,以便于找出程序中的问题。l 除了可以利用Java的System.out.println()方法输出信息之外,还可以利用Android提供的Log.v(String tag,String msg)方法以
35、日志方式输出相应的信息,其中参数tag表示标签,参数msg表示内容,取值都可以在编程中指定。这些信息可以通过Eclipse的LogCat视图进行查看l 如果发现项目的奇怪的报错,可以执行Eclipse菜单的Project-Clean菜单项,来重新编译项目课程导论课程导论实训项目实训项目1 建立建立 Android开发开发环境环境(P38)1实训目的与要求 学会下载、安装和配置Android开发环境所需的软件,建立Android程序的开发环境。2实训内容 实训内容为任务一、二、三中项目实施内容,按照规划任务内容,实施实训。课程导论课程导论实训项目实训项目2 开发开发运行一个简单的运行一个简单的Android程序程序1实训目的与要求 学会利用Eclipse自动生成一个Android程序,并使用不同的模拟器运行,以便对Android程序的开发步骤有初步的认识。2实训内容 实训内容为任务四中项目实施内容,按照规划任务内容,实施实训。3思考 运行不同的手机模拟器对Android的程序开发有什么作用?课程导论课程导论