1. 前言
1.1. 什么是3G、4G
Ÿ 第三代移动通信技术(3rd - Generation),速率一般在几百Kbps,较之前的2G和2.5G在数据传输速度上有很大提升。
Ÿ 第四代移动通信技术(4th - Generation),速度可达到100Mbps以上,几乎可以满足人们的所有传输数据的需求。
Ÿ 目前主流的3G技术标准有三种:
WCDMA:全球80%以上的3G网络都是采用此种制式。中国联通运营。186
CDMA2000:目前日韩及北美使用较多。中国电信运营。 189
TD-SCDMA:中国自主知识产权的3G通信技术。中国移动运营。 188
Ÿ 目前主流的4G技术为LTE,但还没有被广泛应用:
GSM à GPRS à EDGE à WCDMA à HSDPA à HSDPA+ à LTE
1.2. 什么是Android
Ÿ Android本义指“机器人”,Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,官方中文名:安卓 。
Ÿ Android系统早期由原名为"Android"的公司开发,谷歌在2005年收购"Android.Inc"后,继续对Android系统开发运营。
Ÿ 底层Linux内核只提供基本功能,其他的应用软件则由各公司自行开发,大部分程序以Java语言编写。
Ÿ 由于Android系统的开源特性,很多制造商都在生产Android系统的设备,如:摩托罗拉、HTC、三星、索爱、LG、小米、华为、魅族等。
Ÿ Android系统除了运行在智能手机上之外,还可以用做平板电脑、电视、汽车等很多设备上。
Ÿ Android系统架构图:
1.3. Android的版本升级
Ÿ 1.5 Cupcake(纸杯蛋糕)
拍摄/播放影片,并支持上传到Youtube
支持立体声蓝牙耳机,同时改善自动配对性能
最新的采用WebKit技术的浏览器,支持复制/贴上和页面中搜索
GPS性能大大提高
提供屏幕虚拟键盘
主屏幕增加音乐播放器和相框widgets
应用程序自动随着手机旋转
短信、Gmail、日暦,浏览器的用户接口大幅改进,如Gmail可以批量删除邮件
相机启动速度加快,拍摄图片可以直接上传到Picasa
来电照片显示
Ÿ 1.6 Donut(甜甜圈)
重新设计的Android Market
手势支持
支持CDMA网络
文字转语音系统(Text-to-Speech)
快速搜索框
全新的拍照接口
查看应用程序耗电
支持虚拟私人网络(VPN)
支持更多的屏幕分辨率。
支持OpenCore2媒体引擎
新增面向视觉或听觉困难人群的易用性插件
Ÿ 2.1 Éclair(闪电泡芙)
优化硬件速度
"Car Home"程序
支持更多的屏幕分辨率
改良的用户界面
新的浏览器的用户接口和支持HTML5
新的联系人名单
更好的白色/黑色背景比率
改进Google Maps 3.1.2
支持内置相机闪光灯
支持数码变焦
改进的虚拟键盘
支持蓝牙2.1
支持动态桌面的设计
Ÿ 2.2 Froyo(冻酸奶)
支持将软件安装至扩展内存
集成Adobe Flash 10.1支持
加强软件即时编译的速度
新增软件启动"快速"至电话和浏览器
USB分享器和WiFi热点功能
支持在浏览器上传档案
更新Market中的批量和自动更新
增加对Microsoft Exchange的支持(安全政策, auto-discovery, GAL look-up)
集成Chrome的V8 JavaScript引擎到浏览器
加强快速搜索小工具
更多软件能透过Market更新,类似2.0/2.1中的Map更新
速度和性能优化
Ÿ 2.3 Gingerbread(姜饼)
修补UI
支持更大的屏幕尺寸和分辨率(WXGA及更高)
系统级复制粘贴
重新设计的多点触摸屏幕键盘
本地支持多个镜头(用于视频通话等)和更多传感器(陀螺仪、气压计等)
电话簿集成Internet Call功能
强化电源、应用程序管理功能
新增下载管理员
优化游戏开发支持
多媒体音效强化
开放了屏幕截图功能
对黑色及白色的还原更加真实
Ÿ 3.x Honeycomb(蜂巢)
仅供平板电脑使用
Google eBooks上提供数百万本书
支持平板电脑大萤幕、高分辨率
新版Gmail
Google Talk视讯功能
3D加速处理
网页版Market(Web store)详细分类显示,依个人Android分别设定安装应用程序
新的短消息通知功能
专为平板电脑设计的用户界面(重新设计的通知列与系统列)
加强多任务处理的接口
重新设计适用大屏幕的键盘及复制粘贴功能
多个标签的浏览器以及私密浏览模式
快速切换各种功能的相机
增强的图库与快速滚动的联络人接口
更有效率的Email接口
支持多核心处理器
3.2优化7吋平板显示
Ÿ 4.0 Ice Cream Sandwich(奶油三明治)
虚拟按键,增大屏幕面积同时控制手机整体大小
桌面插件Widgets列表呈现在标签页中,与程序列表类似并且共存
文件夹更容易创建和管理,与iOS类似
可定制的桌面系统
可视语音邮件
日历支持缩放操作
Gmail离线搜索,两行预览,以及底部新快捷栏
音量下键+电源键组合截图
改进虚拟键盘纠错
从锁屏界面直接访问应用程序
优化复制粘贴
新版浏览器
新的Roboto字体
流量控制系统
相机应用
人脸识别,刷脸解锁
内置照片编辑器
多任务列表
新的图库布局和组织方式
联系人应用整合社交网络信息
Android Beam
http://digi.tech.qq.com/a/20111019/001579.htm
1.4. 主流智能手机操作系统
2. 搭建开发环境
2.1. 所需资源
Ÿ JDK,Java开发环境。下载地址:http://www.oracle.com
Ÿ Eclipse,IBM公司开发的一款开源IDE。http://www.eclipse.org
Ÿ Android SDK,Android 开发工具,包含开发Android程序所需类库、源码、文档、案例等资源。http://www.android.com
Ÿ ADT插件,ADT 是 Eclipse 平台下用来开发 Android 应用程序的插件。http://www.android.com
2.2. Eclipse安装ADT插件
2.3. 配置SDK路径
2.4. 启动虚拟机
Ø 点击机器人图标
Ø 弹出虚拟机管理器
Ø 修改虚拟机默认目录
指定环境变量android_sdk_home,通常指定为SDK所在目录,可以随意指定。
重启Eclipse之后将会以这个目录作为存放虚拟机文件的位置。
Ø 配置虚拟机
Ÿ Name:虚拟机的名字,可随意定义
Ÿ Target:虚拟机版本
Ÿ SD Card - Size:虚拟机的SDCard大小,会在本地硬盘创建指定大小的文件用来存储数据,模拟真实手机的SDCard
如果使用原有文件,可以选择File并点击Browse指定文件
Ÿ Snapshot: 保存快照,可以提高虚拟机启动速度
Ÿ Skin - Built-in:选择分辨率
HVGA:480x320
QVGA:320x240
WQVGA400:400x240
WQVGA432:432x240
WVGA800:800x480
WVGA854:854x480
也可以选择Resolution自行指定
Ø 成功进入Android操作系统界面
Ÿ 如果虚拟机显示无信号,需要对电脑的网络连接进行配置
无论电脑是否联网,IP地址、子网掩码、默认网关、首选DNS服务器都需要配置
Ÿ 电脑如果未连接局域网或互联网,可以见默认网关和首选DNS服务器配置成本机IP,例如:
Ÿ 电脑如果已连接局域网,需要将网关和首选DNS服务器进行设置,例如:
Ÿ 如果电脑已连接互联网,正常情况虚拟机不会显示无信号,重启虚拟机
2.5. 命令行操作
为了能在任意目录使用一下命令,需要将SDK目录下的platform-tools文件夹路径和tools文件夹路径配置到path环境变量中
Ÿ 列出可以使用的android版本
android list targets
Ÿ 列出可以使用的虚拟机
android list avd
Ÿ 创建虚拟机
android create avd –n <虚拟机名> -t <Target版本ID> -c <SD卡大小> -s <屏幕尺寸>
Ÿ 启动虚拟机
emulator –avd <虚拟机名>
Ÿ 显示已连接的设备
Ÿ 导入文件到手机
adb push <Windows源文件路径> <手机目标路径>
Ÿ 从手机导出文件
adb pull <手机源文件路径> <Windows目录路径>
Ÿ 安装程序
adb install <apk文件路径>
Ÿ 卸载程序
adb uninstall <包名>
Ÿ 重启adb
adb kill-server
abd start-server
3. 开发一个Android程序
3.1. 创建Android程序
Ø 创建Android Project
Ÿ Project name:项目名
Ÿ Build Target:Android版本
Ÿ Application name:程序名,显示在程序列表中,以及程序启动后的标题栏
Ÿ Package name:包名,程序的唯一标识
Ÿ Create Activity:选择程序启动时是否创建一个窗体,设置主窗体名字
Ÿ Min SDK Version:设置运行该程序所需的最低版本
3.2. 安装、卸载程序
Ÿ Eclipse安装
右键点击工程 – Run as – Android Application
Ÿ 虚拟机卸载
设置 – 应用程序 – 管理应用程序 – 选中要卸载的程序 – 卸载
3.3. 了解项目目录结构
Ÿ src:源代码
Ÿ gen:系统自动生成的文件
R.java 中记录了项目中各种资源ID
Ÿ res:系统资源,所有文件都会在R文件生成资源ID
drawable:图片
layout:界面布局
values:数据
anim:定义动画的XML
raw:原生文件
Ÿ assets:资源路径,不会在R文件注册
Ÿ project.properties:供Eclipse使用,读取该项目使用Android版本号。早期版本名为:default.properties
Ÿ AndroidManifest.xml:清单文件,在软件安装的时候被读取
Android中的四大组件(Activity、ContentProvider、BroadcastReceiver、Service)都需要在该文件中注册
程序所需的权限也需要在此文件中声明,例如:电话、短信、互联网、访问SD卡
Ÿ bin:二进制文件,包括class、资源文件、dex、apk等
Ÿ proguard.cfg:用来混淆代码的配置文件,防止别人反编译
3.4. 程序启动过程
Ÿ Eclipse将.java源文件编译成.class
Ÿ 使用dx工具将所有.class文件转换为.dex文件
Ÿ 再将.dex文件和所有资源打包成.apk文件
Ÿ 将.apk文件安装到虚拟机完成程序安装
Ÿ 启动程序 – 开启进程 – 开启主线程
Ÿ 创建Activity对象 – 执行OnCreate()方法
Ÿ 按照main.xml文件初始化界面
4. 演示案例
4.1. 电话拨号
Ÿ 搭建界面需要组件:TextView、EditText、Button
Ÿ 当点击Button时获取EditText中文本
Ÿ 使用Intent向系统内置的电话拨号器发送意图拨打电话
Ÿ 注册拨打电话权限
4.2. 查看程序错误信息
Ÿ Android程序中如果出错,错误不会显示在Console中,而是显示在LogCat界面下。可以从window – show view中打开
Ÿ 日志信息分为5个级别:verbose > debug > info > warn > error 高级的包含低级的
Ÿ 可以创建过滤器对日志进行过滤显示,点击绿色加号,可以按照tag、pid、level进行筛选
4.3. 将程序安装到真实手机
Ÿ 在电脑上安装手机驱动
有些手机自带驱动,有些没有,可以从官网下载。或者可以使用“豌豆荚”软件自动安装。
Ÿ 在手机设置中打开USB调试,将手机用USB数据线连接到电脑
我的手机是:三星 i9100
双核1228MHz、1GB RAM 、4GB ROM、480×800像素、Android 2.3、4.3英寸
Ÿ 检查Eclipse的设备管理器中是否显示出新设备
如果未能显示出设备,检查驱动安装是否正常,USB调试是否打开
Ÿ Eclipse安装程序
Eclipse上右键点击工程 – Run as – Android Application – 自动安装运行
Ÿ 手动打包安装
右键点击工程 – Export – Export Android Application – 选择或创建密钥对程序签名并打包生成apk文件
将apk文件放到手机的SD卡中,通过手机文件浏览器执行安装
4.4. 短信发送
Ÿ 搭建界面需要组件:TextView、EditText、Button
Ÿ 给Button添加监听器,当被点击的时候获取号码,获取内容
Ÿ 使用SmsManager发送短信
Ÿ 需要注册短信发送权限
4.5. 布局
Ø RelativeLayout(相对布局)
Ÿ android-sdk-windows/docs/guide/topics/ui/layout-objects.html#relativelayout
Ø TableLayout(表格布局)
android-sdk-windows/docs/guide/topics/ui/layout-objects.html#tablelayout
Ø FrameLayout(帧布局)
android-sdk-windows/docs/guide/topics/ui/layout-objects.html#framelayout
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
4.6. Junit
Ø 项目中添加测试类
Ÿ 在AndroidManifest.xml清单文件中添加配置
<instrumentation android:targetPackage="cn.itcast.junit" android:name="android.test.InstrumentationTestRunner" />
<uses-library android:name="android.test.runner" />
Ÿ 定义一个类继承AndroidTestCase,定义测试方法
Ÿ 在Outline视图下右键点击测试方法 – Run as – Android Junit Test
Ø 创建测试项目
Ÿ 创建Android Test Project
Ÿ 输入项目名,选择一个已存在的工程,Eclipse可以自动配置Junit环境
4.7. 日志信息
Ÿ 在LogCat视图中我们可以看到程序的日志信息,也可以在程序中输出信息到LogCat中
Ÿ 程序中我们可以使用Log类来输出信息
Ÿ System.out和System.err输出的信息也会显示在LogCat中,注意System.out输出信息是Info级别,System.err是Warn级别
5. 文件操作(File、XML、SharedPreferences)
5.1. 读写文件
Ø 写入文件到SD卡
Ÿ 需要在清单文件中注册权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Ÿ 2.1版本以下的SDCard位置和2.2之后版本不同
可以通过Environment.getExternalStorageDirectory()获取当前SDCard位置,兼容所有版本
Ÿ 获取SDCard状态
通过Environment.getExternalStorageState()方法获取SDCard当前状态
常量 Environment.MEDIA_MOUNTED 为已安装
Ø 写入文件
Ÿ 通过Context.openFileOutput(String name, int mode)可以获取一个文件输入流
name为文件名,mode为文件模式,有4种模式
输出流指向路径为:/data/data/包名/files/
Ÿ 文件模式在Context中有定义常量
MODE_PRIVATE 私有
MODE_WORLD_READABLE 其他程序可读(不可写)
MODE_WORLD_WRITEABLE 其他程序可写(不可读)
模式可以组合使用,例如:MODE_WORLD_READABLE + MODE_WORLD_WRITEABLE
MODE_APPEND 追加
Ø 读取文件
Ÿ 通过Context.openFileInput(String name)可以获取一个文件输入流
该输入流可以读取 /data/data/包名/files/ 路径下的文件
Ÿ 获取当前程序Files文件路径
ContextWrapper.getFilesDir()
5.2. XML
Ø Pull简介
Ÿ 常见的XML解析方式有三种,DOM、SAX、Pull,Android系统中推荐使用Pull
Ÿ Pull解析器是一个开源的Java项目,Android系统内部解析XML文件均为此种方式,也可用于JavaEE项目
Ÿ Android SDK中已经集成了Pull解析器,无需添加任何jar文件
Ÿ Pull解析器运行方式与SAX类似,提供各种事件的判断
Ÿ 官方网站:http://xmlpull.org/
Ø 使用Pull解析器解析XML文件
Ÿ Xml.newPullParser() 获得解析器
Ÿ parser.setInput(in, "UTF-8") 设置输入流以及编码
Ÿ parser.next() 获取下一个解析事件,得到一个事件代码
Ÿ XmlPullParser中定义了常量来标识各种解析事件
START_DOCUMENT、END_DOCUMENT 、START_TAG 、END_TAG 、