《Android移动应用开发(原收第3版) 卷2 提高篇》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:(美)达西,(美)康德尔著;北京麦秆创智信息技术有限公司译
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2013
  • ISBN:9787115299284
  • 页数:352 页
图书介绍:本书涵盖了Android开发从概念、技术到市场推广应用的全部话题,包括高级应用程序设计原则、高级用户界面设计原则、使用常用API、绘图、动画和图形编程、充分利用独有特性、应用程序发布和分发的进阶话题以及开发常用工具(调试桥和SQLite)。

第一部分 高级Android应用程序设计原则 2

第1章 线程及异步操作 2

1.1 异步处理的重要性 2

1.2 使用AsyncTask类 3

1.3 使用Thread类 5

1.4 使用Loaders 6

1.5 理解限制模式(StrictMode) 6

小结 7

参考资料和更多信息 7

第2章 使用服务 8

2.1 何时使用服务 8

2.2 理解服务的生命周期 8

2.3 创建服务 9

2.4 控制服务 13

2.5 实现远程接口 14

2.6 实现可包装(Parcelable)类 16

2.7 使用IntentService类 18

小结 21

参考资料和更多信息 21

第3章 使用SQLite应用程序数据库 22

3.1 创建SQLite数据库 23

3.2 创建、修改和删除数据库记录 24

3.3 使用事务(Transaction) 26

3.4 在SQLite数据库中执行查询 27

3.5 关闭和删除SQLite数据库 31

3.6 设计持久数据库 32

3.7 向应用程序界面绑定数据 34

小结 38

参考资料和更多信息 38

第4章 构建Android内容提供器 39

4.1 实现内容提供器 39

4.1.1 实现内容提供器接口 39

4.1.2 定义数据URI 40

4.1.3 定义数据列 40

4.1.4 实现重要的内容提供器方法 41

4.1.5 更新Manifest文件 45

4.2 使用内容提供器增强你的应用程序 46

小结 50

参考资料和更多信息 50

第5章 广播和Intent接收 51

5.1 发送广播 51

5.1.1 发送普通广播 51

5.1.2 发送有序广播 52

5.2 接收广播 52

5.2.1 注册广播接收 53

5.2.2 处理系统产生的广播 54

5.3 应用程序广播的安全性 56

小结 57

参考资料和更多信息 57

第6章 使用通知 58

6.1 向用户发出通知 58

6.2 关于兼容性 59

6.3 使用状态栏发布通知 59

6.3.1 使用NotificationManager服务 59

6.3.2 创建一个带有图标的简单文本通知 60

6.3.3 使用通知队列 60

6.3.4 更新通知 61

6.3.5 清除通知 62

6.4 让手机震动 63

6.5 灯光闪烁 63

6.6 发出声响 65

6.7 自定义通知 65

6.8 设计有用的通知 67

小结 67

参考资料和更多信息 67

第二部分 高级Android用户界面设计原则 70

第7章 设计强大的用户界面 70

7.1 遵循Android用户界面设计指南 70

7.2 使用菜单 71

7.2.1 使用选项菜单 71

7.2.2 使用内容菜单 73

7.2.3 使用弹出菜单 74

7.3 启用动作栏(Action Bar) 74

7.3.1 构建基本的动作栏 75

7.3.2 自定义动作栏 77

7.3.3 处理动作栏上应用程序图标点击 78

7.3.4 使用无需动作栏的页面 79

7.3.5 上下文动作模式简介 79

7.3.6 使用高级动作栏特性 79

7.4 使用样式 80

7.4.1 构建简单样式 80

7.4.2 使用样式继承 82

7.5 使用主题 83

小结 85

参考资料和更多信息 85

第8章 处理高级用户输入 86

8.1 使用文本输入法 86

8.1.1 使用软键盘 86

8.1.2 使用文本预测和用户词典 88

8.1.3 使用剪贴板框架 88

8.2 处理用户事件 89

8.2.1 监听触摸模式状态改变 89

8.2.2 监听全屏幕上的事件 90

8.2.3 监听长时单击 91

8.2.4 监听焦点改变 91

8.3 使用手势 92

8.3.1 在视图内检测用户动作 92

8.3.2 处理普通单点触控手势 93

8.3.3 处理普通多点触控手势 97

8.3.4 让手势更自然 100

8.3.5 使用拖曳(drag and drop)框架 100

8.4 使用轨迹球 100

8.5 处理屏幕方向改变 101

小结 102

参考资料和更多信息 103

第9章 设计应用程序辅助功能 104

9.1 探索辅助特性(Accessibility)框架 104

9.2 使用语音识别服务 105

9.3 使用语音合成(TTS)服务 108

小结 109

参考资料和更多信息 110

第10章 平板电脑和Google TV开发最佳实践 111

10.1 理解设备多样化 111

10.1.1 不要对设备属性做出假设 111

10.1.2 设计灵活的用户界面 111

10.1.3 吸引新的用户群 112

10.1.4 使用可选资源 112

10.1.5 在大屏幕上高效地利用屏幕空间 113

10.2 开发平板电脑应用程序 113

10.3 开发Google TV应用程序 114

10.3.1 为Google TV优化Web应用程序 115

10.3.2 为Google TV开发原生Android应用程序 116

10.4 开发亚马逊Kindle Fire应用程序 116

小结 117

参考资料和更多信息 117

第三部分 使用常用Android API 120

第11章 使用Android网络API 120

11.1 移动网络基础 120

11.2 理解带有网络的限制模式 120

11.3 访问因特网(HTTP) 121

11.3.1 从Web读取数据 121

11.3.2 使用HttpURLConnection 122

11.3.3 解析从网络获取的XML 122

11.3.4 处理网络中的异步操作 124

11.3.5 获取Android网络状态 128

小结 129

参考资料和更多信息 129

第12章 使用Android Web API 130

12.1 使用WebView浏览Web 130

12.1.1 设计带有WebView控件的布局 131

12.1.2 向WebView控件载入内容 131

12.1.3 为WebView控件添加功能 132

12.1.4 管理WebView状态 134

12.2 使用WebKit延伸Web应用 134

12.2.1 浏览WebKitAPI 135

12.2.2 扩展Android Web应用程序的功能 135

12.3 使用Flash 138

12.3.1 使用Flash应用程序 139

12.3.2 构建AIR应用程序 139

小结 139

参考资料和更多信息 139

第13章 使用位置服务API 140

13.1 使用全球定位服务(GPS) 140

13.1.1 在你的应用程序中使用GPS功能 140

13.1.2 确定设备的位置 141

13.1.3 定位你的模拟器 142

13.2 位置地理编码 143

13.3 在地图上标注位置 145

13.3.1 地图标注内容 145

13.3.2 地图标注视图 146

13.3.3 获得调试API Key 147

13.3.4 拖曳地图视图 149

13.3.5 缩放地图视图 149

13.3.6 标记点 150

13.4 位置服务扩展应用 154

小结 155

参考资料和更多信息 155

第14章 使用Android多媒体API 156

14.1 使用多媒体 156

14.2 使用摄像头 157

14.2.1 使用摄像头捕捉静态图像 157

14.2.2 使用视频 164

14.2.3 使用面部识别 166

14.3 使用音频 167

14.3.1 录制音频 167

14.3.2 播放音频 168

14.3.3 共享音频 169

14.3.4 搜索多媒体 169

14.3.5 使用铃音 170

小结 171

参考资料和更多信息 171

第15章 使用Android电话API 172

15.1 使用电话功能 172

15.1.1 为获取手机状态信息取得许可权限 172

15.1.2 获取通话状态 173

15.1.3 请求获取服务信息 174

15.1.4 监控信号强度和数据连接速度 175

15.1.5 使用电话号码 175

15.2 使用短消息 176

15.2.1 获得发送和接收短消息的许可权限 176

15.2.2 发送短消息 176

15.2.3 接收短消息 178

15.3 拨打和接听电话 180

15.3.1 拨打电话 180

15.3.2 接听电话 181

15.4 使用SIP 181

小结 182

参考资料和更多信息 182

第16章 使用Android硬件传感器 183

16.1 设备硬件进行交互 183

16.2 使用设备传感器 184

16.2.1 使用不同的传感器 184

16.2.2 为传感器配置Android Manifest文件 184

16.2.3 获取对传感器的访问 185

16.2.4 读取传感器数据 185

16.2.5 校正传感器 186

16.2.6 确定设备的方向 187

16.2.7 指北 187

16.3 监视电池 187

小结 189

参考资料和更多信息 189

第17章 使用Android可选硬件API 190

17.1 使用蓝牙 190

17.1.1 检查可用的蓝牙硬件 190

17.1.2 开启蓝牙 191

17.1.3 查询配对设备 191

17.1.4 搜索设备 191

17.1.5 建立设备间连接 192

17.2 使用USB 193

17.2.1 使用USB配件 193

17.2.2 充当USB Host 194

17.3 使用Android Beam 194

17.3.1 开启Android Beam数据发送 194

17.3.2 获取Android Beam消息 195

17.3.3 为Android Beam配置Manifest文件 197

17.4 使用Wi-Fi 197

17.4.1 Wi-Fi直连简介 197

17.4.2 监控Wi-Fi状态 198

小结 200

参考资料和更多信息 200

第四部分 Android中的绘画、动画与图形编程 202

第18章 开发Android 2D图形应用程序 202

18.1 屏幕绘图 202

18.2 使用文字 205

18.2.1 使用默认字体 205

18.2.2 使用自定义字体 207

18.2.3 测量文字所需的屏幕尺寸 207

18.3 使用位图 207

18.3.1 在画布上绘制位图 207

18.3.2 缩放位图 208

18.3.3 使用Matrix变换位图 208

18.4 使用图形 209

18.4.1 用XML资源定义图形 209

18.4.2 使用程序定义图形 210

18.4.3 绘制各种图形 210

18.5 使用硬件加速功能 215

18.5.1 控制硬件加速 215

18.5.2 调校硬件加速 215

小结 216

参考资料和更多信息 216

第19章 使用动画 217

19.1 探索Android的动画能力 217

19.1.1 使用逐帧动画 217

19.1.2 使用补间动画 219

19.1.3 使用属性动画 223

19.2 使用不同的插补器(Interpolator) 227

小结 227

参考资料和更多信息 227

第20章 开发Android 3D图形应用程序 228

20.1 使用OpenGL ES 228

20.1.1 在Android中使用OpenGL ES 228

20.1.2 保证设备兼容性 229

20.2 在Android SDK中使用OpenGL ES API 229

20.3 手工处理OpenGL ES任务 230

20.3.1 创建SurfaceView 230

20.3.2 启动OpenGL ES线程 232

20.3.3 初始化EGL 233

20.3.4 初始化GL 234

20.3.5 屏幕绘制 235

20.4 绘制3D物体 236

20.4.1 绘制顶点(Vertices) 236

20.4.2 为顶点着色 237

20.4.3 绘制更多复杂物体 237

20.4.4 照亮你的场景 238

20.4.5 为对象赋予材质 240

20.5 与Android视图和事件进行交互 241

20.5.1 允许OpenGL线程向应用程序线程发送信息 241

20.5.2 允许应用程序线程向OpenGL线程发送信息 242

20.6 清理OpenGL ES 244

20.7 使用GLSurfaceView(Easy OpenGL ES) 244

20.8 使用OpenGL ES 2.0 247

20.8.1 为OpenGL ES 2.0配置应用程序 247

20.8.2 获取OpenGL ES 2.0平面 247

20.9 使用RenderSeript 250

20.9.1 定义RenderScript功能 251

20.9.2 渲染到自定义View控件 254

小结 256

参考资料和更多信息 256

第21章 使用Android NDK 257

21.1 决定何时使用Android NDK 257

21.2 安装Android NDK 258

21.3 探索Android NDK 258

21.4 创建自己的NDK工程 259

21.4.1 使用Java调用原生代码 259

21.4.2 处理参数和返回值 260

21.4.3 在原生代码中使用异常 261

21.4.4 使用原生Activity 262

21.5 提升图形处理性能 263

21.6 与RenderScript的比较 263

小结 264

参考资料和更多信息 264

第五部分 充分利用Android的特性 266

第22章 扩展Android应用程序 266

22.1 增强你的应用程序 266

22.2 使用应用程序小插件 267

22.2.1 创建应用程序小插件 267

22.2.2 安装应用程序小插件 273

22.2.3 成为小插件Host 273

22.3 使用动态壁纸(Live Wallpaper) 273

22.4 创建动态壁纸 274

22.4.1 创建动态壁纸服务 274

22.4.2 创建动态壁纸配置 276

22.4.3 为动态壁纸配置Android Manifest文件 276

22.4.4 安装动态壁纸 277

22.5 成为内容类型处理器(Content Type Handler) 277

22.6 确定Intent动作和MIME类型 278

22.6.1 实现Activity处理Intent 279

22.6.2 注册Intent过滤器 279

小结 280

参考资料和更多信息 280

第23章 使用应用程序搜索 281

23.1 在应用程序内启用搜索 281

23.2 启用全局搜索 289

小结 290

参考资料和更多信息 290

第24章 使用云消息框架 291

24.1 C2DM概览 291

24.1.1 理解C2DM消息流 291

24.1.2 理解C2DM服务的限制 292

24.1.3 注册C2DM 292

24.1.4 在应用程序中集成C2DM 293

24.1.5 探索C2DM示例应用程序 294

24.2 C2DM的替代技术 294

小结 294

参考资料和更多信息 294

第25章 用户账户管理与数据同步 295

25.1 使用账户管理器管理账户 295

25.2 使用备份服务 296

25.2.1 选择远程备份服务 297

25.2.2 实现备份代理(Agent) 297

25.2.3 备份和恢复应用程序数据 300

小结 301

参考资料和更多信息 302

第六部分 应用程序发布与分发的进阶话题 304

第26章 面向不同设备配置和语言 304

26.1 应用程序国际化 304

26.1.1 使用替代资源实现国际化 304

26.1.2 在程序中实现本地化支持 307

26.2 发布供国外用户使用的应用程序 308

小结 308

参考资料和更多信息 309

第27章 Android第三方应用内支付API 310

27.1 什么是应用内支付? 310

27.2 使用应用内付费 311

27.3 使用Android Market应用内支付API 311

27.4 使用亚马逊Appstore应用内支付API 312

27.5 使用PayPal支付API 312

27.6 使用其他支付API 313

参考资料和更多信息 313

第28章 通过Google Analytics实现应用程序统计 314

28.1 创建Google账号 314

28.2 向Eclipse项目添加库 315

28.3 从应用程序收集数据 316

28.4 记录不同的事件 317

28.5 使用Google Analytics仪表盘 317

28.6 收集电子商务信息 319

28.6.1 在应用程序中记录电子商务事件 319

28.6.2 查看电子商务报告 320

28.7 跟踪广告和Market Referral(市场推荐) 320

28.8 收集统计数据 320

28.9 保护用户的隐私 321

小结 321

参考资料和更多信息 322

第29章 应用程序版权保护 323

29.1 应用程序都很脆弱 323

29.2 使用安全的编码实践 323

29.3 使用ProGuard进行扰码 324

29.3.1 为Android应用程序配置ProGuard 324

29.3.2 处理扰码产生的错误 325

29.4 使用授权验证库(License Verification Library) 326

29.5 其他反盗版建议 326

小结 327

参考资料和更多信息 327

第七部分 附录 330

附录A Android调试桥快速入门 330

A.1 列表显示连接的设备和模拟器 330

A.2 针对特定设备使用ADB命令 330

A.3 启动和停止ADB服务进程 331

A.3.1 停止ADB服务进程 331

A.3.2 启动和检测ADB服务进程 331

A.4 列出ADB命令 331

A.5 发布Shell命令 331

A.5.1 发布单条Shell命令 332

A.5.2 使用Shell会话 332

A.5.3 使用Shell启动和终止模拟器 332

A.6 拷贝文件 333

A.6.1 向设备或模拟器发送文件 333

A.6.2 从设备提取文件 333

A.7 安装和卸载Android应用程序 333

A.7.1 安装应用程序 333

A.7.2 重装应用程序 334

A.7.3 卸载应用程序 334

A.8 使用LogCat记录日志 334

A.8.1 显示所有的日志信息 334

A.8.2 在日志数据中包含日期和时间信息 334

A.8.3 过滤日志信息 335

A.8.4 清除日志 336

A.8.5 将日志输出重定向至一个文件 336

A.8.6 访问次级日志 336

A.9 控制备份服务 336

A.9.1 强制备份操作 337

A.9.2 强制恢复操作 337

A.9.3 将存档数据清空 337

A.10 生成Bug报告 338

A.11 使用Shell查看SQLite数据库 338

A.12 在ADB Shell中进行应用程序压力测试 338

A.12.1 让Monkey掌管你的应用程序 338

A.12.2 听听Monkey怎么说 338

A.12.3 指导Monkey的行为 339

A.12.4 训练你的Monkey重复它的技巧 340

A.12.5 别让Monkey逃出你的手掌 340

A.12.6 深入学习Monkey 340

A.13 通过Shell安装和使用自定义二进制文件 340

附录B SQLite快速入门 342

B.1 探索SQLite的常见任务 342

B.2 使用sqlite3命令行接口 342

B.2.1 运行ADB Shell 343

B.2.2 连接数据库 343

B.2.3 探索你的数据库 343

B.2.4 导入和导出数据库 344

B.2.5 在命令行中执行SQL命令 346

B.2.6 使用其他的sqlite3命令 346

B.2.7 认识SQLite的局限 346

B.3 通过实例学习:学生成绩数据库 347

B.3.1 设计学生成绩数据库的模式 347

B.3.2 结合AUTOINCREMENT创建简单表 348

B.3.3 向表中插入数据 348

B.3.4 使用SELECT查询表数据 348

B.3.5 创建具有外键和复合主键的表 349

B.3.6 修改和更新表数据 350

B.3.7 使用JOIN进行多表查询 350

B.3.8 使用计算列 351

B.3.9 对计算列使用子查询 352

B.3.10 删除表 352