第1部分:开发环境概览 3
第1章 Android操作系统概述 3
1.1 为什么选择Android 3
1.2 开放式手机联盟 4
1.3 Android运行环境 5
1.4 Android应用程序的组成部分 6
1.5 Android活动的生命周期 7
1.6 Android服务的生命周期 9
1.7 本书的组织结构 10
第2章 搭建Android开发环境 13
2.1 搭建开发环境 13
2.2 “Hello Android”程序 17
2.2.1 目标 18
2.2.2 创建一个新的Android应用程序:HelloWorld 18
2.2.3 HelloWorld程序代码 21
2.2.4 运行HelloWorld程序 23
第3章 使用Android开发环境 25
3.1 MicroJobs:本书中最主要的程序示例 25
3.2 Android和社交网络 25
3.3 下载MJAndroid源代码 27
3.4 简单浏览一下MJAndroid的代码结构 28
3.4.1 项目的主目录 28
3.4.2 源代码目录 29
3.4.3 资源文件目录 30
3.5 第一步:编译和运行MicroJobs程序 31
3.5.1 Eclipse和ADT插件 31
3.5.2 加载和启动Android应用程序 33
3.5.3 更进一步:哪里可能会出错 34
3.5.4 在Android手机上运行程序 37
3.6 小结 39
第4章 MJAndroid程序的初始化过程 40
4.1 AndroidManifest.xml文件中的初始化参数 40
4.2 MicroJobs.Java中的初始化代码 43
4.3 MicroJobs.java中的更多初始化代码 49
4.4 小结 53
第5章 Android应用程序的调试 54
5.1 工具 54
5.2 Eclipse Java编辑器 55
5.2.1 Java语言错误 55
5.2.2 Eclipse调试器 61
5.2.3 Logcat 63
5.2.4 Android Debug Bridge(adb) 68
5.2.5 DDMS:Dalvik调试监控服务 71
5.2.6 Traceview 72
5.3 小结 76
第6章 ApiDemos示例程序 78
6.1 ApiDemos的清单文件 78
6.2 查找某个范例的源代码 80
6.2.1 自定义标题范例 81
6.2.2 Linkify范例 81
6.3 向ApiDemos中添加范例 82
第7章 应用程序的签名和发布 85
7.1 测试程序 86
7.2 添加最终用户许可协议 87
7.3 创建并使用程序的图标和标签 87
7.4 程序发布前的收尾工作 87
7.5 程序的版本管理 88
7.6 获取数字签名证书和API Key 88
7.6.1 为自己的应用程序创建一份数字签名证书 89
7.6.2 在程序的调试阶段获取数字签名证书 91
7.7 对程序进行数字签名 93
7.8 重新测试一遍签过名的应用程序 94
7.9 在Android电子市场上发布应用程序 94
7.9.1 注册成为Android开发者 94
7.9.2 上传应用程序 94
第2部分:Android程序设计 99
第8章 SQLite数据库和内容提供器 99
8.1 数据库 99
8.1.1 MicroJobsDatabase类的基本结构 100
8.1.2 从数据库中读取数据 105
8.1.3 修改数据库 108
8.2 内容提供器 113
8.2.1 NotePad简介 114
8.2.2 内容提供器 116
8.2.3 使用内容提供器 129
第9章 定位和地图 137
9.1 基于定位的服务 137
9.2 地图 139
9.3 Google Maps活动 139
9.4 MapView和MapActivity 140
9.5 MapView详解 140
9.5.1 MapView和MyLocationOverlay的初始化 141
9.5.2 MapActivity的暂停和继续 144
9.5.3 通过菜单按钮控制地图 145
9.5.4 通过手机上的按键控制地图 148
9.6 不显示地图情况下的定位 148
9.6.1 清单和布局文件 149
9.6.2 连接到定位功能模块并且获取位置更新 150
9.6.3 设定虚拟位置信息 153
第10章 创建用户界面 158
10.1 Android图形用户界面系统架构 158
10.1.1 模型 159
10.1.2 视图 159
10.1.3 控制器 160
10.1.4 将各部分组合起来 160
10.2 创建图形用户界面 162
10.3 连接到控制器 167
10.3.1 模型的监听 169
10.3.2 监听触摸屏事件 174
10.3.3 监听按键事件 177
10.3.4 事件处理的其他方法 178
10.3.5 更进一步:焦点和线程 180
10.4 菜单 184
第11章 常用的用户界面组件 186
11.1 Android常用用户界面组件 187
11.1.1 TextView组件和EditView组件 187
11.1.2 Button和ImageButton 190
11.1.3 Adapters接口和AdapterViews组件 191
11.1.4 复选框组件,单选框组件和下拉列表组件 192
11.2 容器组件 197
11.2.1 Gallery组件和GridView组件 197
11.2.2 ListView容器组件和ListActivity活动 201
11.2.3 ScrollView容器组件 203
11.2.4 TabHost组件 204
11.3 布局 207
11.3.1 框架布局 208
11.3.2 线性布局 208
11.3.3 表格布局 211
11.3.4 绝对位置布局 213
11.3.5 相对位置布局 215
第12章 二维和三维绘图 218
12.1 编写用户自己的组件 218
12.1.1 布局 219
12.1.2 绘制画布 223
12.1.3 Drawables对象 234
12.1.4 位图 238
12.2 特效 240
12.2.1 阴影、渐变和滤镜 243
12.2.2 动画 244
12.2.3 OpenGL绘图 249
第13章 进程间通信 252
13.1 意图:简单、低成本的进程间通信 253
13.1.1 进程间通信中使用的意图对象 253
13.1.2 Activity对象和用户界面导航 254
13.1.3 使用意图对象的一个例子 254
13.1.4 通过进程间通信机制获取结果 257
13.2 远程方法和AIDL 260
13.2.1 Android接口定义语言 260
13.2.2 AIDL所生成的代码 265
13.2.3 发布接口 268
13.2.4 Android进程间通信和JNI的比较 269
13.2.5 Binder不能完成的工作 270
13.2.6 Binder和Linux操作系统 270
第14章 电话操作 271
14.1 发起通话的简便方式 271
14.1.1 创建使用call方法的应用程序 272
14.1.2 将call方法嵌入到程序中 273
14.2 通过Eclipse调试器考察代码 274
14.2.1 创建一个Intent对象实例 276
14.2.2 向Intent对象中添加数据 276
14.2.3 发起一个通话 277
14.3 意外的处理 277
14.4 Android系统中程序级别的模块化和电话功能 278
第15章 通话状态和Android电话类 279
15.1 由android.telephony包提供的功能 279
15.1.1 android.telephony包概述 279
15.1.2 应用程序的访问限制 280
15.1.3 监控当前通话状态的一个示例 281
15.2 深入Android电话功能内部 283
15.2.1 android.internal.telephony包中的进程间通信和AIDL 284
15.2.2 android.internal.telephony包的概述 284
15.2.3 android.internal.telephony.gsm包概述 287
15.2.4 深入了解Android电话模块 291
15.3 Android和VoIP技术 295