diff --git a/zh-cn/application-dev/database/Readme-CN.md b/zh-cn/application-dev/database/Readme-CN.md index bbcae8eed48259274e90eae0bd57cc53dd263acd..e413d1f6f45c4f4850c0fda091c5f503ce1c5fa3 100644 --- a/zh-cn/application-dev/database/Readme-CN.md +++ b/zh-cn/application-dev/database/Readme-CN.md @@ -20,3 +20,6 @@ - [同设备跨应用数据共享概述](share-device-data-across-apps-overview.md) - [通过DataShareExtensionAbility实现数据共享](share-data-by-datashareextensionability.md) - [通过静默数据访问实现数据共享](share-data-by-silent-access.md) +- 跨设备跨应用标准化数据通道 + - [跨设备跨应用标准化数据通道概述](unified-data-channel-across-devices-and-apps-overview.md) + - [标准化数据定义](unified-data-definition.md) \ No newline at end of file diff --git a/zh-cn/application-dev/database/figures/udmf_architecture.png b/zh-cn/application-dev/database/figures/udmf_architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..af99a2a6a862d172dab38716976fc3f297ef0d8f Binary files /dev/null and b/zh-cn/application-dev/database/figures/udmf_architecture.png differ diff --git a/zh-cn/application-dev/database/figures/udmf_type_ADT.png b/zh-cn/application-dev/database/figures/udmf_type_ADT.png new file mode 100644 index 0000000000000000000000000000000000000000..dec55d97ed6710ed55b3becbc8f7bbb1b76256dc Binary files /dev/null and b/zh-cn/application-dev/database/figures/udmf_type_ADT.png differ diff --git a/zh-cn/application-dev/database/figures/udmf_type_File.png b/zh-cn/application-dev/database/figures/udmf_type_File.png new file mode 100644 index 0000000000000000000000000000000000000000..e19edf033f105f4873af356a50005a86e2d11991 Binary files /dev/null and b/zh-cn/application-dev/database/figures/udmf_type_File.png differ diff --git a/zh-cn/application-dev/database/figures/udmf_type_SDT.png b/zh-cn/application-dev/database/figures/udmf_type_SDT.png new file mode 100644 index 0000000000000000000000000000000000000000..2ddde55958178e31bf29ca24ae5d54634585abb1 Binary files /dev/null and b/zh-cn/application-dev/database/figures/udmf_type_SDT.png differ diff --git a/zh-cn/application-dev/database/figures/udmf_type_Text.png b/zh-cn/application-dev/database/figures/udmf_type_Text.png new file mode 100644 index 0000000000000000000000000000000000000000..694ef9e32f3ed725d6754cb2bdfc4baca9f7cf9b Binary files /dev/null and b/zh-cn/application-dev/database/figures/udmf_type_Text.png differ diff --git a/zh-cn/application-dev/database/unified-data-channel-across-devices-and-apps-overview.md b/zh-cn/application-dev/database/unified-data-channel-across-devices-and-apps-overview.md new file mode 100644 index 0000000000000000000000000000000000000000..4b61fc6767ae1541b91fa2c0022e2f1c9d73ba20 --- /dev/null +++ b/zh-cn/application-dev/database/unified-data-channel-across-devices-and-apps-overview.md @@ -0,0 +1,59 @@ +# 跨设备跨应用标准化数据通道概述 + +## 简介 + +依据OpenHarmony构建“面向全场景、全连接、全智能时代的分布式操作系统”的愿景,人与数字世界的交互将发生巨大的变化。传统的用户在单设备以应用为中心的交互方式,远远达不到万物互联全场景的体验要求,主要原因有以下几点: +1) 硬件设备是有边界的,用户在多个设备之间的交互体验是割裂的; +2) 服务以应用为载体,既无法打破应用边界,更无法打破设备间的边界; +3) 用户与服务过程中产生的数据被孤立在应用内、设备内,数据也是有边界的; +从数据管理角度出发,随着OpenHarmony中数据跨应用、跨设备流转场景和需求的不断增加,流转过程中会存在数据协同通道繁杂、数据协同标准不一致、数据协同安全策略不一致、应用适配复杂度高、开发工作量增多等诸多痛点问题。统一数据管理框架(Unified Data Management Framework, UDMF)旨在定义数据跨应用、跨设备以及跨平台过程中的各项标准,提供统一的标准化通道,从而打破OpenHarmony中数据交互的应用边界与设备边界,为用户提供全新的分布式数据体验。 + +## 架构介绍 +UDMF提供统一的OpenHarmony数据语言和标准化的数据接入与读取通路。 + +**统一的OpenHarmony数据语言:** 构建OpenHarmony数据跨应用/设备交互的标准定义,降低应用/业务数据交互成本,促进数据生态建设。 +**标准化的数据接入与读取通路:** 提供安全、标准化的数据通路,降低业务跨应用跨设备数据交互的成本。 + +UDMF的整体架构如图1所示,业务层对外提供标准化的数据定义和数据接入与读取的业务接口。统一数据管理框架层提供标准化数据定义和数据接入与读取的具体实现,同时负责管理数据的生命周期、安全性、权限和存储。存储模块层负责数据的具体保存,可以使用分布式KVDB、分布式数据对象和文件系统进行数据存储。 + +**图1** UDMF架构图 + +![架构图](figures/udmf_architecture.png) + +### 标准化数据定义 + +UDMF提供了标准化的数据定义,统一定义了以下几种不同的数据类型。 + +**基础数据类型:** File、Text等,能够进行跨应用、跨设备、跨平台流转。File、Text数据类型可见图2和图3,它们可以具有继承关系和层次结构,衍生出更多的具体子类型。 + +**图2** UDMF File数据类型示意图 + +![架构图](figures/udmf_type_File.png) + +**图3** UDMF Text数据类型示意图 + +![架构图](figures/udmf_type_Text.png) + +**系统相关数据类型(System-Defined Type, SDT):**与具体的平台/操作系统绑定,如Form(UI卡片信息)、AppItem(App描述信息)、PixelMap(缩略图格式)等,该类数据可以实现系统/平台内的跨应用与跨设备流转,如图4所示。 +**图4** UDMF SDT数据类型示意图 + +![架构图](figures/udmf_type_SDT.png) + +**应用自定义数据类型(App-Defined Type, ADT):**单个应用自己定义的数据,该类数据可以实现应用内的跨平台与跨设备流转,如图5所示为例,应用可自定义三角形类型。 +**图5** UDMF ADT数据类型示意图 + +![架构图](figures/udmf_type_ADT.png) + +### 标准化数据通路 + +UDMF定义了标准化的数据接入与读取通路,为各种业务场景(如跨应用跨设备数据拖拽)提供了跨应用跨设备的数据接入与读取通路,通路中的数据URI定义为:udmf://intension/bundleName/groupName/guid,其中各组成部分的含义分别为: +**udmf:** 协议名,表示使用UDMF提供的数据通路; +**intension:** 通道分类,例如Drag(拖拽数据),SuperHub(中转站)等; +**bundleName:** 数据来源应用的包名称; +**groupName:** 分组名称,支持批量数据分组管理; +**guid:** 系统生成的数据id,全局唯一性。 + +## 约束限制 + +- UDMF中每条数据记录大小不超过2MB。 +- UDMF支持批量数据记录的分组管理,每个分组最多支持512条数据,整体大小不超过4MB。 diff --git a/zh-cn/application-dev/database/unified-data-definition.md b/zh-cn/application-dev/database/unified-data-definition.md new file mode 100644 index 0000000000000000000000000000000000000000..6b089bb6ed146c5d79c82760b19b081d5e939984 --- /dev/null +++ b/zh-cn/application-dev/database/unified-data-definition.md @@ -0,0 +1,243 @@ +# 标准化数据定义 + +## 场景介绍 + +为了构建OpenHarmony数据跨应用/设备交互的标准定义,降低应用/业务数据交互成本,促进数据生态建设,UDMF提供了标准化的数据定义,统一定义了多种常用的数据类型。应用可以使用统一数据管理框架提供的接口创建和使用这些标准化数据类型。 + +## 约束限制 + +- UDMF中每条数据记录大小不超过2MB。 +- UDMF支持批量数据记录的分组管理,每个分组最多支持512条数据,整体大小不超过4MB。 + +## 接口说明 + +### 导入模块 + +```js +import UDMF from '@ohos.data.UDMF'; +``` + +### UnifiedDataType + +```UnifiedData```中各```UnifiedRecord```数据类型。 +**系统能力:** SystemCapability.DistributedDataManager.UDMF.Core + +| 名称 | 说明 | +| ------------------------ | ---------------- | +| TEXT | 文本类型 | +| PLAIN_TEXT | 纯文本类型 | +| HYPER_LINK | 超链接类型 | +| HTML | 富文本类型 | +| IMAGE | 图片类型 | +| VIDEO | 视频类型 | +| SYSTEM_DEFINED_RECORD | 系统服务数据类型 | +| SYSTEM_DEFINED_FORM | 卡片类型 | +| SYSTEM_DEFINED_APP_ITEM | 图标类型 | +| SYSTEM_DEFINED_PIXEL_MAP | 二进制图片类型 | + +### UnifiedData + +表示UDMF数据对象,提供封装一组数据记录的方法。 +仅是按照统一数据规范创建数据,并未写入存储中。 +**系统能力:** SystemCapability.DistributedDataManager.UDMF.Core + +#### constructor + +constructor(record: UnifiedRecord) +用于创建带有一条数据记录的```UnifiedData```对象。 +**系统能力:** SystemCapability.DistributedDataManager.UDMF.Core +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ------ | ------------- | ---- | --------------------------- | +| record | UnifiedRecord | Y | UnifiedData中携带的数据记录 | + +#### addRecord + +addRecord(record: UnifiedRecord): void; +在当前```UnifiedData```对象中添加一条记录。 +**系统能力:** SystemCapability.DistributedDataManager.UDMF.Core +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ------ | ------------- | ---- | --------------------------- | +| record | UnifiedRecord | Y | UnifiedData中携带的数据记录 | + +**示例:** + +``` +import UDMF from '@ohos.data.UDMF'; + +let text = new UDMF.PlainText(); +text.textContent = "Hello world!"; +let unifiedData = new UDMF.UnifiedData(text); + +let text2 = new UDMF.PlainText(); +text2.textContent = "Hello, OpenHarmony!"; +unifiedData.addRecord(text2); +``` + +#### getRecords + +getRecords(): Array\; +将当前UnifiedData对象中的所有UnifiedRecord取出。 +**系统能力** :SystemCapability.DistributedDataManager.UDMF.Core +**返回值:** + +| 类型 | 描述 | +| ---------------------- | -------------------------- | +| Array\ | 向当前数据对象内添加的记录 | + +**示例:** + +``` +import UDMF from '@ohos.data.UDMF'; + +... + +let records = unifiedData.getRecords(); +console.log("array size is: " + records.size()); +``` + +### Summary + +描述某一```UnifiedData```对象的数据摘要。 +**系统能力:** SystemCapability.DistributedDataManager.UDMF.Core +**属性定义:** + +| 属性名 | 类型 | 可读 | 可写 | 说明 | +| --------- | ------------------------- | ---- | ---- | ------------------------------------------------------------ | +| symmary | { [key: string]: number } | Y | N | 是一个字典类型对象,key为UnifiedDataType类型,value为UnifiedData对象中key类型记录数据量总和(当前文件类型记录仅记录uri大小,非文件大小) | +| totalSize | number | Y | N | UnifiedData对象内记录总大小 | + +**示例:** + +``` +import UDMF from '@ohos.data.UDMF'; + +getSummaryCallback(data, err) { + let summary = data; + console.log("total: " + summary.totalSize); +} +``` + +### UnifiedRecord + +对UDMF数据支持的数据内容的抽象定义,称为记录,一个统一数据对象内包含一条或多条记录,例如一条文本记录,一条图片记录,一条HTML记录等。 +UnifiedRecord是一个抽象父类,无法保存具体数据内容,应用在使用时,不能将其添加到UnifiedData中,而应该创建带有数据内容的具体子类,如```Text```,```Image```等。 +**系统能力**:SystemCapability.DistributedDataManager.UDMF.Core + +#### getType + +getType(): UnifiedDataType; +获取当前UnifiedRecord的类型。 +由于从UnifiedData中调用```getRecords```取出数据都是```UnifiedRecord```对象,因此需要通过该接口查询该条记录的具体类型,将```UnifiedRecord```对象转换为其子类,调用子类接口。 +**系统能力** :SystemCapability.DistributedDataManager.UDMF.Core +**返回值:** + +| 类型 | 说明 | +| --------------- | ------------------------------ | +| UnifiedDataType | 当前数据记录对应的具体数据类型 | + +**示例:** + +``` +import UDMF from '@ohos.data.UDMF'; + +let text = new UDMF.PlainText(); +text.textContent = "Hello world!"; +let unifiedData = new UDMF.UnifiedData(text); + +let text2 = new UDMF.PlainText(); +text2.textContent = "Hello, OpenHarmony!"; +unifiedData.addRecord(text2); + +let records = unifiedData.getRecords(); +if (records[0] != null && records[0].getType() == UnifiedDataType.PlainText) { + console.log(((UDMF.Text)record[0]).content); +} +``` + +## 开发步骤 + +以一次创建数据(包含图片、纯文本、二进制图片三条数据记录)为例,说明开发步骤。 + +1. 导入`@ohos.data.UDMF`模块 + + ```js + import UDMF from '@ohos.data.UDMF'; + ``` +2. 创建图片数据记录,并初始化得到带有该数据记录的UnifiedData对象 + + (1)创建图片数据记录 + + ```js + let image = new UDMF.Image(); + ``` + + (2)修改对象属性 + + ```js + // Image对象包含一个属性imageUri + image.imageUri = '...'; + ``` + + (3)访问对象属性 + + ```js + console.info(`imageUri = ${image.imageUri}`); + ``` + + (4)创建一个统一数据对象实例 + + ```js + let unifiedData = new UDMF.UnifiedData(image); + ``` +3. 创建纯文本数据类型记录,将其添加到刚才创建的UnifiedData对象 + + ```js + let plainText = new UDMF.PlainText(); + plainText.textContent = 'this is textContent of plainText'; + plainText.abstract = 'abstract of plainText'; + plainText.details = { + plainKey1: 'plainValue1', + plainKey2: 'plainValue2', + }; + unifiedData.addRecord(plainText); + ``` +4. 创建二进制图片数据类型记录,将其添加到UnifiedData对象 + + ```js + let sdPixelMap = new UDMF.SystemDefinedPixelMap(); + sdPixelMap.rawData = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); + unifiedData.addRecord(sdPixelMap); + ``` +5. 记录添加完成后,可获取当前UnifiedData对象内的所有数据记录 + + ```js + let records = unifiedData.getRecords(); + ``` +6. 遍历每条记录,判断该记录的数据类型,转换为子类对象,得到原数据记录 + + ```js + for (let i = 0; i < records.length; i ++) { + // 读取该数据记录的类型 + let type = records[i].getType(); + switch (type) { + case UDMF.UnifiedDataType.IMAGE: + // 转换得到原图片数据记录 + let image = (records[i]); + break; + case UDMF.UnifiedDataType.PLAIN_TEXT: + // 转换得到原文本数据记录 + let plainText = (records[i]); + break; + case UDMF.UnifiedDataType.SYSTEM_DEFINED_PIXEL_MAP: + // 转换得到原二进制图片数据记录 + let sdPixelMap = (records[i]); + break; + default: + break; + } + } + ``` diff --git a/zh-cn/application-dev/reference/apis/js-apis-data-udmf.md b/zh-cn/application-dev/reference/apis/js-apis-data-udmf.md new file mode 100644 index 0000000000000000000000000000000000000000..0f4587397022d6767bc5b70a8038dec813244a43 --- /dev/null +++ b/zh-cn/application-dev/reference/apis/js-apis-data-udmf.md @@ -0,0 +1,379 @@ +# @ohos.data.UDMF(统一数据管理框架) + +本模块提供数据统一管理的能力,包括对文本、图片等数据类型的标准化定义。通过调用对应数据类型的接口,应用程序可将各种数据封装为统一数据对象。 + +> **说明:** +> +> 本模块首批接口从API version 10开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 + +## 导入模块 + +```js +import UDMF from '@ohos.data.UDMF'; +``` + +## UnifiedDataType + +[UnifiedData](#unifieddata)中各[UnifiedRecord](#unifiedrecord)的数据类型。 + +**系统能力:** SystemCapability.DistributedDataManager.UDMF.Core + +| 名称 | 值 | 说明 | +| ------------------------ | ---------------------------- | ---------------- | +| TEXT | "Text" | 文本类型 | +| PLAIN_TEXT | "Text.PlainText" | 纯文本类型 | +| HYPER_LINK | "Text.HyperLink" | 超链接类型 | +| HTML | "Text.HTML" | 富文本类型 | +| IMAGE | "File.Media.Image" | 图片类型 | +| VIDEO | "File.Media.Video" | 视频类型 | +| SYSTEM_DEFINED_RECORD | "SystemDefinedType" | 系统服务数据类型 | +| SYSTEM_DEFINED_FORM | "SystemDefinedType.Form" | 卡片类型 | +| SYSTEM_DEFINED_APP_ITEM | "SystemDefinedType.AppItem" | 图标类型 | +| SYSTEM_DEFINED_PIXEL_MAP | "SystemDefinedType.PixelMap" | 二进制图片类型 | + +## UnifiedData + +表示UDMF数据对象,提供封装一组数据记录的方法。 + +**系统能力:** SystemCapability.DistributedDataManager.UDMF.Core + +### constructor + +constructor(record: UnifiedRecord) + +用于创建带有一条数据记录的UnifiedData对象。此处数据记录应为UnifiedRecord子类对象。 + +**系统能力:** SystemCapability.DistributedDataManager.UDMF.Core + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ------ | ------------------------------- | ---- | ------------------------------- | +| record | [UnifiedRecord](#unifiedrecord) | 是 | 要添加到UnifiedData中的数据记录 | + +### addRecord + +addRecord(record: UnifiedRecord): void + +在当前UnifiedData对象中添加一条数据记录。此处数据记录应为UnifiedRecord子类对象。 + +**系统能力:** SystemCapability.DistributedDataManager.UDMF.Core + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ------ | ------------------------------- | ---- | ------------------------------- | +| record | [UnifiedRecord](#unifiedrecord) | 是 | 要添加到UnifiedData中的数据记录 | + +**示例:** + +```js +let text1 = new UDMF.PlainText(); +text1.textContent = 'this is textContent of text1'; +let unifiedData = new UDMF.UnifiedData(text1); + +let text2 = new UDMF.PlainText(); +text2.textContent = 'this is textContent of text2'; +unifiedData.addRecord(text2); +``` + +### getRecords + +getRecords(): Array\ + +将当前UnifiedData对象中的所有数据记录取出。通过本接口取出的数据为UnifiedRecord类型,需通过[getType](#gettype)获取数据类型后转为子类再使用。 + +**系统能力** :SystemCapability.DistributedDataManager.UDMF.Core + +**返回值:** + +| 类型 | 说明 | +| ---------------------------------------- | --------------------------------- | +| Array\<[UnifiedRecord](#unifiedrecord)\> | 当前UnifiedData对象内所添加的记录 | + +**示例:** + +```js +let records = unifiedData.getRecords(); +for (let i = 0; i < records.length; i ++) { + let record = records[i]; +} +``` + +## Summary + +描述某一UnifiedData对象的数据摘要,包括所含数据类型及大小。 + +**系统能力:** SystemCapability.DistributedDataManager.UDMF.Core + +| 名称 | 类型 | 可读 | 可写 | 说明 | +| --------- | ------------------------- | ---- | ---- | ------------------------------------------------------------ | +| summary | { [key: string]: number } | 是 | 否 | 是一个字典类型对象,key表示数据类型(见[UnifiedDataType](#unifieddatatype)),value为UnifiedData对象中该类型记录数据量总和(当前文件类型记录仅记录uri大小,非文件大小) | +| totalSize | number | 是 | 否 | UnifiedData对象内记录总大小 | + +**示例:** + +```js +getSummaryCallback(data, err) { + let summaryData = data; + console.info(`summary: ${JSON.stringify(summaryData.summary)}`); + console.info(`totalSize: ${summaryData.totalSize}`); +} +``` + +## UnifiedRecord + +对UDMF数据支持的数据内容的抽象定义,称为记录,一个统一数据对象内包含一条或多条记录,例如一条文本记录,一条图片记录,一条HTML记录等。 + +UnifiedRecord是一个抽象父类,无法保存具体数据内容,应用在使用时,不能将其添加到UnifiedData中,而应该创建带有数据内容的具体子类,如Text、Image等。 + +### getType + +getType(): string + +获取当前UnifiedRecord的类型。由于从UnifiedData中调用[getRecords](#getrecords)所取出的数据是UnifiedRecord对象,因此需要通过本接口查询此记录的具体类型,再将该UnifiedRecord对象转换为其子类,调用子类接口。 + +**系统能力** :SystemCapability.DistributedDataManager.UDMF.Core + +**返回值:** + +| 类型 | 说明 | +| ------ | ------------------------------------------------------------ | +| string | 当前数据记录对应的具体数据类型,见[UnifiedDataType](#UnifiedDataType) | + +**示例:** + +```js +let text = new UDMF.PlainText(); +text.textContent = 'this is textContent of text'; +let unifiedData = new UDMF.UnifiedData(text); + +let records = unifiedData.getRecords(); +if (records[0].getType() == UDMF.UnifiedDataType.PLAIN_TEXT) { + let plainText = (records[0]); + console.info(`textContent: ${plainText.textContent}`); +} +``` + +## Text + +文本类型数据,是[UnifiedRecord](#unifiedrecord)的子类,也是文本类型数据的基类,用于描述文本类数据,推荐开发者优先使用Text的子类描述数据。 + +**系统能力**:SystemCapability.DistributedDataManager.UDMF.Core + +| 名称 | 类型 | 可读 | 可写 | 说明 | +| ------- | ------------------------- | ---- | ---- | ------------------------------------------------------------ | +| details | { [key: string]: string } | 是 | 是 | 是一个字典类型对象,key和value都是string类型,用于描述文本内容,例如,可生成一个details内容为
{
"title":"标题",
"content":"内容"
}
的数据对象,用于描述一篇文章。 | + +**示例:** + +```js +let text = new UDMF.Text(); +text.details = { + title: 'MyTitle', + content: 'this is content', +}; +let unifiedData = new UDMF.UnifiedData(text); +``` + +## PlainText + +纯文本类型数据,是[Text](#text)的子类,用于描述纯文本类数据。 + +**系统能力**:SystemCapability.DistributedDataManager.UDMF.Core + +| 名称 | 类型 | 可读 | 可写 | 说明 | +| ----------- | ------ | ---- | ---- | ---------------------- | +| textContent | string | 是 | 是 | 纯文本内容 | +| abstract | string | 是 | 是 | 纯文本摘要,非必填字段 | + +**示例:** + +```js +let text = new UDMF.PlainText(); +text.textContent = 'this is textContent'; +``` + +## HyperLink + +超链接类型数据,是[Text](#text)的子类,用于描述超链接类型数据。 + +**系统能力**:SystemCapability.DistributedDataManager.UDMF.Core + +| 名称 | 类型 | 可读 | 可写 | 说明 | +| ----------- | ------ | ---- | ---- | ------------------------ | +| url | string | 是 | 是 | 链接url | +| description | string | 是 | 是 | 链接内容描述,非必填字段 | + +**示例:** + +```js +let link = new UDMF.HyperLink(); +link.url = 'www.XXX.com'; +``` + +## HTML + +HTML类型数据,是[Text](#text)的子类,用于描述超文本标记语言数据。 + +**系统能力**:SystemCapability.DistributedDataManager.UDMF.Core + +| 名称 | 类型 | 可读 | 可写 | 说明 | +| ------------ | ------ | ---- | ---- | -------------------------------------- | +| htmlContent | string | 是 | 是 | html格式内容 | +| plainContent | string | 是 | 是 | 去除html标签后的纯文本内容,非必填字段 | + +**示例:** + +```js +let html = new UDMF.HTML(); +html.htmlContent = '

标题

'; +``` + +## Image + +图片类型数据,是[UnifiedRecord](#unifiedrecord)的子类,用于描述图片文件。 + +**系统能力**:SystemCapability.DistributedDataManager.UDMF.Core + +| 名称 | 类型 | 可读 | 可写 | 说明 | +| -------- | ------ | ---- | ---- | ----------- | +| imageUri | string | 是 | 是 | 图片数据uri | + +**示例:** + +```js +let image = new UDMF.Image(); +image.imageUri = 'schema://com.samples.test/files/test.jpg'; +``` + +## Video + +视频类型数据,是[UnifiedRecord](#unifiedrecord)的子类,用于描述视频文件。 + +**系统能力**:SystemCapability.DistributedDataManager.UDMF.Core + +| 名称 | 类型 | 可读 | 可写 | 说明 | +| -------- | ------ | ---- | ---- | ----------- | +| videoUri | string | 是 | 是 | 视频数据uri | + +**示例:** + +```js +let video = new UDMF.Video(); +video.videoUri = 'schema://com.samples.test/files/test.mp4'; +``` + +## SystemDefinedRecord + +SystemDefinedRecord是[UnifiedRecord](#unifiedrecord)的子类,也是OpenHarmony平台上系统侧定义的数据类型的基类,用于描述文本类数据,推荐开发者优先使用SystemDefinedRecord的子类描述数据。 + +**系统能力**:SystemCapability.DistributedDataManager.UDMF.Core + +| 名称 | 类型 | 可读 | 可写 | 说明 | +| ------- | ------------------------------------------------- | ---- | ---- | ------------------------------------------------------------ | +| details | { [key: string]: number \| string \| Uint8Array } | 是 | 是 | 是一个字典类型对象,key是string类型,value可以写入number(数值类型),string(字符串类型),Uint8Array(二进制字节数组)类型数据。 | + +**示例:** + +```js +let sdr = new UDMF.SystenDefinedReocrd(); +let u8Array = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); +sdr.details = { + title: 'recordTitle', + version: 1, + content: u8Array, +}; +let unifiedData = new UDMF.UnifiedData(sdr); +``` + +## SystemDefinedForm + +卡片类型数据,是[SystemDefinedRecord](#systemdefinedrecord)的子类。 + +**系统能力**:SystemCapability.DistributedDataManager.UDMF.Core + +| 名称 | 类型 | 可读 | 可写 | 说明 | +| ----------- | ------ | ---- | ---- | ----------------- | +| formId | number | 是 | 是 | 卡片id | +| formName | string | 是 | 是 | 卡片名称 | +| bundleName | string | 是 | 是 | 卡片所属bundle名 | +| abilityName | string | 是 | 是 | 卡片对应ability名 | +| module | string | 是 | 是 | 卡片所属module名 | + +**示例:** + +```js +let form = new UDMF.SystemDefinedForm(); +form.formId = 123456; +form.formName = 'MyFormName'; +form.bundleName = 'MyBundleName'; +form.abilityName = 'MyAbilityName'; +form.module = 'MyModule'; +let u8Array = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); +form.details = { + formKey1: 123, + formKey2: 'formValue', + formKey3: u8Array, +}; +let unifiedData = new UDMF.UnifiedData(form); +``` + +## SystemDefinedAppItem + +图标类型数据,是[SystemDefinedRecord](#systemdefinedrecord)的子类。 + +**系统能力**:SystemCapability.DistributedDataManager.UDMF.Core + +| 名称 | 类型 | 可读 | 可写 | 说明 | +| ----------- | ------ | ---- | ---- | --------------------- | +| appId | string | 是 | 是 | 图标对应应用id | +| appName | string | 是 | 是 | 图标对应应用名 | +| appIconId | string | 是 | 是 | 图标图片id | +| appLabelId | string | 是 | 是 | 图标标签id | +| bundleName | string | 是 | 是 | 图标对应应用bundle名 | +| abilityName | string | 是 | 是 | 图标对应应用ability名 | + +**示例:** + +```js +let appItem = new UDMF.SystemDefinedAppItem(); +appItem.appId = 'MyAppId'; +appItem.appName = 'MyAppName'; +appItem.appIconId = 'MyAppIconId'; +appItem.appLabelId = 'MyAppLabelId'; +appItem.bundleName = 'MyBundleName'; +appItem.abilityName = 'MyAbilityName'; +let u8Array = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); +appItem.details = { + appItemKey1: 123, + appItemKey2: 'appItemValue', + appItemKey3: u8Array, +}; +let unifiedData = new UDMF.UnifiedData(appItem); +``` + +## SystemDefinedPixelMap + +与系统侧定义的PixelMap类型数据对应的图片类型数据,是[SystemDefinedRecord](#systemdefinedrecord)的子类,仅保存PixelMap的二进制数据。 + +**系统能力**:SystemCapability.DistributedDataManager.UDMF.Core + +| 名称 | 类型 | 可读 | 可写 | 说明 | +| ------- | ---------- | ---- | ---- | ------------------------ | +| rawData | Uint8Array | 是 | 是 | PixelMap对象的二进制数据 | + +**示例:** + +```js +import image from '@ohos.multimedia.image'; // PixelMap类定义所在模块 + +let arrayBuf = new ArrayBuffer(pixelmap.getPixelBytesNumber()); // pixelmap为image.PixelMap对象 +pixelmap.readPixelsToBuffer(arrayBuf); +let u8Array = new Uint8Array(arrayBuf); +let sdpixel = new UDMF.SystemDefinedPixelMap(); +sdpixel.rawData = u8Array; +let unifiedData = new UDMF.UnifiedData(sdpixel); +``` + +