• 1. Android 移动开发
  • 2. 课程前言
  • 3. 移动互联网时代的来临移动互联网 将移动通信和互联网整合在一起,使移动设备(包括手机和上网本)可以随时随地地访问互联网资源和应用。 互联网时代创造了一经济神话,也造就了很多时代英雄,他们一个个令人仰慕。 试想为数亿的手机用户和数亿的网民建立一个共同的平台,使其应用到企业、商业和农村之间,又会是怎样一个惊天动地的伟业呢?新时代开始了,你准备好了了吗?
  • 4. 智能手机是移动互联网时代一个标志性的客户端和传统的手机的区别 一台“小电脑”,具有独立的操作系统,可以自由安装、卸载软件,具有强大的计算和存储能力,可以通过移动通信网络来实现无线网络接入。 智能手机一般具有如下特点: 高速处理芯片、大存储芯片和存储扩展能力、面积大、标准化、可以触摸的显示屏、摄像头至少300万像素、支持播放式的手机电视、必须支持GPS导航、操作系统必须支持新应用的安装等。
  • 5. 智能手机操作系统Google的Android 苹果的 IOS 等 微软的Windows 8 诺基亚的Symbian
  • 6. 于1998年9月7日创立,经过十几年在搜索引擎方面的精耕细 作, 成为全球互联网巨头,尤其在地图搜索的应用更是引人注目。Google与 2007年11月5日宣布的基于Linux平台的开源手机操作系统,名称为Android, 中文译为“机器人”。这意味着Google在移动互联网时代开始抢跑并领跑。 是一个真正意义上的开源智能手机操作系统,该系统有底层的 Linux、中间层得软件包和上层的Java应用程序组合而成。该系统一经推 出立即受到了全球移动设备厂商和开发者的热捧。
  • 7. Android 系统概略回顾2008年9月22日,美国运营商T-Mobile USA在纽约正是发布第Google手机——T Mobiile G1 。 该款手机为中国台湾宏达电代工制造,是世界上第一部使用Android操作系统的手机,它支持WCDMA/SHPA网络,理论下载速度为7.2Mbps,并支持Wi-Fi。 到2010年1月,Google开始发布自家品牌手机Nexus One。该款手机使用的操作系统是Android2.1。 到目前为止,Google最新的一代手机有三星代工,手机型号为Nexus S采用最新的Android2.3平台,同时支持NFC(Near field communication)技术。
  • 8. Android快速入门
  • 9. 概述时势造英雄,PC时代微软凭借Windows操作系统造就了微软帝国,互联网时代Google凭借搜索引擎造就了Google帝国。 移动互联网时代的来临,谁将是真正的英雄呢? 这个我们很难定论,但是一个不确定的答案就是,掌握移动互联网技术的人将是这个时代的弄潮儿,将成为这一时代的真正的英雄。 Android操作系统能被广泛地应用主要是因为其“博彩众长,为它所用”。 Android采用了开源的Linux操作系统,底层使用了访问硬件速度最快的C语言,应用层采用了简单而强大的Java语言,这使得Android无处不闪烁着耀眼的光芒。 我们知道,之前的手机操作系统市场被少数的实力雄厚的公司垄断,Android的推出使得这个市场从新“洗牌”。王者归来,个人英雄主义又将重现。你可以开一家公司提供定制的Android系统,也可以开一家公司开发Android应用软件、游戏在Android Market|Google Play上出售。 我们需要一个强大的集成开发环境帮助我们对Android应用程序进行开发、调试、编译、打包、部署等工作,Android提供了针对Eclipse的开发插件Android Development Tools。 (ADT,Android开发工具)有了ADT我们可以在Eclipse开发环境中快速创建Android应用程序。
  • 10. 目标什么是3G 为什么开发手机程序 为什么选择Android开发 了解Android Market、Google Play 了解Android的前世今生 掌握Android的平台架构及特性 掌握Android应用程序组件 了解Android与Java ME的区别与联系 了解Android操作系统的优势 掌握Android SDK环境的搭建 开发工具简介
  • 11. 什么是3G第三代数字通讯技术(3rd Generation) 3G与2G的主要区别是在传输声音和数据的速度上的提升 1995年问世的第一代模拟制式手机(1G)只能进行语音通话。 1996到1997年出现的第二代GSM、CDMA等数字制式手机(2G)便增加了接收数据的功能 3G是第三代通信网络,目前国内支持国际电联确定三个无线接口标准 中国电信的CDMA2000 (日、韩和北美使用) 中国联通的WCDMA (世界上大部分3G网络都采用的是该标准) 中国移动的TD-SCDMA (中国) GSM-->GPRS-->EDGE-->WCDMA-->HSDPA-->FDD-LTE长期演进 | | | | | | 9k 42k 172k 364k 7.2M 300M
  • 12. 为什么开发手机程序我们可以开发 若干年前只有摩托罗拉资深工程师才能搞定 掌握了移动互联网就掌握了将来 谁输在了移动互联网上,谁就输了未来 谁抓住了移动互联网的机会,谁就有了未来成功的门票。 工作好找 智联招聘每周有约5000个移动开发职位 互联网调查公司Dice.com统计: 60% IT公司职业HR在寻找Android工程师 平均薪水高
  • 13. 为什么选择Android开发设备价格 市场占有率 开源、开放、基于Java开发 种类繁多
  • 14. (本页无文本内容)
  • 15. (本页无文本内容)
  • 16. (本页无文本内容)
  • 17. 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公司的原因是,他有天才的工程师和了不起的技术, 我们对他们的加盟感到由衷的高兴”。
  • 18. Android的前世今生-21996 www网开始流行,可以显示文字和图片 移动互联网入口: WAP (wait and pay) Wireless Markup Language (WML) – 精简版的html语言 最好的手机设备只能显示简单的文本 2005 Google收购 Android Inc. 开始 Dalvik VM 的研究 2007 开发手机联盟成立 Sdk1.0预览版发布 2008 Google 第一届手机开发者大赛 Google第一个亲儿子T-Mobile G1 发布 SDK 1.0 发布 Android 开放源代码 (Apache License)
  • 19. Android的前世今生-3Android 进化史 1.5 Cupcake(纸杯蛋糕) 1.6 Donut(甜甜圈) 2.1 Eclair(闪电泡芙) 2.2 Froyo(冻酸奶) 2.3 Gingerbread(姜饼) 3.0 Honeycomb(蜂巢) 4.0 Ice cream SandWich(冰激凌三明治) 4.1 Jelly Bean (果冻豆 ) 4.2 Jelly Bean (果冻豆 ) 5.0 Lime Pie (酸橙派)
  • 20. Google PlayGoogle Play 前名为Android Market,是一个由Google为Android设备开发的在线应用程序商店。 一个名为“Play Store”的应用程序会预载在允许使用Google Play的手机上,可以让用户去浏览、下载及购买在Google Play上的第三方应用程序。 2012年3月7日,Android Market服务与Google Music、Google 图书、Google Play Movie集成,并将其更名为Google Play。 但是,这些服务在一些国家和地区是无法使用的,如台湾。 我们也可以将自己开发的程序发布到市场中,但你需要申请一个Google Play账户。这也成为了Andrid开发人员除了上班赚钱的另外一条致富途径了。 豌豆荚??
  • 21. 简单地前瞻:Android是什么手机设备的软件栈,包括 一个完整的操作系统 中间件 关键的应用程序 底层是linux内核 安全管理 内存管理 进程管理 电源管理 硬件驱动
  • 22. Android的平台架构及特性Android系统从底向上一共分了4层,每一层都把底层实现封装,并暴露调用接口给上一层。
  • 23. Android系统结构图中文版
  • 24. Linux内核层解析Linux内核(Linux Kernel) Android运行在linux kernel 2.6之上,但是把linux内受GNU协议约束的部分做了取代,这样在Android的程序可以用于商业目的。 主要组成部分: 显示驱动,用于控制整体系统的屏幕显示效果。 摄像头驱动,用于控制摄像头硬件与系统之间的链接。 内存驱动,用于控制系统对内存硬件的操作。 绑定进程间通信,用于控制程序间的相互调用传递信息。 键盘驱动,用于控件键盘的操作。 WiFi,用于控制无线网络的控制及操作。 音频驱动,用于操作喇叭和麦克的控制。 电源管理,用于控制电池电量及电量消耗。 Linux 内核是硬件和软件层之间的抽象层
  • 25. 中间件部分解析中间件包括两部分:核心库和运行时(Libraries & Android Runtime) 核心库包括,SurfaceManager 显示系统管理库,负责把2D或3D内容显示到屏幕;Media Framework 媒体库,负责支持图像,支持多种视频和音频的录制和回放;SQLite 数据库,一个功能强大的轻量级嵌入式关系数据库;WebKit 浏览器引擎等。 Dalvik虚拟机:区别于Java虚拟机的是,每一个Android 应用程序都在它自己的进程中运行,都有一个属于自己的Dalvik 虚拟机,这一点可以让系统在运行时可以达到优化,程序间的影响大大降低。Dalvik虚拟机并非运行Java字节码,而是运行自己的字节码。
  • 26. Dalvik VM 和 JVM 的比较区别 jvm dalvik vm 编译后文件格式 .java->.class->.jar .java->.class->.dex->.odex 基于的架构 基于栈的架构 基于寄存器的架构 jdk javacsdk dex
  • 27. Dalvik VM 和 JVM的比较
  • 28. 应用程序框架层解析应用程序框架(Application Framework) 丰富而又可扩展性的视图(Views),可以用来构建应用程序, 它包括列表(lists),网格(grids), 文本框(text boxes),按钮( buttons), 可嵌入的web 浏览器。 内容提供者(Content Providers)使得应用程序可以访问另一个应用程序的数据(如联系人数据库), 或者共享它们自己的数据。 资源管理器(Resource Manager)提供非代码资源的访问,如本地字符串,图形,和布局文件( layoutfiles )。 通知管理器(Notification Manager) 使得应用程序可以在状态栏中显示自定义的提示信息。 活动管理器( Activity Manager) 用来管理应用程序生命周期并提供常用的导航回退功能。
  • 29. 应用程序层解析应用程序 (Applications) Android 系统会内置一些应用程序包包括email 客户端,SMS 短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用JAVA 语言编写的。
  • 30. Android 应用程序组件概述如果你想从事Android应用程序开发,那么了解Android应用程序的思想是非常必要的。Android应用程序没有统一的入口(例如main()方法),各个应用之间是相互独立的,并且运行在自己的进程当中。 根据完成的功能不同,Android划分了四类核心的组件类: Activity、Service、Broadcast Receiver 和 ContentProvider 相同组件和不同组件之间的导航通过Intent来完成 Android还定义了View类来显示可视化界面 例如菜单、对话框、下拉列表等。 下面逐一介绍各个组件的意义和用法
  • 31. Activity 组件介绍 Activity是Android组件中最基本也是最常用的一种组件,在一个Activity应用中,一个Activity通常是一个单独的屏幕(界面)。每一个Activity都被实现为一个独立的类,并且集成于Activity这个基类。这个Activity类将会显示有几个Views控件组成的用户接口,并对事件做出响应。大部分的应用都会包含多个屏幕。例如,一个短消息应用程序将会有一个屏幕用于显示联系人的列表,第二个屏幕用于写短消息,同时还会有用于浏览旧短消息及进行系统设置的屏幕。每一个这样的屏幕就是一个Activity。 通过调用startActivity()方法可以从一个屏幕导航到另一个屏幕,打开Activity的条件被分装在Intent中。 当一个新的屏幕打开后,前一个屏幕将会暂停,并保存在历史的堆栈中。用户可以返回到历史堆栈中的前一个屏幕。当屏幕不在使用时,还可以从历史堆栈中删除。默认情况下,Android将会保留从主屏幕到每一个应用的运行屏幕。
  • 32. Service 组件介绍一个Service是一种长生命周期的、没有用户界面的程序。比较好的一个例子就是正在从播放列表中播放歌曲的媒体播放器。在一个媒体播放器的应用中,应该会有多个Activity,让使用者可以选择歌曲并播放歌曲。然而,音乐重放这个功能并没有对应的Activity,因为使用者会认为在导航到其他屏幕时音乐应该还在播放。在这个例子中,媒体播放器这个Activity会使用Context.startService()来启动一个Service,从而可以在后台保持音乐播放。同时,系统也将保持这个Service一直执行,直到这个Service运行结束。 另外,我们还可以通过使用Context.bindService()方法连接到一个Service上(如果这个Service还没有运行则将它启动)。当连接到一个Service之后,我们还可以通过Service提供的借口与它进行通信。拿媒体播放器这个例子来说,我们还可以进行暂停、重播等操作。
  • 33. Broadcast Receiver组件Broadcast Receiver 是为了实现系统广播而提供的一种组件。例如,我们可以发出一种广播来检测手机电量的变化,这个时候就可以定义一个Broadcast Receiver来接受广播,当手机电量较低时提醒用户。
  • 34. Content Provider & View 组件我们知道Android的应用程序之间相互独立,各个组件的运行在不同的线程当中,这就意味着数据是不能共享的。如何使得不同的组件数据的共享呢?Android通过使用Content Provider来实现不同组件之间的数据共享。 View是Android中图形用户界面的基类,提供了可视化界面的展示。Android的图形界面展示可以分为三层:底层是Activity;Activity上面是Window;Window上面是Views。View又可以分为View和ViewGroup。View是指基本的控件,例如按钮、单选框、多选框、菜单等;ViewGroup是指布局控件,即用来控制界面中的空间如何布局摆放的。
  • 35. Intent 组件介绍Intent是不同组件之间相互导航的纽带,封装了不同组件之间导航查找的条件。在Intent的描述结构中,有两个最重要的部分:动作和动作对应的数据。典型的动作类型有MAIN(Activity的门户)、VIEW、PICK、EDIT等。而动作对应的数据则以URI的形式进行表示。例如,要查看一个人的联系方式,你需要创建一个动作类为VIEW的Intent,以及一个表示这个人的URI。 Intent的另一个典型的应用就是在不同的Activity之间充当“信使”,传递数据。
  • 36. 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应用程序的开发。
  • 37. Android 的优势我们可以把Android、Symbian 和 Win CE放在一起来比较各自的优缺点,但是,我们很难讲Android与Java ME谁好谁坏,因为,他们的出发点和应用场合不一样。 Android的优势在于它的开发性、开源等优势,是一个优秀的移动设备操作系统。Java ME是一个移动设备开发的软件包,跨平台性是它最主要的特点。有人预言Android的出现将导致Java ME的死亡,我们并不认同这种看法,Symbian、Win CE等其他手机操作系统存在一天,Java ME的应用就不会减少,甚至我们可以在Android中开发Java ME应用,二者并不冲突。
  • 38. 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工具。 下面主要介绍两种常见的Andorid SDK开发环境的搭建: Google提供的整合开发环境 下载Android SDK,并借助ADT插件安装到Eclipse/MyEclipse
  • 39. Google提供整合开发环境获取SDK 工具包 下载地址:http://dl.google.com/android/adt/adt-bundle-windows-x86.zip 工具包,包含以下内容: Eclipse + ADT 插件 Android SDK Android Platform-tools 最新的Android 开发平台 最新的模拟器镜像
  • 40. 下载Android SDK,使用ADT插件Android SDK 管理器下载 Android SDK 安装及结构介绍 Android SDK 的在线安装 Android 系统环境变量配置
  • 41. 步骤1:下载 Android SDK 管理器 Android SDK的官方下载地址是:http://developer.android.com/sdk/。 在Android1.5之前Google提供了Android SDK开发包及完整下载,在 Android SDK1.6之后Google只提供了安装工具的在线安装。Android SDK的下载链接地址如下所示。 Android SDK 管理器下载
  • 42. 步骤2:安装 Android SDK 管理器及文件夹结构简介 我们这里以windows操作系统为例来讲述如何安装配置Android开发环境。 如上图所示,单击“android-sdk_r10-windows.zip”链接进行SDK下 载,下载该文件后解压该文件到操作系统的任意目录下。 Android SDK 安装及结构介绍目录结构或文件说明add-ons空目录保存Google插件工具platforms空目录保存不同版本SDKtoolsSDK工具SDK Manager.exe在线安装SDK的可执行文件SDK Readme.txt说明文件
  • 43. 步骤3:通过Android SDK 管理器在线下载安装各个系统版本 下载完成后,打开目录找到SDK Manager.exe可执行文件,双击执行该 文件,运行界面如下图所示: Android SDK 的在线安装 I这是一个Andrid SDK各个版本的管理器,我们需要在线下载安装所需要 的Andrid SDK版本。点击【Update All…】可以选择需要下载或安装的 Android不同的版本或插件。
  • 44. 当安装Android SDK或其他第三方的插件安装完毕后,我们可以发现我们的paltforms文件夹中多了Android SDK的信息,如下图所示: Android SDK 的在线安装 II 这些都是Android 各个版本的SDK,说明在线安装已经完成,其实在正 常情况下我们只需要下载我们需要的SDK版本即可,无需将所有版本的 SDK全部下载下来。同时Android SDK and AVD Manager中的 【Installed packages】中将显示已安装成功的SDK版本。
  • 45. 步骤4:配置Android 系统环境变量 确定安装完毕的android-sdk-windows文件夹中的tools文件夹和 platform-tools文件夹位置。将两个文件夹的绝对路径配置到系统环 境变量path中,以便我们能够在dos中直接使用android支持的各种命 令。 Android 系统环境变量配置 I
  • 46. Android 开发环境搭建 I步骤1:下载Java JDK 进行安装 JDK的官方下载网址:http://www.oracle.com/technetwork/java/javase/downloads/index.html
  • 47. 步骤2:在系统环境变量中配置JDK步骤1:配置java_home系统变量步骤2:配置Path系统环境变量步骤3:设置classPath系统变量演示系统环境变量的配置Android 开发环境搭建 II
  • 48. 步骤3:下载Eclispe Helios (3.6.2) 进行安装 Eclispe 的官方下载网址: http://www.eclipse.org/downloads/ 下载完毕后直接解压缩安装即可Android 开发环境搭建 III
  • 49. 步骤4:为Eclipse开发工具安装(Android Development Kit,ADT)插件演示ADT插件的在线安装过程Android 开发环境搭建 IV
  • 50. 步骤5:在Eclipse中配置ADT插件 点击菜单中的【windows】->【Preferences】定位Android SDK文件夹的位置演示ADT插件的配置过程Android 开发环境搭建 V
  • 51. 开发工具简介Eclipse SDK Manager SDK
  • 52. 创建一个Android模拟器点击手机形状的图形(android virtual device manager) 创建一个新的android模拟器
  • 53. 常见错误Android模拟器无法启动 错误提示为: invalid command-line parameter: Files\Android\android-sdk\tools/emulator-arm.exe.Hint: use '@foo' to launch a virtual device named 'foo'.please use -help for more information 解决方法: 1. 你的安装路径中有中文,那么就重新安装SDK,放在全英文路径下 2. 添加Android_SDK_HOME 环境变量,从变量名上看最好把ANDROID_SDK_HOME指向Android SDK目录,然后启动AVD Android模拟器无法保存数据 原因: 电脑意外重启,或者模拟器非法关闭. 正常情况下,当模拟器被开启后. 在x:\Documents and Settings\Administrator\.android\avd\xxx.avd的目录下会产生 cache.img.lock, hardware-qemu.ini.lock, sdcard.img.lock, userdata-qemu.img.lock这样的文件夹,用来标记当前模拟器设备已经开启,当模拟器设备关闭的时候 会自动删除这些文件夹 如果电脑意外重启或者模拟器被非法关闭. 这几个文件夹是不会被自动删除的. 系统任务android模拟器还处于打开状态. 新开启的模拟器就无法保存数据了 解决方法: 删除这些.lock的文件夹 “尚未注册网络”错误信息的解决办法 打开Android模拟器时,出现无信号,拔打电话或发短信时,提示“尚未注册网络”错误信息的解决方案如下。 场景一:你的电脑没有连接上互联网,同时也没有在局域网。 解决办法:右键点击网上邻居,选择"属性",在网络连接窗口中右键点击"本地连接",选择"属性",设置TCP/IP属性如下: IP地址:192.168.1.100 子网掩码:255.255.255.0 默认网关:192.168.1.100 首选DNS服务器:192.168.1.100 场景二:你的电脑没有连接上互联网,但在局域网。 解决办法:右键点击网上邻居,选择"属性",在网络连接窗口中右键点击"本地连接",选择"属性",设置TCP/IP属性如下: IP地址:设置成你所在局域网的IP,如:192.168.1.100 子网掩码:设置成你所在局域网的掩码,如:255.255.255.0 默认网关:设置成你所在局域网的网关,一般网关的IP格式为:*.*.*.1,如:192.168.1.1 首选DNS服务器:设置成你所在局域网的路由器IP,一般路由器的IP格式为:*.*.*.1,如:192.168.1.1 最后一种解决方案是:让你的电脑连接上互联网。
  • 54. 总结Android 操作系统的整体体系结构总体分为四层:Linux内核层、中间件层、应用程序框架层和应用程序层。 Android 系统拥有四大核心组件分别是:Activity组件、Service服务、Broadcast Receiver 和 ContentProvider 组成。同时掌握四大核心组件的功能及作用。 Android每个组件之间的通信依靠Intent对象完成,它充当了各个组件之间的“通信信使”。与此同时各个组件也需要依靠View组件一各种控件和图形的方式显示在屏幕上,便于用户进行操作完成各种功能和动作。而View组件又分为:View (按钮、文本框、下拉菜单等视图控件)和 ViewGroup(布局模式)两大部分。
  • 55. 作业请您简述Android系统的体系结构及各部分的功能? 请您阐述Intent对象在Android系统中的作用? 如何理解View及ViewGroup 之间的区别和联系? 请您阐述Android系统中的四大核心组件和服务都有那些?及其功能? 请您阐述Android系统与其他智能手机操作系统之间的差异。 请您阐述Android与JavaME之间的联系及区别? 实践1:按照要求上网下载Android SDK 管理器,搭建好Android运行环境。 实践2:安装和配置Eclipse开发环境。