新書推薦:
《
我们为什么会做梦:让梦不再神秘的新科学
》
售價:NT$
352.0
《
算法图解(第2版)
》
售價:NT$
356.0
《
科学的奇幻之旅
》
售價:NT$
352.0
《
画艺循谱:晚明的画谱与消闲
》
售價:NT$
653.0
《
新民说·现实政治史:从马基雅维利到基辛格
》
售價:NT$
454.0
《
宽容是件奢侈品(人生360度·一分钟经典故事)
》
售價:NT$
203.0
《
甲骨拼合六集
》
售價:NT$
1520.0
《
视觉美食家:商业摄影实战与创意解析
》
售價:NT$
602.0
編輯推薦:
自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开发项目提供坚实支持的技能
關於作者:
Reto Meier自2007年首次发布Android以来,就一直致力于帮助Android开发人员为用户创建最佳应用。Reto在澳大利亚西部的珀斯长大,之后在伦敦度过了接下来的18个月,总共6年。2011年他与妻子在旧金山湾区定居。
Reto在Google担任开发人员代言人已有10年的时间,他为开发人员社区提供文章、在线培训、会议演讲和YouTube视频。
在智能手机出现之前,Reto已在各个行业包括海上石油天然气和金融业担任软件开发人员超过10年。
Ian Lake 在2013年于旧金山湾区定居前,曾在美国的9个州居住过。Ian是Google Android Toolkit团队的成员,专注于提供现代Android开发所需的库和API。在此之前,他曾是一名Android开发人员倡导者、Android应用开发人员和企业应用开发人员,那时,Android还未盛行。
目錄 :
目录
第1章 你好,Android1
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 Studio32
2.4.2 Android虚拟机管理器33
2.4.3 Android模拟器34
2.4.4 Android Profiler34
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 Gradle37
第3章 应用、Activity和Fragment38
3.1 应用、Activity和Fragment38
3.2 Android应用的组件39
3.3 Android应用的生命周期、优先级和进程状态39
3.4 Android的Application类41
3.5 进一步了解Android的Activity41
3.5.1 创建Activity41
3.5.2 使用AppCompatActivity42
3.5.3 Activity的生命周期42
3.5.4 响应内存压力47
3.6 Fragment48
3.6.1 创建新的Fragment49
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的Fragment57
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 Manager98
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 创建新的View105
5.8.1 修改现有的View105
5.8.2 创建复合控件108
5.8.3 创建作为布局的简单复合控件109
5.8.4 创建自定义View110
5.8.5 使用自定义控件119
第6章 Intent与Broadcast Receiver121
6.1 使用Intent和Broadcast Receiver121
6.2 使用Intent启动Activity122
6.2.1 显式启动新的Activity122
6.2.2 隐式Intent与后期运行时绑定123
6.2.3 确定Intent是否会被解析123
6.2.4 返回Activity结果124
6.2.5 使用平台本地动作启动Activity126
6.3 创建Intent Filter以接收隐式Intent127
6.3.1 定义Intent Filter127
6.3.2 使用Intent Filter实现插件和扩展性133
6.4 介绍Linkify135
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 Receiver139
6.5.4 在应用配置清单中注册Broadcast Receiver139
6.5.5 在运行时管理配置清单中注册的Receiver140
6.5.6 通过广播Intent监听设备状态的变化140
6.6 介绍Local Broadcast Manager142
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解析XML149
7.2.5 将Earthquake Viewer连接到网络150
7.2.6 使用JSON Reader解析JSON156
7.3 使用Download Manager159
7.3.1 下载文件160
7.3.2 自定义Download Manager通知161
7.3.3 指定下载位置162
7.3.4 取消和移除下载163
7.3.5 查询Download Manager163
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 Data169
8.3.2 Headless Fragment171
8.4 创建和保存Shared Preference172
8.5 获取Shared Preference173
8.6 关于Shared Preference Change Listener的介绍173
8.7 配置应用文件和Shared Preference的自动备份173
8.8 构建偏好UI174
8.8.1 使用Preference Support Library175
8.8.2 使用XML定义Preference Screen的布局175
8.8.3 Preference Fragment介绍177
8.9 为Earthquake Monitor创建设置Activity178
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 Provider187
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 Database194
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 Values204
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 Provider217
10.3.1 创建Content Provider的数据库218
10.3.2 注册Content Provider218
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 Provider224
10.4.1 查询Content Provider225
10.4.2 取消查询226
10.4.3 使用Cursor Loader异步查询内容227
10.4.4 添加、删除和更新内容229
10.4.5 访问存储在Content Provider中的文件230
10.4.6 访问权限受限的Content Provider231
10.5 使用Android原生Content Provider232
10.5.1 访问Call Log Content Provider232
10.5.2 使用Media Store Content Provider233
10.5.3 使用联系人Content Provider234
10.5.4 使用日历Content Provider238
10.6 在应用中添加搜索241
10.6.1 定义搜索元数据241
10.6.2 创建搜索结果Activity241
10.6.3 搜索Content Provider242
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 Service263
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 Messaging285
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 UI315
13.2 使用AppCompat创建外观一致的现代用户界面316
13.2.1 使用AppCompat创建并应用主题316
13.2.2 为特定视图创建Theme Overlay317
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 Provider320
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 充分利用Paint351
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 Drawable366
14.10.3 State List Drawable366
14.10.4 Level List Drawable367
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 使用传统平台的LBS389
15.5.1 选择Location Provider390
15.5.2 查找最后位置391
15.5.3 请求位置更改更新392
15.5.4 使用传统LBS的最佳实践393
15.6 使用Geocoder396
15.6.1 逆向地理编码396
15.6.2 正向地理编码397
15.6.3 地理编码在Where Am I项目中的应用398
15.7 创建基于地图的Activity399
15.7.1 获取Google Maps API密钥399
15.7.2 创建基于地图的Activity400
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 Manager424
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 Session462
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 Store483
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 Beam504
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 UI512
19.2.5 强制刷新小部件的数据和UI514
19.2.6 创建和使用小部件Configuration Activity516
19.3 创建地震小部件517
19.4 Collection View小部件介绍521
19.4.1 创建Collection View小部件的布局522
19.4.2 使用Remote Views Factory更新Collection View523
19.4.3 使用Remote Views Service更新Collection View524
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 Wallpaper531
19.5.1 创建Live Wallpaper定义资源532
19.5.2 创建Wallpaper Service Engine532
19.5.3 创建Wallpaper Service533
19.6 创建App快捷方式534
19.6.1 静态快捷方式535
19.6.2 动态快捷方式535
19.6.3 追踪App快捷方式的使用537
第20章 高级Android开发538
20.1 高级Android538
20.2 偏执的Android539
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 Analytics585
21.7.3 Firebase Performance Monitoring587
內容試閱 :
前言
对于大多数人而言,智能手机已经成为它们自身的一种扩展。现在允许运行的设备已经超过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.comdynamicbooksdownload.aspx上的Wrox代码下载主页,查看《Android高级编程第4版)》和其他Wrox图书的所有代码。
还可扫描《Android高级编程第4版)》封底的二维码来下载源代码。
提示:
由于许多图书的书名都十分类似,因此按ISBN搜索是最简单的,《Android高级编程第4版)》英文版的ISBN是978-1-118-94952-8。
下载代码后,只需要用自己喜欢的解压缩软件进行解压缩即可。
勘误表
尽管我们已经尽了各种努力来保证文章或代码中不出现错误,但错误总是难免的。如果在《Android高级编程第4版)》中找到错误,例如拼写错误或代码错误,请告诉我们,我们将非常感激。通过勘误表,可以让其他读者避免受挫,当然,这还有助于提供更高质量的信息。
请给wkservice@vip.163.com发电子邮件,我们会检查你提供的信息,如果是正确的,我们将在《Android高级编程第4版)》的后续版本中采用。
要在网站上找到《Android高级编程第4版)》的勘误表,可登录http:www.wrox.com,通过Search工具或书名列表查找《Android高级编程第4版)》,然后在《Android高级编程第4版)》的细目页面上,单击Book Errata链接。在这个页面上可查看Wrox编辑已提交和粘贴的所有勘误项。完整的图书列表还包括每《Android高级编程第4版)》的勘误表,网址是www.wrox.commisc-pagesbooklist.shtml。