失效链接处理 |
鸿蒙HarmonyOS手机应用开发实战 PDF 下载
下载地址:
版权归出版社和原作者所有,链接已删除,请购买正版
用户下载说明:
电子版仅供预览,下载后24小时内务必删除,支持正版,喜欢的请购买正版书籍:
https://product.dangdang.com/11368255664.html
相关截图: 资料简介: 华为自主研发的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 |