第一部分 构建更好的基础
第1章 完善开发环境 2
1.1 可供选择的操作系统 2
1.2 Android SDK进阶 2
1.2.1 adb工具 3
1.2.2 用Monkey对应用UI做压力测试 5
1.2.3 在Android上使用Gradle构建系统 6
1.2.4 用ProGuard优化和混淆代码 9
1.3 Android库项目以及第三方库 9
1.3.1 使用JAR库 9
1.3.2 创建库项目 10
1.4 版本控制和源代码管理 11
1.5 熟练使用IDE 13
1.5.1 调试Android应用 14
1.5.2 使用lint做静态代码分析 15
1.5.3 重构代码 18
1.6 Android设备上的Developer选项 20
1.7 小结 22
1.8 延伸阅读 22
第2章 在Android上编写高效的Java代码 23
2.1 比较Android上的Dalvik Java和
Java SE 23
2.2 优化Android上的Java代码 25
2.2.1 Android上的类型安全枚举 26
2.2.2 Android中增强版的for循环 27
2.2.3 队列、同步和锁 28
2.3 管理和分配内存 30
2.4 Android中的多线程 33
2.4.1 Thread类 34
2.4.2 AsyncTask 35
2.4.3 Handler类 36
2.4.4 选择合适的线程 41
2.5 小结 41
2.6 延伸阅读 42
第二部分 充分利用组件
第3章 组件、清单及资源 44
3.1 Android组件 44
3.1.1 Activity 44
3.1.2 Service 45
3.1.3 BroadcastReceiver 45
3.1.4 ContentProvider 46
3.1.5 Application 46
3.1.6 应用架构 48
3.2 应用程序清单 49
3.2.1 manifest元素 49
3.2.2 Google Play过滤器和权限 50
3.2.3 application节点元素 51
3.2.4 组件元素和属性 52
3.2.5 Intent过滤 53
3.3 resources和assets 55
3.3.1 高级string资源 55
3.3.2 本地化 57
3.3.3 使用资源限定符 58
3.3.4 使用assets 59
3.4 小结 59
3.5 延伸阅读 60
第4章 Android用户体验和界面设计 61
4.1 用户故事 61
4.2 Android UI设计 62
4.2.1 导航 63
4.2.2 用户界面原型 63
4.3 Android用户界面元素 64
4.4 Android应用程序文本 65
4.4.1 字体 65
4.4.2 文本布局 65
4.5 尺寸和大小 66
4.5.1 推荐尺寸 66
4.5.2 图标大小 67
4.5.3 字体大小 67
4.6 颜色 68
4.7 图像和图标 69
4.7.1 典型透视 69
4.7.2 几何离子 70
4.7.3 人脸识别 70
4.8 可用性 71
4.9 用户奖励机制 71
4.10 小结 73
4.11 延伸阅读 73
第5章 Android用户界面操作 75
5.1 Activity和Fragment 75
5.2 使用多个屏幕 77
5.3 设计自定义视图 79
5.3.1 View的生命周期 79
5.3.2 钢琴键盘部件 80
5.4 多点触控 85
5.4.1 PointerCoordinates 87
5.4.2 旋转手势 87
5.5 OpenGL ES 89
5.6 小结 90
5.7 延伸阅读 90
第6章 Service和后台任务 91
6.1 何时以及如何使用Service 91
6.2 理解Service生命周期 92
6.2.1 Service的创建和销毁 92
6.2.2 启动Service 92
6.2.3 绑定Service 94
6.2.4 保持活跃 96
6.2.5 停止Service 97
6.3 在后台运行 99
6.3.1 IntentService 99
6.3.2 并行执行 100
6.4 和Service通信 103
6.4.1 使用Intent进行异步消息传递 103
6.4.2 本地绑定的Servcie 104
6.5 小结 107
6.6 延伸阅读 108
第7章 Android IPC 109
7.1 Binder简介 109
7.1.1 Binder地址 110
7.1.2 Binder事务 111
7.1.3 Parcel 112
7.1.4 link to death 114
7.2 设计API 114
7.2.1 AIDL 115
7.2.2 Messenger 119
7.2.3 使用库工程包装API 122
7.3 保护远程API 125
7.4 小结 126
7.5 延伸阅读 126
第8章 掌握BroadcastReceiver以及配置更改 127
8.1 BroadcastReceiver 128
8.1.1 本地BroadcastReceiver 129
8.1.2 普通广播和有序广播 130
8.1.3 粘性广播 132
8.1.4 定向广播 132
8.1.5 启用和禁用广播接收器 133
8.1.6 系统广播Intent 133
8.2 设备配置更改 137
8.3 小结 137
8.4 延伸阅读 138
第9章 数据存储和序列化技术 139
9.1 Android持久化选项 139
9.2 在偏好文件中存储数据 140
9.3 用户选项和设置用户界面 142
9.4 高性能ContentProvider 144
9.4.1 Android数据库设计 144
9.4.2 创建和升级数据库 145
9.4.3 实现查询方法 147
9.4.4 数据库事务 149
9.4.5 在ContentProvider中存储二进制数据 150
9.5 序列化数据 152
9.5.1 JSON 152
9.5.2 使用Gson进行高级JSON处理 154
9.5.3 Google Protocol Buffer 156
9.6 应用数据备份 159
9.7 小结 160
9.8 延伸阅读 160
第10章 编写自动化测试 162
10.1 Android测试原则 162
10.1.1 测试内容 163
10.1.2 基本的单元测试 163
10.1.3 测试Activity 165
10.1.4 测试Service 167
10.1.5 测试ContentProvider 168
10.1.6 运行测试 171
10.2 持续集成 172
10.3 小结 173
10.4 延伸阅读 173
第三部分 超越极限
第11章 高级音频、视频及相机应用 176
11.1 高级音频应用 176
11.1.1 低延迟音频 176
11.1.2 OpenSL ES 179
11.1.3 文字转语音 183
11.1.4 语音识别 184
11.2 使用OpenGL ES 2.0处理视频 186
11.3 使用OpenGL ES 2.0处理相机 190
11.4 多媒体编码 192
11.5 小结 196
11.6 延伸阅读 196
第12章 Android应用安全问题 197
12.1 Android安全的概念 197
12.1.1 签名和密钥 197
12.1.2 Android权限 198
12.1.3 保护用户数据 199
12.1.4 验证调用应用 200
12.2 客户端数据加密 201
12.2.1 Android的加密API 201
12.2.2 生成密钥 201
12.2.3 加密数据 202
12.2.4 解密数据 202
12.2.5 处理加密数据 203
12.3 Android的钥匙链管理 204
12.4 设备管理API 208
12.5 小结 211
12.6 扩展阅读 212
第13章 地图、位置和活动API 213
13.1 融合位置管理器 213
13.2 集成Google Maps v2 214
13.3 使用Google Maps 216
13.3.1 地图标记 217
13.3.2 绘制圆形区域 218
13.3.3 绘制多边形 219
13.3.4 有用的位置API工具 220
13.3.5 地理编码 221
13.4 使用LocationClient 222
13.5 地理围栏 223
13.6 活动识别 225
13.7 小结 227
13.8 延伸阅读 228
第14章 本地代码和JNI 229
14.1 关于CPU体系结构 229
14.2 用C语言编写Android应用程序 230
14.2.1 Android NDK编译脚本 230
14.2.2 本地Activity 231
14.3 使用JNI 232
14.3.1 从Java调用本地函数 232
14.3.2 从本地调用Java方法 235
14.4 Android本地API 238
14.4.1 C语言库 238
14.4.2 本地Android日志 238
14.4.3 本地OpenGL ES 2.0 238
14.4.4 OpenSL ES中的本地音频 239
14.5 移植本地库到Android 239
14.6 小结 245
14.7 延伸阅读 245
第15章 隐藏的Android API 246
15.1 官方API和隐藏API 246
15.2 发现隐藏API 247
15.3 安全地调用隐藏API 249
15.3.1 从设备中提取隐藏API 249
15.3.2 使用反射调用隐藏API 252
15.4 隐藏API示例 252
15.4.1 接收和阅读SMS 252
15.4.2 Wi-Fi网络共享 254
15.4.3 隐藏设置 255
15.5 小结 256
15.6 延伸阅读 256
第16章 深入研究Android平台 257
16.1 解锁设备 258
16.1.1 刷新出厂映像 259
16.1.2 解锁非Nexus设备 259
16.1.3 社区支持的固件 260
16.2 Android源码 260
16.2.1 设置构建环境 260
16.2.2 构建并刷新固件 261
16.3 编写系统应用 262
16.3.1 平台证书 262
16.3.2 编写签名的应用 263
16.4 探索Android平台 265
16.4.1 设置IDE 265
16.4.2 Android项目 265
16.4.3 Android Linux Kernel 267
16.4.4 添加系统服务 267
16.4.5 加快平台开发周期 270
16.5 为AOSP贡献代码 271
16.6 小结 273
16.7 延伸阅读 273
第17章 网络、Web服务和远程API 274
17.1 Android上的网络调用 274
17.1.1 HttpUrlConnection 275
17.1.2 Volley 278
17.1.3 OkHttp和SPDY 280
17.1.4 Web Socket 281
17.2 集成Web服务 285
17.2.1 Google Static Maps v2 285
17.2.2 使用OAuth2访问Foursquare API 286
17.2.3 在Android中使用Facebook SDK 290
17.2.4 寻找在线Web服务和API 294
17.3 网络和功耗 294
17.3.1 一般准则 295
17.3.2 高效的网络轮询 296
17.3.3 服务器端推送 297
17.4 小结 299
17.5 延伸阅读 299
第18章 与远程设备通信 300
18.1 Android中的连接技术 300
18.2 Android USB 301
18.3 蓝牙低功耗 303
18.4 Android Wi-Fi 306
18.4.1 服务发现 306
18.4.2 Wi-Fi Direct 308
18.5 设备上的Web服务 311
18.5.1 使用Restlet创建RESTful API 311
18.5.2 Web Socket服务器 315
18.6 小结 317
18.7 延伸阅读 317
第19章 Google Play Service 318
19.1 授权 318
19.2 Google Drive应用程序数据 321
19.3 Google Cloud Endpoint 324
19.4 谷歌云消息 327
19.5 Google Play Game Service 331
19.5.1 数据消息 333
19.5.2 消息策略 334
19.6 小结 335
19.7 延伸阅读 336
第20章 在Google Play Store发布应用 337
20.1 应用内付费 338
20.1.1 消费产品 340
20.1.2 应用内订阅 340
20.2 在应用内添加广告 341
20.2.1 定位广告 342
20.2.2 广告颜色 343
20.2.3 插播式广告 343
20.3 应用程序许可 344
20.4 APK扩展文件 345
20.4.1 创建扩展文件 346
20.4.2 下载扩展文件 346
20.5 小结 348
20.6 延伸阅读 348
· · · · · · (
收起)