第一讲 Android概述课件_第1页
第一讲 Android概述课件_第2页
第一讲 Android概述课件_第3页
第一讲 Android概述课件_第4页
第一讲 Android概述课件_第5页
已阅读5页,还剩74页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ncs

第一讲Android概述

Android系统刚开始由一家位于美国加利福尼

亚州名字也叫Android的小型创业公司

(AndroidInc)开发。

OAD^OIDGoogle在2005年7月份收购了AndroidInc公司。

AndroidInc公司的联合创始人Andy

Rubin,RichMiner,NickSears和ChrisWhite也

一起到Google工柞。AndyRubin加入Google

后开始作为Android项目的负责人,开始开发

这个基于Linux内核,功能灵活升级方便的移

动操作系统。也正是从那个时候业界才开始传

说Google打算进入移动手机市场的消息。

2

开放手机联盟

,。——AFI:一ccc、

♦Google在2007年工1月5日正式宣布开放手机

联盟(OpenHandsetAlliance)成立,并且

随后在开放手机联盟的旗下公布了全新的

Android操作系统。开放手机联盟是由全世界

顶尖的硬件,软件和电信公司组成的联盟,致力

于为移动设备提供先进的开放式标准,开发可以

显著降低移动设备以及移动服务开发和分发成本

的技术。开放手机联盟目前有65家业界相关公

司组成。中国三大电信运营商中国移动,中国电

信和中国联通都是开放手机联盟成员,中国移动

还是开放手机联盟的创始成员。.

3

♦:♦开放手机联盟主要成员

■移动运营商:

•ChinaTelecom-中国电信(世界最大的中文综合信息服

务提供商。骨干网带宽达到14。中国唯一的通信全业

务提供商,拥有卫星业务(重组时兼并卫通民用业

务)。)

•ChinaMobile(中国移动)-中国(全球最大的移动运营

商,截至09年9月底有5.03亿用户)

•ChinaUnicom(中国联通)

•NTTDoCoMo(日本电信电话公司)

•SprintNextel(美国移动运营商)

•TelecomItalia(意大利电信)

•Telefonica-(西班牙移动运营商)

•T-Mobile-(德国移动运营商).

■半导体公司:

•ST(意法半导体)-欧洲(欧洲最大半导体公司)

•Intel(英特尔)-美国

•NVIDIA(英伟达)-美国

•TexasInstruments(德州仪器)-美国

•Qualcomm(高通)-美国

•HP(惠普)-美国.

手机和其他终端制造商

•Motorola(摩托罗拉)-美国

•SonyEricsson(索尼爱立信)-英国

•HTC(宏达国际电子)-台湾

•SamsungElectronics(三星电子)-韩国

•LGElectronics(LG电子)-韩国

•ARCHOS(爱可视)-法国

•TOSHIBA(东芝)-日本.

6

开放手机联盟(OpenHandsetAlliance)

AKMGo^leQ

tMMMKtVC.AaMfienceQUAUDAMA

ARM必

1ry

NUANCt■pv

noser

R丽S钞*Effli顿nvxxAQtat

7

开源和相关协议

Apache基金会的标志

Android操作系统于2008年10月21日在

ApacheSoftwareLicense(ASL)协议下

开放源代码,Google在Apache协议下

公布了Android系统的全加源代码。

Google选择ApacheSoftwareLicense

2.0许可证继保证了系统的开放源代码,

又鼓励开源软件的商业性使用。Google

将Android置于ASL许可证之下,可以确

保许多商业性公司会接受这个平台,并

且在它上面使用自己的专有技术。

8

Android的发展与现状

♦:♦根据权威调查公司NPDGroup的数据,2010

年第二季度开始运行Android系统的手机是美

国销售最多的智能手机,市场占有率达到33%),

超过R1M公司黑莓系统的28%)和苹果iOS系统

的22%)。Android系统手机全球市场占有率也

仅落后于诺基亚的Symbian系统和RIM的黑莓

系统手机,是目前全球第三大智能手机平台。

♦在2011年第一季度,Android手机的出货量

首次超过Symbian手机,坐上世界第一移动终

端平台。.

9

Bost.

♦:♦随着Android系统手机市场占有率的不断攀升,

Android系统吸弓I了一大批程序开发者不断开

发程序扩展Android手机的功能。目前

Android电子市场拥有超过70000款应用程序,

开发者提交的应用程序总数超过十万款。

Android电子市场是目前第二大移动程序市场

10

Best.系统的升级

♦系统升级是Android的一大特色。Android面

世后已经发行了5个主要版本,经历了4次大的

系统升级。每次新系统的发布Android功能和

用户体验都有很大提升。

♦:♦而且从Android].5版本开始每个系统版本都

有一个有趣的代号。.

11

Andros15Android1.6Android10&2dAndroKl22

CupcakeDonut(S£B9)Ec3〃巧克力信JfJFtoyo(&MH)

AndfCMd10AndroidISAndrokKO

GnfertKMd(Ml)Honeycomb(■■)k-Gwm()

12

Android电子市场

♦:♦AndroidMarket

AndroidMarket是一个由谷歌公司为Android系统用户

创建的服务,允许安装了Android系统的手机和平板电

脑用户从AndroidMarket浏览和下载一些应用程序。

用户可以购买或免费试用这些应用程序。.

13

Bost.

♦:.Google推出的这个新版Android应用商店服务,

目的在于加强Google在移动领域与苹果的竞争

实力。

♦:*4月28日,根据荷兰市场研究公司Distimo的

数据,如果谷歌AndroidMarket保持当前的

增长速度,五个月内就将取代苹果AppStore,

成为全球最大移动平台应用商店。.

14

Bost.

♦:♦该公司预计:“如果所有的应用商店都保持当前

的增速,大约5个月后,AndroidMarket的应

用数就将位居行业首位,其次分别是苹果App

Store>微软WindowsPhone7Market、

黑莓和诺基亚

AppWorldOviStoreo

♦:♦不过,在中国Androidmarket的用户体验仍

然不佳。产品一些应用信息无法显示。

15

Android的平台架构及特性

♦:♦Android平台采用了整合的策略思想,包括底

层Linux操作系统、中间层的中间件和上层的

Java应用程序。

♦:♦Android平台有如下特性:

应用程序框架支持组件的重用和替换。

基于寄存器的Dalvik虚拟机,相对于java虚拟机速度要

快得多

优化的图形库包括2D和3D图形库,3D图形库基于

OpenGLES

SQUte用作结构化数据存储

常见多媒体格式的支持(图像、音频和视频等)

■蓝牙、3G、WIFI等无线技术

丰富的开发环境:针对Eclipse的可视化开发插件ADT、

设备模拟器、调试工具等

16

Android的相关文件类型

♦:.Java文件——应用程序源文件

■Android的应用使用Java来开发。

Class文件Java编译后的目标文件

Android平台上的class文件不能直接在Android平台上

运行。由于google使用了自己的Dalvik来运行应用,

所以这里的class也肯定不能在AndroidDalvik上运行,

Android的class文件实际上只是编译过程的中间目标

文件,需要链接成Dex文件才能运行在Dalvik上。.

17

♦Dex文件Android平台上的可执行文件

Dalvik执行的并非是Java字节码,而是另一种字节码:

dex格式的字节码(Java字节码-dex字节码)。

Dalvik可以执行许多VM而不会占用太多的资源。

❖APK文件一一Android上的安装文件

APK是Android安装包的扩展名。

重要的包描述

♦:♦在Android的应用程序开发中,使用的是Java

语言,除了要熟悉Java语言的基础外,还需要

了解Android提供的Java扩展功能…

19

■♦Android.app:提供高层的程序模型、提供基

■本的运行环境。

■Android.content:包含对各种的设备上的数

据进行访问和发布的类。

■Android.database:通过内容提供者浏览和

■操作数据库。

■Android.graphics:底层的图形库,包含画

布、颜色过滤、点、矩形,可以将它们直接绘制

到屏幕上。.

20

HAndroid.location:定位和服务的相关类。

■❖Android.media:提供了一些管理音频视频的

■媒体接口的相关类。

■♦:911£121511或提供了关于网络访问的类,超过

通常的.*接口。

■❖Android.os:提供了系统服务,消息传输,

IPC机制。

■<*Android.opengl:提供了OpenGL的工具。.

21

Besi

Avider:提供类访问Android的

内容提供者。

^Android.telephony:提供与拨打电话相关的

API交互

<*Android.view:提供基本的用户界面接口框

架。

^Android.util:涉及工具性的方法,例如时间

日期型的操作。

<*Android.webkit:默认浏览器操作接口。.

22

23

Bost.Android应用程序组件概述

♦:♦从事Android应用程序的开发,那么首先了解

Android应用程序的思想是非常必要的。

♦:♦比如,与常见的应用程序开发不同,Android

应用程序没有统一的入口(例如main方法)

♦:♦根据完成功能的不同,Android划分了四类核

心的组件:Activity,Service,Broadcast

Receiver和Contentprovider。

♦:♦另外,组件之间的导航通过工ntent来完成,

Android还定义了View类来显示可视化界面。.

24

❖Activity

■Activity是Android组件中最为基本也是最为常用的一种。

在一个Android应用中,一个Activity通常就是一个单独

的屏幕。

每一个Activity都被实现为一个独立的类,且继承于

Activity这个真类。

■可以调用startAcitvity()方法从一屏导航到另外一屏

当一个新的屏幕打开后,前一个屏幕将会暂停,并保

存在堆栈中。用户可以返回到堆栈中的前一个屏幕,

当然也可以将其删除

❖Service

■一个Service是一种长生命周期的、没有用户界面的程

序。

Service运行在后台,很少和用户交互

^BroadcastReceiver

顾名思义,BroadcastReceiver是广播接收器,它和

事件处理机制类似,只不过事件处理机制是程序组件

级别的(点击一个按钮),而广播事件处理时系统级

别的。

系统定义了很多标准的BroadcastAction来广播事件,

例如系统启动后触发(ACTION_BOOT_COMPLETED)、

电量低触发(ACTION_BATTERY_CH/CNGED)

当然我们也可以自定又一些广播

27

♦Contentprovider

Android应用程序之间是相互独立的,各个组件运行在

不同的进程中,这就意味着数据不能共享。

那当需要时,各个组件之间的数据如何共享呢?——

Contentprovider

❖View

View是Android中图形用户界面的基类,提供了可视化

界面的展示。

Android的图形用户界面分为三层:底层是ActMty,上

面是Window,最上面是View

❖Intent

Intent是不同组件之间相互导航的纽带,封装了不同组

件之间导航查询的条件。

在Intent的描述结构中,有两个最重要的部分:动作和

动作对应的数据

Android开发环境的搭建

❖1JDK

单独的JRE不可用,必需有JDK,且不兼容GJC(Gun

java编译器)

■配置系统变量:

•JAVA_HOMIE:jdk的按照路径,如

“D:\Java\jdk160_21”

•CLASSPATH

•PATH中添加变量%JAVAHOME%\bin\

^2.AndroidSDK

■官方下载网站是

/sdk/index.html

安装完成后,将SDK根目录下面的“platform-tools”

和“tools”添加到系统变量path中

•例如:D:\android-sdk-windows\platform-

tools\;d:\android-sdk-windows\tools;

<*3.EclipseADT

Google针对Eclipse提供了Android开发插件ADT。

通过ADT可以进行集成开发,包括代码的自动生成、

调试、编译、拖拽界面等功能

■建议在线安装:

•"Help"—>"lnstallNewSoftware..."

•/android/eclipse/

♦:*4.酉己置Eclipse

“Windows"—"Preferences"—"Android”

选择AndroidSDK根目录,如"D:\android-sdk-

windows”

建议选择:eclipse-java-helios-SR2-win32

・代码风格

■智能感知

Android模拟器

可以看出该模拟器分为两个部分,

左边是模拟手机而右边是模拟手机

的键盘输入。

在模拟手机中内置了一些基本的应

用程序,如电话薄、短信、打电话

O.

35

♦:♦Android模拟器功能很强,和真机已经是极为

相似了,但是仍然有很多东西是模拟不了的

不支持呼叫和接听实际来电;

■不支持USB连接;

■不支持首频捕捉;

不能确定电池电量水平和充电状态;

■不支持蓝牙;

不确定SD卡的插入和弹出;

36

♦:♦AndroidSDKandAVDManager

■根据需要创建AVD

•androidlisttargets

•启动AndroidSDKandAVDManager.

❖ADB(AndroidDebugBridge)的使用

ADB是一个管理模拟器的通用工具,ADB功能很多,

例如本机和模拟机之间交互数据、安装APK项目等。.

■adbdevices查看当前运行的模拟器

■adbpush:将系统的文件复制到模拟器中

•D:\>adbpushd:\test.txt/sdcard/

■adbpull:将模拟器中的文件复制到系统

•D:\>adbpull/sdcard/test.txtd:\

adbinstall安装一个apk应用程序

•D:\>adbpushd:\test.apk/sdcard/

•D:\>adbinstalltest.apk

<*DDMS(DalvikDebugMonitorService)

DDMS是一个可视化的调试监控工具

■文件系统的使用

■屏幕截取

■LogCat

•V:不过滤输出所有调试信息包括VERBOSE、

DEBUG、INFO、WARN、ERROR

•D:debug过滤器,输出DEBUG、INFO、WARN、

ERROR调试信息

•I:info过滤器,输出INFO、WARN、ERROR调试信息

•W:waring过滤器,输出WARN和ERROR调试信息

•E:error过滤器,只输出ERROR调试信息

39

第一个Android应用程序

铅啦08:34AM

HelloWorld程序AppName

Android版

Hello

World!

40

Android工程的结构目录

i二Andp—Android工程名

S-src--源代码文件夹

-:Epkg.com包名称

Lt1[JjMairiActivity.java►Java源代(码

B梆gen一自动生成的R资源类文件夹

I二fflpkg.com►包名称

国臼R.javaA工程自动生成的资源索引类

JAndroid1.5

j>工程中SDK类库文件

loioandroid,jar-D''andrcud-保存原始资源文件的文件

‘四

assets夹,如mp3等

eihres一>资源文件夹

+drawable-f图片资源文件夹

由上,1ayout-一布局资源文件夹

values一简单配置文件夹

AndroidManifest,xml--配置清单文件

default,properties一项目环境信息文件

aBl

目proguard,cfg>混淆器配置文件

41

♦:♦AndroidManifest.xml是Android应用程序

中最重要的文件之^

♦:♦每一个Android工程都必需有一个

AndroidManifest.xml文件,该文件是

Android工程的全局配置文件

♦:♦所有在工程中使用到的组件(Activity、

Service、Contentprovider和Broadcast

Receiver)都要在该文件由声明

♦:♦该文件中还要声明一些权限及SDK的最低版本信

42

AndroidManifest.xml结构

<?xmlversion=',1.0,,encoding=,,utf-81,?>

<manifest>

<application>

<activity>

<intent-filter>

<action/>

<category/>

</intent-filter>

</activity>

<activity-alias>

<intent-filter></intent-filter>

<meta-data/>

</activity-alias>

<service>

<intent-filterx/intent-filter>

<meta-data/>

</service>

<receiver>

<intent-filterx/intent-filter>

<meta-data/>

</receiver>

<provider>

<grant-uri-permission/>

<meta-data/>

</provider>

<uses-library/>

</application>

<uses-permission/>

<permission/>

❖<permission-tree/>

<♦<permission-group/>

❖<instrumentation/>

<uses-sdk/>

❖<uses-configuration/>

❖<uses-feature/>

❖<supports-screens/>

♦</manifest>

43

第一层(〈Manifest〉)]属性)

<manifest

xmlns:android="/apk/res/androi

d"

package=""

android:sharedUserld="string"

android:sharedUserLabel="stringresource"

android:versionCode="integer"

android:versionName="string"

android:installLocation=["auto'^|"internalOnly"|

"preferExternal"]>

</manifest>

44

❖A>xmlns:android

定义android命名空间,一般为

/apk/res/android,这样使

得Android中各种标准属性能在文件中使用,提供了大

部分元素中的数据。

45

46

Besi

❖C>sharedUserld

♦:♦表明数据权限,因为默认情况下,Android给

每人APK分配一个唯一的UserID,所以是默认

禁止不同APK访问共享数据的。若要共享数据,

第一句以米用SharePreference方法,第二

和就可以采用sharedUserldY,蒋不同APK

的sharedUser工d都设为一样,则这些APK之

间就可以互相共享数据了

47

48

Besi

❖versionCode

♦是给设备程序识别版本(升级)用的必须是一个

interger值代表app更新过多少次,比如第一

版一般为,之后若要更新版本就设置为2,3等

oOO

49

❖F>versionName

♦:♦这个名称是给用户看的,你可以将你的APP版本

号设置为工」版,后续更新版本设置为1.2、2.0

版本等等。。。

Besi

♦G、installLocation

♦安装参数,是Android2.2中的一个新特性,installLocation有三个值

可以选择:internalOnly>auto、preferExternal

选择preferExternal,系统会优先考虑将APK安装到SD卡上{当然最终用

户可以选择为内部ROM存储上,如果SD存储已满,也会安装期内部存储上)

♦选择auto,系统将会根据存储空间自己去适应

♦选择internalOnly是指必须安装到内部才能运行

主:需要进行后台类监控的APP最好安装在内部,而一些较大的游戏APP

聂好安装在SD卡上。现默认为安装在内部,如果把APP安装在SD卡上,

首先得设置你的level%8,异且妻配亶androickinstallLocation这个

参验的属性为preferExternal)

51

第二层(〈Application>):属性

一个AndroidManifest.xml中必须含有一个Application标签,这个标签声明了每一个应用程序的组件及其属

性(如icon,label,permission等)

opplicationandroid:allowClearUserData=["true"|"false"]

android:allowTaskReparenting=["true"|"false"]

android:backupAgent="string"

android:debuggable=["true"|"false"]

android:description=,'stringresource"

android:enabled=["true"|"false"]

android:hasCode=["true"|"false"]

android:icon="drawableresource"

android:killAfterRestore=[,ltrue"|"false"]

android:label="stringresource"

android:manageSpaceActivity="string"

android:name="string"

android:permission="string"

android:persistent=["true"|"false"]

android:process="string"

android:restoreAnyVersion=["true"|"false"]

android:taskAffinity="string"

android:theme="resourceortheme">

</application>

52

■*A、androidzallowClearUserDataC^rue1

or'false1)

♦:♦用户是否能选择自行清除数据,默认为true,程

序管理器包含一个选择允许用户清除数据。当为

true时,用户可自己清理用户数据,反之亦然

53

54

Besi

❖android:backupAgent

♦:♦这也是Android2.2中的一个新特性,设置该

APP的备份,属性值应该是一个完整的类名,如

ject.TestCase,此属性并没有默认

值,并且类名必须得指定(就是个备份工具,将

数据备份到云端的操作)

55

Besa

■♦:*D、android:debuggable

♦:♦这个从字面上就可以看出是什么作用的,当设置

为true时,表明该APP在手机上可以被调试。

默认为false,在false的情况下调试该APP,就

会报以下错误:

DeviceXXXrequiresthatapplicationsexplicitelydeclarethemselvesas

debuggableintheirmanifest.

ApplicationXXXdoesnothavetheattribute'debuggable'settoTRUEinits

manifestandcannotbedebugged.

56

❖E、android:description/androicl:label

♦:♦此两个属性都是为许可提供的,均为字符串资源,当用

户去看许可列表(androicklabel)或者某个许可的详细

信息(android[description)时,这些字符串资源就

可以显示给用户。label应当尽量简短,之需要告知用户

该许可是在保护什么功能就行。而description可以用

于具体描述获取该许可的程序可以做哪些事情,实际上

让用户可以知道如果他们同意程序获取该权限的话,该

程序可以做什么。我们通常用两句话来描述许可,第一

句描述该许可,第二句警告用户如果批准该权限会可能

有什么不好的事情发生

57

❖F>android:enabled

♦:♦Android系统是否能够实例化该应用程序的组

件,如果为true,每个组件的enabled属性决

定那个组件是否可以被enabled。如果为

false,它覆盖组件指定的值;所有组件都是

disabledo

58

*G、androidzhasCodeCtrue1or'false')

♦:♦表示此APP是否包含任何的代码,默认为true,若为

false,则系统在运行组件时,不会去尝试加载任何的

APP代码

♦:♦一个应用程序自身不会含有任何的代码,除非内置组件

类,比如Activity类,血类使用^AliasActivity类,

当然这是个罕见的现象

*(在Android2.3可以用标准C来开发应用程序,可在

androidManifest.xml市将止匕庸性设置为false,因为

这个APP本身已经不含有任何的JAVA代码了)

59

60

♦:♦工、android:killAfterRestore

进程是否可以中途中止

<manifestxmlns:android="/apk/res/android"

android:sharedUserld="android.uid.system">

<applicationandroid:icon="@drawable/icon"android:label="@string/app_name"

android:allowClearUserData="false"android:process="system"

android:killAfterRestore="false">

Besi

*K、androidmame

♦为应用程序所实现的Application子类的全名。

当应用程序进程开始时,该类在所有应用程序组

件之前被实例化。

♦:♦若该类(比方androidMain类)是在声明的

package卞,则可以直接声响

android:name="androidMain”,但此类是

在package下面的子包的话,就必须声明为圣

路径或androickname="package名称■子包

名成.androidMain”

62

❖L>android:permission

♦:♦设置许可名,这个属性若在〈application〉上

定义的话,是一个给应用程序的所有组件设置许

可的便捷方式,当然它是被各组件设置的许可名

所覆盖的

63

64

Besi

*N、android:process

♦:♦应用程序运行的进程名,它的默认值为

〈manifest〉元素里设置的包名,当然每个组

件都可以通过设置该属性来覆盖默认值。如果你

想两个应用程序共用一个进程的话,你可以设置

他们的android:process相同,但前提条件是

他们共享一个用户工D及被赋予了相同证书的时

65

❖O>android:restoreAnyVersion

♦:♦同样也是android2.2的一个新特性,用来表明

应用是否准备尝试恢复所有的备份,甚至该备份

是比当前设备上更要新的版本,默认是false

66

❖P>android:taskAffinity

♦:♦拥有相同的affinity的Activity理论上属于相同

的Task,应用,序默认的affinity的名字是

〈manifest〉元素中设定的package名

67

❖Q>android:theme

♦:♦是一个资源的风格,它定义了一个默认的主题风

格给所有的activity,当然也可以在自己的

theme里面去设置它,有点类似style。

68

工程中的配置AndroidManifest.xml

<?xmlversion="1.0"encoding="utf-8"?>

<manifest

xmlns:android="/apk/res/android"

package=""

android:versionCode="l"

android:versionName="1.0">

<uses-sdkandroid:minSdkVersion="3"/>

opplicationandroid:icon="@drawable/icon"

android:label="@string/app_name">

octivityandroid:name=".MainActivity"

android:label="@string/app_name">

<intent-filter>

<actionandroid:name="ent.action.MAIN"/>

<category

android:name=^ent.category.LAUNCHER"/>

</intent-filter>

</activity>

</application>

</manifest>

69

:♦AndroidManifest.xml文件的根元素是manifest,

包含了xmlns:android、package、

androickversionCode和androickversionName

共4个属性

xmlns:android定义了Android的命名空间,值为

http:〃/apk/res/android

■package定义了应用程序的包名称

androickversionCode定义了应用程序的版本号,是一个整

数值,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论