HarmonyOS学习路之开发篇—流转

news2024/9/21 2:46:37

流转概述

介绍

随着全场景多设备生活方式的不断深入,用户拥有的设备越来越多,每个设备都能在适合的场景下提供良好的体验,例如:手表可以提供及时的信息查看能力,电视可以带来沉浸的观影体验。但是,每个设备也有使用场景的局限,例如:在电视上输入文本相对手机来说是非常糟糕的体验。当多个设备通过分布式操作系统能够相互感知、进而整合成一个超级终端时,设备与设备之间就可以取长补短、相互帮助,为用户提供更加自然流畅的分布式体验。

基本概念

  • 流转:在HarmonyOS中泛指多设备分布式操作。流转能力打破设备界限,多设备联动,使用户应用程序可分可合、可流转,实现如邮件跨设备编辑、多设备协同健身、多屏游戏等分布式业务。流转为开发者提供更广的使用场景和更新的产品视角,强化产品优势,实现体验升级。流转按照体验可分为跨端迁移多端协同
  • 跨端迁移:一种实现用户应用程序流转的技术方案,指在A端运行的FA迁移到B端上,完成迁移后, B端FA继续任务,而A端应用退出。在用户使用设备的过程中,当使用情境发生变化时(例如:从室内走到户外或者周围有更合适的设备等),之前使用的设备可能已经不适合继续当前的任务,此时,用户可以选择新的设备来继续当前的任务。常见的跨端迁移场景实例:
    • 视频来电时从手机迁移到智慧屏,视频聊天体验更佳,手机视频应用退出。
    • 手机上阅读应用浏览文章,迁移到平板上继续查看,手机阅读应用退出。
  • 多端协同:一种实现用户应用程序流转的技术方案,指多端上的不同FA/PA同时运行、或者交替运行实现完整的业务;或者,多端上的相同FA/PA同时运行实现完整的业务。多个设备作为一个整体为用户提供比单设备更加高效、沉浸的体验。例如:用户通过智慧屏的应用A拍照后,A可调用手机的应用B进行人像美颜,最终将美颜后的照片保存在智慧屏的应用A。常见的多端协同场景实例还有:
    • 手机侧应用A做游戏手柄,智慧屏侧应用B做游戏显示,为用户组成一个全新的游戏体验。
    • 平板侧应用A做答题板,智慧屏侧应用B做直播,为用户组成一个全新的上网课体验。

流转架构

HarmonyOS流转提供了一组API库,可让用户应用程序更轻松、快捷地完成流转体验。HarmonyOS流转架构有如下优势:

  • 统一流转管理UI,支持设备发现、选择以及任务管理。
  • 支持远程服务调用等能力,可轻松设计业务。
  • 支持多个应用同时进行流转。
  • 支持不同形态设备,如手机、平板、TV、手表等。

流转架构如下图所示。

  • 流转任务管理服务:在流转发起端,接受用户应用程序注册,提供流转入口、状态显示、退出流转等管理能力。

    说明

    • 当前仅手机、平板设备支持流转任务管理服务。
    • 如果流转发起端不支持流转任务管理服务,则流转业务实现方式有区别。
  • 分布式任务调度:提供远程服务启动、远程服务连接、远程迁移等能力,并通过不同能力组合,支撑用户应用程序完成跨端迁移或多端协同的业务体验。
  • 分布式安全:提供E2E的加密通道,为用户应用程序提供安全的跨端传输机制,保证“正确的人,通过正确的设备,正确地使用数据”。
  • 分布式软总线:使用基于手机、平板、智能穿戴、智慧屏等分布式设备的统一通信基座,为设备之间的互联互通提供统一的分布式通信能力。

跨端迁移流程

以设备A的应用和设备B的应用进行跨端迁移为例,业务流程如下:

  1. 流转准备:设备A上的应用向流转任务管理服务注册一个流转回调
    • Alt1-系统推荐流转:系统感知周边有可用设备后,主动为用户提供可选择流转的设备信息,并在用户完成设备选择后回调通知应用开始流转,将用户选择的设备B的设备信息提供给应用。
    • Alt2-用户手动流转:系统在用户手动点击流转图标后,被动为用户提供可选择交互的设备信息,并在用户完成设备选择后回调通知应用开始流转,将用户选择的设备B的设备信息提供给应用。
  2. 流转完成:设备A上的应用通过调用分布式任务调度的能力,如continueAbility等,向设备B的应用发起跨端迁移。流转中将流转状态上报到流转任务管理服务。

    说明

    跨端迁移后,设备A上的应用需要自行退出。

 多端协同流程

以设备A的应用和设备B的应用进行多端协同为例,业务流程如下:

  1. 流转准备:设备A上的应用向流转任务管理服务注册一个流转回调:
    • Alt1-系统推荐流转:系统感知周边有可用设备后,主动为用户提供可选择流转的设备信息,并在用户完成设备选择后回调通知应用开始流转,将用户选择的设备B的设备信息提供给应用。
    • Alt2-用户手动流转:系统在用户手动点击流转图标后,被动为用户提供可选择交互的设备信息,并在用户完成设备选择后回调通知应用开始流转,将用户选择的设备B的设备信息提供给应用。
  2. 流转进行:设备A上的应用通过调用分布式任务调度的能力,如startAbility, connectAbility等,向设备B的应用发起多端协同。流转中将流转状态上报到流转任务管理服务。
  3. 流转结束:用户通过设备A的流转任务管理界面结束流转。用户点击结束任务后,流转任务管理服务回调通知应用取消流转。设备A上的应用通过调用分布式任务调度的能力,如stopAbility, disconnectAbility等,终止和设备B的多端协同。流转结束后将流转状态上报到流转任务管理服务,并向流转任务管理服务注销流转回调。

说明

设备A和B进行多端协同后,设备A和设备C重复如上流程,可实现设备A、B、C进行多端协同,此时设备A是中心控制点。

兼容性设计

不管跨端迁移还是多端协同,流转都是由两个设备上的用户应用程序共同完成的,两个设备上的用户应用程序需要做如下兼容设计:

  • 跨端应用版本兼容

    建议用户应用程序设计版本号和最小兼容版本号。只有当设备A的用户应用程序版本号>=设备B的用户应用程序最小兼容版本号,且设备B的用户应用程序版本号>=设备A的用户应用程序最小兼容版本号时,才允许进行流转。

    对于跨端迁移或多端协同场景,如果是同一个应用在A端和B端进行通信,此时流转任务管理服务提供了版本兼容性检查机制,可以将满足条件的设备筛选出来。

    说明

    流转任务管理服务提供的版本兼容性检查机制要求两个设备是同一个用户应用程序。

    要求用户应用程序在填写config.json时,填写minCompatibleVersionCode字段(最小兼容版本号)和code字段(当前版本号)。minCompatibleVersionCode标识app pack能够兼容的最低历史版本号。该标签值为32位整形数值,非负整数。如果应用/服务未配置minCompatibleVersionCode,则系统将minCompatibleVersionCode默认填写为当前版本号。

    对于多端协同,如果是不同应用之间的A、B端协同,则需要不同应用自己实现版本兼容性检查机制。

  • 跨端元服务安装

    跨端被拉起的程序建议设计为元服务。即当设备A的用户应用程序向设备B的元服务发起多端协同,如果设备B上没有安装对应服务,HarmonyOS会自动下载相关元服务,和A端的用户应用程序一起进行多端协同。如跨端被拉起的程序设计为传统方式的需要安装的应用,则当设备A的用户应用程序向设备B的元服务发起多端协同,如果设备B上没有安装相关应用,会提示流转失败。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/736496.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络变压器常见封装

1、单口千兆(Single Port) 封装类型常见型号Dimension SMD24_1 PIN Pitch:1.00 Length:15.1 Width:7.1/10.0 Height:6.00 JWD: SG24002G Group-tek: HST-24015SR SMD24_2 PIN…

pyspark

连接命令: pyspark --master spark://node1:7077 一个application 大任务可以分解成 多个小任务 jobs, 一个job又可以分解成多个 stages 阶段, 一个stage又可以分解成 多个tasks(可以认为是两个线程) standalone Zo…

使用Gradio库创建交互式滑块组件

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

QT DAY3

完善文本编辑器 1.mainwindow.h文件 #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <QDebug> #include <QIcon> #include <QLabel> #include <QLineEdit> #include <QPushButton> #include <QMessageBo…

如何用Stable Diffusion模型生成个人专属创意名片?

目录 1 什么是二维码&#xff1f;2 什么是扩散模型&#xff1f;3 Stable Diffusion环境搭建4 开始制作创意名片结语 1 什么是二维码&#xff1f; 二维码是一种用于存储和传输信息的方便而广泛使用的图像编码技术。它是由黑色方块和白色空白区域组成的二维图形&#xff0c;可以…

光镊背后的电磁理论 | 涡旋电磁波在无线通信系统中的应用

2018年诺贝尔物理学奖于北京时间10月2日17点50分正式揭晓&#xff0c;发明光镊技术的美国物理学家&#xff0c;阿瑟阿什金&#xff08;Arthur Ashkin&#xff09;&#xff0c;以及开创了啁啾脉冲放大技术的唐娜斯特里克兰&#xff08;Donna Strickland&#xff09;、 热拉尔穆鲁…

持之以恒,安之有度 | 持安科技2周年!

新征程 新未来 持安的同学们已经一起走进 第三个年头啦 近日&#xff0c;持安 北京 上海 深圳 所有公司成员齐聚一堂 共 同 庆 祝 持安科技 成立2周年 持安一体化零信任平台 &#xff0c;引领应用层零信任落地新局面 2021年&#xff0c;何艺&#xff08;持安创始人兼CE…

经典轻量级神经网络(3)ShuffleNet V1及其在Fashion-MNIST数据集上的应用

经典轻量级神经网络(3)ShuffleNet V1及其在Fashion-MNIST数据集上的应用 1 ShuffleNet V1的简述 ShuffleNet 提出了 1x1分组卷积通道混洗 的策略&#xff0c;在保证准确率的同时大幅降低计算成本。 ShuffleNet 专为计算能力有限的设备&#xff08;如&#xff1a;10~150MFLOP…

开发uniapp苹果app,苹果签名证书的创建方法

在uniapp云打包界面&#xff0c;打包苹果app&#xff0c;需要私钥证书p12文件&#xff0c;还需要证书profile文件和证书密码。 这两个文件到底是从什么地方获取的呢&#xff1f;答案是这两个证书需要在苹果开发者中心生成&#xff0c;下面我们这篇教程&#xff0c;将教会大家如…

Java小白的学习之路——day12

目录 一、final 什么是final&#xff1f; 二、接口概述 什么是接口&#xff1f; 与抽象类的区别 常量接口 接口传参多态 四、内部类 什么是内部类&#xff1f; 成员内部类 静态内部类 局部内部类 一、final 什么是final&#xff1f; final从字面意思来看时最终的&a…

你真的了解JS垃圾回收机制吗?

目录 前言 堆栈内存管理 JS垃圾回收机制 标记清除&#xff08;Mark and Sweep&#xff09; 标记阶段 清除阶段 标记清除的特点 优点 缺点 引用计数&#xff08;Reference Counting&#xff09; 引用计数器的维护 引用计数的跟踪 垃圾回收的触发 回收对象 引用计…

视频转音频MP3格式怎么做?教你几种转换小妙招

当我们需要编辑视频中的声音&#xff0c;例如去除噪音、调整音量、加入配乐等&#xff0c;此时需要先将视频中的音频提取出来进行编辑&#xff0c;再将编辑后的音频重新与视频合并&#xff0c;以便达到一个最佳效果。那么怎么将视频转换成MP3格式的音频文件呢&#xff1f;教大家…

SpringBoot项目多模块打包部署Docker实战

前言 我们好多程序员都只关注功能代码的编写&#xff0c;在一些运维工作上则显得略有不足。这篇文章通过介绍最常见的Maven管理的Spring Boot项目多模块打包部署Docker来介绍一下项目部署过程中操作流程和几个需要注意的点。文章假设读者有前面提到的技术点的前置知识&#xf…

C#(五十八)之C#List

前几天&#xff0c;看同事写的代码中有list相关的字眼&#xff0c;百度了一下&#xff0c;原来是C#中list泛型集合。 了解一下。 List&#xff1a;泛型集合&#xff0c;List<T>类是 ArrayList 类的泛型等效类。该类使用大小可按需动态增加的数组实现 IList<T> 泛型…

Maven工程分模块开发讲解及入门案例

1.分模块开发的意义 一个模块只做自己对应的功能&#xff0c;提升开发效率&#xff0c;将一个工程拆分成若干个子模块方便之间相互调用&#xff0c;接口共享&#xff0c;降低耦合度提高代码复用率。 2.分模块开发入门案例 下面将domain这个模块从当前模块当中给拆分出来。 …

开心档之CSS 测验

目录 CSS 测验 CSS 测验 CSS测验是一种衡量前端开发人员对CSS的熟练程度的测试。通过CSS测验&#xff0c;可以评估一个人对CSS语言的掌握程度和应用能力&#xff0c;帮助公司或招聘方挑选合适的人才。下面将介绍如何进行CSS测验以及一些常见的CSS考题。 一、CSS测验的类型 1…

OpenCV 入门教程:寻找和绘制轮廓

OpenCV 入门教程&#xff1a;寻找和绘制轮廓 导语一、寻找轮廓二、绘制轮廓三、示例应用3.1 目标检测和定位3.2 图像分割 总结 导语 寻找和绘制轮廓是图像处理中常用的技术之一&#xff0c;用于识别、定位和分析图像中的目标区域。在 OpenCV 中&#xff0c;寻找和绘制轮廓可以…

「2024」预备研究生mem-行程问题

一、行程问题 二、课后题 往返 上山下山

LeetCode[75]颜色分类

难度:Medium 题目&#xff1a; 给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums &#xff0c;原地对它们进行排序&#xff0c;使得相同颜色的元素相邻&#xff0c;并按照红色、白色、蓝色顺序排列。 我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。 必须在不使用库…

【前端面试专栏】用户输入网址到页面返回都发生了什么?

&#x1f431; 个人主页&#xff1a;不叫猫先生&#xff0c;公众号&#xff1a;前端舵手 &#x1f64b;‍♂️ 作者简介&#xff1a;2022年度博客之星前端领域TOP 2&#xff0c;前端领域优质作者、阿里云专家博主&#xff0c;专注于前端各领域技术&#xff0c;共同学习共同进步…