描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302539520丛书名: 移动开发经典丛书
自Android首次发布10年来,经过多次修订与扩展,《Android高级编程(第4版)》重磅来袭。其中不仅涵盖开发新手需要学习的基础知识,而且探索了经验丰富的Android开发人员在构建极致用户体验时所必需的高级特性和*实践。
《Android高级编程(第4版)》作为实践类书籍,将会深入浅出地解释各种复杂的概念,注重实际操作,让读者对Android开发的各类工具、API和*实践有直观的认识,并将新技能转换成实际的用户解决方案。
主要特色
● 涵盖Android*的API,包括Job Scheduler、Android架构组件(包括Live Data和Room)和数据绑定
● 提供Android Studio IDE的详细说明以及Kotlin的介绍
● 详细介绍材料设计原则、设计指南、导航模式和UI的更佳实践
● 演示如何为所有形式的Android设备创建引人注目的UI
● 探索Firebase和Google Play服务的API库,包括地图、基于位置的服务以及Awareness API
● 掌握为将来的Android开发项目提供坚实支持的技能
目 录
第1章 你好,Android 1
1.1 Android应用开发 1
1.2 小背景 2
1.2.1 不远的过去 2
1.2.2 未来的发展 2
1.3 Android生态系统 3
1.4 Android的预安装应用 3
1.5 Android SDK的特性 4
1.6 Android在哪里运行 4
1.7 为什么要为移动设备开发应用 5
1.8 为什么要进行Android开发 5
1.9 Android开发框架介绍 5
1.9.1 Android SDK中都包含什么 5
1.9.2 了解Android软件堆层 6
1.9.3 Android运行时 7
1.9.4 Android应用架构 8
1.9.5 Android库 8
第2章 入门 9
2.1 Android应用开发入门 9
2.2 Android开发 10
2.2.1 准备工作 11
2.2.2 创建首个Android应用 14
2.2.3 开始使用Kotlin编写Android应用 23
2.2.4 使用Android Support Library包 24
2.3 进行移动和嵌入式设备开发 25
2.3.1 硬件设计考虑因素 25
2.3.2 考虑用户环境 28
2.3.3 进行Android开发 28
2.4 Android开发工具 31
2.4.1 Android Studio 32
2.4.2 Android虚拟机管理器 33
2.4.3 Android模拟器 34
2.4.4 Android Profiler 34
2.4.5 Android 调试桥 35
2.4.6 APK分析器 35
2.4.7 Lint检查工具 36
2.4.8 Monkey、Monkey Runner和Espresso UI测试 36
2.4.9 Gradle 37
第3章 应用、Activity和Fragment 38
3.1 应用、Activity和Fragment 38
3.2 Android应用的组件 39
3.3 Android应用的生命周期、优先级和进程状态 39
3.4 Android的Application类 41
3.5 进一步了解Android的Activity 41
3.5.1 创建Activity 41
3.5.2 使用AppCompatActivity 42
3.5.3 Activity的生命周期 42
3.5.4 响应内存压力 47
3.6 Fragment 48
3.6.1 创建新的Fragment 49
3.6.2 Fragment的生命周期 49
3.6.3 Fragment Manager介绍 52
3.6.4 添加Fragment到Activity中 52
3.6.5 Fragment与Activity之间的通信 57
3.6.6 没有UI的Fragment 57
3.7 构建Earthquake Viewer应用 58
第4章 定义Android配置清单和Gradle构建文件,并外部化资源 64
4.1 配置清单、构建文件和资源 64
4.2 Android配置清单 64
4.3 配置Gradle构建文件 68
4.3.1 settings.gradle 文件 68
4.3.2 项目的build.gradle文件 68
4.3.3 模块级build.gradle文件 69
4.4 外部化资源 72
4.4.1 创建资源 72
4.4.2 使用资源 79
4.4.3 为不同的语言和硬件创建资源 82
4.4.4 运行时配置更改 84
第5章 构建用户界面 87
5.1 Android设计基础 87
5.2 密度无关设计 88
5.3 Android UI基础 88
5.4 布局介绍 89
5.4.1 定义布局 91
5.4.2 使用布局创建设备无关的用户界面 91
5.4.3 优化布局 94
5.5 Android小部件工具箱 97
5.6 使用列表和网格 97
5.6.1 RecyclerView和Layout Manager 98
5.6.2 关于适配器 98
5.6.3 返回到Earthquake Viewer应用 101
5.7 关于数据绑定 102
5.7.1 使用数据绑定 102
5.7.2 数据绑定中的变量 103
5.7.3 数据绑定在Earthquake Viewer中的应用 103
5.8 创建新的View 105
5.8.1 修改现有的View 105
5.8.2 创建复合控件 108
5.8.3 创建作为布局的简单复合控件 109
5.8.4 创建自定义View 110
5.8.5 使用自定义控件 119
第6章 Intent与Broadcast Receiver 121
6.1 使用Intent和Broadcast Receiver 121
6.2 使用Intent启动Activity 122
6.2.1 显式启动新的Activity 122
6.2.2 隐式Intent与后期运行时绑定 123
6.2.3 确定Intent是否会被解析 123
6.2.4 返回Activity结果 124
6.2.5 使用平台本地动作启动Activity 126
6.3 创建Intent Filter以接收隐式Intent 127
6.3.1 定义Intent Filter 127
6.3.2 使用Intent Filter实现插件和扩展性 133
6.4 介绍Linkify 135
6.4.1 原生Linkify链接类型 136
6.4.2 创建自定义的链接字符串 136
6.4.3 使用MatchFilter接口 136
6.4.4 使用TransformFilter接口 137
6.5 使用Intent广播事件 137
6.5.1 使用Intent广播事件 137
6.5.2 使用Broadcast Receiver监听Intent广播 138
6.5.3 使用代码注册Broadcast Receiver 139
6.5.4 在应用配置清单中注册Broadcast Receiver 139
6.5.5 在运行时管理配置清单中注册的Receiver 140
6.5.6 通过广播Intent监听设备状态的变化 140
6.6 介绍Local Broadcast Manager 142
6.7 Pending Intent介绍 143
第7章 使用网络资源 144
7.1 连接网络 144
7.2 连接、下载和解析网络资源 145
7.2.1 为何要创建原生网络应用 145
7.2.2 连接到网络资源 145
7.2.3 使用View Model、Live Data和Asynchronous Task在后台线程中执行网络操作 146
7.2.4 使用XML Pull Parser解析XML 149
7.2.5 将Earthquake Viewer连接到网络 150
7.2.6 使用JSON Reader解析JSON 156
7.3 使用Download Manager 159
7.3.1 下载文件 160
7.3.2 自定义Download Manager通知 161
7.3.3 指定下载位置 162
7.3.4 取消和移除下载 163
7.3.5 查询Download Manager 163
7.4 下载数据而不损耗电池的实践 165
7.5 网络服务及云计算简介 166
第8章 文件、存储状态和用户偏好 167
8.1 存储文件、状态和偏好 167
8.2 通过生命周期处理程序保存并恢复Activity和Fragment的实例状态 168
8.3 使用Headless Fragment和View Model保存实例状态 169
8.3.1 View Model和Live Data 169
8.3.2 Headless Fragment 171
8.4 创建和保存Shared Preference 172
8.5 获取Shared Preference 173
8.6 关于Shared Preference Change Listener的介绍 173
8.7 配置应用文件和Shared Preference的自动备份 173
8.8 构建偏好UI 174
8.8.1 使用Preference Support Library 175
8.8.2 使用XML定义Preference Screen的布局 175
8.8.3 Preference Fragment介绍 177
8.9 为Earthquake Monitor创建设置Activity 178
8.10 包含静态文件作为资源 182
8.11 使用文件系统 183
8.11.1 文件管理工具 183
8.11.2 在特定于应用的内部存储上创建文件 183
8.11.3 在特定于应用的外部存储上创建文件 183
8.11.4 使用范围化目录访问权限访问公共目录 184
8.12 使用File Provider共享文件 187
8.12.1 创建File Provider 187
8.12.2 使用File Provider共享文件 188
8.12.3 从File Provider接收文件 188
8.13 使用Storage Access Framework访问来自其他应用的文件 188
8.13.1 请求临时访问文件 189
8.13.2 请求对文件的持久访问 189
8.13.3 请求访问目录 189
8.13.4 创建新文件 190
8.14 使用基于URI的权限 190
第9章 创建和使用数据库 192
9.1 在Android中引入结构化数据存储 192
9.2 使用Room持久化库存储数据 193
9.2.1 添加Room持久化库 193
9.2.2 定义Room Database 194
9.2.3 使用类型转换器持久化复杂对象 196
9.2.4 使用DAO定义Room Database交互 196
9.2.5 执行Room Database交互 199
9.2.6 使用Live Data监控查询结果的变化 200
9.3 使用Room将地震数据持久化到数据库中 201
9.4 使用SQLite数据库 203
9.4.1 输入验证和SQL注入 204
9.4.2 Cursor与Content Values 204
9.4.3 定义数据库合约类 205
9.4.4 SQLiteOpenHelper介绍 205
9.4.5 使用SQLiteOpenHelper打开数据库 206
9.4.6 在没有SQLiteOpenHelper的情况下打开和创建数据库 207
9.4.7 添加、更新和删除行 207
9.4.8 从Cursor中提取值 209
9.5 Firebase Realtime Database介绍 210
9.5.1 将Firebase Realtime Database添加到应用中 211
9.5.2 定义Firebase Realtime Database并定义访问规则 213
9.5.3 添加、修改、删除和查询Firebase Realtime Database中的数据 214
第10章 Content Provider与搜索 216
10.1 Content Provider介绍 216
10.2 使用Content Provider的原因 217
10.3 创建Content Provider 217
10.3.1 创建Content Provider的数据库 218
10.3.2 注册Content Provider 218
10.3.3 公开Content Provider的URI地址 219
10.3.4 实现Content Provider查询 219
10.3.5 Content Provider事务 221
10.3.6 使用Content Provider共享文件 222
10.3.7 向Content Provider添加权限要求 223
10.4 使用Content Resolver访问Content Provider 224
10.4.1 查询Content Provider 225
10.4.2 取消查询 226
10.4.3 使用Cursor Loader异步查询内容 227
10.4.4 添加、删除和更新内容 229
10.4.5 访问存储在Content Provider中的文件 230
10.4.6 访问权限受限的Content Provider 231
10.5 使用Android原生Content Provider 232
10.5.1 访问Call Log Content Provider 232
10.5.2 使用Media Store Content Provider 233
10.5.3 使用联系人Content Provider 234
10.5.4 使用日历Content Provider 238
10.6 在应用中添加搜索 241
10.6.1 定义搜索元数据 241
10.6.2 创建搜索结果Activity 241
10.6.3 搜索Content Provider 242
10.6.4 使用Search View小部件 245
10.6.5 使用Content Provider提供搜索建议 246
10.6.6 搜索地震监测数据库 249
第11章 工作在后台 257
11.1 为什么要工作在后台 257
11.2 使用后台线程 258
11.2.1 使用AsyncTask异步运行任务 258
11.2.2 使用Handler Thread手动创建线程 261
11.3 调度后台作业 262
11.3.1 为Job Scheduler创建Job Service 263
11.3.2 使用Job Scheduler调度作业 265
11.3.3 使用Firebase Job Dispatcher计划作业 266
11.3.4 使用Work Manager计划作业 268
11.3.5 Job Service在Earthquake示例中的应用 270
11.4 使用Notification通知用户 273
11.4.1 Notification Manager简介 273
11.4.2 使用通知渠道 274
11.4.3 创建通知 274
11.4.4 设置通知的优先级 277
11.4.5 添加通知动作 280
11.4.6 添加直接回复动作 280
11.4.7 分组多个通知 281
11.4.8 通知在Earthquake示例中的应用 283
11.5 使用Firebase Cloud Messaging 285
11.5.1 使用Firebase Notification远程触发通知 285
11.5.2 使用Firebase Cloud Messaging接收数据 288
11.6 使用闹钟 288
11.6.1 创建、设置和取消闹钟 289
11.6.2 设置闹钟 289
11.7 服务介绍 290
11.7.1 使用绑定服务 290
11.7.2 创建启动服务 291
11.7.3 创建服务 292
11.7.4 启动和停止服务 292
11.7.5 控制服务重启行为 293
11.7.6 自终止服务 294
11.7.7 创建前台服务 294
第12章 贯彻Android设计理念 295
12.1 Android设计理念介绍 295
12.2 为每个屏幕进行设计 296
12.2.1 分辨率独立性 296
12.2.2 支持和优化不同的屏幕尺寸 297
12.2.3 创建可缩放的图像资源 299
12.3 Material Design介绍 303
12.3.1 从纸和墨水的角度思考 303
12.3.2 使用颜色和基准线(Keyline)作为指导 304
12.3.3 运动带来的连贯性 306
12.4 Material Design UI元素 308
12.4.1 应用栏 308
12.4.2 Material Design在Earthquake示例中的应用 310
12.4.3 使用Card显示内容 311
12.4.4 悬浮按钮 313
第13章 实现现代Android用户体验 315
13.1 现代Android UI 315
13.2 使用AppCompat创建外观一致的现代用户界面 316
13.2.1 使用AppCompat创建并应用主题 316
13.2.2 为特定视图创建Theme Overlay 317
13.3 向应用栏添加菜单和动作 317
13.3.1 定义菜单资源 317
13.3.2 向Activity添加菜单 318
13.3.3 向Fragment添加菜单 319
13.3.4 动态更新菜单项 319
13.3.5 处理菜单选择 319
13.3.6 添加Action View和Action Provider 320
13.4 不仅限于默认应用栏 321
13.4.1 用工具栏替换应用栏 321
13.4.2 工具栏的高级滚动技术 322
13.4.3 如何不用应用栏添加菜单 324
13.5 改进Earthquake示例的应用栏 324
13.6 应用的导航模式 326
13.6.1 使用选项卡导航 326
13.6.2 实现底部导航栏 328
13.6.3 使用导航抽屉 330
13.6.4 组合导航模式 334
13.7 向Earthquake示例添加选项卡 334
13.8 选择正确的提示等级 337
13.8.1 初始化对话框 337
13.8.2 生成一条Toast消息 338
13.8.3 使用Snackbar的内联中断 339
第14章 用户界面的高级定制 341
14.1 拓展用户体验 341
14.2 支持无障碍访问性 342
14.2.1 支持无触摸屏的导航 342
14.2.2 为每个视图提供文本描述 342
14.3 Android文本语音转换介绍 342
14.4 使用语音识别 344
14.4.1 使用语音识别进行语音输入 345
14.4.2 使用语音识别进行搜索 345
14.5 控制设备振动 346
14.6 全屏模式 346
14.7 使用属性动画 347
14.7.1 创建属性动画 348
14.7.2 创建属性动画集 349
14.7.3 使用动画监听器 349
14.8 增强你的视图 350
14.9 高级Canvas绘图 350
14.9.1 能绘制什么 350
14.9.2 充分利用Paint 351
14.9.3 通过抗锯齿提高Paint绘图质量 354
14.9.4 Canvas绘图实践 354
14.9.5 高级罗盘面板示例 355
14.9.6 创建交互式控件 361
14.9.7 使用设备键、按钮和十字键 364
14.10 复合Drawable资源 365
14.10.1 可变形的Drawable资源 365
14.10.2 Layer Drawable 366
14.10.3 State List Drawable 366
14.10.4 Level List Drawable 367
14.11 复制、粘贴和剪贴板 367
14.11.1 将数据复制到剪贴板 368
14.11.2 粘贴剪贴板数据 368
第15章 位置、情境感知和地图 369
15.1 向应用添加位置、地图和情境感知 369
15.2 Google Play服务介绍 370
15.2.1 向应用添加Google Play服务 370
15.2.2 确定Google Play服务的可用性 372
15.3 使用Google位置信息服务查找设备位置 372
15.3.1 使用模拟器测试基于位置的功能 373
15.3.2 查找后的位置 374
15.3.3 Where Am I示例 375
15.3.4 请求位置更改更新 378
15.3.5 通过Pending Intent接收位置更新 380
15.3.6 定义更新的过期条件 381
15.3.7 后台位置更新限制 381
15.3.8 更改设备位置设置 382
15.3.9 在Where Am I示例中更新位置 384
15.3.10 使用位置时的实践 386
15.4 设置和管理地理围栏 387
15.5 使用传统平台的LBS 389
15.5.1 选择Location Provider 390
15.5.2 查找后位置 391
15.5.3 请求位置更改更新 392
15.5.4 使用传统LBS的实践 393
15.6 使用Geocoder 396
15.6.1 逆向地理编码 396
15.6.2 正向地理编码 397
15.6.3 地理编码在Where Am I项目中的应用 398
15.7 创建基于地图的Activity 399
15.7.1 获取Google Maps API密钥 399
15.7.2 创建基于地图的Activity 400
15.7.3 配置Google地图 401
15.7.4 通过CameraUpdate更改相机位置 402
15.7.5 地图在Where Am I项目中的应用 404
15.7.6 使用My Location层显示当前位置 407
15.7.7 显示交互式地图标记 407
15.7.8 向Google地图添加形状 409
15.7.9 向Google地图添加图像叠加层 411
15.7.10 向Where Am I项目添加标记和形状 412
15.8 地图在Earthquake示例中的应用 414
15.9 添加情境感知 417
15.9.1 连接到Google Play服务API客户端并获取API密钥 417
15.9.2 使用感知快照 418
15.9.3 设置和监控感知围栏 419
15.9.4 Awareness实践 422
第16章 硬件传感器 423
16.1 Android传感器介绍 423
16.1.1 使用Sensor Manager 424
16.1.2 理解Android传感器 424
16.1.3 发现和识别传感器 426
16.1.4 确定传感器的功能 427
16.1.5 Wakeup和非Wakeup传感器 428
16.1.6 监测传感器结果 428
16.1.7 读取传感器值 431
16.2 使用Android虚拟设备和模拟器测试传感器 433
16.3 使用传感器的实践 434
16.4 监控设备的移动和朝向 434
16.4.1 确定设备的自然朝向 435
16.4.2 加速度计介绍 435
16.4.3 检测加速度变化 436
16.4.4 创建重力仪 437
16.4.5 确定设备的朝向 439
16.4.6 创建指南针和人工地平线 443
16.5 使用环境传感器 445
16.5.1 使用气压计传感器 445
16.5.2 创建气象站 446
16.6 使用身体传感器 449
16.7 用户活动识别 451
第17章 音频、视频和使用摄像头 453
17.1 播放音频和视频,以及使用摄像头 453
17.2 播放音频和视频 454
17.2.1 媒体播放器简介 454
17.2.2 使用Media Play播放视频 456
17.2.3 使用ExoPlayer播放视频 458
17.2.4 请求和管理音频焦点 459
17.2.5 输出改变时暂停播放 461
17.2.6 响应音量按键 461
17.2.7 使用Media Session 462
17.3 使用Media Router和Cast Application框架 464
17.4 后台音频播放 467
17.4.1 构建音频播放服务 468
17.4.2 将Activity连接到Media Browser服务 469
17.4.3 Media Browser服务的生命周期 470
17.5 在前台服务中播放音频 471
17.6 使用Media Recorder录制音频 473
17.7 使用摄像头拍照 475
17.7.1 使用Intent拍照 475
17.7.2 直接控制摄像头 476
17.7.3 读取和写入JPEG EXIF图像详情 480
17.8 录制视频 481
17.8.1 使用Intent录制视频 481
17.8.2 使用Media Recorder录制视频 482
17.9 将媒体添加到Media Store 483
17.9.1 使用Media Scanner插入新的媒体 484
17.9.2 手动插入媒体 484
第18章 使用蓝牙、NFC和Wi-Fi点对点进行通信 486
18.1 网络和点对点通信 486
18.2 使用蓝牙API传输数据 486
18.2.1 管理本地蓝牙设备适配器 487
18.2.2 可被发现和远程设备发现 488
18.2.3 蓝牙通信 491
18.2.4 蓝牙配置文件 494
18.2.5 低功耗蓝牙 495
18.3 使用Wi-Fi点对点协议传输数据 497
18.3.1 初始化Wi-Fi点对点框架 497
18.3.2 发现节点 498
18.3.3 连接节点设备 499
18.3.4 在节点间传输数据 500
18.4 使用近场通信 501
18.4.1 读取NFC标签 501
18.4.2 使用前台分派系统 502
18.5 使用Android Beam 504
18.5.1 创建Android Beam消息 504
18.5.2 分配Android Beam负载数据 505
18.5.3 接收Android Beam消息 506
第19章 使用主屏 507
19.1 自定义主屏 507
19.2 主屏小部件介绍 507
19.2.1 定义小部件的布局 509
19.2.2 定义小部件的尺寸和其他元数据 510
19.2.3 实现小部件 511
19.2.4 使用App Widget Manager和Remote View更新Widget UI 512
19.2.5 强制刷新小部件的数据和UI 514
19.2.6 创建和使用小部件Configuration Activity 516
19.3 创建地震小部件 517
19.4 Collection View小部件介绍 521
19.4.1 创建Collection View小部件的布局 522
19.4.2 使用Remote Views Factory更新Collection View 523
19.4.3 使用Remote Views Service更新Collection View 524
19.4.4 使用Remote Views Service填充Collection View小部件 525
19.4.5 为Collection View小部件中的条目添加交互性 526
19.4.6 刷新Collection View小部件 526
19.4.7 创建地震Collection View小部件 526
19.5 创建Live Wallpaper 531
19.5.1 创建Live Wallpaper定义资源 532
19.5.2 创建Wallpaper Service Engine 532
19.5.3 创建Wallpaper Service 533
19.6 创建App快捷方式 534
19.6.1 静态快捷方式 535
19.6.2 动态快捷方式 535
19.6.3 追踪App快捷方式的使用 537
第20章 高级Android开发 538
20.1 高级Android 538
20.2 偏执的Android 539
20.2.1 Linux内核安全性 539
20.2.2 再述权限 539
20.2.3 在Android Keystore中存储密钥 541
20.2.4 使用指纹传感器 541
20.3 处理不同的软硬件可用性 542
20.3.1 指定所需的硬件 542
20.3.2 确认硬件的可用性 543
20.3.3 构建向后兼容的应用 543
20.4 使用严格模式优化UI性能 544
20.5 电话和短信 545
20.5.1 电话 546
20.5.2 收发短信 550
第21章 应用的发布、分发和监控 564
21.1 准备发布应用 564
21.1.1 准备发布材料 565
21.1.2 准备代码以进行发布构建 565
21.2 在应用清单文件中更新应用元数据 566
21.2.1 检查应用安装限制 566
21.2.2 应用的版本管理 567
21.3 给应用的生产构建版本签名 567
21.3.1 使用Android Studio创建Keystore和签名密钥 568
21.3.2 获取基于私有发布密钥的API密钥 569
21.3.3 构建生产发布版本并签名 569
21.4 在Google Play商店中发布应用 570
21.4.1 Google Play商店简介 571
21.4.2 Google Play 商店初体验 571
21.4.3 在Google Play商店中创建应用 572
21.4.4 发布应用 577
21.4.5 监控生产环境中的应用 579
21.5 应用变现介绍 582
21.6 App营销、促销和分发策略 583
21.6.1 应用上线策略 583
21.6.2 国际化 584
21.7 使用Firebase监控应用 584
21.7.1 把Firebase添加到应用中 585
21.7.2 使用Firebase Analytics 585
21.7.3 Firebase Performance Monitoring 587
前 言
对于大多数人而言,智能手机已经成为它们自身的一种扩展。现在允许运行的设备已经超过20亿月活,而Android已然成为世界上常用的智能手机操作系统之一,由于每位用户平均会安装50个应用,致使仅2017年就有超过940亿的应用下载量。
无处不在且不可或缺的智能手机如此先进且个性化,经研究表明,把手机放错地方、手机失去网络连接或手机电池电量不足,都会让人们备感焦虑。
自2008年推出以来,Android系统已经扩展到手机之外,成为各种硬件的开发平台,拥有来自1300多个品牌的24 000台设备,其中包括平板电脑、电视、手表、汽车、物联网设备等所有产品。与此同时,物联网设备已有28个平台和SDK发布。
这些创新与生态系统的规模相结合,为开发人员提供了巨大的机会——可以为全球用户创建新的应用。
Android为移动应用开发提供了一个开放的平台。没有人工障碍,Android开发人员可以自由编写充分利用各种设备的应用,并可以使用Google Play进行分发,开发人员可将免费和付费应用分发到全球兼容的Android设备上。
《Android高级编程(第4版)》是为所有Android设备构建Android应用的实战指南,是使用Android Studio 3.5基于Android SDK 10.0编写的。 《Android高级编程(第4版)》介绍了一系列示例项目,每个项目都介绍了新的功能和技术,以限度地利用Android系统特性。《Android高级编程(第4版)》既涵盖入门的所有基本功能点,也为有经验的移动开发人员提供了可充分利用的Android功能及特性,还提供了增强现有产品或创建创新性产品的信息。
Android团队每年都会发布一个新的主要平台版本,每隔几个月发布一个新版本的Android Studio,以及每年多次对Jetpack进行增量更改,例如支持库和Android架构组件。有了这样快速的发布周期,就可以定期更改、添加和改进你将使用的工具、平台API和开发库,还有《Android高级编程(第4版)》中介绍到的工具、平台API和开发库。为了限度地减少这些变化的影响,Android工程团队努力确保向后兼容性。
但是,未来的版本将与《Android高级编程(第4版)》中提供的一些信息相关,并非所有活动的Android设备都将运行的平台版本。为了缓解这种情况,我们尽可能使用向后兼容的支持库,并提供有关哪些平台版本支持所述功能的详细信息,以及可能存在哪些替代方案以便为运行早期平台设备的用户提供支持。
此外,《Android高级编程(第4版)》中包含的讲解和示例将为你提供使用当前SDK编写引人注目的移动应用所需的基础知识,以及可以快速适应未来增强功能的灵活性。
《Android高级编程(第4版)》读者对象
《Android高级编程(第4版)》面向有兴趣在Android平台上创建应用的任何人。无论是其他平台上已经拥有丰富经验的移动开发人员,还是次尝试编写移动应用的新手,《Android高级编程(第4版)》包含的内容对你而言都是有价值的。
如果使用过智能手机(尤其是Android手机),那么这对你学习Android开发会有所帮助,但这并不是必需的。我们希望你具备软件开发经验,熟悉基本的面向对象范例。虽然不严格要求,但好了解一些Java语法。
第1章和第2章介绍移动开发和Android开发平台,并包含帮助你入门的说明。除此之外,《Android高级编程(第4版)》没有必要按顺序阅读每一章,尽管在进入其余章节之前,对第3~7章中描述的核心组件的理解很重要。第11章介绍有关如何确保应用响应性和高效性的重要细节,而第12~14章介绍如何为应用提供丰富而一致的用户体验。其余章节涵盖了各种功能特性,它们的相关性将根据应用的不同而有所不同,可以根据自己的兴趣或需要按任何顺序进行阅读。
《Android高级编程(第4版)》内容
第1章介绍Android,包括它是什么以及它如何融入移动开发生态系统。首先,介绍Android作为一个开发平台提供了什么,以及为什么它是创建手机应用的一个令人兴奋的机会。然后,我们将进行更详细的研究。
第2章首先介绍一些移动开发的实践并解释如何下载和安装Android Studio、Android SDK,然后介绍Android Studio中包含的一些工具和功能,并演示如何使用它们来创建和调试新的应用。
第3~7章深入介绍基本的Android应用组件——首先讲述组成Android应用的组件,然后继续讨论Activity和Fragment以及相关的生存期和生命周期。
第8~11章介绍应用的配置清单和Gradle构建系统,并学习更多关于外部资源框架的知识,这些资源框架可用于支持不同国家、不同语言、不同形状和大小的设备。
在介绍用于执行操作和支持应用组件间通信的Intent与Broadcast Receiver机制之前,首先介绍如何使用Layout、View和Fragment创建基本的用户界面,接着介绍如何访问网络资源,带你详细了解数据的存储、检索和共享。接下来,你将从偏好保存机制开始,转到文件处理、数据库和Content Provider——包括从原生数据库访问数据。后介绍如何确保应用始终保持良好的响应性,以及如何在执行后台操作时更高效地使用电池。你将了解支持异步执行的线程API和支持高效调度的后台工作机制,你还将学习到如何创建和显示交互式通知。
第12~14章建立在第5章介绍的UI框架之上。你将学习通过材料设计的原则增强用户体验,并针对各种大小和分辨率的屏幕进行优化以提高应用的可访问性。通过了解各种可用的导航选项,学习使用Animation添加动画、使用Toolbar和Menu等控件,终能够进一步提升用户体验。
第15~19章着眼于介绍更高级的主题。你将学习如何使用Google Play服务添加交互式地图、查找用户的位置以及如何创建地理位置和感知限制。通过使用运动和环境传感器——包括指南针、加速度计和气压计——你将使自己的应用对所处的环境做出反应。
在了解如何播放和录制多媒体以及如何使用相机拍照和录制视频之后,你将了解到Android的通信功能,包括蓝牙、NFC和Wi-Fi直连。接下来,你将了解应用如何使用动态窗口小部件、动态壁纸和应用快捷方式直接让用户与主屏幕交互。
第20章讨论几个高级开发主题,包括安全性、使用指纹传感器和严格模式,以及电话API、用于发送和接收SMS消息的API。
后,第21章研究构建、发布、监控和货币化应用的过程,特别包含了在Google Play中发布及分发应用的详细信息。
《Android高级编程(第4版)》结构
《Android高级编程(第4版)》按逻辑顺序构建,以帮助不同开发背景的读者学习如何编写高级Android应用。不要求按顺序阅读每个章节,但是有几个示例项目跨越多章进行开发,在每个阶段添加了新功能和其他增强功能。
已经安装了Android Studio的经验丰富的移动开发人员以及具备Android开发工作相关知识的移动开发人员可以概览前两章——介绍移动开发和搭建开发环境——然后深入研究第3~7章。这些章涵盖了Android开发的基础知识,因此深入了解其中描述的概念是极其重要的。
学习了这些内容后,你可以继续阅读其余章节,其中介绍了材料设计、地图、基于位置的服务、后台应用以及更高级的主题,例如硬件交互和网络。
使用《Android高级编程(第4版)》的要求
要使用《Android高级编程(第4版)》中的代码示例,需要通过下载Android Studio和Android SDK来创建Android开发环境,也可以使用其他IDE,甚至可以使用命令行构建应用。但是,我们假设使用的是Android Studio。
Android开发同时支持在Windows、macOS、Linux操作系统上使用Android Studio以及Android网站提供的SDK。
在使用《Android高级编程(第4版)》和进行Android应用开发的过程中,一台物理的Android设备不是必需的,但有了之后,可能会更方便一些。
注意:
第2章更详细地描述了这些要求,并描述了下载地址以及如何安装这些组件。
源代码
读者在学习《Android高级编程(第4版)》中的示例时,可以手动输入所有代码,也可使用《Android高级编程(第4版)》附带的源代码文件。《Android高级编程(第4版)》使用的所有源代码都可以从《Android高级编程(第4版)》合作站点www.wrox.com下载。
另外,也可进入http://www.wrox.com/dynamic/books/download.aspx上的Wrox代码下载主页,查看《Android高级编程(第4版)》和其他Wrox图书的所有代码。
还可扫描《Android高级编程(第4版)》封底的二维码来下载源代码。
提示:
由于许多图书的书名都十分类似,因此按ISBN搜索是简单的,《Android高级编程(第4版)》英文版的ISBN是978-1-118-94952-8。
下载代码后,只需要用自己喜欢的解压缩软件进行解压缩即可。
勘误表
尽管我们已经尽了各种努力来保证文章或代码中不出现错误,但错误总是难免的。如果在《Android高级编程(第4版)》中找到错误,例如拼写错误或代码错误,请告诉我们,我们将非常感激。通过勘误表,可以让其他读者避免受挫,当然,这还有助于提供更高质量的信息。
请给[email protected]发电子邮件,我们会检查你提供的信息,如果是正确的,我们将在《Android高级编程(第4版)》的后续版本中采用。
要在网站上找到《Android高级编程(第4版)》的勘误表,可登录http://www.wrox.com,通过Search工具或书名列表查找《Android高级编程(第4版)》,然后在《Android高级编程(第4版)》的细目页面上,单击Book Errata链接。在这个页面上可查看Wrox编辑已提交和粘贴的所有勘误项。完整的图书列表还包括每《Android高级编程(第4版)》的勘误表,网址是www.wrox.com/misc-pages/booklist.shtml。
专业编程人员的* Android读物。
—— l2
若你喜欢通过阅读传统教科书而非YouTube视频或漫画来学习Android技术,本书将是你的理想之选!本书的前几版都是备受读者喜爱的畅销书;这个新版本将质量推进到更高水准,浓墨重彩地描述Android Studio、Kotlin和*的API,堪称Android知识宝库。本书的编排井井有条,示例详明,紧贴实用,质量一流,是网上技术资料无法比拟的!
精心打磨的匠心之作。
—— barbre
我是一名Java开发人员,以前未开发过Android应用。阅读本书,我就像在森林里呼吸新鲜的空气,一切都是清新的、有趣的。这本大块头书籍并没有多余的文字,充满了真知灼见;示例都是作者精挑细选的,清晰明了。本书是我的案头,是我的贴心伴侣。
帮助Android编程人员实现抱负的平台。
—— Susie Q.
本书深入讲解Android语言和架构,将帮助Android程序员进入更高的技术境界。本书涵盖Broadcast Receiver、Content Provider、Android设计理念、硬件传感器等主题,讲解每个主题时,都列出示例代码;你只需要稍加修改即可将这些代码用于自己的项目中。如果你有志于在Android领域取得一番成就,强烈推荐你阅读本书!
Android开发宝典!
—— C. Pick
这是Reto和Ian为我们奉献的又一本经典书籍!这本综合性书籍与时俱进,根据*Android版本做了全面细致的更新。这本大块头书籍中蕴藏着大智慧。Android学习曲线不再陡峭,变得平缓!
我是一名有10年资历的Android开发老兵;仅读了开头几章,就仿若甘露入心,似醍醐灌顶,获益良多。
作者提供的见解十分宝贵,能让你少走很多弯路。强烈向你推荐本书!
讲解清晰透彻,令我茅塞顿开!
—— Andy
本书将复杂的技术讲得简单易懂,将枯燥的技术讲得活灵活现。手捧本书,像在吃美味可口的蛋糕,令人回味无穷;你只需要专心地品读和练习。我的书架上摆满Android书籍,但本书是其中*秀的!
重量级参考书籍,新手的指路明灯。
—— Louis
在阅读本书前,你*好先了解一些Android和Java基础知识。
本书代码丰富,内容深刻,很多细节都是在别处找不到的。在精辟讲解每项技术的主要功能和概念后,都列举一些示例应用,助你扎实掌握要点。如果你是一名Android编程新手,本书将指导你走上专业之路,助你实现华丽蜕变!
评论
还没有评论。