• 1. 第 1 章Android概述
  • 2. - 2 -本章目标了解移动信息设备分类 了解Android的历史和优缺点 熟悉Android平台的体系架构 掌握Android应用程序结构 掌握Android应用程序的编写
  • 3. - 3 -1.1 移动设备开发平台 面对巨大的移动应用开发市场,国内外的IT厂商纷纷推出各 种各样的移动应用平台: Symbian Android Windows Mobile iOS 到了2010年,业内移动设备开发平台对市场的争夺日益激烈,也正是在这一年移动互联网进入了一个快速发展的阶段。
  • 4. (本页无文本内容)
  • 5. (本页无文本内容)
  • 6. (本页无文本内容)
  • 7. (本页无文本内容)
  • 8. - 8 -1.1.1 移动信息设备系统 PC OS 以windows为主,占90%左右 移动信息设备中的操作系统却呈现出群雄割据的局面,常用的操作系统有: Symbian Windows Mobile iOS Linux(含Android、Maemo和WebOS) Palm OS和BlackBerry OS 这些系统之间的应用软件互不兼容,因此移动信息设备中的应用程序需要根据不同的操作系统进行专门的开发。
  • 9. - 9 -Symbian Symbian是一家软件公司,研发与授权Symbian操作系统。全球的各大手机领导厂商,包括摩托罗拉、诺基亚、三星、西门子与索尼爱立信等,都获得了Symbian操作系统的授权。目前,Symbian OS的获授权厂商的销售额已超过全球手机总销售额的50%。
  • 10. - 10 -iOS iOS是苹果公司为其旗下的手机iPhone开发的操作系统。目前主要用于苹果公司的一系列产品,如iPhone、iPod、iTouch以及iPad等。 iOS的系统架构分为四个层次:核心操作系统层(the Core OS layer)、核心服务层(the Core Services layer)、媒体层(the Media layer)和可轻触层(the Cocoa Touch layer)。
  • 11. - 11 -BlackBerry OS - “黑莓”BlackBerry OS是加拿大RIM(Research In Motion)公司专用的操作系统,是为其智能手机产品BlackBerry开发的专用操作系统。 该平台支持移动式电子邮件、移动电话、文字短信、互联网传真、网页浏览及其他无线资讯服务。 BlackBerry开发平台分为三部分,分别是:BlackBerry Browser Development(黑莓浏览器开发)、Rapid Application Development(快速程序开发)和Java Application Development(Java程序开发)。 BlackBerry既支持标准Java ME程序,也可以开发黑莓专用的Java程序。
  • 12. - 12 -Android 网络巨头Google发布的基于Linux平台的开源手机操作系统Android的诞生,标志着移动信息设备的开发平台进入一个崭新的领域。该平台由操作系统、中间件、用户界面和应用软件组成,是首个为移动终端打造的真正开放和完整的移动软件开发平台。Android上的应用程序开发使用Java语言,并提供了专门的SDK SDK(Software Development Kit, 即软件开发工具包 )
  • 13. - 13 -1.1.2 开放手机联盟 开放手机联盟(Open Handset Alliance,OHA)由一群共同致力于构建更好的手持移动信息设备的公司组成。 该组织由Google领导,包括移动运营商、手持设备制造商、零部件制造商、软件解决方案和平台提供商以及市场营销公司。 目前已达34家成员分类成员手机制造商台湾宏达国际电子(Palm等多款智能手机的代工厂)摩托罗拉(美国最大的手机制造商)韩国三星电子(仅次于诺基亚的全球第二大手机制造商)韩国LG电子移动运营商中国移动(全球最大的移动运营商,7.03亿用户)日本KDDI(2900万用户)日本NTT DoCoMo(5200万用户)美国Sprint Nextel(美国第三大移动运营商,5400万用户)意大利电信(意大利主要的移动运营商,3400万用户)西班牙Telefónica(在欧洲和拉美有1.5亿用户)T-Mobile(德意志电信旗下公司,在美国和欧洲有1.1亿用户)
  • 14. - 14 -半导体公司Audience Corp(声音处理器公司)Broadcom Corp(无线半导体主要提供商)英特尔(Intel)Marvell Technology GroupNvidia (图形处理器公司)SiRF(GPS技术提供商)Synaptics(手机用户界面技术)德州仪器(Texas Instruments)高通(Qualcomm )惠普HP(Hewlett-Packard Development Company,L.P)软件公司AplixAscendereBay的SkypeEsmertecLiving ImageNMS CommunicationsNoser Engineering AGNuance CommunicationsPacketVideoSkyPopSonix NetworkTAT-The Astonishing TribeWind River Systems
  • 15. - 15 -OMS简介
  • 16. - 16 -1.2 Android简介 Android一词本意是指“机器人”,是Google公司推出的开源手机操作系统。Android作为Google移动互联网战略的重要组成部分,推进“随时随地为每个人提供信息”这一企业目标的实现,完善企业移动发展战略:通过与全球各地的手机制造商和移动运营商成为合作伙伴,开发即实用又有吸引力的移动服务,并推广这些产品。
  • 17. - 17 -1.2.1 Android的历史 时间事件2007年11月5日Google公司宣布组建一个全球性的开放手机联盟,创建时,联盟成员数量已经达到了34家2008年9月22日美国运营商T-Mobile在纽约正式发布第一款Google手机:T-Mobile G12009年1月1日Google的Android应用程序市场(App Market)将在2009年初开始出售Android付费应用程序,标志着Android Market营收的开始2009年11月25日AdMob的调查显示,在美国Android系统市场占有率11%,居于第三位2009年12月9日宏达电将逐渐放弃Windows Mobile系统,继而转向Android系统2009年12月23日Google在中国大陆推出中文版Android Market,国内已经有开发者推出针对国内用户的Android Market,易联致远公司已经推出名为eoeMarket的专门针对国内用户的第三方Android Market2010年1月6日Google正式发布首款自有品牌手机Nexus One,该机采用Android 2.1操作系统2010年2月24日全球瞩目的世界移动大会(Mobile World Congress2010)召开2010年3月3日运营商AT&T宣布本月即将推出首款Android手机2010年3月10日网络分析公司Quantcast最新报告显示,Android市场占有率份额约15%,位居第三2010年5月20日Android 2.2 Froyo 发布2010年12月7日Android 2.3 Ginerbread发布2011年5月7日Android的市场份额已占有43.7%,在智能手机中已位居第一2013年11月1日 Android4.4
  • 18. Android最早是由Andy Rubin于21世纪初创立的一个手机操作系统。2005年,Google收购了Android公司。 在过去的10年中,Android日趋成熟,并已成长为一个十分可靠的嵌入式操作系统平台。目前版本4.4 。 嵌入式操作系统可以看做是将整个计算机系统集成在一个芯片上,小到足以装进一个手持电子设备中,但却拥有强大的功能,可以运行各种应用程序。
  • 19. (本页无文本内容)
  • 20. 2013年10月中国智能手机市场上在售的Android智能手机数量继续呈上升走势,本月已逼近1100款,参与竞争的厂商数量较上月增加了3家,Android手机的红海时代已全面到来。 但从市场格局来看,三星依然主导着整个市场的走向,并引领着潮流。其他品牌中,联想领跑国产手机阵营。
  • 21. - 21 -1.2.2 Android的优缺点 Android的优势主要体现在: 系统的开放性和免费性 移动互联网的发展 相关厂商的大力支持 Android也不是一个完美的系统,同样面临着许多挑战: 技术的进一步完善 开放手机联盟模式的挑战 其他技术的竞争
  • 22. - 22 -1.2.3 Android平台的技术架构 Android系统架构总体可分为四层结构,分别是应用程序层、应用程序框架层、系统运行库层以及Linux内核层。
  • 23. 一、应用程序层  Android平台不仅仅是操作系统,也包含了许多应用程序,诸如SMS短信客户端程序、电话拨号程序、图片浏览器、Web浏览器等应用程序。 这些应用程序都是用Java语言编写,并且都是可以被开发人员所开发的其他应用程序替换,这点不同于其他手机操作系统固化在系统内部的系统软件,更加灵活和个性化。 用户开发的Android应用程序和Android的核心应用程序是同一层次的,它们都是基于Android的系统API构建的。
  • 24. 二、应用程序框架层         应用程序框架层是开发者从事Android应用开发的基础,很多核心应用程序也是通过这一层来实现其核心功能,该层简化了组件的重用,开发人员可以直接使用它提供的组件进行快速的应用程序开发,也可以通过继承而实现个性化的拓展。 以下是这层次中,各个部分的功能:         Activity Manager(活动管理器):管理各个应用程序生命周期以及通常的导航回退功能         Window Manager(窗口管理器):管理所有的窗口程序         Content Provider(内容提供器):通过它可以在不同应用程序之间存取或者分享数据         View System(视图系统):构建应用程序的基本组件         Notification Manager(通知管理器):通过它应用程序可以在状态栏中显示自定义的提示信息         Package Manager(包管理器):Android系统内的程序管理,可以查看Android应用程序以及Activity的相关信息         Telephony Manager(电话管理器):管理所有的移动设备功能         Resource Manager(资源管理器):提供应用程序使用的各种非代码资源,如本地化字符串、图片、布局文件、颜色文件,主题样式,二进制文件等         Location Manager(位置管理器):提供位置服务         XMPP Service(XMPP服务- (可扩展消息处理现场协议) :提供Google Talk服务 
  • 25. 三、系统运行库层:         Android系统运行库层主要分为系统库和Android运行时环境两部分。 系统库:         系统库是应用程序框架的支撑,是连接应用程序框架层与Linux内核层的重要纽带。其主要包含以下几个部分: Surface Manager:执行多个应用程序时候,负责管理显示与存取操作间的互动,另外也负责2D绘图与3D绘图进行显示合成。  Android运行时环境(Run Time Context):         Android应用程序时采用Java语言编写,程序在Android运行时环境中执行,运行时环境可分为核心库和Dalvik虚拟机两部分。         核心库提供了Java语言API中的大多数功能,同时也包含了Android的一些核心API,如android.os、android.net、android.media等等。         Dalvik虚拟机是由Google公司自己设计专门用于Android平台的Java虚拟机,它针对移动终端做了特殊的优化。
  • 26. 四、Linux内核层         Google选择了Linux作为Android的底层支撑系统。当前的 Android系统是基于Linux2.6内核,其核心系统服务如安全性、内存管理、进程管理、网路协议以及驱动模型都依赖于Linux内核。 当然,除了标准的Linux内核外,Android还增加了内核的驱动程序:Binder(IPC)驱动、显示驱动、输入设备驱动、音频系统驱动、摄像头驱动、WiFi驱动、蓝牙驱动、电源管理。
  • 27. Android----------创新的移动开发环境 可开发应用程序的主流平台: 智能手机 平板电脑 电子书阅读器 非便携式设备: 如itv(交互式电视)、家庭媒体中心以及机顶盒 Android是开源的,免专利费用。且行事自由。 在发布应用程序之前,不需要提交给某个公司去征求他们的同意,只要不侵害他人。 Internet2.0环境: 指使用便携式消费型电子设备,通过多种不同的数据网络来访问互联网。这些电子设备如上。 大多数消费型电子设备制造商选择了Linux和Java, 而非Windows和Mac操作系统, 大有前途(靠山: Google\ OHA) Android电子市场中发布你的应用程序非常容易:只需缴纳25美元的费用,上传你的.apk文件,然后设置该应用是免费还是付费购买即可。(其他平台开的的应用程序,被批准可能几年!!!)
  • 28. 1. 如何安装各种Android、Java和Eclipse环境, 如何配置这些环境; 2. 如何用它们来开发好测试应用程序。 ----------单独的PPT
  • 29. 学习内容1. 如何设计用户界面(User Interface, UI); 2. 通过事件处理机制,学习UI是如何与应用程序交流的; 3. 为了让应用程序更酷,还要学习图像、动画和视频的使用; 4. 高阶应用----数据库和通信。
  • 30. 应具备的基础知识:具备一定的高级编程语言(如Java)和标记语言(如XML)知识。 新媒体应用程序还需:2D绘图、3D渲染、音频处理、视频串流、GPS定位以及数据库设计。 要想成为一名顶尖的Android开发者,需要经过多年的努力实践、刻苦专研以及反复试错。
  • 31. Android包含超过44个Java包(package),总计7000多段功能性程序代码,使你能够实现所能想象到的任何功能。 Java包:指的是一些拥有相关功能的编程工具的集合。 如,java.io这个包中包含了用于在你的程序中处理输入和输出的工具,如读取文件内容或向文件写入数据。 如何将自己的代码组织成包?
  • 32. - 32 -1.3 Android应用程序框架 一个Android应用程序通常是由以下4个组件构成的: 活动(Activity) 意图(Intent) 服务(Service) 内容提供器(Content Provider)
  • 33. - 33 -1.3.1 活动(Activity) 活动(Activity)是最基本的Android应用程序组件。 在应用程序中,一个活动通常就是一个单独的屏幕。 每个活动都通过继承活动基类而被实现为一个独立的活动类。 活动类将会显示由视图控件组成的用户接口,并对事件做出响应。 它负责定义用户在屏幕上的体验。
  • 34. - 34 -1.3.2 意图(Intent) Intent用来描述应用程序的功能。 Intent是利用消息实现应用程序间的交互机制,能够在程序运行的过程中连接两个不同的组件。 Intent描述了应用中一次操作的动作、数据以及附加数据,向Android表达某种请求或者意愿,Android系统会根据Intent描述的内容来选择适当的组件来响应,并将Intent传递给该组件,完成组件的调用。 显式意图是明确调用哪个程序打开,而隐式意图是给出同类程序列表供用户选择 例如拨打电话的意图: Uri uri = Uri.parse("tel:" + phoneCode); Intent intent = new Intent(Intent.ACTION_CALL, uri); 拨号器,这是用的隐式意图激活,就是没有指定具体的组件名称,而是通过intent在系统中找到一个最合适的Activity
  • 35. - 35 -1.3.3 服务(Service) 服务是Android应用程序中具有较长的生命周期但是没有用户界面的程序。 Service运行在后台,并且可以与其他程序进行交互。 Service跟Activity的级别差不多,但是不能独立运行,需要通过某一个Activity来调用。 Android应用程序的生命周期是由Android系统来决定的,不由具体的应用程序线程来控制。 如果应用程序要求在没有界面显示的情况还能正常运行(要求有后台线程,而且直到线程结束,后台线程才会被系统回收),此时就需要用到Service。 service可以在很多场合的应用中使用,比如播放多媒体的时候用户启动了其他Activity这个时候程序要在后台继续播放
  • 36. 1.3.4 广播接收器(Broadcast Receiver) 它负责将指定的事件消息通知给Android应用程序,例如Android设备上激活摄像头事件,或者接收到一个来电的事件。 实际上,如果出于某些原因,需要将应用程序数据结构中某个状态的变化通知给其他的应用程序。 甚至可以发送属于自己的事件广播。
  • 37. - 37 -1.3.5 内容提供器(Content Provider) Android应用程序可以使用文件或SQLite数据库来存储数据(如联系人列表)。 Content Provider提供了一种多应用间数据共享的方式。 一个Content Provider类实现一组标准的方法,能够让其他的应用保存或读取此内容提供器处理的各种数据类型,即一个应用程序可以通过实现一个ContentProvider的抽象接口将自己的数据暴露出去。外界根本看不到,也不用看到该应用程序暴露的数据是如何存储的,但是外界可以通过这一套标准及统一的接口和应用程序里的数据打交道,可以读取应用程序的数据,也可以删除应用程序的数据。 Android设置了一些预先配置好的内容提供器,也可以编写自己的内容提供器。
  • 38. - 38 -1.4 第一个Android应用 编写并运行Android的应用程序通常需要如下3个步骤: 创建一个新的Android项目; 创建一个启动配置; 运行Android应用程序。
  • 39. - 39 -Android项目的架构 src文件夹:用来存放项目的源文件 android.jar文件:包含构建应用程序所需的Android SDK库 资源引用文件资源目录 图标文件 界面布局文件 字符串引用文件 Android项目的总配置文件 SDK,Software Development Kit 的缩写,中文即“软件开发工具包”。广义上指辅助开发某一类软件的相关文档、范例和工具的集合。
  • 40. - 40 -字符串引用文件strings.xml Hello World, Ch01Activity! Ch01 界面布局文件main.xml 每个XML文档都由XML序言开始,。这一行代码会告诉解析器和浏览器,这个文件应该按照1.0版本的XML规则进行解析。 encoding = "utf-8"表示此xml文件采用utf-8的编码格式。这个是xml的命名空间,有了他,你就可以alt+/作为提示,提示你输入什么,不该输入什么,什么是对的,什么是错的,也可以理解为语法文件。或者语法判断器什么的。1.wrap_content :组件的大小以能装入其内容即可;   2.fill_parent :组件会显示得和其父组件一样大,并填充剩余的空间(在   API Level  8 中命名为 match_parent)。
  • 41. (本页无文本内容)
  • 42. - 42 -资源引用文件R.java public final class R { public static final class attr { } public static final class drawable { public static final int icon=0x7f020000; } public static final class layout { public static final int main=0x7f030000; } public static final class string { public static final int app_name=0x7f040001; public static final int hello=0x7f040000; } }源文件Ch01Activity.java public class Ch01Activity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } } 其中super.onCreate(savedInstanceState)的作用是调用其父类Activity的onCreate方法来实现对界面的图画绘制工作。在实现自己定义的Activity子类的onCreate方法时一定要记得调用该方法,以确保能够绘制界面。
  • 43. - 43 -项目配置清单文件AndroidManifest.xml 根元素,指定了命名空间、包、版本代号及名称等信息 根元素,指定了命名空间、包、版本代号及名称等信息 图标 标题 类名 标题 过滤器 程序的入口 加载程序时运行 版本
  • 44. (本页无文本内容)
  • 45. 1. 创建一个新的Android项目
  • 46. (本页无文本内容)
  • 47. (本页无文本内容)
  • 48. (本页无文本内容)
  • 49. 2. 创建一个启动配置启动配置允许指定运行和调试应用程序时的选项,通过使用启动配置,可以指定以下内容: 要启动的项目和活动; 要使用的虚拟移动设备和模拟器选项; 输入和输出配置(包括默认的控制台)。
  • 50. (本页无文本内容)
  • 51. (本页无文本内容)
  • 52. 已经创建好的AVD(Android Virtual Device,Android虚拟设备---运行Android程序)
  • 53. 3. 运行Android应用程序: 右击ch01项目,Run As/ Android Application
  • 54. (本页无文本内容)
  • 55. 运行结果 :
  • 56. 课后思考: 实践1.G.1 :Windows下配置Android开发环境,包括JDK、Eclipse、Android SDK、ADT插件的下载、安装和配置。P204 时区设置问题 实践1.G.1:配置运行Android应用程序所需的一个AVD虚拟设备。P211
  • 57. - 57 -运行结果 :时区设置
  • 58. - 58 -小结: Android是Google公司推出的开源手机操作系统 Android上的应用程序开发使用Java语言 Android平台采用了软件栈的架构,主要分为活动、意图、服务和内容提供器四部分 活动(Activity)是最基本的Android应用程序组件 意图(Intent)利用消息实现应用程序间的交互机制 服务(Service)是Android应用程序中具有较长的生命周期但是没有用户界面的程序 内容提供器(Content Provider)提供了一种多应用间数据共享的方式
  • 59. - 59 -谢谢!