380 likes | 532 Views
3G 移动互联网应用技术开发. 第一章 : Android 快速入门. 本章概述. 时势造英雄 , PC 时代微软凭借 Windows 操作系统造就了微软帝国,互联网 时代 Google 凭借搜索引擎造就了 Google 帝国。那么,移动互联网时代的来 临,谁将是真正的英雄呢?这个我们很难定论,但是一个不确定的答案就 是,掌握移动互联网技术的人将是这个时代的弄潮儿,将成为这一时代的 真正的英雄。. Android 操作系统能被广泛地应用主要是因为其“博彩众长,为它所用”。 Android 采用了开源的 Linux 操作系统,底层使用了访问硬件速度最快的 C
E N D
3G移动互联网应用技术开发 第一章:Android快速入门
本章概述 时势造英雄,PC时代微软凭借Windows操作系统造就了微软帝国,互联网 时代Google凭借搜索引擎造就了Google帝国。那么,移动互联网时代的来 临,谁将是真正的英雄呢?这个我们很难定论,但是一个不确定的答案就 是,掌握移动互联网技术的人将是这个时代的弄潮儿,将成为这一时代的 真正的英雄。 Android操作系统能被广泛地应用主要是因为其“博彩众长,为它所用”。 Android采用了开源的Linux操作系统,底层使用了访问硬件速度最快的C 语言,应用层采用了简单而强大的Java语言,这使得Android无处不闪烁 着耀眼的光芒。 我们知道,之前的手机操作系统市场被少数的实力雄厚的公司垄断, Android的推出使得这个市场从新“洗牌”。王者归来,个人英雄主义又 将重现。你可以开一家公司提供定制的Android系统,也可以开一家公司 开发Android应用软件、游戏在Android Market上出售。
本章目标 • 了解Android的前世今生 • 掌握Android的平台架构及特性 • 了解Android Market • 掌握Android应用程序组件 • 了解Android与Java ME的区别于联系 • 了解Android操作系统的优势 • 掌握Android SDK环境的搭建 • 掌握Android中的常用操作命令
1-1:Android的今生前世 • Android是“机器人”的意思,是Google公司于2007年11月5日发布的一个基于Linux平台的开源手机操作系统。该系统由底层的Linux操作系统、中间件和核心应用程序组成。Android应用程序由强大的Java语言来编写,也支持其他一些语言如C、Perl等。 • Android一开始不是Google自己研发的产品,而是收购了一家刚刚创业22个月公司的产品,该公司的创始人是Andy Rubin,也就是现在Google Android产品负责人罗宾。Google 收购了Android没有向媒体透露任何 消息,可以说是悄悄进行的。罗宾拒 绝对Android公司或出售给Google发表 评论。Google的一名发言人也拒绝就 这一交易发表任何评论,只是指出“ 我们收购Android公司的原因是,他有天才的工程师和了不起的技术, 我们对他们的加盟感到由衷的高兴”。
1-2:Android的平台架构及特性 • Android系统从底向上一共分了4层,每一层都把底层实现封装,并暴露调用接口给上一层。
1-2:Android的平台架构及特性 • Android系统结构图中文版
1-2-1:Linux内核层解析 • Linux内核(Linux Kernel) Android运行在linux kernel 2.6之上,但是把linux内受GNU协议约束的部分做了取代,这样在Android的程序可以用于商业目的。 • 主要组成部分: • 显示驱动,用于控制整体系统的屏幕显示效果。 • 摄像头驱动,用于控制摄像头硬件与系统之间的链接。 • 内存驱动,用于控制系统对内存硬件的操作。 • 绑定进程间通信,用于控制程序间的相互调用传递信息。 • 键盘驱动,用于控件键盘的操作。 • WiFi,用于控制无线网络的控制及操作。 • 音频驱动,用于操作喇叭和麦克的控制。 • 电源管理,用于控制电池电量及电量消耗。 Linux 内核是硬件和软件层之间的抽象层
1-2-2:中间件部分解析 • 中间件包括两部分:核心库和运行时(Libraries & Android Runtime) • 核心库包括,SurfaceManager显示系统管理库,负责把2D或3D内容显示到屏幕;Media Framework 媒体库,负责支持图像,支持多种视频和音频的录制和回放;SQLite数据库,一个功能强大的轻量级嵌入式关系数据库;WebKit浏览器引擎等。 • Dalvik虚拟机:区别于Java虚拟机的是,每一个Android 应用程序都在它自己的进程中运行,都有一个属于自己的Dalvik虚拟机,这一点可以让系统在运行时可以达到优化,程序间的影响大大降低。Dalvik虚拟机并非运行Java字节码,而是运行自己的字节码。
1-2-3:应用程序框架层解析 • 应用程序框架(Application Framework) 丰富而又可扩展性的视图(Views),可以用来构建应用程序, 它包括列表(lists),网格(grids), 文本框(text boxes),按钮( buttons), 可嵌入的web 浏览器。 • 内容提供者(Content Providers)使得应用程序可以访问另一个应用程序的数据(如联系人数据库), 或者共享它们自己的数据。 • 资源管理器(Resource Manager)提供非代码资源的访问,如本地字符串,图形,和布局文件( layoutfiles)。 • 通知管理器(Notification Manager) 使得应用程序可以在状态栏中显示自定义的提示信息。 • 活动管理器( Activity Manager) 用来管理应用程序生命周期并提供常用的导航回退功能。
1-2-4:应用程序层解析 • 应用程序 (Applications) Android 系统会内置一些应用程序包包括email 客户端,SMS 短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用JAVA 语言编写的。
1-3:Android Market 在2008年8月28日推出,Android Market,通常理解为应用商 店。Android Market是一个由谷歌公司为android系统用户创建的服务, 允许手机用户从Android Market浏览和下载一些应用程。用户可以购买或 免费试用。我们也可以将自己开发的程序发布到市场中,但你需要申请 一个Market账户。这也成为了Andrid开发人员除了上班赚钱的另外一条致 富途径了。
1-4:Android 应用程序组件概述 如果你想从事Android应用程序开发,那么了解Android应用程序的思 想是非常必要的。Android应用程序没有统一的入口(例如main()方法), 各个应用之间是相互独立的,并且运行在自己的进程当中。根据完成的功 能不同,Android划分了四类核心的组件类: Activity、Service、Broadcast Receiver 和 ContentProvider 相同组件和不同组件之间的导航通过Intent来完成。Android还定义了 View类来显示可视化界面,例如菜单、对话框、下拉列表等。下面我 们将逐一介绍各个组件的意义和用法。
1-4-1:Activity 组件介绍 Activity是Android组件中最基本也是最常用的一种组件,在一个Activity 应用中,一个Activity通常是一个单独的屏幕(界面)。每一个Activity都被 实现为一个独立的类,并且集成于Activity这个基类。这个Activity类将会显 示有几个Views控件组成的用户接口,并对事件做出响应。大部分的应用都 会包含多个屏幕。例如,一个短消息应用程序将会有一个屏幕用于显示联系 人的列表,第二个屏幕用于写短消息,同时还会有用于浏览旧短消息及进行 系统设置的屏幕。每一个这样的屏幕就是一个Activity。 通过调用startActivity()方法可以从一个屏幕导航到另一个屏幕,打开 Activity的条件被分装在Intent中。 当一个新的屏幕打开后,前一个屏幕将会暂停,并保存在历史的堆栈 中。用户可以返回到历史堆栈中的前一个屏幕。当屏幕不在使用时,还可以 从历史堆栈中删除。默认情况下,Android将会保留从主屏幕到每一个应用 的运行屏幕。
1-4-2:Service 组件介绍 一个Service是一种长生命周期的、没有用户界面的程序。比较好的一 个例子就是正在从播放列表中播放歌曲的媒体播放器。在一个媒体播放器的 应用中,应该会有多个Activity,让使用者可以选择歌曲并播放歌曲。然而, 音乐重放这个功能并没有对应的Activity,因为使用者会认为在导航到其他 屏幕时音乐应该还在播放。在这个例子中,媒体播放器这个Activity会使用 Context.startService()来启动一个Service,从而可以在后台保持音乐播放。 同时,系统也将保持这个Service一直执行,直到这个Service运行结束。 另外,我们还可以通过使用Context.bindService()方法连接到一个 Service上(如果这个Service还没有运行则将它启动)。当连接到一个 Service之后,我们还可以通过Service提供的借口与它进行通信。拿媒体播 放器这个例子来说,我们还可以进行暂停、重播等操作。
1-4-3:Broadcast Receiver & Content Provider & View 组件 • Broadcast Receiver 是为了实现系统广播而提供的一种组件。例如,我们可以发出一种广播来检测手机电量的变化,这个时候就可以定义一个Broadcast Receiver来接受广播,当手机电量较低时提醒用户。 • 我们知道Android的应用程序之间相互独立,各个组件的运行在不同的线程当中,这就意味着数据是不能共享的。如何使得不同的组件数据的共享呢?Android通过使用Content Provider来实现不同组件之间的数据共享。 • View是Android中图形用户界面的基类,提供了可视化界面的展示。Android的图形界面展示可以分为三层:底层是Activity;Activity上面是Window;Window上面是Views。View又可以分为View和ViewGroup。View是指基本的控件,例如按钮、单选框、多选框、菜单等;ViewGroup是指布局控件,即用来控制界面中的空间如何布局摆放的。
1-4-4:Intent 组件介绍 Intent是不同组件之间相互导航的纽带,封装了不同组件之间导航查 找的条件。在Intent的描述结构中,有两个最重要的部分:动作和动作对 应的数据。典型的动作类型有MAIN(Activity的门户)、VIEW、PICK、 EDIT等。而动作对应的数据则以URI的形式进行表示。例如,要查看一个 人的联系方式,你需要创建一个动作类为VIEW的Intent,以及一个表示这 个人的URI。 Intent的另一个典型的应用就是在不同的Activity之间充当“信使”, 传递数据。
1-5:Android 与 JavaME之间的区别与联系 • 本门课程是讲解Android应用程序开发的课程,有一定的Java ME的学习者自然会想到它与Java ME之间的区别和联系。 • 两者区别: • 概括地讲,Android与Java ME的区别在于,Android是一个完整的移动设别操作系统平台,有Linux操作系统、中间件、C类库和核心应用程序组成,而Java ME只是Java的一个微型版本,针对移动设备来开发应用程序的开发包,它必须有底层操作系统的支持,如Symbian、WinCE等。 • 两者的联系: • Android和Java ME联系并不大,如果非要说他们的联系的话,应该在应用程序的编程语言上。Android应用程序和Java ME都是Java编程语言。有过Java编程经验的人可以轻松学习Java ME和Android应用程序的开发。
1-6:Android 的优势 我们可以把Android、Symbian和 Win CE放在一起来比较各自的优缺 点,但是,我们很难讲Android与Java ME谁好谁坏,因为,他们的出发点 和应用场合不一样。 Android的优势在于它的开发性、开源等优势,是一个优秀的移动设 备操作系统。Java ME是一个移动设备开发的软件包,跨平台性是它最主 要的特点。有人预言Android的出现将导致Java ME的死亡,我们并不认同 这种看法,Symbian、Win CE等其他手机操作系统存在一天,Java ME的应 用就不会减少,甚至我们可以在Android中开发Java ME应用,二者并不 冲突。
1-7:Android SDK 环境搭建 “工欲善其事,必先利其器”,要想更高效、快速地开发Android应用 程序,好的开发环境是必不可少的。在Android SDK中提供了一系列工具, 它们有模拟硬件设备的Emulator(模拟器)、Android Asset Packing Tool (AAPT)Android资源打包工具、Dalvik Debug Monitor Service(DDMS) Dalvik调试监视服务、Android Debug Bridge(adb)Android调试桥和将.class 自己吗文件转换为.dex文件的DX工具。
1-7-1:Android SDK 管理器下载 • 步骤1:下载 Android SDK 管理器 Android SDK的官方下载地址是:http://developer.android.com/sdk/。 在Android1.5之前Google提供了Android SDK开发包及完整下载,在 Android SDK1.6之后Google只提供了安装工具的在线安装。Android SDK的下载链接地址如下所示。
1-7-2:Android SDK 安装及结构介绍 • 步骤2:安装 Android SDK 管理器及文件夹结构简介 我们这里以windows操作系统为例来讲述如何安装配置Android开发环境。 如上图所示,单击“android-sdk_r10-windows.zip”链接进行SDK下载,下载该文件后解压该文件到操作系统的任意目录下。
1-7-3:Android SDK 的在线安装 I • 步骤3:通过Android SDK 管理器在线下载安装各个系统版本 下载完成后,打开目录找到SDK Manager.exe可执行文件,双击执行该 文件,运行界面如下图所示: • 这是一个Andrid SDK各个版本的管理器,我们需要在线下载安装所需要 • 的Andrid SDK版本。点击【Update All…】可以选择需要下载或安装的 • Android不同的版本或插件。
1-7-3:Android SDK 的在线安装 II • 当安装Android SDK或其他第三方的插件安装完毕后,我们可以发现我们的paltforms文件夹中多了Android SDK的信息,如下图所示: • 这些都是Android 各个版本的SDK,说明在线安装已经完成,其实在正 • 常情况下我们只需要下载我们需要的SDK版本即可,无需将所有版本的 • SDK全部下载下来。同时Android SDK and AVD Manager中的 • 【Installed packages】中将显示已安装成功的SDK版本。
1-7-4:Android 系统环境变量配置 I • 步骤4:配置Android 系统环境变量 确定安装完毕的android-sdk-windows文件夹中的tools文件夹和 platform-tools文件夹位置。将两个文件夹的绝对路径配置到系统环 境变量path中,以便我们能够在dos中直接使用android支持的各种命 令。
1-8-1:Android中的常用操作命令 I • 命令:android list target • 功能:查看当前Android SDK and AVD Manager中已安装的Android SDK版本。 • 当前系统中在线下载安装了两个版本的SDK
1-8-2:Android中的常用操作命令 II • 命令:android create avd -n <avd名称> -t <SDK的id号> • 功能:创建一个Android虚拟设备(Android Virtual Device,AVD) • 创建完毕后会在C:\Users\用户名\.android\avd 目录下生成两个文件, • 分别是:android2.3.ini 和 android2.3文件夹。 • Android2.3文件夹中存放了:config.ini (dos中的默认配置信息)和 • userdata.img(手机中的内部存储设备镜像文件)
1-8-3:Android中的常用操作命令 III • 命令:android list avds • 功能:查看已创建的Android虚拟设备(Android Virtual Device,AVD) • 当前系统中只有我们刚刚创建的基于Android2.3(API 10)的AVD虚拟 • 机,名称为android2.3 。
1-8-4:Android中的常用操作命令 IV • 命令:android delete avd –n <avd名称> • 功能:删除一个Android虚拟机(Android Virtual Device,AVD) • 执行指令删除avd虚拟设备后,在C:\Users\用户名\.android\avd目录下 • 对应的android3.0.ini 和 android3.0.avd 文件夹也一并删除。
1-8-5:Android中的常用操作命令 V • 命令:emulator -avd <avd名称> [-scale 0.0~1.0] • 功能:启动创建好的AVD虚拟设备。-scale 代表显示的比率(常用0.6)
1-8-6:Android中的常用操作命令 VI • 命令:mksdcard <?M> <镜像文件存放路径> • 功能:创建一个指定大小的SD卡 • 在E盘根目录下,创建一个名称为mystore.img的镜像文件,大小为 • 10Mb,用于充当手机的SD卡。
1-8-7:Android中的常用操作命令 VII • 命令:emulator –avd <avd名称> -sdcard <SD卡路径> -scale x.x • 功能:启动一个带SD卡(外部存储设备)的AVD虚拟设备。
1-8-8:Android中的常用操作命令 VIII • 命令:adb push <local资源> <remote资源> • 功能:将本地文件拷贝至手机的SD卡中
1-8-9:Android中的常用操作命令 IX • 命令:adb shell • 功能:进入到当前AVD虚拟设备中,并查看SD卡中的内容。 • 使用 cd /xxx/ 命令进入到指定位置的文件夹。 • 使用 ls命令查看当前文件夹下面的文件。
1-8-10:Android中的常用操作命令 • 命令:adb pull <remote资源> <local资源> • 功能:将手机的SD卡中的文件拷贝到本地文件中。
1-8-11:Android中的常用操作命令 • 命令:adb install <路径+*.apk> • 功能:向Android系统中安装程序(*.apk为Android默认的安装文件)。 • 将C:\angrybirds.apk (愤怒的小鸟)程序安装到Android系统中。
1-8-12:Android中的常用操作命令 命令:adb uninstall <*.apk> 功能:卸载Android系统中的制定应用程序(一般通过界面操作)。 命令:adb shell -rm <路径+文件名称> 功能:删除Android系统中的制定位置的文件。 命令:adblogcat <待检测的类名称> : <级别> * : S 功能:查看运行中的某个文件日志信息。 级别:V-verbose D-debug I-info W-warning F-fatal
本章总结 • Android 操作系统的整体体系结构总体分为四层:Linux内核层、中间件层、应用程序框架层和应用程序层。 • Android 系统拥有四大核心组件分别是:Activity组件、Service服务、Broadcast Receiver 和 ContentProvider组成。同时掌握四大核心组件的功能及作用。 • Android每个组件之间的通信依靠Intent对象完成,它充当了各个组件之间的“通信信使”。与此同时各个组件也需要依靠View组件一各种控件和图形的方式显示在屏幕上,便于用户进行操作完成各种功能和动作。而View组件又分为:View (按钮、文本框、下拉菜单等视图控件)和 ViewGroup(布局模式)两大部分。 • 创建、查看、启动、删除 AVD(虚拟设备)的命令 • 使用命令完成应用程序(*.apk)的安装 • 创建并加载sdcard卡的命令
第一章 课后作业 • 请您简述Android系统的体系结构及各部分的功能? • 请您阐述Intent对象在Android系统中的作用? • 如何理解View及ViewGroup之间的区别和联系? • 请您阐述Android系统中的四大核心组件和服务都有那些?及其功能? • 请您阐述Android系统与其他智能手机操作系统之间的差异。 • 请您阐述Android与JavaME之间的联系及区别? 实践1:按照要求上网下载Android SDK 管理器,搭建好Android运行环境。 实践2:使用命令查看Android SDK中已经安装的系统版本。 实践3:使用命令创建一个AVD虚拟设备。 实践4:使用命令查看已经创建的AVD清单列表。 实践5:创建一个100M 大小的sdcard,并代卡启动AVD。 实践6:使用命令向Android系统安装一个sdcard文件管理器。 实验7:使用命令向sdcard传输一个图片文件,并查看。 实践8:使用命令向Android系统安装一个QQ for Android应用程序。 实验9:删除已经安装的Android应用程序。