From c1f4779ce55b50d011ecf5d1cf704ad20ef5f998 Mon Sep 17 00:00:00 2001 From: Gymee Date: Fri, 11 Sep 2020 03:07:13 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=88=86=E5=B8=83=E5=BC=8F?= =?UTF-8?q?=E8=BF=9C=E7=A8=8B=E5=90=AF=E5=8A=A8.md=20=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E8=A1=A8=E8=BF=B0=E6=9C=89=E8=AF=AF=E3=80=81=E6=A0=BC=E5=BC=8F?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...34\347\250\213\345\220\257\345\212\250.md" | 66 +++++++++---------- 1 file changed, 32 insertions(+), 34 deletions(-) diff --git "a/subsystems/\345\210\206\345\270\203\345\274\217\350\277\234\347\250\213\345\220\257\345\212\250.md" "b/subsystems/\345\210\206\345\270\203\345\274\217\350\277\234\347\250\213\345\220\257\345\212\250.md" index 90ccf3c9a67..82e48ff5caa 100755 --- "a/subsystems/\345\210\206\345\270\203\345\274\217\350\277\234\347\250\213\345\220\257\345\212\250.md" +++ "b/subsystems/\345\210\206\345\270\203\345\274\217\350\277\234\347\250\213\345\220\257\345\212\250.md" @@ -2,38 +2,40 @@ ## 概述 -分布式任务调度模块,通过主从设备服务代理机制,在HarmonyOS操作系统上建立起分布式服务平台,支持主设备\(搭载HarmonyOS的智慧屏设备\)启动从设备\(IP Camera、运动手表等小内存HarmonyOS设备\)FA的能力。 +分布式任务调度模块,通过主从设备服务代理机制,在HarmonyOS操作系统上建立起分布式服务平台,支持主设备启动从设备FA(Feature Ability)的能力。 -以智慧屏节目开播提醒为例,智慧屏上在喜欢的节目菜单中,点击“开播后提醒我”按钮,等节目开播后,智慧屏会拉起运动手表上的节目开播提醒FA。通过该FA用户可以快速知道喜欢的节目已经开始,达到协同互助的作用。 +以智慧屏和手表间协同,节目开播提醒场景为例:节目开播前,可在智慧屏节目菜单上点击“开播后提醒我”按钮进行订阅,等节目开播时,智慧屏会拉起手表上的节目开播提醒FA,及时通知用户节目已经开播。 ## 基本概念 -- FA +- 主设备 - Feature Ability代表有界面的元能力,用于与用户进行交互。 + 搭载HarmonyOS的智慧屏设备 +- 从设备 -- 远程启动 + IP Camera、运动手表等小内存HarmonyOS设备 - 即跨设备启动FA,与本地启动FA相对应。 +- Feature Ability + + 代表有界面的元能力,可与用户进行交互 ## 接口说明 -智慧屏端分布式开放能力如下表,包含在AbilitySlice类中,具体的API接口详见HarmonyOS应用接入接口文档: +主设备侧分布式开放能力如下表,包含在AbilitySlice类中,具体的API接口详见HarmonyOS应用接入接口文档: **表 1** 分布式远程启动FA的API接口功能介绍 - -

接口名

+ - - - @@ -41,18 +43,19 @@ **表 2** 参数Want功能介绍 + -

接口名

描述

+

描述

void startAbility(Want want)

+

void startAbility(Want want)

远程启动FA,Want参数命名以实际开发平台API为准。

+

远程启动FA,Want参数命名以实际开发平台API为准。

参数名

+ - - - @@ -60,21 +63,15 @@

参数名

类型

+

类型

说明

want

+

Want

ohos.aafwk.content.Want

+

ohos.aafwk.content.Want

当开发者需要调用该接口启动远程FA时,需要显式指定待启动FA的设备id、bundleName和abilityName。

-## 约束与限制 - - 支持主设备侧远程启动从设备侧FA,不支持从设备远程启动主设备FA。 - 远程启动前必须确保HarmonyOS设备间分布式组网成功(需要在同一网段内,可互相ping通),否则无法远程启动。 - 当前只支持拥有共同公钥信息的主从设备间FA(即主从设备的FA使用相同华为证书)的拉起。 -## 开发步骤 - -智慧屏侧通过如下操作启动从设备侧FA,从设备侧FA默认已开发。 - -1. 打开DevEco Studio,完成智慧屏侧FA开发。 -2. 获取目标在线从设备的设备ID。 +## 关键流程(主设备侧) + +1. 获取目标在线从设备的设备ID ``` - // 引入设备选择头文件 import ohos.distributedschedule.interwork.DeviceInfo; import ohos.distributedschedule.interwork.DeviceManager; @@ -83,25 +80,26 @@ String remote_device_id; if (deviceInfoListOnline.size() > 0) { - remote_device_id = deviceInfoListOnline[0].GetDeviceId(); // 获取在线列表中第一台设备的设备ID + // 选择第一个设备作为要启动的设备,这里假设只有一个从设备接入网络(如果存在多个符合条件的设备,主设备会提供列表供用户选择) + remote_device_id = deviceInfoListOnline[0].GetDeviceId(); } ``` -3. 构造want,首先使用ElementName类表明需要启动的远端设备ID,包名,元能力类名,传入want中,然后设置want中的分布式标志位Want.FLAG\_ABILITYSLICE\_MULTI\_DEVICE表示需要远程启动。 +2. 构造意图参数want,设置需要启动的远端设备ID,包名,元能力类名信息,以及分布式标志位Want.FLAG\_ABILITYSLICE\_MULTI\_DEVICE以使能远程启动 ``` - // 引入相关头文件 import ohos.aafwk.ability.Ability; import ohos.aafwk.content.Want; import ohos.bundle.ElementName; - // 启动远程设备FA - Want want = new Want(); // 封装启动远端FA的Want - // 使用步骤2中获取的设备ID,并指定FA信息 - ElementName name = new ElementName(remote_device_id, "com.huawei.remote_package_name", "remote_class_name"); - want.setElement(name); // 将待启动的FA信息添加到Want中 + // 构造want参数 + Want want = new Want(); + ElementName name = new ElementName(remote_device_id, "com.huawei.remote_bundle_name", "remote_ability_name"); + want.setElement(name); // 将待启动的FA信息添加到want中 want.setFlags(Want.FLAG_ABILITYSLICE_MULTI_DEVICE); // 设置分布式标记,若不设置将无法使用分布式能力 - startAbility(want); // 按照Want启动指定FA,Want参数命名以实际开发平台API为准 + + // 启动远程设备FA + startAbility(want); // 按照Want启动指定FA,want参数命名以实际开发平台API为准 ``` -- Gitee