前言 1
第一部分 工具和基础 7
第1章 工具包 7
1.1 Android SDK的安装和系统需求 7
1.2 小试牛刀:确认安装是否能够正常工作 16
1.3 SDK的组件 24
1.4 保持版本最新 30
1.5 示例代码 32
1.6 关于代码阅读 34
第2章 Android开发之Java必备基础 35
2.1 Android正在重塑客户端Java 35
2.2 Java类型系统 36
2.3 作用域 57
2.4 Java编程惯例 61
第3章 Android应用的主要组件 75
3.1 Android平台和传统编程模型的对比 75
3.2 活动、意图和任务 76
3.3 其他Android组件 78
3.4 静态应用资源和上下文 82
3.5 Resources 87
3.6 Android应用的运行时环境 88
3.7 组件生命周期 89
3.8 Android应用打包:apk文件 91
3.9 把软件移植到Android中 92
第4章 应用发布之前的准备工作 93
4.1 应用签名 93
4.2 把应用投放到Android市场 102
4.3 Google地图API密钥 104
4.4 指定API级别的兼容性 104
4.5 兼容不同的屏幕类型 105
第5章 Android软件开发工具Eclipse 107
5.1 Eclipse相关的概念和术语 108
5.2 Eclipse视图和透视图 113
5.3 Eclipse中的Java编程 115
5.4 Eclipse和Android 117
5.5 预防Bug并保持代码整洁 118
5.6 Eclipse特性和替代品 125
第6章 Android下的高效Java编程 126
6.1 Android框架 126
6.2 组织Java源代码 133
6.3 Android中的并发编程 135
6.4 序列化 148
第二部分 Android框架 159
第7章 构建视图 159
7.1 Android GUI架构 159
7.2 组装图形界面 163
7.3 控制器布局 168
7.4 菜单栏 184
第8章 Fragment和跨平台支持 187
8.1 创建Fragment 188
8.2 Fragment生命周期 190
8.3 Fragment管理器 192
8.4 Fragment事务 193
8.5 兼容包 198
第9章 二维和三维图形的绘制 199
9.1 自己动手开发部件 199
9.2 Bling 220
第10章 数据处理和数据持久化 232
10.1 关系数据库概览 232
10.2 SQLite 233
10.3 SQL语言 233
10.4 Android应用中的SQL和以数据库为中心的数据模型 243
10.5 Android数据库类 244
10.6 Android应用的数据库设计 245
10.7 使用数据库API:MJAndroid 248
第三部分 Android的框架应用 263
第11章 运行良好的应用框架 263
11.1 对生命周期进行可视化 263
11.2 Fragment生命周期可视化 274
11.3 Activity类和运行良好的应用 277
11.4 Application类的生命周期方法 278
11.5 活动之间流畅直观的用户体验 281
第12章 使用内容提供者 286
12.1 理解内容提供者 287
12.2 定义提供者的公用API 290
12.3 编写并集成内容提供者 295
12.4 文件管理和二进制数据 296
12.5 Android MVC和内容查看器 298
12.6 一个完整的内容提供者代码:SimpleFinchVideoContentProvider 299
12.7 声明自己的内容提供者 307
第13章 探讨内容提供者 309
13.1 开发RESTful类型的Android应用 310
13.2 Network MVC 311
13.3 Network MVC方式的优点小结 312
13.4 代码实例:动态列出并缓存YouTube视频内容 314
13.5 Finch YouTube视频示例的源代码结构 315
13.6 视频搜索应用的各个步骤 316
第四部分 高级话题 339
第14章 多媒体 339
14.1 音频和视频 339
14.2 播放音频和视频 340
14.3 录制音频和视频 344
14.4 存储的媒体内容 350
第15章 地理位置和地图定位 351
15.1 基于地理位置的服务 352
15.2 地图定位 353
15.3 Google Maps Activity 353
15.4 MapView和MapActivity 354
15.5 使用MapView 355
15.6 MapView和MyLocationOverlay初始化 355
15.7 暂停和恢复MapActivity 358
15.8 通过菜单按钮控制地图 359
15.9 通过键盘操作地图 361
15.10 没有地图的地理位置 362
第16章 传感器、NFC、语音、手势和可访问性 371
16.1 传感器 371
16.2 近场通信 375
16.3 手势输入 386
16.4 可访问性 387
第17章 通信、身份认证、同步和社交媒体 390
17.1 账户信息 390
17.2 认证和同步 393
17.3 蓝牙 408
第18章 Android本地开发工具箱 424
18.1 本地方法和JNI调用 425
18.2 Android NDK 426
18.3 Android提供的本地库 430
18.4 编译自己定制的库模块 432
18.5 本地活动 435