第1章 千呼万唤始出来——Android的前世今生 1
1.1 Android的诞生 1
1.2 Android的优点 3
1.2.1 开放性 3
1.2.2 应用程序平等 3
1.2.3 应用程序间无界限 4
1.2.4 快速方便的应用程序开发 5
1.3 Android系统架构 6
1.3.1 应用程序 6
1.3.2 应用程序框架 7
1.3.3 Android运行时 8
1.3.4 系统库 9
1.3.5 Linux内核 10
1.4 Android与移动因特网 10
1.4.1 诺基亚的“四大支柱” 10
1.4.2 苹果公司的“大超市” 11
1.4.3 Google的“云” 12
1.5 Android的发展 12
1.5.1 Android开源应用 12
1.5.2 Android设备 13
1.5.3 Android平台 14
1.6 小结 15
第2章 而今迈步从头越——构建Android开发环境 16
2.1 系统需求 16
2.2 安装软件 17
2.2.1 安装JDK 17
2.2.2 安装Android SDK 17
2.2.3 安装Eclipse以及ADT 18
2.2.4 创建AVD 22
2.3 Android SDK 1.5初体验 23
2.4 构建第一个Android程序 26
2.5 解析Hello Android 29
2.5.1 应用程序构成 30
2.5.2 代码分析 31
2.6 调试程序 34
2.7 小结 38
第3章 一片冰心在玉壶——剖析Android应用程序核心 39
3.1 应用程序的基本组件 39
3.1.1 Activity简介 41
3.1.2 Service简介 42
3.1.3 BroadcastReceiver简介 43
3.1.4 ContentProvider简介 43
3.1.5 Intent——连接组件的纽带 44
3.2 应用程序的生命周期 44
3.3 近看Activity及其生命周期 48
3.3.1 创建Activity 48
3.3.2 Activity的生命周期 49
3.4 资源 57
3.4.1 创建、管理资源 58
3.4.2 使用资源 58
3.5 AndroidManifest.xml文件 61
3.5.1 AndroidManifest.xml文件的结构 61
3.5.2 在AndroidManifest.xml中声明权限 62
3.6 小结 64
第4章 淡汝浓抹总相宜——创建用户界面 65
4.1 Android用户界面初体验 65
4.1.1 View与ViewGroup 65
4.1.2 可视化控件 66
4.1.3 布局 69
4.1.4 音乐播放器用户界面(1) 82
4.2 菜单和对话框 85
4.2.1 菜单 85
4.2.2 对话框 91
4.2.3 音乐播放器用户界面(2) 97
4.3 进阶 99
4.3.1 响应用户界面的事件 99
4.3.2 用户界面的数据绑定 104
4.3.3 更改控件外观 109
4.3.4 音乐播放器用户界面(3) 112
4.4 小结 114
第5章 青鸟殷勤为探看——电话与短信应用 115
5.1 什么是Intent 115
5.2 解析Intent 118
5.2.1 显式Intent和隐式Intent 119
5.2.2 IntentFilter 119
5.3 用Intent激活电话拨号程序 121
5.3.1 拨号程序雏形 121
5.3.2 可输入电话号码的拨号程序 125
5.3.3 使用IntentFilter的拨号程序 128
5.4 用Intent实现一个简单的短信程序 129
5.4.1 创建TinySMS界面 129
5.4.2 设置权限 131
5.4.3 发送短信 131
5.5 Android中电话和短信服务的包 133
5.6 小结 133
第6章 仙乐风飘处处闻——构建你的音乐播放器 134
6.1 Service简介 134
6.2 使用BroadcastReceiver 138
6.3 让TinyPlayer播放音乐 140
6.3.1 Service部分 140
6.3.2 Activity部分 144
6.4 小结 146
第7章 乱花渐欲迷人眼——使用外部数据和服务 147
7.1 实例1:通过URL获取网络资源 147
7.2 实例2:用HTTP POST提交表单 150
7.3 实例3:用SAX解析XML文件 153
7.4 实例4:利用Google API完成天气预报 162
7.4.1 用户界面设计与实现 163
7.4.2 解析天气信息 165
7.5 实例5:用DOM解析XML文件——构建实时地震信息列表 170
7.5.1 XML解析器:DOM和SAX 170
7.5.2 通过DOM构建实时地震信息列表 171
7.5.3 使用DOM解析 176
7.6 小结 179
第8章 日暮乡关何处是——使用位置服务和地图API 180
8.1 位置服务 180
8.1.1 获取位置信息 180
8.1.2 构造LocationProvider查询条件 183
8.1.3 跟踪位置变化 183
8.2 基于地图的应用 186
8.2.1 获取Map API密钥 187
8.2.2 使用MapView下载显示地图 189
8.2.3 在地图上标记当前位置 191
8.3 用地图显示地震信息 197
8.4 小结 201
第9章 为有源头活水来——使用SQLite、ContentProvider与Preferences处理数据 202
9.1 文件I/O 202
9.2 SQLite数据库 206
9.2.1 SQLite数据库介绍 206
9.2.2 创建/打开SQLite数据库 207
9.2.3 利用SQLiteDatabase对象操作数据库 210
9.2.4 Cursor的使用 216
9.3 ContentProvider 220
9.3.1 定义ContentProvider 220
9.3.2 使用ContentResolver查询、更改数据 227
9.4 使用Preferences存储应用程序数据 230
9.5 让TinyPlayer播放本地音乐文件 233
9.6 小结 236
第10章 珠箔银屏迤逦开——桌面组件的开发 237
10.1 桌面组件简介 237
10.2 快捷方式 238
10.2.1 在应用程序中添加快捷方式 238
10.2.2 在Launcher添加应用程序的快捷方式 242
10.3 实时文件夹 245
10.3.1 定义创建实时文件夹的Activity 245
10.3.2 定义支持实时文件夹的ContentProvider 248
10.4 桌面部件 251
10.5 小结 256
第11章 欲书花叶寄朝云——虚拟软键盘与输入法 257
11.1 软键盘输入法简介 257
11.2 创建软键盘输入法 259
11.2.1 软键盘输入法的AndroidManifest.xml 259
11.2.2 输入法和软键盘的核心类 260
11.2.3 输入法 264
11.2.4 根据目标输入类型调整输入法布局 264
11.2.5 获取输入内容 266
11.2.6 截获硬键盘按键事件 267
11.2.7 输入候选View 267
11.3 小结 268
第12章 试借君王玉马鞭——准备发布应用程序 269
12.1 Android应用程序发布概览 269
12.2 最终用户许可协议 269
12.3 应用程序签名 274
12.3.1 概述 274
12.3.2 签名策略 275
12.3.3 为应用程序签名 275
12.4 应用程序版本 277
12.4.1 版本管理 277
12.4.2 应用程序升级 278
12.5 小结 279
第13章 书中自有黄金屋——销售Android应用程序 280
13.1 Sun开发人员的苹果App Store传奇 280
13.2 Android Market简介 280
13.2.1 Android Market是什么 281
13.2.2 Android Market的优势 281
13.2.3 在Android Market上发布应用程序 282
13.3 发布Android应用程序的其他途径 284
13.4 小结 285
附录A 常用的Android常量 286
附录B ADB的使用 291
附录C 在模拟器中虚拟SD卡 293