• 1. 基于Android的移动应用 软件开发 2011-4-11
  • 2. 提纲 智能终端及手机操作系统 Android概述及开发环境搭建 一个简单的Android应用程序 2
  • 3. 提纲 智能终端及手机操作系统 Android概述及开发环境搭建 一个简单的Android应用程序 3
  • 4. 智能终端超小型移动个人电脑—UMPC(Ultra-Mobile PC) 上网本 - Netbook 平板电脑 PDA 4
  • 5. 智能终端PMP - Portable Media Player 电子书 车载GPS ……5
  • 6. 智能终端手机 普通手机 智能手机 6
  • 7. 手机的发展与特点手机的发展 功能手机 智能手机 服务手机 手机的用途 娱乐化 商务化 媒体化 生活化 …… 手机的特点 强制性、准确性、隐私性 随时随地、时间碎片 Feature PhoneSmart PhoneService Phone7
  • 8. 处理器电池供电的手持设备 ARM处理器为主 主频通常较小 例子:ipad,iphone 电源供电的终端 目前常用ATOM处理器 主频可以到2GHz 例子:上网本8
  • 9. 存储内存 容量接近台式机 外存 Flash存储为主 SD、CF卡、SSD硬盘 部分大容量会采用硬盘 摄像机、视频录像机9
  • 10. 屏幕尺寸相对较小 手机 - 3.5英寸 左右 电子书 - 6英寸 左右 平板电脑,上网本 – 10英寸 左右 触摸屏 单点触摸 多点触摸10
  • 11. 输入设备全键盘,小键盘 多点触摸 摄像头 虚拟现实动作感应技术 11
  • 12. 智能终端优点 便携性 开放的操作系统平台 丰富的应用 可扩展性 缺点 硬件能力较弱 屏幕小 电池续航能力弱12
  • 13. 主流智能手机平台应用开发平台Android13
  • 14. Symbian前身是Psion公司的EPOC系统 摩托罗拉、西门子、诺基亚等→诺基亚→开源 14
  • 15. Symbian实时性、多任务的纯32位操作系统 抢占式的多任务调度和内存保护 具有功耗低、内存占用少等特点 三个系统设计原则是: 用户数据的完整性和安全性至关重要 不能浪费用户的时间 所有的资源都是稀少的 第二代内核EKA2 可以运行在单处理器的手机:用户应用程序和手机信号栈两者都运行在一个处理器上 Symbian OS 操作系统 按内核版本分有v6.1,v7.0,v8.0,v8.1,v9.1,v9.2等 按用户平台(界面)分有S60,S80,S90,UIQ,MOAP等。 15
  • 16. 16WinCE微软从计算机到嵌入式系统 1996-CE 1.0,手持计算机(Handheld PC),屏幕为 480 x 240 pixels、四色灰阶、2 MB 内存、44 MHz 处理器 1997-CE 2.x,Palm PC,支持彩色屏幕-与palm的纠纷 2000-CE3.0,PocketPC,Compaq iPAQ 2001- Pocket PC 2002,WinCE 3.0 核心,加入了手机功能的支持;同年针对小型化智能型手机发表 Smartphone 2002 2002-Windows CE 4.0 .NET 2003-Windows Mobile 2003,以Windows CE 4.0 .NET为核心 2005-以 WinCE 5.0 为核心的操作系统 Windows Mobile 5.0,支持 3G 网络,具备永续性内存储存 一个版本到两个版本(pocket pc,mobile),再回到一个版本 精简的Windows 95 可以使用Windows平台上的编程工具(如VB、VC等)16
  • 17. 17Windows phone 7.0Windows Mobile 微软的手持设备,主要有手机、PDA、随身音乐播放器等 2009年2月 推出了Windows Mobile 6.5的手机 2010年10月 Windows Phone 7发布 播放音视频、浏览网页、MSN聊天、收发电子邮件等 硬件配置高、耗电量大、电池续航时间短、硬件成本高 17
  • 18. RIMBlackBerry的经典设计 宽大的屏幕和便于输入的QWERTY键盘,为拇指输入而优化 最大特点就是手机和电子邮件的融合 用户在任何有手机信号的地方接收互联网电子邮件 推送邮件服务(push email) 新邮件自动由RIM的服务器传送到手机服务运营商,然后直接推送到黑莓终端上。 封闭源码 18
  • 19. 19Palm OS 主要特点: 良好的节能功能。 合理的内存管理,Palm OS占有非常小的内存。 数据以数据库的格式存储1996-PalmPilot 10002002-handera 330胖梨Palm Pre奔迈Treo Pro19
  • 20. iPhone OS / iOSiPhone OS (现更名为iOS)是由苹果公司为iPhone开发的操作系统 iPhone、iPod touch以及iPad 以Darwin为基础的 系统架构分为四个层次 内核操作系统层(the Core OS layer) 内核服务层(the Core Services layer) 媒体层(the Media layer) 可轻触层(the Cocoa Touch layer) 系统操作占用大概240MB的内存空间 源码模式:封闭源码+开放源码 组件20
  • 21. 2010年苹果全球开发者大会(WWDC10)iPhone 4.0最多支持7个多任务 程序分类功能 统一多邮箱的收发件功能 iBooks 更多的企业功能 Game Center,游戏中心 iAd iOS 4.0 SDK 1500+新API,如开发者调动日历、照片库、短信应用、影片播放和获取、导航功能的改进和快速查看等21
  • 22. 22
  • 23. 2010年5月25日正式发布23
  • 24. 24Android由谷歌发布的基于Linux的开源终端平台 Android的组成 第一个完全定制、免费、开放的终端平台 使用Java语言开发 支持多种硬件设备 24
  • 25. 终端操作系统总体框架分析对比 基于其他系统内核类型开源性CPU指令集首次发布时间最近发布时间最新版本开发公司或组织SymbianEPOC微内核是ARM,x8619942010第一季度Symbian^3Symbian FoundationWindows PhoneWinCE混合型否ARM,MIPS,x86,SuperH2000年4月2010年11月7MicrosoftBlackBerry无未知否ARM19992010年4月6.0RIMiPhone OSDarwin混合型否ARM2007年1月2010年6月4AppleAndroidLinux宏内核是ARM2008年10月2010年12月2.3GooglePalm无未知否ARM199620075.5PalmwebOSLinux宏内核部分ARM2009年6月2011年1月2.1HPMeeGoLinux宏内核是x86,ARM2010年3月2011年1月1.2Intel,Nokia25
  • 26.  多任务支持实时性软件安装方式内核编程语言应用编程语言编程API安全性模拟器用户界面Symbian是强软件包 Ovi StoreC++C++,Java,PythonJ2ME,Symbian API数字签名WINSS60,UIQ,MOAP,QtWindows Phone是强软件包,MarketplaceC++C++,C#,VB,Java.NET,J2ME,WinCE API证书和加密VS中集成Windows图形,SilverlightBlackBerry是弱软件包 App WorldC++JavaJ2ME,BlackBerry API数字签名有BlackBerry图形iPhone OS否弱App StoreC,C++, Objective-CObjective-CCocoa Touch数字签名有Cocoa TouchAndroid是弱Android MarketC,C++JavaAndroid Java Class权限控制有Android 图形Palm否弱软件包CC,C++Palm API简单加密有Palm图形webOS是弱软件包、在线安装CC,C++,HTML,JavaScript,AJAXwebOS API 有webOS图形MeeGo是弱Intel AppUp, Ovi StoreC,C++C,C++MeeGo API 无Qt26
  • 27. 各方阵营及市场份额27
  • 28. 各方阵营及市场份额2010年统计数据28
  • 29. 市场研究公司Gartner 报告29
  • 30. 应用商店苹果 App store 35多万个应用,下载量超100亿次 谷歌 Android market 20多万个应用,下载量超25亿次 微软 Windows Phone Marketplace 不到半年的时间,1.2万个应用 中国移动、中国电信、中国联通 三星、诺基亚 …30
  • 31. 提纲 智能终端及手机操作系统 Android概述及开发环境搭建 一个简单的Android应用程序 31
  • 32. Android起源开放手机联盟 开放手机联盟(Open Handset Alliance,OHA)由谷歌公司于2007年发起的一个全球性的联盟组织,成立时包含34家联盟成员,现在已经增加到80家 联盟组织的目标 研发移动设备的新技术,用以大幅削减移动设备开发与推广成本 同时通过联盟各个合作方的努力,建立了移动通信领域新的合作环境,促进了创新移动设备的开发,创造了目前移动平台实现的用户体验 32
  • 33. Android起源开放手机联盟 开放手机联盟成员 电信运营商 半导体芯片商 手机硬件制造商 软件厂商 商品化公司 33
  • 34. Android起源开放手机联盟 电信运营商:中国移动通信、KDDI(日本)、NTT DoCoMo(日本)、Sprint Nextel(美国)、T-Mobile(美国)、Telecom(意大利)、中国联通、Softbank(日本)、Telefonica(西班牙)和Vodafone(英国) 34
  • 35. Android起源开放手机联盟 半导体芯片商:Audience(美国)、AKM(日本)、ARM(英国)、Atheros Communications(美国)、Broadcom(美国)、Intel(美国)、Marvell(美国)、nVIDIA(美国)、Qualcomm(美国)、SiRF(美国)、Synaptics(美国)、ST-Ericsson(意大利、法国和瑞典)和Texas Instruments(美国) 35
  • 36. Android起源开放手机联盟 手机硬件制造商:Acer(中国台湾)、华硕(中国台湾)、Garmin(中国台湾)、宏达电(中国台湾)、LG(韩国)、三星(韩国)、华为(中国)、摩托罗拉(美国)、索尼爱立信(日本和瑞典)和东芝(日本) 36
  • 37. Android起源开放手机联盟 软件厂商:Ascender Corp(美国)、eBay(美国)、谷歌(美国)、LivingImage(日本)、NuanceCommunications(美国)、Myraid(瑞士)、Omron(日本)、PacketVideo(美国)、SkyPop(美国)、Svox(瑞士)和SONiVOX(美国) 37
  • 38. Android起源开放手机联盟 商品化公司:Aplix Corporation(日本)、Noser Engineering(瑞士)、Borqs(中国)、TAT-The Astonishing(瑞典)、Teleca AB(瑞典)和Wind River(美国) 38
  • 39. Android起源Android发展史 2007年11月5日,开放手机联盟成立 2007年11月12日,谷歌发布Android SDK预览版 ,这是第一个对外公布的Android SDK,为发布正式版收集用户反馈 2008年4月17日,谷歌举办开发者竞赛 2008年8月28日,谷歌开通Android Market,供Android手机下载需要使用的应用程序 2008年9月23日,发布Android SDK v1.0版,这是第一个稳定的SDK版本 39
  • 40. Android起源Android发展史 2008年10月21日,谷歌开放Android平台的源代码 2008年10月22日,第一款Android手机T-Mobile G1在美国上市,由中国台湾的宏达电制造 2009年2月,发布Android SDK v1.1版 2009年2月17日,第二款Android手机T-Mobile G2正式发售,仍由中国台湾的宏达电制造 2009年4月15日,发布Android SDK v1.5版 40
  • 41. Android起源Android发展史 2009年9月15日,Android 1.6 2009年10月26日, Android 2.0    2009年12月36日, Android 2.0.1 2010年1月10日, Android 2.1 2010年5月20日, Android 2.2 41
  • 42. Android起源Android发展史 2010年12月7日,Android 2.3 2011年2月3日,Android 3.0 目前仅针对平板电脑 摩托罗拉MOTO XOOM 42
  • 43. Android特征提供访问硬件的API函数,简化像摄像头、GPS等硬件的访问过程 具有自己的运行时和虚拟机 提供丰富的界面控件供使用者之间调用,加快用户界面的开发速度,保证Android平台上程序界面的一致性 提供轻量级的进程间通讯机制Intent,使跨进程组件通信和发送系统级广播成为可能 提供了Service作为无用户界面,长时间后台运行的组件 支持高效、快速的数据存储方式 43
  • 44. Android平台优势特色 开放性 挣脱运营商的束缚 丰富的硬件选择 不受任何限制的开发商 无缝结合的Google应用 44
  • 45. Android体系结构 采用软件堆层的架构,共分为四层 45
  • 46. Android体系结构Linux内核 硬件和其他软件堆层之间的一个抽象隔离层 提供安全机制、内存管理、进程管理、网络协议堆栈、和驱动程序等 46
  • 47. Android体系结构中间件层 由函数库和Android运行时构成 函数库,主要提供一组基于C/C++的函数库 Surface Manager,支持显示子系统的访问,提供应用程序与2D、3D图像层的平滑连接 Media Framework,实现音视频的播放和录制功能 SQLite,轻量级的关系数据库引擎 OpenGL ES,基于3D图像加速 FreeType,位图与矢量字体渲染 WebKit,Web浏览器引擎 SGL,2D图像引擎 SSL,数据加密与安全传输的函数库 Libc,标准C运行库,Linux系统中底层应用程序开发接口 47
  • 48. Android体系结构中间件层 Android运行时 核心库,提供Android系统的特有函数功能和Java语言函数功能 Dalvik虚拟机,实现基于Linux内核的线程管理和底层内存管理48
  • 49. Android体系结构应用程序框架 提供Android平台基本的管理功能和组件重用机制 Activity Manager,管理应用程序的生命周期 Windows Manager,启动应用程序的窗体 Content Provider,共享私有数据,实现跨进程的数据访问 Package Manager,管理安装在Android系统内的应用程序 Teleghony Manager,管理与拨打和接听电话的相关功能 49
  • 50. Android体系结构应用程序框架 Resource Manager,允许应用程序使用非代码资源 Location Manager,管理与地图相关的服务功能 Notification Manager,允许应用程序在状态栏中显示提示信息 50
  • 51. Android体系结构应用程序 提供一系列的核心应用程序 包括电子邮件客户端、浏览器、通讯录和日历等 51
  • 52. Android开发环境搭建 工欲善其事,必先利其器 ——《论语》 52
  • 53. Android开发环境搭建软件 JDK 5 or JDK 6 以上(一定要JDK,仅JRE不够) Eclipse 3.3 以上 Android SDK ADT 相应手机连接驱动 53
  • 54. Android开发环境搭建JDK http://www.oracle.com/technetwork/java/javase/downloads/index.html Eclipse http://www.eclipse.org/downloads/ ADT http://developer.android.com Android SDK http://developer.android.com 手机驱动 各手机厂家网站,或随机光盘 操作系统自动搜索安装54
  • 55. Android开发环境搭建安装JDK 安装Eclipse 安装Android SDK 运行SDK Manager.exe 更新所需要的开发包 55
  • 56. Android开发环境搭建创建虚拟设备(AVD) 56
  • 57. Android开发环境搭建安装ADT 打开eclipse,选择Help->Install new software 在Work with文本框输入https://dl-ssl.google.com/android/eclipse/ ,然后回车 57
  • 58. Android开发环境搭建安装ADT 或者点击Add按钮,弹出如下对话框 点击Archive按钮,选择下载到本机上的ADT压缩包 点击OK即可 58
  • 59. Android开发环境搭建安装ADT 接着点击Next继续进行安装 当安装完成后,重启Eclipse 更新ADT参数 点击Window->Preferences,设置SDK路径 59
  • 60. 提纲 智能终端及手机操作系统 Android概述及开发环境搭建 一个简单的Android应用程序 60
  • 61. 一个简单的应用程序创建一个Android应用程序 选择File->New->Project 选择Android Project应用程序类型,Next 在对话框中输入项目的详细情况 点击Finish按钮61
  • 62. 一个简单的应用程序创建一个启动配置 选择Run->Run/Debug Configurations 62
  • 63. 一个简单的应用程序运行和调试Android应用程序 选择Run->Run/Debug 运行和调试应用程序将完成以下工作: 编译当前项目,并转换为Android可执行文件(.dex) 把可执行文件和外部资源打包为Android包(.apk) 启动所选择的虚拟设备(若选择了一个AVD,但还未运行) 安装应用程序到目标设备上 启动应用程序 63
  • 64. 一个简单的应用程序一个简单的Android应用程序64
  • 65. 一个简单的应用程序项目结构 主程序 自动生成的R类 资源文件 drawable layout values 程序清单65
  • 66. 一个简单的应用程序主程序 Hello.java package myproject.Android; import android.app.Activity; import android.os.Bundle; public class Hello extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } }66
  • 67. 一个简单的应用程序自动生成的R类,不要手工修改 package myproject.Android; 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; } }主程序中使用R类,setContentView(R.layout.main);67
  • 68. 一个简单的应用程序UI布局 main.xml 68
  • 69. 一个简单的应用程序字符串 string.xml Hello World, Hello! HelloWorld 69
  • 70. 一个简单的应用程序程序清单 AndroidManifest.xml 70
  • 71. 一个简单的应用程序 Android支持各种资源与代码分离,从简单的资源(如字符串、颜色)到复杂的资源(如图片、动画、主题) 通过资源分离,使应用更加容易维护、更新和管理 可以根据屏幕的尺寸和方向改变布局 根据语音和国家来定制文本提示等71
  • 72. 提纲 智能终端及手机操作系统 Android概述及开发环境搭建 一个简单的Android应用程序 72
  • 73. Thank you!73