新書推薦:
《
海外中国研究·江南:中国文雅的源流
》
售價:HK$
76.2
《
迟缓的巨人:“大而不能倒”的反思与人性化转向
》
售價:HK$
77.3
《
我们去往何方:身体、身份和个人价值
》
售價:HK$
67.0
《
大学问·批判的武器:罗莎·卢森堡与同时代思想者的论争
》
售價:HK$
98.6
《
低薪困境:剖析日本经济低迷的根本原因
》
售價:HK$
66.1
《
穷人的银行家(诺贝尔和平奖获得者穆罕默德·尤努斯自传)
》
售價:HK$
76.2
《
绵延:文明分野与文化演进
》
售價:HK$
66.1
《
三神之战:罗马,波斯与阿拉伯帝国的崛起
》
售價:HK$
80.6
|
內容簡介: |
华为自主研发的HarmonyOS(鸿蒙系统)是一款面向未来、面向全场景(移动办公、运动健康、社交通信、媒体娱乐等)的分布式操作系统。借助HarmonyOS全场景分布式系统和设备生态定义全新的硬件、交互和服务体验。本书采用新的HarmonyOS 2版本作为基石,详细介绍如何基于HarmonyOS进行手机应用的开发,内容涵盖HarmonyOS架构、DevEco Studio、应用结构、Ability、任务调度、公共事件、通知、剪切板、Java UI、JS UI、多模输入、线程管理、视频、图像、相机、音频、媒体会话管理、媒体数据管理、安全管理、二维码、通用文字识别、蓝牙、WLAN、网络管理、电话服务、设备管理、数据管理、原子化服务、流转等多个主题。本书列举了大量解决实际问题的案例,具有很强的前瞻性、应用性、趣味性。本书主要面向的是对移动应用或HarmonyOS应用感兴趣的学生、开发人员、架构师。
|
目錄:
|
1章 HarmonyOS简介 1
1.1 HarmonyOS产生的背景 1
1.1.1 为什么需要HarmonyOS 1
1.1.2 什么是HarmonyOS 3
1.1.3 鸿蒙生态、OpenHarmony、HarmonyOS的区别与联系 4
1.1.4 HarmonyOS应用开发 4
1.2 特性介绍 5
1.2.1 硬件互助,资源共享 5
1.2.2 一次开发,多端部署 8
1.2.3 统一OS,弹性部署 8
1.3 架构介绍 8
1.3.1 内核层 9
1.3.2 系统服务层 9
1.3.3 框架层 10
1.3.4 应用层 11
1.4 获取开发支持 12
2章 开发环境搭建 13
2.1 注册华为开发者联盟账号 13
2.1.1 开发者享受的权益 13
2.1.2 注册、认证准备的资料 14
2.1.3 注册账号 14
2.1.4 登录账号 15
2.1.5 实名认证 15
2.2 DevEco Studio下载安装 19
2.2.1 运行环境要求 20
2.2.2 下载和安装de.js 20
2.2.3 下载和安装DevEco Studio 20
2.3 设置DevEco Studio(可选) 21
2.3.1 npm设置 21
2.3.2 设置Gradle代理 22
2.3.3 设置DevEco Studio代理 23
2.3.4 下载HarmonyOS SDK 24
2.4 DevEco Studio功能介绍 26
2.4.1 创建新的工程 26
2.4.2 添加Module 27
2.4.3 删除Module 30
2.5 DevEco Studio常见问题小结 30
2.5.1 问题1:访问Gradle仓库慢 31
2.5.2 问题2:模拟器端口被占用无法启动 32
3章 开发一个HarmonyOS应用 33
3.1 创建一个新工程 33
3.1.1 选择创建新工程 33
3.1.2 选择设备应用类型的模板 33
3.1.3 配置项目的信息 34
3.1.4 自动生成工程代码 35
3.2 运行工程 35
3.2.1 单击“运行”按钮 35
3.2.2 选择模拟器 36
3.2.3 启动模拟器 36
3.2.4 再次运行工程 38
3.3 在本地真机中运行应用 39
3.3.1 连接真实的设备 39
3.3.2 运行应用 40
3.4 使用远程真机运行应用 40
3.4.1 启动远程真机设备 40
3.4.2 运行应用 41
3.4.3 对应用进行签名 41
3.4.4 再次运行应用 44
3.5 使用DevEco Studio预览器 45
3.5.1 如何安装预览器 45
3.5.2 如何使用预览器 45
4章 探索HarmonyOS应用 46
4.1 App 46
4.1.1 什么是App 46
4.1.2 应用程序包结构 47
4.1.3 代码层次的应用 48
4.2 Ability 48
4.2.1 Ability类 48
4.2.2 AbilitySlice类 49
4.2.3 UI界面 49
4.3 库文件 50
4.4 资源文件 50
4.4.1 限定词目录 51
4.4.2 资源组目录 52
4.5 配置文件 53
4.5.1 配置文件的组成 54
4.5.2 app对象的内部结构 56
4.5.3 deviceConfig对象的内部结构 56
4.5.4 module对象的内部结构 59
4.6 pack.info 63
5章 Ability基础知识 64
5.1 Ability概述 64
5.1.1 FA 65
5.1.2 PA 65
5.1.3 Ability的配置 65
5.2 Ability的三层架构 65
5.2.1 应用的分层 66
5.2.2 不分层的应用架构 66
5.2.3 应用的三层架构 68
5.2.4 Ability的三层架构 69
5.3 Page Ability 69
5.3.1 Page Ability的基本概念 69
5.3.2 多个AbilitySlice构成一个Page 70
5.3.3 AbilitySlice路由配置 71
5.3.4 不同Page间的导航 71
5.4 实战:多个AbilitySlice间的路由和导航 72
5.4.1 创建应用 72
5.4.2 创建多个AbilitySlice 72
5.4.3 修改PayAbilitySlice布局 74
5.4.4 设置PayAbilitySlice的样式 74
5.4.5 如何实现AbilitySlice之间的路由和导航 76
5.4.6 运行 79
5.5 Page与AbilitySlice的生命周期 79
5.5.1 Page的生命周期 80
5.5.2 AbilitySlice的生命周期 81
5.5.3 Page与AbilitySlice生命周期的关联 82
5.6 实战:Page与AbilitySlice生命周期的例子 82
5.6.1 修改MainAbilitySlice 83
5.6.2 修改PayAbilitySlice 84
5.6.3 修改PayAbilitySlice布局和文字 85
5.6.4 实现AbilitySlice之间的路由 87
5.6.5 运行 89
5.7 Service Ability 92
5.7.1 创建Service 93
5.7.2 启动Service 94
5.7.3 连接Service 95
5.7.4 Service Ability的生命周期 96
5.8 实战:Service Ability生命周期的例子 97
5.8.1 创建Service 97
5.8.2 创建远程对象 100
5.8.3 修改MainAbilitySlice 100
5.8.4 修改ability_main.ml 103
5.8.5 运行 104
5.9 Data Ability 105
5.9.1 URI 105
5.9.2 访问Data 106
5.10 实战:使用DataAbilityHelper访问文件 107
5.10.1 创建DataAbility 107
5.10.2 修改UserDataAbility 110
5.10.3 创建文件 113
5.10.4 修改MainAbilitySlice 114
5.10.5 创建FileUtils类 115
5.10.6 运行 116
5.11 实战:使用DataAbilityHelper访问数据库 117
5.11.1 创建DataAbility 117
5.11.2 初始化数据库 120
5.11.3 重写query方法 121
5.11.4 重写insert方法 121
5.11.5 重写update方法 122
5.11.6 重写delete方法 122
5.11.7 修改MainAbilitySlice 123
5.11.8 运行 126
5.12 Intent 127
5.12.1 Operation与Parameters 127
5.12.2 根据Ability的全称启动应用 128
5.12.3 实战:根据Operation的其他属性启动应用 129
5.12.4 实战:启动系统应用 135
6章 Ability任务调度 140
6.1 分布式任务调度概述 140
6.1.1 “级虚拟终端”的能力互助 140
6.1.2 跨设备软件访问的系统服务 141
6.1.3 全场景下的任务调度 142
6.2 分布式任务调度能力简介 142
6.2.1 全局查询 143
6.2.2 启动和关闭 143
6.2.3 连接和断开连接 144
6.2.4 轻量通信 144
6.3 分布式任务调度实现原理 145
6.3.1 PRC 145
6.3.2 HarmonyOS设备之间的通信 146
6.3.3 HarmonyOS设备与其他OS设备之间的通信 146
6.4 实现分布式任务调度 147
6.4.1 如何实现分布式任务调度 147
6.4.2 分布式任务调度支持的场景 148
6.5 实战:分布式任务调度启动远程FA 148
6.5.1 修改RemoteFA应用 148
6.5.2 修改DistributedSchedulingStartRemoteFA应用 150
6.5.3 运行 156
6.6 实战:分布式任务调度启动和关闭远程PA 157
6.6.1 修改RemotePA应用 157
6.6.2 修改DistributedSchedulingStartSRemotePA应用 160
6.6.3 运行 167
7章 Ability公共事件与通知 169
7.1 公共事件与通知概述 169
7.1.1 公共事件和通知 169
7.1.2 约束与限制 170
7.2 公共事件服务 170
7.2.1 接口说明 170
7.2.2 发布公共事件 172
7.2.3 订阅公共事件 174
7.2.4 订公共事件 176
7.3 实战:公共事件服务发布事件 176
7.3.1 修改ability_main.ml 176
7.3.2 修改MainAbilitySlice 177
7.3.3 自定义权限 179
7.3.4 运行 179
7.4 实战:公共事件服务订阅事件 180
7.4.1 修改ability_main.ml 180
7.4.2 创建CommonEventSubscriber 180
7.4.3 修改MainAbility 181
7.4.4 修改配置文件 182
7.4.5 运行 183
7.5 高级通知服务 183
7.5.1 接口说明 183
7.5.2 创建tificationSlot 186
7.5.3 发布通知 186
7.5.4 取消通知 187
7.6 实战:通知发布与取消 188
7.6.1 修改ability_main.ml 188
7.6.2 修改MainAbilitySlice 189
7.6.3 运行 191
8章 剪贴板 193
8.1 剪贴板概述 193
8.2 场景介绍 193
8.3 接口说明 194
8.3.1 SystemPasteboard 194
8.3.2 PasteData 195
8.3.3 PasteData.Record 195
8.3.4 PasteData.DataProperty 196
8.3.5 IPasteDataChangedListener 196
8.4 实战:剪贴板数据的写入 196
8.4.1 修改ability_main.ml 196
8.4.2 修改MainAbilitySlice 197
8.4.3 运行 199
8.5 实战:剪切板数据的读取 199
8.5.1 修改ability_main.ml 199
8.5.2 修改MainAbilitySlice 200
8.5.3 运行 202
9章 用Java开发UI 204
9.1 用Java开发UI概述 204
9.1.1 组件和布局 204
9.1.2 Component和ComponentContainer 205
9.1.3 LayoutConfig 205
9.1.4 组件树 206
9.2 组件与布局 206
9.2.1 编写布局的方式 206
9.2.2 组件分类 207
9.3 实战:通过XML创建布局 207
9.3.1 理解XML布局文件 207
9.3.2 创建XML布局文件 209
9.3.3 加载XML布局 209
9.3.4 显示XML布局 210
9.4 实战:通过Java创建布局 211
9.4.1 新建AbilitySlice 212
9.4.2 创建布局 212
9.4.3 在布局中添加组件 213
9.4.4 显示布局 214
9.5 实战:常用显示类组件——Tet 215
9.5.1 设置背景 216
9.5.2 设置字体大小和颜色 217
9.5.3 设置字体风格和字重 218
9.5.4 设置文本对齐方式 219
9.5.5 设置文本换行和大显示行数 221
9.5.6 设置自动调节字体大小 222
9.5.7 实现跑马灯效果 224
9.5.8 场景示例 225
9.6 实战:常用显示类组件——Image 227
9.6.1 创建Image 227
9.6.2 设置透明度 228
9.6.3 设置缩放系数 229
9.7 实战:常用显示类组件——ProgressBar 230
9.7.1 创建ProgressBar 230
9.7.2 设置方向 231
9.7.3 设置颜色 232
9.7.4 设置提示文字 233
9.8 实战:常用交互类组件——Button 234
9.8.1 创建Button 235
9.8.2 设置点击事件 237
9.8.3 设置椭圆按钮 239
9.8.4 设置圆形按钮 241
9.8.5 场景示例 242
9.9 实战:常用交互类组件——TetField 247
9.9.1 创建TetField 247
9.9.2 设置多行显示 248
9.9.3 场景示例 249
9.10 实战:常用交互类组件——Checkbo 251
9.10.1 创建Checkbo 251
9.10.2 设置选中和取消选中时的颜色 252
9.11 实战:常用交互类组件——RadioButton/RadioContainer 253
9.11.1 创建RadioButton/RadioContainer 253
9.11.2 设置显示单选结果 255
9.12 实战:常用交互类组件——Switch 259
9.12.1 创建Switch 259
9.12.2 设置文本 260
9.13 实战:常用交互类组件——ScrollView 261
9.13.1 创建ScrollView 261
9.13.2 配置Tet显示的内容 262
9.14 实战:常用交互类组件——Tab/TabList 263
9.14.1 创建TabList 263
9.14.2 响应焦点变化 266
9.15 实战:常用交互类组件——Picker 268
9.15.1 创建Picker 268
9.15.2 格式化Picker的显示 268
9.15.3 日期滑动选择器DatePicker 270
9.15.4 时间滑动选择器TimePicker 271
9.16 实战:常用交互类组件——ListContainer 272
9.16.1 创建ListContainer 272
9.16.2 创建ListContainer子布局 273
9.16.3 创建ListContainer数据包装类 273
9.16.4 创建ListContainer数据提供者 274
9.16.5 修改MainAbilitySlice 275
9.17 实战:常用交互类组件——RoundProgressBar 276
9.17.1 创建RoundProgressBar 276
9.17.2 设置开始和结束角度 277
9.18 实战:常用交互类组件——DirectionalLayout 278
9.18.1 创建DirectionalLayout 279
9.18.2 设置水平排列 280
9.18.3 设置权重 281
9.19 实战:常用交互类组件——DependentLayout 283
9.19.1 创建DependentLayout 283
9.19.2 相对于同级组件 284
9.19.3 相对于父组件 284
9.19.4 场景示例 285
9.20 实战:常用交互类组件——StackLayout 286
9.21 实战:常用交互类组件——TableLayout 288
10章 用JS开发UI 290
10.1 用JS开发UI概述 290
10.1.1 基础能力 290
10.1.2 整体架构 291
10.2 实战:创建JS FA应用 291
10.2.1 创建应用 292
10.2.2 AceAbility 293
10.2.3 如何加载JS FA 294
10.2.4 JS FA开发目录 294
10.2.5 运行 296
10.3 组件与布局 297
10.3.1 组件分类 297
10.3.2 布局 297
10.4 实战:点赞按钮 299
10.4.1 应用概述 299
10.4.2 修改应用 299
10.4.3 运行应用 300
10.5 实战:JS FA调用PA 301
10.5.1 FA调用PA接口 301
10.5.2 创建应用及编写FA 302
10.5.3 编写PA 303
10.5.4 运行应用 306
11章 多模输入UI开发 307
11.1 多模输入概述 307
11.2 接口说明 308
11.2.1 MultimodalEvent 308
11.2.2 CompositeEvent 308
11.2.3 RotationEvent 308
11.2.4 SpeechEvent 309
11.2.5 ManipulationEvent 309
11.2.6 KeyEvent 309
11.2.7 TouchEvent 310
11.2.8 KeyBoardEvent 310
11.2.9 MouseEvent 310
11.2.10 MmiPoint 311
11.2.11 EventCreator 311
11.2.12 InputDevice 311
11.3 实战:多模输入事件 311
11.3.1 修改MainAbilitySlice 311
11.3.2 获取多模输入权限 313
12章 线程管理 314
12.1 线程管理概述 314
12.2 场景介绍 314
12.2.1 传统Java多线程管理 315
12.2.2 HarmonyOS多线程管理 317
12.3 接口说明 317
12.3.1 GlobalTaskDispatcher 317
12.3.2 ParallelTaskDispatcher 317
12.3.3 SerialTaskDispatcher 318
12.3.4 SpecTaskDispatcher 318
12.4 实战:线程管理示例 318
12.4.1 修改ability_main.ml 319
12.4.2 自定义任务 320
12.4.3 执行任务派发 321
12.4.4 运行 322
12.5 线程间通信概述 323
12.5.1 基本概念 323
12.5.2 运作机制 324
12.5.3 约束限制 324
12.6 实战:线程间通信示例 324
12.6.1 修改ability_main.ml 325
12.6.2 自定义事件处理器 325
12.6.3 执行事件发送 327
12.6.4 运行 328
13章 视频 330
13.1 视频概述 330
13.2 实战:媒体编解码能力查询 330
13.2.1 接口说明 331
13.2.2 创建应用 331
13.2.3 修改ability_main.ml 331
13.2.4 修改MainAbilitySlice 332
13.2.5 运行 334
13.3 实战:视频编解码 334
13.3.1 接口说明 335
13.3.2 创建应用 335
13.3.3 修改ability_main.ml 335
13.3.4 修改MainAbilitySlice 336
13.3.5 运行 340
13.4 实战:视频播放 340
13.4.1 接口说明 340
13.4.2 创建应用 341
13.4.3 修改ability_main.ml 341
13.4.4 修改MainAbilitySlice 343
13.4.5 运行 347
13.5 实战:视频录制 347
13.5.1 接口说明 347
13.5.2 创建应用 348
13.5.3 修改ability_main.ml 348
13.5.4 修改MainAbilitySlice 350
13.5.5 运行 352
14章 图像 353
14.1 图像概述 353
14.1.1 基本概念 353
14.1.2 约束与限制 354
14.2 实战:图像解码和编码 354
14.2.1 接口说明 354
14.2.2 创建应用 355
14.2.3 修改ability_main.ml 355
14.2.4 修改MainAbilitySlice 356
14.2.5 解码作说明 360
14.2.6 编码作说明 361
14.3 实战:位图作 361
14.3.1 接口说明 361
14.3.2 创建应用 363
14.3.3 修改ability_main.ml 363
14.3.4 修改MainAbilitySlice 364
14.3.5 创建PielMap作说明 365
14.3.6 从位图对象中获取信息作说明 366
14.3.7 读取和写入像素作说明 366
14.3.8 释放资源 367
14.4 实战:图像属性解码 368
14.4.1 接口说明 368
14.4.2 创建应用 368
14.4.3 修改ability_main.ml 368
14.4.4 修改MainAbilitySlice 369
14.4.5 运行 372
15章 相机 373
15.1 相机概述 373
15.1.1 基本概念 373
15.1.2 约束与限制 374
15.1.3 相机开发流程 374
15.1.4 核心接口 374
15.1.5 相机权限 374
15.2 实战:相机设备创建 375
15.2.1 接口说明 375
15.2.2 创建应用 375
15.2.3 声明相机权限 375
15.2.4 修改ability_main.ml 376
15.2.5 修改MainAbilitySlice 377
15.2.6 运行 381
15.3 实战:相机设备配置 382
15.3.1 添加类变量 382
15.3.2 新增FrameStateCallbackImpl 383
15.3.3 修改onStart方法 384
15.3.4 修改onCreated方法 385
15.3.5 运行 386
15.4 实战:相机帧捕获 387
15.4.1 接口说明 387
15.4.2 启动预览(循环帧捕获) 387
15.4.3 释放资源 388
15.4.4 运行 388
15.4.5 实现拍照(单帧捕获) 388
15.4.6 声明存储权限 391
15.4.7 运行 393
16章 音频 394
16.1 音频概述 394
16.1.1 基本概念 394
16.1.2 约束与限制 395
16.2 实战:音频播放 395
16.2.1 接口说明 395
16.2.2 创建应用 396
16.2.3 修改ability_main.ml 396
16.2.4 修改MainAbilitySlice 397
16.2.5 运行 401
16.3 实战:音频采集 402
16.3.1 接口说明 402
16.3.2 创建应用 403
16.3.3 声明麦克风权限 403
16.3.4 修改ability_main.ml 404
16.3.5 修改MainAbilitySlice 405
16.4 实战:短音播放 408
16.4.1 接口说明 408
16.4.2 创建应用 409
16.4.3 修改ability_main.ml 409
16.4.4 修改MainAbilitySlice 410
16.4.5 运行 413
17章 媒体会话管理 414
17.1 媒体会话管理概述 414
17.1.1 AVSession框架主要的类 414
17.1.2 约束与限制 415
17.2 接口说明 416
17.2.1 AVBrowser的主要接口 416
17.2.2 AVBrowserService的主要接口 416
17.2.3 AVController的主要接口 417
17.2.4 AVSession的主要接口 418
17.2.5 AVElement的主要接口 418
17.3 实战:AVSession媒体框架客户端 419
17.3.1 创建应用 419
17.3.2 修改ability_main.ml 419
17.3.3 修改MainAbilitySlice 420
17.4 实战:AVSession媒体框架服务端 424
17.4.1 创建Service 424
17.4.2 修改AVService 425
17.4.3 运行 428
18章 媒体数据管理 429
18.1 媒体数据管理概述 429
18.1.1 媒体数据管理基本概念 429
18.1.2 约束与限制 429
18.2 实战:媒体元数据的获取 430
18.2.1 接口说明 430
18.2.2 创建应用 431
18.2.3 修改ability_main.ml 431
18.2.4 修改MainAbilitySlice 432
18.2.5 运行 435
18.3 实战:媒体存储数据作 436
18.3.1 接口说明 436
18.3.2 创建应用 437
18.3.3 声明权限 437
18.3.4 修改ability_main.ml 438
18.3.5 修改MainAbilitySlice 439
18.3.6 运行 443
18.4 实战:视频与图像缩略图获取 444
18.4.1 接口说明 444
18.4.2 创建应用 444
18.4.3 修改ability_main.ml 445
18.4.4 修改MainAbilitySlice 446
18.4.5 运行 449
19章 安全管理 451
19.1 权限的基本概念 451
19.2 权限运作机制 452
19.3 权限约束与限制 452
19.4 应用权限列表 453
19.4.1 权限分类 453
19.4.2 敏感权限 453
19.4.3 非敏感权限 454
19.4.4 受限开放的权限 455
19.5 应用权限开发流程 455
19.5.1 权限申请 455
19.5.2 自定义权限 456
19.5.3 访问权限控制 458
19.5.4 接口说明 459
19.5.5 动态申请权限的开发步骤 460
19.6 生物特征识别认证概述 461
19.7 生物特征识别运作机制 461
19.8 生物特征识别的约束与限制 462
19.9 生物特征识别的开发流程 462
19.9.1 接口说明 462
19.9.2 开发准备 463
19.9.3 开发过程 463
20章 二维码 466
20.1 二维码概述 466
20.1.1 什么是二维码 466
20.1.2 二维码的发展历程 467
20.2 场景介绍 467
20.3 接口说明 468
20.4 实战:生成二维码 468
20.4.1 创建应用 468
20.4.2 修改ability_main.ml 468
20.4.3 修改MainAbilitySlice 470
20.4.4 运行 473
21章 通用文字识别 474
21.1 通用文字识别概述 474
21.1.1 什么是OCR 474
21.1.2 OCR发展简史 474
21.2 场景介绍 475
21.3 接口说明 475
21.3.1 setVisionConfiguration()方法 476
21.3.2 detect()方法 476
21.3.3 约束与限制 476
21.4 实战:通用文字识别示例 477
21.4.1 创建应用 477
21.4.2 修改ability_main.ml 477
21.4.3 修改MainAbilitySlice 479
21.4.4 运行 482
22章 蓝牙 484
22.1 蓝牙概述 484
22.1.1 传统蓝牙 484
22.1.2 BLE 484
22.1.3 约束与限制 485
22.2 实战:传统蓝牙本机管理 485
22.2.1 接口说明 485
22.2.2 创建应用 486
22.2.3 声明权限 486
22.2.4 修改ability_main.ml 487
22.2.5 修改MainAbilitySlice 488
22.2.6 运行 491
22.3 实战:传统蓝牙远端设备作 494
22.3.1 接口说明 494
22.3.2 创建应用 495
22.3.3 声明权限 495
22.3.4 修改ability_main.ml 496
22.3.5 修改MainAbilitySlice 497
22.3.6 运行 501
22.4 实战:BLE扫描和广播 503
22.4.1 接口说明 503
22.4.2 创建应用 504
22.4.3 声明权限 504
22.4.4 修改ability_main.ml 505
22.4.5 修改MainAbilitySlice 507
22.4.6 运行 510
23章 WLAN 512
23.1 WLAN概述 512
23.1.1 WLAN简介 512
23.1.2 约束与限制 513
23.2 实战:WLAN的基础功能 513
23.2.1 接口说明 513
23.2.2 创建应用 514
23.2.3 声明权限 514
23.2.4 修改ability_main.ml 515
23.2.5 修改MainAbilitySlice 516
23.2.6 运行 520
23.3 实战:不信任热点配置 522
23.3.1 接口说明 522
23.3.2 创建应用 522
23.3.3 声明权限 522
23.3.4 修改ability_main.ml 523
23.3.5 修改MainAbilitySlice 524
23.3.6 运行 526
23.4 实战:WLAN消息通知 527
23.4.1 接口说明 527
23.4.2 创建应用 528
23.4.3 修改ability_main.ml 528
23.4.4 修改MainAbilitySlice 529
23.4.5 运行 531
24章 网络管理 533
24.1 网络管理概述 533
24.1.1 功能 533
24.1.2 约束与限制 533
24.2 实战:使用当前网络打开一个URL链接 534
24.2.1 接口说明 534
24.2.2 创建应用 534
24.2.3 声明权限 534
24.2.4 修改ability_main.ml 535
24.2.5 修改MainAbilitySlice 535
24.2.6 运行 539
24.3 实战:使用当前网络进行Socket数据传输 540
24.3.1 接口说明 540
24.3.2 创建应用 540
24.3.3 声明权限 540
24.3.4 修改ability_main.ml 541
24.3.5 修改MainAbilitySlice 541
24.3.6 运行 545
24.4 实战:流量统计 546
24.4.1 接口说明 546
24.4.2 创建应用 546
24.4.3 声明权限 546
24.4.4 修改ability_main.ml 547
24.4.5 修改MainAbilitySlice 548
24.4.6 运行 551
25章 电话服务 553
25.1 电话服务概述 553
25.1.1 主要的API 553
25.1.2 约束与限制 553
25.2 实战:获取当前蜂窝网络信号信息 554
25.2.1 接口说明 554
25.2.2 创建应用 554
25.2.3 修改ability_main.ml 554
25.2.4 修改MainAbilitySlice 555
25.2.5 运行 557
25.3 实战:观察蜂窝网络的状态变化 559
25.3.1 接口说明 560
25.3.2 创建应用 560
25.3.3 声明权限 560
25.3.4 修改ability_main.ml 560
25.3.5 修改MainAbilitySlice 562
25.3.6 运行 564
26章 设备管理 568
26.1 设备管理概述 568
26.1.1 传感器 569
26.1.2 控制类小器件 570
26.1.3 位置 571
26.2 实战:传感器示例 572
26.2.1 接口说明 572
26.2.2 创建应用 572
26.2.3 修改ability_main.ml 573
26.2.4 修改MainAbilitySlice 573
26.2.5 运行 576
26.3 实战:Light示例 578
26.3.1 接口说明 578
26.3.2 创建应用 578
26.3.3 修改ability_main.ml 579
26.3.4 修改MainAbilitySlice 579
26.3.5 运行 582
26.4 实战:获取设备的位置 582
26.4.1 接口说明 583
26.4.2 创建应用 583
26.4.3 声明权限 583
26.4.4 修改ability_main.ml 584
26.4.5 修改MainAbilitySlice 585
26.4.6 运行 588
26.5 实战:(逆)地理编码转化 589
26.5.1 接口说明 589
26.5.2 创建应用 590
26.5.3 修改ability_main.ml 590
26.5.4 修改MainAbilitySlice 591
26.5.5 运行 593
27章 数据管理 595
27.1 数据管理概述 595
27.2 关系型数据库 596
27.2.1 基本概念 596
27.2.2 运作机制 596
27.2.3 默认配置 597
27.2.4 约束与限制 597
27.2.5 接口说明 597
27.2.6 开发过程 600
27.3 对象关系映数据库 601
27.3.1 基本概念 601
27.3.2 运作机制 602
27.3.3 实体对象属性支持的类型 602
27.3.4 接口说明 603
27.4 实战:使用对象关系映数据库 605
27.4.1 修改build.gradle 605
27.4.2 新增User 606
27.4.3 新增UserStore 607
27.4.4 创建DataAbility 607
27.4.5 初始化数据库 609
27.4.6 新增queryAll方法 610
27.4.7 新增insert方法 611
27.4.8 新增update方法 611
27.4.9 新增deleteAll方法 611
27.4.10 修改ability_main.ml 612
27.4.11 修改MainAbilitySlice 614
27.4.12 运行 616
27.5 轻量级偏好数据库 619
27.5.1 基本概念 619
27.5.2 运作机制 620
27.5.3 约束与限制 620
27.5.4 接口说明 621
27.6 实战:使用轻量级偏好数据库 622
27.6.1 修改ability_main.ml 622
27.6.2 修改MainAbilitySlice 624
27.6.3 运行 627
27.7 数据存储管理 630
27.7.1 基本概念 630
27.7.2 运作机制 630
27.7.3 接口说明 631
27.8 实战:使用数据存储管理 632
27.8.1 修改ability_main.ml 632
27.8.2 修改MainAbilitySlice 633
27.8.3 运行 635
28章 原子化服务 637
28.1 原子化服务概述 637
28.1.1 什么是原子化服务 637
28.1.2 原子化服务特征 638
28.1.3 原子化服务典型的使用场景 639
28.2 服务中心 639
28.2.1 服务中心入口 639
28.2.2 常用服务 639
28.2.3 我的收藏 639
28.2.4 服务发现 640
28.3 实战:原子化服务HelloDog 641
28.3.1 初始化原子化服务 641
28.3.2 理解原子化服务的项目结构 641
28.3.3 搜索原子化服务 655
28.3.4 运行原子化服务 656
29章 流转 657
29.1 流转概述 657
29.2 流转架构 658
29.2.1 跨端迁移流程 659
29.2.2 多端协同流程 659
29.2.3 兼容性设计 660
29.3 跨端迁移 661
29.3.1 跨端迁移流程 661
29.3.2 接口说明 663
29.3.3 约束与限制 664
29.4 实战:实现跨端迁移与回迁 665
29.4.1 MainAbility实现IAbilityContinuation接口 665
29.4.2 声明权限 666
29.4.3 设计界面与布局 668
29.4.4 修改MainAbilitySlice 669
29.4.5 新增DeviceUtils 671
29.4.6 运行 673
29.5 多端协同 674
29.5.1 多端协同流程 674
29.5.2 接口说明 675
29.5.3 约束与限制 677
29.6 实战:实现多端协同 677
29.6.1 MainAbility实现IAbilityContinuation接口 677
29.6.2 声明权限 678
29.6.3 设计界面与布局 680
29.6.4 修改MainAbilitySlice 681
29.6.5 新增DeviceUtils 684
29.6.6 运行 685
30章 综合案例:俄罗斯方块游戏 687
30.1 案例概述 687
30.1.1 俄罗斯方块游戏概述 687
30.1.2 俄罗斯方块游戏的规则 688
30.2 代码实现 688
30.2.1 技术重点 688
30.2.2 设置布局 689
30.2.3 设置全屏 692
30.2.4 应用的主体逻辑 693
30.2.5 初始化游戏 696
30.2.6 创建网格数据 697
30.2.7 绘制网格 702
30.2.8 启动游戏 703
30.2.9 左移作 705
30.2.10 右移作 707
30.2.11 转换作 708
30.2.12 重置作 711
30.3 应用运行 711
参考文献 713
|
|