提交 a1ada9f6 编写于 作者: H HelloCrease

Merge branch 'OpenHarmony-4.0-Beta1' of https://gitee.com/HelloCrease/docs...

Merge branch 'OpenHarmony-4.0-Beta1' of https://gitee.com/HelloCrease/docs into OpenHarmony-4.0-Beta1
......@@ -46,7 +46,7 @@ The **"pages"** defines the route information of each page. Each page consists o
```
{
"app": {
"bundleName": "com.huawei.player",
"bundleName": "com.example.player",
"version": {
"code": 1,
"name": "1.0"
......
......@@ -5,14 +5,6 @@
Provides APIs related to MindSpore Lite model inference.
Copyright 2021 Huawei Technologies Co., Ltd
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
[http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
\@Syscap SystemCapability.Ai.MindSpore
**Since:**
......
# AccessibilityExtensionAbility开发指南
# AccessibilityExtensionAbility
AccessibilityExtensionAbility基于ExtensionAbility框架,提供无障碍扩展服务,开发者可以基于AccessibilityExtensionAbility模板开发自己的辅助功能应用,协助用户完成一些快捷的交互过程。
......
......@@ -62,7 +62,7 @@
}
}
```
OpenHarmony系统对无图标应用严格管控,防止一些恶意应用故意配置无入口图标,导致用户找不到软件所在的位置,无法操作卸载应用,在一定程度上保证用户的手机安全。
OpenHarmony系统对无图标应用严格管控,防止一些恶意应用故意配置无入口图标,导致用户找不到软件所在的位置,无法操作卸载应用,在一定程度上保证用户终端设备的安全。
如果应用确需隐藏入口图标,需要配置AllowAppDesktopIconHide应用特权,具体配置方式参考[应用特权配置指南](../../device-dev/subsystems/subsys-app-privilege-config-guide.md)。详细的入口图标及入口标签的显示规则如下。
......
......@@ -49,10 +49,12 @@ ArkTS卡片相较于JS卡片具备了更加丰富的能力,但也增加了使
- 卡片的事件处理和使用方的事件处理是独立的,建议在使用方支持左右滑动的场景下卡片内容不要使用左右滑动功能的组件,以防手势冲突影响交互体验。
当前ArkTS卡片的能力会持续加强,如下能力会在后续版本支持
除此之外,当前ArkTS卡片还存在如下约束
- 不支持断点调试能力,会在后续版本支持
- 暂不支持导入模块
- 不支持import,会在后续版本支持
- 暂不支持极速预览
- 不支持极速预览,会在后续版本支持。
- 暂不支持断点调试能力。
- 暂不支持Hot Reload热重载。
# EnterpriseAdminExtensionAbility开发指南
# EnterpriseAdminExtensionAbility
## EnterpriseAdminExtensionAbility简介
......
# InputMethodExtensionAbility开发指南
# InputMethodExtensionAbility
## 使用场景
[InputMethodExtensionAbility](../reference/apis/js-apis-inputmethod-extension-ability.md)基于[ExtensionAbility](extensionability-overview.md)框架,用于开发输入法应用。
......
......@@ -392,7 +392,7 @@ ServiceExtensionAbility服务组件在[onConnect()](../reference/apis/js-apis-ap
console.info(TAG, 'getBundleNameByUid: ' + callerBundleName);
// 对客户端包名进行识别
if (callerBundleName != 'com.example.connectextapp') { // 识别不通过
console.info(TAG, 'The caller bundle is not in whitelist, reject');
console.info(TAG, 'The caller bundle is not in trustlist, reject');
return;
}
// 识别通过,执行正常业务逻辑
......
# 线程模型
# 线程模型概述
FA模型下的线程主要有如下三类:
......
# WindowExtensionAbility
# WindowExtensionAbility(仅对系统应用开放)
[WindowExtensionAbility](../reference/apis/js-apis-application-windowExtensionAbility.md)是一种ExtensionAbility组件,用于提供界面组合扩展能力,允许系统应用进行跨应用的界面拉起和嵌入。
......@@ -15,7 +15,7 @@ WindowExtensionAbility必须和[AbilityComponent](../reference/arkui-ts/ts-conta
>
## 设置一个嵌入式UIAbility(仅对系统应用开放)
## 设置一个嵌入式UIAbility
WindowExtensionAbility提供了onConnect()、onDisconnect()和onWindowReady()生命周期回调,根据需要重写对应的回调方法。
......@@ -79,7 +79,7 @@ WindowExtensionAbility提供了onConnect()、onDisconnect()和onWindowReady()生
```
## 拉起一个嵌入式UIAbility(仅对系统应用开放)
## 拉起一个嵌入式UIAbility
系统应用可以通过AbilityComponent容器加载创建好的WindowExtensionAbility。
......
......@@ -7,8 +7,8 @@ IPC(Inter-Process Communication)与RPC(Remote Procedure Call)用于实
> **说明:**
> Stage模型不能直接使用本文介绍的IPC和RPC,需要通过以下能力实现相关业务场景:
>- IPC典型使用场景为[后台服务](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/application-models/background-services.md),后台服务通过IPC机制提供跨进程的服务调用能力。
>- RPC典型使用场景为[多端协同](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/application-models/hop-multi-device-collaboration.md),多端协同通过RPC机制提供远端接口调用与数据传递。
>- IPC典型使用场景为[后台服务](../application-models/background-services.md),后台服务通过IPC机制提供跨进程的服务调用能力。
>- RPC典型使用场景为[多端协同](../application-models/hop-multi-device-collaboration.md),多端协同通过RPC机制提供远端接口调用与数据传递。
## 实现原理
......@@ -20,7 +20,7 @@ IPC和RPC通常采用客户端-服务器(Client-Server)模型,在使用时
## 约束与限制
- 单个设备上跨进程通信时,传输的数据量最大约为1MB,过大的数据量请使用[匿名共享内存](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-rpc.md#ashmem8)
- 单个设备上跨进程通信时,传输的数据量最大约为1MB,过大的数据量请使用[匿名共享内存](../reference/apis/js-apis-rpc.md#ashmem8)
- 不支持在RPC中订阅匿名Stub对象(没有向SAMgr注册Stub对象)的死亡通知。
......
......@@ -21,7 +21,7 @@
- Key键为string类型,要求非空且长度不超过80个字节。
- 如果Value值为string类型,可以为空,不为空时长度不超过8192个字节。
- 如果Value值为string类型,请使用UTF-8编码格式,可以为空,不为空时长度不超过8192个字节。
- 内存会随着存储数据量的增大而增大,所以存储的数据量应该是轻量级的,建议存储的数据不超过一万条,否则会在内存方面产生较大的开销。
......
# 设备使用信息统计(API9)
# 设备使用信息统计开发指导
## 场景介绍
......
# HiLog开发指导
# HiLog开发指导(Native)
## 概述
HiLog是OpenHarmony日志系统,提供给系统框架、服务、以及应用打印日志,记录用户操作、系统运行状态等。
> **说明:**
......
......@@ -256,7 +256,7 @@ controller: TextInputController = new TextInputController()
适用于:OpenHarmony 3.2 Beta5 API 9
gridCount参数是指弹窗宽度占栅格列数的个数。系统把窗口宽等分,等分的份数即为栅格列数,不同设备栅格列数不同。比如手机屏幕密度值在320vp<=水平宽度<600vp,所以栅格列数是4,则gridCount的有效值在\[1, 4\]
gridCount参数是指弹窗宽度占栅格列数的个数。系统把窗口宽等分,等分的份数即为栅格列数,不同设备栅格列数不同。假设设备屏幕密度值在320vp<=水平宽度<600vp,所以栅格列数是4,则gridCount的有效值在\[1, 4\]
注意:仅采用弹窗默认样式时设置有效。
......@@ -391,7 +391,7 @@ Text组件当前文本排列方向固定为横向排列,要设置为竖向排
@Entry
@Component
struct Index15 {
private message: string = '本文档适用于HarmonyOS应用开发的初学者。通过构建一个简单的具有页面跳转/返回功能的应用,快速了解工程目录的主要文件,熟悉HarmonyOS应用开发流程。';
private message: string = '本文档适用于应用开发的初学者。通过构建一个简单的具有页面跳转/返回功能的应用,快速了解工程目录的主要文件,熟悉应用开发流程。';
build() {
Flex({ direction: FlexDirection.Column, wrap: FlexWrap.Wrap }) {
ForEach(this.message.split(''), (item, index) => {
......@@ -468,18 +468,6 @@ Scroll组件在未设置高度情况下,默认为窗口高度,当滚动区
Scroll组件需要设置Scroll高度,或者使用Flex布局限制Scroll高度。
## backgroundImage如何设置CenterCrop
适用于:OpenHarmony 3.2 Beta5 API 9 Stage模型
**问题现象**
CenterCrop是android中imageView,scaletype的设置,主要保证图片等比缩放裁剪,位置保持居中,要达到相同效果,应该怎么处理?
**解决措施**
可以使用通用属性backgroundImageSize\(ImageSize.cover\)和backgroundImagePosition\(Alignment.Center\)达到相同效果。
## 如何自定义Video组件控制栏样式
适用于:OpenHarmony 3.2 Beta5 API 9 Stage模型
......
......@@ -77,7 +77,7 @@ PixelMap应该被转换成相应的ArrayBuffer再放进数据库。
**参考链接**
[readPixelsToBuffer](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-image.md#readpixelstobuffer7-1)
[readPixelsToBuffer](../reference/apis/js-apis-image.md#readpixelstobuffer7-1)
## 如何获取rdb关系型数据库文件
......
......@@ -133,19 +133,19 @@ this.options = {
**解决措施**
启动应用,获取权限后系统会访问远程服务器,将拍摄照片保存在本地,通过上传接口将文件从个人手机传送至远程服务器。
启动应用,获取权限后系统会访问远程服务器,将拍摄照片保存在本地,通过上传接口将文件从个人设备传送至远程服务器。
**参考链接**
[上传下载](../reference/apis/js-apis-request.md)
## 手机网络正常,调用connection.hasDefaultNet\(\)接口失败
## 设备网络正常,调用connection.hasDefaultNet\(\)接口失败
适用于:OpenHarmony 3.2 Beta API 9
**问题现象**
手机可以上网,浏览器可以正常打开网页,但是hasDefaultNet这个方法调用失败,回调函数走到了失败的回调。
设备可以上网,浏览器可以正常打开网页,但是hasDefaultNet这个方法调用失败,回调函数走到了失败的回调。
**解决措施**
......
......@@ -114,7 +114,7 @@ if (windowClass) {
**参考链接**
[window.SystemBarProperties](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-window.md#systembarproperties)
[window.SystemBarProperties](../reference/apis/js-apis-window.md#systembarproperties)
## 如何保持屏幕常亮
......@@ -124,7 +124,7 @@ if (windowClass) {
设置屏幕常亮,不熄屏。
获取窗口实例对象后,调用[setWindowKeepScreenOn方法](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-window.md#setwindowkeepscreenon9)可设置屏幕是否常亮。
获取窗口实例对象后,调用[setWindowKeepScreenOn方法](../reference/apis/js-apis-window.md#setwindowkeepscreenon9)可设置屏幕是否常亮。
```
let isKeepScreenOn = true;
......
......@@ -7,10 +7,11 @@
## 保存图片或视频类文件
1. 导入选择器模块。
1. 导入选择器模块和文件管理模块
```ts
import picker from '@ohos.file.picker';
import fs from '@ohos.file.fs';
```
2. 创建图库保存选项实例。
......@@ -20,23 +21,25 @@
photoSaveOptions.newFileNames = ["PhotoViewPicker01.jpg"]; // 保存文件名(可选)
```
3. 创建图库选择器实例,调用[save()](../reference/apis/js-apis-file-picker.md#save)接口拉起FilePicker界面进行文件保存。
用户选择目标文件夹,用户选择与文件类型相对应的文件夹,即可完成文件保存操作。保存成功后,返回保存文档的URI。
3. 创建图库选择器实例,调用[save()](../reference/apis/js-apis-file-picker.md#save)接口拉起FilePicker界面进行文件保存。用户选择目标文件夹,用户选择与文件类型相对应的文件夹,即可完成文件保存操作。保存成功后,返回保存文档的URI。
</br>save返回的URI权限是读写权限,可以根据结果集中URI进行文件读写等操作。注意不能在picker的回调里直接使用此URI进行打开文件操作,需要定义一个全局变量保存URI,使用类似一个按钮去触发打开文件。
```ts
let uri = null;
let URI = null;
const photoViewPicker = new picker.PhotoViewPicker();
photoViewPicker.save(photoSaveOptions).then((photoSaveResult) => {
uri = photoSaveResult[0];
URI = photoSaveResult[0];
console.info('photoViewPicker.save to file succeed and URI is:' + URI);
}).catch((err) => {
console.error(`Invoke documentPicker.select failed, code is ${err.code}, message is ${err.message}`);
console.error(`Invoke photoViewPicker.save failed, code is ${err.code}, message is ${err.message}`);
})
```
4. 待界面从FilePicker返回后,在其他函数中使用[fs.openSync](../reference/apis/js-apis-file-fs.md#fsopensync)接口,通过uri打开这个文件得到fd
4. 待界面从FilePicker返回后,再通过类似一个按钮调用其他函数,使用[fs.openSync](../reference/apis/js-apis-file-fs.md#fsopensync)接口,通过URI打开这个文件得到fd。这里需要注意接口权限参数是fs.OpenMode.READ_WRITE
```ts
let file = fs.openSync(uri, fs.OpenMode.READ_WRITE);
let file = fs.openSync(URI, fs.OpenMode.READ_WRITE);
console.info('file fd: ' + file.fd);
```
......@@ -50,10 +53,11 @@
## 保存文档类文件
1. 导入选择器模块。
1. 导入选择器模块和文件管理模块
```ts
import picker from '@ohos.file.picker';
import fs from '@ohos.file.fs';
```
2. 创建文档保存选项实例。
......@@ -63,27 +67,25 @@
documentSaveOptions.newFileNames = ["DocumentViewPicker01.txt"]; // 保存文件名(可选)
```
3. 创建文档选择器实例。调用[save()](../reference/apis/js-apis-file-picker.md#save-3)接口拉起FilePicker界面进行文件保存。
用户选择目标文件夹,用户选择与文件类型相对应的文件夹,即可完成文件保存操作。保存成功后,返回保存文档的URI。
> **说明:**
>
> 目前DocumentSelectOptions不支持参数配置,默认可以选择所有类型的用户文件。
3. 创建文档选择器实例。调用[save()](../reference/apis/js-apis-file-picker.md#save-3)接口拉起FilePicker界面进行文件保存。用户选择目标文件夹,用户选择与文件类型相对应的文件夹,即可完成文件保存操作。保存成功后,返回保存文档的URI。
</br>save返回的URI权限是读写权限,可以根据结果集中URI进行文件读写等操作。注意不能在picker的回调里直接使用此URI进行打开文件操作,需要定义一个全局变量保存URI,使用类似一个按钮去触发打开文件。
```ts
let uri = null;
let URI = null;
const documentViewPicker = new picker.DocumentViewPicker(); // 创建文件选择器实例
documentViewPicker.save(documentSaveOptions).then((documentSaveResult) => {
uri = documentSaveResult[0];
URI = documentSaveResult[0];
console.info('documentViewPicker.save to file succeed and URI is:' + URI);
}).catch((err) => {
console.error(`Invoke documentPicker.save failed, code is ${err.code}, message is ${err.message}`);
console.error(`Invoke documentViewPicker.save failed, code is ${err.code}, message is ${err.message}`);
})
```
4. 待界面从FilePicker返回后,在其他函数中使用[fs.openSync](../reference/apis/js-apis-file-fs.md#fsopensync)接口,通过uri打开这个文件得到fd
4. 待界面从FilePicker返回后,再通过类似一个按钮调用其他函数,使用[fs.openSync](../reference/apis/js-apis-file-fs.md#fsopensync)接口,通过URI打开这个文件得到fd。这里需要注意接口权限参数是fs.OpenMode.READ_WRITE
```ts
let file = fs.openSync(uri, fs.OpenMode.READ_WRITE);
let file = fs.openSync(URI, fs.OpenMode.READ_WRITE);
console.info('file fd: ' + file.fd);
```
......@@ -97,10 +99,11 @@
## 保存音频类文件
1. 导入选择器模块。
1. 导入选择器模块和文件管理模块
```ts
import picker from '@ohos.file.picker';
import fs from '@ohos.file.fs';
```
2. 创建音频保存选项实例。
......@@ -110,26 +113,25 @@
audioSaveOptions.newFileNames = ['AudioViewPicker01.mp3']; // 保存文件名(可选)
```
3. 创建音频选择器实例。调用[save()](../reference/apis/js-apis-file-picker.md#save-6)接口拉起FilePicker界面进行文件保存。
用户选择目标文件夹,用户选择与文件类型相对应的文件夹,即可完成文件保存操作。保存成功后,返回保存文档的URI。
> **说明:**
>
> 目前AudioSelectOptions不支持参数配置,默认可以选择所有类型的用户文件。
3. 创建音频选择器实例。调用[save()](../reference/apis/js-apis-file-picker.md#save-6)接口拉起FilePicker界面进行文件保存。用户选择目标文件夹,用户选择与文件类型相对应的文件夹,即可完成文件保存操作。保存成功后,返回保存文档的URI。
</br>save返回的URI权限是读写权限,可以根据结果集中URI进行文件读写等操作。注意不能在picker的回调里直接使用此URI进行打开文件操作,需要定义一个全局变量保存URI,使用类似一个按钮去触发打开文件。
```ts
let uri = null;
let URI = null;
const audioViewPicker = new picker.AudioViewPicker();
audioViewPicker.save(audioSaveOptions).then((audioSelectResult) => {
uri = audioSelectResult[0];
URI = audioSelectResult[0];
console.info('audioViewPicker.save to file succeed and URI is:' + URI);
}).catch((err) => {
console.error(`Invoke audioPicker.select failed, code is ${err.code}, message is ${err.message}`);
console.error(`Invoke audioViewPicker.save failed, code is ${err.code}, message is ${err.message}`);
})
```
4. 待界面从FilePicker返回后,在其他函数中使用[fs.openSync](../reference/apis/js-apis-file-fs.md#fsopensync)接口,通过uri打开这个文件得到fd
4. 待界面从FilePicker返回后,再通过类似一个按钮调用其他函数,使用[fs.openSync](../reference/apis/js-apis-file-fs.md#fsopensync)接口,通过URI打开这个文件得到fd。这里需要注意接口权限参数是fs.OpenMode.READ_WRITE
```ts
let file = fs.openSync(uri, fs.OpenMode.READ_WRITE);
let file = fs.openSync(URI, fs.OpenMode.READ_WRITE);
console.info('file fd: ' + file.fd);
```
......
......@@ -12,10 +12,11 @@
## 选择图片或视频类文件
1. 导入选择器模块。
1. 导入选择器模块和文件管理模块
```ts
import picker from '@ohos.file.picker';
import fs from '@ohos.file.fs';
```
2. 创建图库选择选项实例。
......@@ -32,41 +33,44 @@
photoSelectOptions.maxSelectNumber = 5; // 选择媒体文件的最大数目
```
4. 创建图库选择器实例,调用[select()](../reference/apis/js-apis-file-picker.md#select)接口拉起FilePicker界面进行文件选择。
文件选择成功后,返回[PhotoSelectResult](../reference/apis/js-apis-file-picker.md#photoselectresult)结果集,可以根据结果集中URI进行文件读取等操作
4. 创建图库选择器实例,调用[select()](../reference/apis/js-apis-file-picker.md#select)接口拉起FilePicker界面进行文件选择。文件选择成功后,返回[PhotoSelectResult](../reference/apis/js-apis-file-picker.md#photoselectresult)结果集。
</br>select返回的URI权限是只读权限,可以根据结果集中URI进行读取文件数据操作。注意不能在picker的回调里直接使用此URI进行打开文件操作,需要定义一个全局变量保存URI,使用类似一个按钮去触发打开文件
```ts
let uri = null;
const photoPicker = new picker.PhotoViewPicker();
photoPicker.select(photoSelectOptions).then((photoSelectResult) => {
uri = photoSelectResult.photoUris[0];
let URI = null;
const photoViewPicker = new picker.PhotoViewPicker();
photoViewPicker.select(photoSelectOptions).then((photoSelectResult) => {
URI = photoSelectResult.photoUris[0];
console.info('photoViewPicker.select to file succeed and URI is:' + URI);
}).catch((err) => {
console.error(`Invoke photoPicker.select failed, code is ${err.code}, message is ${err.message}`);
console.error(`Invoke photoViewPicker.select failed, code is ${err.code}, message is ${err.message}`);
})
```
5. 待界面从FilePicker返回后,在其他函数中使用[fs.openSync](../reference/apis/js-apis-file-fs.md#fsopensync)接口,通过uri打开这个文件得到fd
5. 待界面从FilePicker返回后,再通过类似一个按钮调用其他函数,使用[fs.openSync](../reference/apis/js-apis-file-fs.md#fsopensync)接口,通过URI打开这个文件得到fd。这里需要注意接口权限参数是fs.OpenMode.READ_ONLY
```ts
let file = fs.openSync(uri, fs.OpenMode.READ_WRITE);
let file = fs.openSync(URI, fs.OpenMode.READ_ONLY);
console.info('file fd: ' + file.fd);
```
6. 通过fd使用[fs.writeSync](../reference/apis/js-apis-file-fs.md#writesync)接口对这个文件进行编辑修改,编辑修改完成后关闭fd。
6. 通过fd使用[fs.readSync](../reference/apis/js-apis-file-fs.md#readsync)接口读取这个文件内的数据,读取完成后关闭fd。
```ts
let writeLen = fs.writeSync(file.fd, 'hello, world');
console.info('write data to file succeed and size is:' + writeLen);
let buffer = new ArrayBuffer(4096);
let readLen = fs.readSync(file.fd, buffer);
console.info('readSync data to file succeed and buffer size is:' + readLen);
fs.closeSync(file);
```
## 选择文档类文件
1. 导入选择器模块。
1. 导入选择器模块和文件管理模块
```ts
import picker from '@ohos.file.picker';
import fs from '@ohos.file.fs';
```
2. 创建文档选择选项实例。
......@@ -75,23 +79,24 @@
const documentSelectOptions = new picker.DocumentSelectOptions();
```
3. 创建文档选择器实例。调用[select()](../reference/apis/js-apis-file-picker.md#select-3)接口拉起FilePicker界面进行文件选择。
文件选择成功后,返回被选中文档的URI结果集。开发者可以根据结果集中URI做进一步的处理
例如通过[文件管理接口](../reference/apis/js-apis-file-fs.md)根据URI获取部分文件属性信息,比如文件大小、访问时间、修改时间等。如有获取文件名称需求,请暂时使用[startAbilityForResult](../../application-dev/application-models/uiability-intra-device-interaction.md)获取。
3. 创建文档选择器实例。调用[select()](../reference/apis/js-apis-file-picker.md#select-3)接口拉起FilePicker界面进行文件选择。文件选择成功后,返回被选中文档的URI结果集。
</br>select返回的URI权限是只读权限,开发者可以根据结果集中URI做进一步的处理。注意不能在picker的回调里直接使用此URI进行打开文件操作,需要定义一个全局变量保存URI,使用类似一个按钮去触发打开文件
</br>例如通过[文件管理接口](../reference/apis/js-apis-file-fs.md)根据URI获取部分文件属性信息,比如文件大小、访问时间、修改时间等。如有获取文件名称需求,请暂时使用[startAbilityForResult](../../application-dev/application-models/uiability-intra-device-interaction.md)获取。
> **说明:**
>
> 目前DocumentSelectOptions不支持参数配置,默认可以选择所有类型的用户文件。
```ts
let uri = null;
let URI = null;
const documentViewPicker = new picker.DocumentViewPicker(); // 创建文件选择器实例
documentViewPicker.select(documentSelectOptions).then((documentSelectResult) => {
uri = documentSelectResult[0];
URI = documentSelectResult[0];
console.info('documentViewPicker.select to file succeed and URI is:' + URI);
}).catch((err) => {
console.error(`Invoke documentPicker.select failed, code is ${err.code}, message is ${err.message}`);
console.error(`Invoke documentViewPicker.select failed, code is ${err.code}, message is ${err.message}`);
})
```
......@@ -109,7 +114,7 @@
try {
let result = await context.startAbilityForResult(config, {windowMode: 1});
if (result.resultCode !== 0) {
console.error(`DocumentPicker.select failed, code is ${result.resultCode}, message is ${result.want.parameters.message}`);
console.error(`documentViewPicker.select failed, code is ${result.resultCode}, message is ${result.want.parameters.message}`);
return;
}
// 获取到文档文件的URI
......@@ -117,34 +122,34 @@
// 获取到文档文件的文件名称
let file_name_list = result.want.parameters.file_name_list;
} catch (err) {
console.error(`Invoke documentPicker.select failed, code is ${err.code}, message is ${err.message}`);
console.error(`Invoke documentViewPicker.select failed, code is ${err.code}, message is ${err.message}`);
}
```
4. 待界面从FilePicker返回后,在其他函数中使用[fs.openSync](../reference/apis/js-apis-file-fs.md#fsopensync)接口,通过uri打开这个文件得到fd
4. 待界面从FilePicker返回后,再通过类似一个按钮调用其他函数,使用[fs.openSync](../reference/apis/js-apis-file-fs.md#fsopensync)接口,通过URI打开这个文件得到fd。这里需要注意接口权限参数是fs.OpenMode.READ_ONLY
```ts
let file = fs.openSync(uri, fs.OpenMode.READ_WRITE);
let file = fs.openSync(URI, fs.OpenMode.READ_ONLY);
console.info('file fd: ' + file.fd);
```
5. 通过fd使用[fs.readSync](../reference/apis/js-apis-file-fs.md#readsync)接口对这个文件进行读取数据,读取完成后关闭fd。
5. 通过fd使用[fs.readSync](../reference/apis/js-apis-file-fs.md#readsync)接口读取这个文件内的数据,读取完成后关闭fd。
```ts
let file = fs.openSync(uri, fs.OpenMode.READ_WRITE);
let buf = new ArrayBuffer(4096);
let num = fs.readSync(file.fd, buf);
console.info('read data to file succeed and size is:' + num);
let buffer = new ArrayBuffer(4096);
let readLen = fs.readSync(file.fd, buffer);
console.info('readSync data to file succeed and buffer size is:' + readLen);
fs.closeSync(file);
```
## 选择音频类文件
1. 导入选择器模块。
1. 导入选择器模块和文件管理模块
```ts
import picker from '@ohos.file.picker';
import fs from '@ohos.file.fs';
```
2. 创建音频选择选项实例。
......@@ -153,37 +158,39 @@
const audioSelectOptions = new picker.AudioSelectOptions();
```
3. 创建音频选择器实例。调用[select()](../reference/apis/js-apis-file-picker.md#select-6)接口拉起FilePicker界面进行文件选择。
文件选择成功后,返回被选中音频的URI结果集。开发者可以根据结果集中URI做进一步的处理
例如通过[文件管理接口](../reference/apis/js-apis-file-fs.md)根据URI拿到音频资源的文件句柄(FD),再配合媒体服务实现音频播放的开发,具体请参考[音频播放开发指导](../media/audio-playback-overview.md)
3. 创建音频选择器实例。调用[select()](../reference/apis/js-apis-file-picker.md#select-6)接口拉起FilePicker界面进行文件选择。文件选择成功后,返回被选中音频的URI结果集。
</br>select返回的URI权限是只读权限,开发者可以根据结果集中URI做读取文件数据操作。注意不能在 picker的回调里直接使用此URI进行打开文件操作,需要定义一个全局变量保存URI,使用类似一个按钮去触发打开文件
</br>例如通过[文件管理接口](../reference/apis/js-apis-file-fs.md)根据URI拿到音频资源的文件句柄(FD),再配合媒体服务实现音频播放的开发,具体请参考[音频播放开发指导](../media/audio-playback-overview.md)
> **说明:**
>
> 目前AudioSelectOptions不支持参数配置,默认可以选择所有类型的用户文件。
```ts
let uri = null;
let URI = null;
const audioViewPicker = new picker.AudioViewPicker();
audioViewPicker.select(audioSelectOptions).then(audioSelectResult => {
uri = audioSelectOptions[0];
URI = audioSelectOptions[0];
console.info('audioViewPicker.select to file succeed and URI is:' + URI);
}).catch((err) => {
console.error(`Invoke audioPicker.select failed, code is ${err.code}, message is ${err.message}`);
console.error(`Invoke audioViewPicker.select failed, code is ${err.code}, message is ${err.message}`);
})
```
4. 待界面从FilePicker返回后,在其他函数中使用[fs.openSync](../reference/apis/js-apis-file-fs.md#fsopensync)接口,通过uri打开这个文件得到fd
4. 待界面从FilePicker返回后,再通过类似一个按钮调用其他函数,使用[fs.openSync](../reference/apis/js-apis-file-fs.md#fsopensync)接口,通过URI打开这个文件得到fd。这里需要注意接口权限参数是fs.OpenMode.READ_ONLY
```ts
let file = fs.openSync(uri, fs.OpenMode.READ_WRITE);
let file = fs.openSync(URI, fs.OpenMode.READ_ONLY);
console.info('file fd: ' + file.fd);
```
5. 通过fd使用[fs.writeSync](../reference/apis/js-apis-file-fs.md#writesync)接口对这个文件进行编辑修改,编辑修改完成后关闭fd。
5. 通过fd使用[fs.readSync](../reference/apis/js-apis-file-fs.md#readsync)接口读取这个文件内的数据,读取完成后关闭fd。
```ts
let writeLen = fs.writeSync(file.fd, 'hello, world');
console.info('write data to file succeed and size is:' + writeLen);
let buffer = new ArrayBuffer(4096);
let readLen = fs.readSync(file.fd, buffer);
console.info('readSync data to file succeed and buffer size is:' + readLen);
fs.closeSync(file);
```
......@@ -125,7 +125,7 @@ export default struct PlayListCover {
## 歌单列表
不同断点下,歌单列表的样式基本一致,但sm和md断点下是歌单列表是单列显示,lg断点下是双列显示。可以通过[List组件](https://gitee.com/fanzhaonan/docs/blob/master/zh-cn/application-dev/reference/arkui-ts/ts-container-list.md)的lanes属性实现这一效果。
不同断点下,歌单列表的样式基本一致,但sm和md断点下是歌单列表是单列显示,lg断点下是双列显示。可以通过[List组件](../../reference/arkui-ts/ts-container-list.md)的lanes属性实现这一效果。
```
......
......@@ -19,7 +19,7 @@
- [音频录制开发概述](audio-recording-overview.md)
- [使用AVRecorder开发音频录制功能](using-avrecorder-for-recording.md)
- [使用AudioCapturer开发音频录制功能](using-audiocapturer-for-recording.md)
- [使用OpenSLES开发音频录制功能](using-opensl-es-for-recording.md)
- [使用OpenSL ES开发音频录制功能](using-opensl-es-for-recording.md)
- [管理麦克风](mic-management.md)
- [音频录制流管理](audio-recording-stream-management.md)
- [音频输入设备管理](audio-input-device-management.md)
......@@ -28,7 +28,7 @@
- [开发音频通话功能](audio-call-development.md)
- [视频播放](video-playback.md)
- [视频录制](video-recording.md)
- 媒体会话(仅对系统应用开放)
- 媒体会话
- [媒体会话概述](avsession-overview.md)
- 本地媒体会话
- [本地媒体会话概述](local-avsession-overview.md)
......
......@@ -26,11 +26,7 @@ OpenHarmony系统预置的播控中心,作为媒体会话控制方与音视频
| -------- | -------- |
| getAllSessionDescriptors(callback: AsyncCallback&lt;Array&lt;Readonly&lt;AVSessionDescriptor&gt;&gt;&gt;): void | 获取系统中所有媒体会话的描述符。 |
| createController(sessionId: string, callback: AsyncCallback&lt;AVSessionController&gt;): void | 创建媒体会话控制器。 |
| getValidCommands(callback: AsyncCallback&lt;Array&lt;AVControlCommandType&gt;&gt;): void | 获取媒体会话支持的有效命令。<br/>音视频应用在接入媒体会话时监听的播控命令,即为媒体会话支持的有效命令,相关信息请参见[媒体会话提供方监听播控命令事件](using-avsession-developer.md)。 |
| getLaunchAbility(callback: AsyncCallback&lt;WantAgent&gt;): void | 获取媒体会话中配置的可被拉起的UIAbility。<br/>当用户在媒体会话控制方应用进行界面操作,例如点击了播控中心卡片后,可以拉起对应的应用。 |
| sendAVKeyEvent(event: KeyEvent, callback: AsyncCallback&lt;void&gt;): void | 通过会话对应的AVSessionController向会话发送按键命令。 |
| sendSystemAVKeyEvent(event: KeyEvent, callback: AsyncCallback&lt;void&gt;): void | 向置顶会话发送按键命令。 |
| sendControlCommand(command: AVControlCommand, callback: AsyncCallback&lt;void&gt;): void | 通过会话对应的AVSessionController向会话发送播控命令。 |
| sendSystemAVKeyEvent(event: KeyEvent, callback: AsyncCallback&lt;void&gt;): void | 向置顶会话发送按键命令。 |
| sendSystemControlCommand(command: AVControlCommand, callback: AsyncCallback&lt;void&gt;): void | 向置顶会话发送播控命令。 |
| getHistoricalSessionDescriptors(maxSize: number, callback: AsyncCallback\<Array\<Readonly\<AVSessionDescriptor>>>): void<sup>10+<sup> | 获取历史会话的描述符。 |
......@@ -38,15 +34,15 @@ OpenHarmony系统预置的播控中心,作为媒体会话控制方与音视频
| 接口名 | 说明 |
| -------- | -------- |
| getAVPlaybackState(callback: AsyncCallback&lt;AVPlaybackState&gt;): void | 获取当前会话播放状态相关信息。 |
| getAVMetadata(callback: AsyncCallback&lt;AVMetadata&gt;): void | 获取会话元数据。 |
| getOutputDevice(callback: AsyncCallback&lt;OutputDeviceInfo&gt;): void | 获取播放设备信息。 |
| sendAVKeyEvent(event: KeyEvent, callback: AsyncCallback&lt;void&gt;): void | 发送按键事件到会话。|
| getLaunchAbility(callback: AsyncCallback&lt;WantAgent&gt;): void | 获取应用在会话中保存的WantAgent对象。 |
| isActive(callback: AsyncCallback&lt;boolean&gt;): void | 判断会话是否被激活。 |
| destroy(callback: AsyncCallback&lt;void&gt;): void | 销毁当前控制器,销毁后当前控制器不再可用。 |
| getValidCommands(callback: AsyncCallback&lt;Array&lt;AVControlCommandType&gt;&gt;): void | 获取会话支持的有效命令。 |
| sendControlCommand(command: AVControlCommand, callback: AsyncCallback&lt;void&gt;): void | 通过会话控制器发送命令到其对应的会话。 |
| getAVPlaybackState(callback: AsyncCallback&lt;AVPlaybackState&gt;): void<sup>10+<sup> | 获取当前会话播放状态相关信息。 |
| getAVMetadata(callback: AsyncCallback&lt;AVMetadata&gt;): void<sup>10+<sup> | 获取会话元数据。 |
| getOutputDevice(callback: AsyncCallback&lt;OutputDeviceInfo&gt;): void<sup>10+<sup> | 获取播放设备信息。 |
| sendAVKeyEvent(event: KeyEvent, callback: AsyncCallback&lt;void&gt;): void<sup>10+<sup> | 发送按键事件到会话。|
| getLaunchAbility(callback: AsyncCallback&lt;WantAgent&gt;): void<sup>10+<sup> | 获取应用在会话中保存的WantAgent对象。 |
| isActive(callback: AsyncCallback&lt;boolean&gt;): void<sup>10+<sup> | 判断会话是否被激活。 |
| destroy(callback: AsyncCallback&lt;void&gt;): void<sup>10+<sup> | 销毁当前控制器,销毁后当前控制器不再可用。 |
| getValidCommands(callback: AsyncCallback&lt;Array&lt;AVControlCommandType&gt;&gt;): void<sup>10+<sup> | 获取会话支持的有效命令。 |
| sendControlCommand(command: AVControlCommand, callback: AsyncCallback&lt;void&gt;): void<sup>10+<sup> | 通过会话控制器发送命令到其对应的会话。 |
| sendCommonCommand(command: string, args: {[key: string]: Object}, callback: AsyncCallback&lt;void&gt;): void<sup>10+<sup> | 通过会话控制器发送自定义命令到其对应的会话。 |
| getAVQueueItems(callback: AsyncCallback&lt;Array&lt;AVQueueItem&gt;&gt;): void<sup>10+<sup> | 获取当前播放列表相关信息。 |
| getAVQueueTitle(callback: AsyncCallback&lt;string&gt;): void<sup>10+<sup> | 获取当前播放列表的名称。 |
......
......@@ -16,15 +16,15 @@
| 接口名 | 说明 |
| -------- | -------- |
| createAVSession(context: Context, tag: string, type: AVSessionType, callback: AsyncCallback&lt;AVSession&gt;): void | 创建媒体会话。<br/>一个UIAbility只能存在一个媒体会话,重复创建会失败。 |
| setAVMetadata(data: AVMetadata, callback: AsyncCallback&lt;void&gt;): void | 设置媒体会话元数据。 |
| setAVPlaybackState(state: AVPlaybackState, callback: AsyncCallback&lt;void&gt;): void | 设置媒体会话播放状态。 |
| setLaunchAbility(ability: WantAgent, callback: AsyncCallback&lt;void&gt;): void | 设置启动UIAbility。 |
| getController(callback: AsyncCallback&lt;AVSessionController&gt;): void | 获取当前会话自身控制器。 |
| getOutputDevice(callback: AsyncCallback&lt;OutputDeviceInfo&gt;): void | 获取播放设备相关信息。 |
| activate(callback: AsyncCallback&lt;void&gt;): void | 激活媒体会话。 |
| deactivate(callback: AsyncCallback&lt;void&gt;): void | 禁用当前会话。 |
| destroy(callback: AsyncCallback&lt;void&gt;): void | 销毁媒体会话。 |
| createAVSession(context: Context, tag: string, type: AVSessionType, callback: AsyncCallback&lt;AVSession&gt;): void<sup>10+<sup> | 创建媒体会话。<br/>一个UIAbility只能存在一个媒体会话,重复创建会失败。 |
| setAVMetadata(data: AVMetadata, callback: AsyncCallback&lt;void&gt;): void<sup>10+<sup> | 设置媒体会话元数据。 |
| setAVPlaybackState(state: AVPlaybackState, callback: AsyncCallback&lt;void&gt;): void<sup>10+<sup> | 设置媒体会话播放状态。 |
| setLaunchAbility(ability: WantAgent, callback: AsyncCallback&lt;void&gt;): void<sup>10+<sup> | 设置启动UIAbility。 |
| getController(callback: AsyncCallback&lt;AVSessionController&gt;): void<sup>10+<sup> | 获取当前会话自身控制器。 |
| getOutputDevice(callback: AsyncCallback&lt;OutputDeviceInfo&gt;): void<sup>10+<sup> | 获取播放设备相关信息。 |
| activate(callback: AsyncCallback&lt;void&gt;): void<sup>10+<sup> | 激活媒体会话。 |
| deactivate(callback: AsyncCallback&lt;void&gt;): void<sup>10+<sup> | 禁用当前会话。 |
| destroy(callback: AsyncCallback&lt;void&gt;): void<sup>10+<sup> | 销毁媒体会话。 |
| setAVQueueItems(items: Array&lt;AVQueueItem&gt;, callback: AsyncCallback&lt;void&gt;): void <sup>10+<sup> | 设置媒体播放列表。 |
| setAVQueueTitle(title: string, callback: AsyncCallback&lt;void&gt;): void<sup>10+<sup> | 设置媒体播放列表名称。 |
| dispatchSessionEvent(event: string, args: {[key: string]: Object}, callback: AsyncCallback&lt;void&gt;): void<sup>10+<sup> | 设置会话内自定义事件。 |
......
# Native API 介绍
# Native API介绍
Native API是OHOS SDK上提供的一组native开发接口与工具集合,方便开发者使用C或者C++语言实现应用的关键功能。Native API只覆盖了OHOS基础的一些底层能力,如libc,图形库,窗口系统,多媒体,压缩库等,并没有完全提供类似于JS API上的完整的OHOS 平台能力。在应用中使用Native API会编译成动态库打包到应用中。
......
# N-API在应用工程中的使用指导
# Native API在应用工程中的使用指导
在OpenHarmony中,C API中的N-API接口可以实现ArkTS/TS/JS与C/C++之间的交互。N-API提供的接口名与三方Node.js一致,目前支持部分接口,支持列表见[链接](https://gitee.com/openharmony/arkui_napi/blob/master/libnapi.ndk.json)
......
# NativeWindow 开发指导
# NativeWindow开发指导
## 场景介绍
......
# 资源管理Rawfile开发指导
# Rawfile开发指导
## 场景介绍
......
......@@ -3,7 +3,7 @@
- [通知概述](notification-overview.md)
- [订阅通知(仅对系统应用开放)](notification-subscription.md)
- [使能通知开关](notification-enable.md)
- [设置通知角标](notification-badge.md)
- [管理通知角标](notification-badge.md)
- 发布通知
- [发布基础类型通知](text-notification.md)
- [发布进度条类型通知](progress-bar-notification.md)
......
# 通知角标
# 管理通知角标
应用未读的通知,OpenHarmony提供了角标设置接口,将未读通知个数显示在桌面图标的右上角角标上。
......
......@@ -24,13 +24,13 @@
- [HAR](har-package.md)
- HSP
- [应用内HSP开发指导](in-app-hsp.md)
- [应用间HSP开发指导(仅对系统应用开放)](cross-app-hsp.md)
- [应用间HSP开发指导](cross-app-hsp.md)
- 原子化服务
- [原子化服务开发指导](atomicService.md)
- [原子化服务空间管理(仅对系统应用开放)](atomicService-aging.md)
- 应用程序包快速修复
- [快速修复概述](quickfix-principles.md)
- [快速修复调试指导](quickfix-debug.md)
- [快速修复命令行调试开发指导](quickfix-debug.md)
- 应用配置文件(Stage模型)
- [应用配置文件概述(Stage模型)](application-configuration-file-overview-stage.md)
- [app.json5配置文件](app-configuration-file.md)
......
# $语法:内置组件双向同步
# $$语法:内置组件双向同步
$$运算符为系统内置组件提供TS变量的引用,使得TS变量和系统内置组件的内部状态保持同步。
内部状态具体指什么取决于组件。例如,[bindPopup](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/arkui-ts/ts-universal-attributes-popup.md)属性方法的show参数。
内部状态具体指什么取决于组件。例如,[bindPopup](../reference/arkui-ts/ts-universal-attributes-popup.md)属性方法的show参数。
## 使用规则
- 当前$$支持基础类型变量,以及\@State、\@Link和\@Prop装饰的变量。
- 当前$$仅支持[bindPopup](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/arkui-ts/ts-universal-attributes-popup.md)属性方法的show参数,[Radio](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/arkui-ts/ts-basic-components-radio.md)组件的checked属性,[Refresh](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/arkui-ts/ts-container-refresh.md)组件的refreshing参数。
- 当前$$仅支持[bindPopup](../reference/arkui-ts/ts-universal-attributes-popup.md)属性方法的show参数,[Radio](../reference/arkui-ts/ts-basic-components-radio.md)组件的checked属性,[Refresh](../reference/arkui-ts/ts-container-refresh.md)组件的refreshing参数。
- $$绑定的变量变化时,会触发UI的同步刷新。
## 使用示例
[bindPopup](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/arkui-ts/ts-universal-attributes-popup.md)属性方法的show参数为例:
[bindPopup](../reference/arkui-ts/ts-universal-attributes-popup.md)属性方法的show参数为例:
```ts
......
......@@ -170,7 +170,7 @@ struct Index {
}
```
## 应用间HSP的分发方式
## 应用间HSP的分发方式(仅对系统应用开放)
应用间`HSP`由于并未直接完整的集成到开发者应用中去,所以需要提前预置在系统版本中或者随开发者应用同步安装到设备上,主要有以下两种形式:
1. 随系统发布,部分常用应用间`HSP`会预置在系统版本中。
2. 随应用发布,即用户在应用市场下载应用时,如果应用依赖了一个或者多个应用间`HSP`,同时设备上没有安装这个其依赖的应用间`HSP`时,应用市场会为用户同时下载普通应用以及其依赖的应用间`HSP`。从而保证普通应用能够正常使用共享库的功能。
......
......@@ -228,7 +228,7 @@ metadata对象示例:
**OpenHarmony中不允许应用隐藏入口图标**
OpenHarmony系统对无图标应用严格管控,防止一些恶意应用故意配置无入口图标,导致用户找不到软件所在的位置,无法操作卸载应用,在一定程度上保证用户的手机安全。
OpenHarmony系统对无图标应用严格管控,防止一些恶意应用故意配置无入口图标,导致用户找不到软件所在的位置,无法操作卸载应用,在一定程度上保证用户终端设备的安全。
**入口图标的设置:** 需要在配置文件(config.json)中abilities配置下设置icon,label以及skills,而且skills的配置下必须同时包含“ohos.want.action.home” 和 “entity.system.home”。
```
......
......@@ -16,6 +16,6 @@
- 同一进程内的数据通信,请参见[线程间通信](../application-models/thread-model-stage.md)
- 跨进程的数据通信,请参见[进程间通信](../application-models/process-model-stage.md)
- 跨进程的数据通信,请参见[进程间通信](../application-models/process-model-stage.md)
- 多HAP如果运行在同一进程,则多HAP间组件的通信方式与同一HAP内组件的通信方式相同。
......@@ -150,6 +150,7 @@
- [通知服务公共事件定义](common_event/commonEvent-ans.md)
- [资源调度子系统公共事件定义](common_event/commonEvent-resourceschedule.md)
- [电话服务子系统公共事件定义](common_event/commonEvent-telephony.md)
- [USB子系统公共事件定义](common_event/commonEvent-usb.md)
- 包管理
- [@ohos.bundle.appControl (appControl模块)](js-apis-appControl.md)
- [@ohos.bundle.bundleManager (bundleManager模块)](js-apis-bundleManager.md)
......@@ -244,7 +245,7 @@
- [PermissionRequestResult](js-apis-permissionrequestresult.md)
- 数据管理
- [@ohos.data.cloudData(端云协同)](js-apis-data-cloudData.md)
- [@ohos.data.cloudData (端云协同)](js-apis-data-cloudData.md)
- [@ohos.data.dataAbility (DataAbility谓词)](js-apis-data-ability.md)
- [@ohos.data.dataShare (数据共享)](js-apis-data-dataShare.md)
- [@ohos.data.dataSharePredicates (数据共享谓词)](js-apis-data-dataSharePredicates.md)
......
......@@ -332,9 +332,9 @@ import AbilityConstant from '@ohos.app.ability.AbilityConstant';
class MyUIAbility extends UIAbility {
onShare(wantParams) {
console.log('onShare');
wantParams['ohos.extra.param.key.contentTitle'] = {title: "W3"};
wantParams['ohos.extra.param.key.shareAbstract'] = {abstract: "communication for huawei employee"};
wantParams['ohos.extra.param.key.shareUrl'] = {url: "w3.huawei.com"};
wantParams['ohos.extra.param.key.contentTitle'] = {title: "OA"};
wantParams['ohos.extra.param.key.shareAbstract'] = {abstract: "communication for company employee"};
wantParams['ohos.extra.param.key.shareUrl'] = {url: "oa.example.com"};
}
}
```
......
......@@ -25,9 +25,9 @@
| removable | boolean | 是 | 否 | 应用程序是否可以被移除。 |
| accessTokenId | number | 是 | 否 | 应用程序的accessTokenId。 |
| uid | number | 是 | 否 | 应用程序的uid。 |
| iconResource | [Resource](js-apis-resource-manager.md#resource9) | 是 | 否 | 应用程序的图标资源信息,通过ApplicationInfo 获取的resource 包含了该资源的信息的bundleName、moduleName 和 id,可以调用全球化的接口[@ohos.resourceManager.d.ts](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/@ohos.resourceManager.d.ts)中的getMediaContent来获取详细的资源数据信息。 |
| labelResource | [Resource](js-apis-resource-manager.md#resource9) | 是 | 否 | 应用程序的标签资源信息,通过ApplicationInfo 获取的resource 包含了该资源的信息的bundleName、moduleName 和 id,可以调用全球化的接口[@ohos.resourceManager.d.ts](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/@ohos.resourceManager.d.ts)中的getMediaContent来获取详细的资源数据信息。 |
| descriptionResource | [Resource](js-apis-resource-manager.md#resource9) | 是 | 否 | 应用程序的描述资源信息,通过ApplicationInfo 获取的resource 包含了该资源的信息的bundleName、moduleName 和 id,可以调用全球化的接口[@ohos.resourceManager.d.ts](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/@ohos.resourceManager.d.ts)中的getMediaContent来获取详细的资源数据信息。|
| iconResource | [Resource](js-apis-resource-manager.md#resource9) | 是 | 否 | 应用程序的图标资源信息,通过ApplicationInfo 获取的resource 包含了该资源的信息的bundleName、moduleName 和 id,可以调用全球化的接口[@ohos.resourceManager.d.ts](js-apis-resource-manager.md#getmediacontent9)中的getMediaContent来获取详细的资源数据信息。 |
| labelResource | [Resource](js-apis-resource-manager.md#resource9) | 是 | 否 | 应用程序的标签资源信息,通过ApplicationInfo 获取的resource 包含了该资源的信息的bundleName、moduleName 和 id,可以调用全球化的接口[@ohos.resourceManager.d.ts](js-apis-resource-manager.md#getmediacontent9)中的getMediaContent来获取详细的资源数据信息。 |
| descriptionResource | [Resource](js-apis-resource-manager.md#resource9) | 是 | 否 | 应用程序的描述资源信息,通过ApplicationInfo 获取的resource 包含了该资源的信息的bundleName、moduleName 和 id,可以调用全球化的接口[@ohos.resourceManager.d.ts](js-apis-resource-manager.md#getmediacontent9)中的getMediaContent来获取详细的资源数据信息。|
| appDistributionType | string | 是 | 否 | 应用程序签名证书的分发类型,分为:app_gallery、enterprise、os_integration和crowdtesting。 |
| appProvisionType | string | 是 | 否 | 应用程序签名证书文件的类型,分为debug和release两种类型。 |
| systemApp | boolean | 是 | 否 | 标识应用是否为系统应用。 |
......
......@@ -1755,7 +1755,7 @@ setExposureBias(exposureBias: number): void
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------------------------------| ---- | ------------------- |
| exposureBias | number | 是 | 曝光补偿,getExposureBiasRange查询支持的范围,接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode),如果设置超过支持范围的值,自动匹配到就近临界点。 |
| exposureBias | number | 是 | 曝光补偿,getExposureBiasRange查询支持的范围,如果设置超过支持范围的值,自动匹配到就近临界点。曝光补偿存在步长,如步长为0.5。则设置1.2时,获取到实际生效曝光补偿为1.0。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
**错误码:**
......@@ -1789,7 +1789,7 @@ getExposureValue(): number
| 类型 | 说明 |
| ---------- | ----------------------------- |
| number | 获取曝光值。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
| number | 获取曝光值。曝光补偿存在步长,如步长为0.5。则设置1.2时,获取到实际生效曝光补偿为1.0。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
**错误码:**
......
# @ohos.data.cloudData (端云协同)
# @ohos.data.cloudData(端云协同)
端云协同提供结构化数据(RDB Store)端云同步的能力。即:云作为数据的中心节点,通过与云的数据同步,实现数据云备份、同帐号设备间的数据一致性。
......
......@@ -263,7 +263,7 @@ getLocalCapabilities(callback: AsyncCallback&lt;FileData&gt;): void
"versionCode" : 1000000,
"versionName" : "1.0.0"
}],
"deviceType" : "phone",
"deviceType" : "default",
"systemFullName" : "OpenHarmony-4.0.0.0"
}
```
......@@ -324,7 +324,7 @@ getLocalCapabilities(): Promise&lt;FileData&gt;
"versionCode" : 1000000,
"versionName" : "1.0.0"
}],
"deviceType" : "phone",
"deviceType" : "default",
"systemFullName" : "OpenHarmony-4.0.0.0"
}
```
......
......@@ -2521,8 +2521,8 @@ try {
| 名称 | 类型 | 可读 | 可写 | 说明 |
| --------- | -------- | ---- | ---- | ------------ |
| keyCode | number | 是 | 否 | 按键的键值。 |
| keyAction | number | 是 | 否 | 按键的状态。 |
| keyCode | number | 是 | 否 | 按键的键值。键码值说明参考[KeyCode](js-apis-keycode.md#keycode) |
| keyAction | number | 是 | 否 | 按键事件类型。<br/>- 当值为2时,表示按下事件;<br/>- 当值为3时,表示抬起事件。 |
## PanelFlag<sup>10+</sup>
......
......@@ -773,7 +773,7 @@ try {
| installFlag | number | 否 | 指示安装标志,枚举值:0:应用初次安装,1:应用覆盖安装,默认值为应用初次安装 |
| isKeepData | boolean | 否 | 卸载时是否保留数据目录,默认值为false。 |
| hashParams | Array<[HashParam](#hashparam)> | 否 | 哈希值参数,默认值为空。 |
| crowdtestDeadline| number | 否 |[众测](https://developer.huawei.com/consumer/cn/agconnect/crowd-test/)截止日期,默认值为-1。 |
| crowdtestDeadline| number | 否 | 众测活动的截止日期,默认值为-1,表示无截止日期约束。 |
| sharedBundleDirPaths<sup>10+</sup> | Array\<String> | 否 |共享包文件所在路径,默认值为空。 |
## UninstallParam<sup>10+</sup>
......
# console (控制台)
# console (控制台)
本模块提供了一个简单的调试控制台,类似于浏览器提供的JavaScript控制台机制。
......
......@@ -681,10 +681,10 @@ UDPSocket连接的其他属性。
| 名称 | 类型 | 必填 | 说明 |
| ----------------- | ------- | ---- | -------------------------------- |
| broadcast | boolean | 否 | 是否可以发送广播。默认为false。 |
| receiveBufferSize | number | 否 | 接收缓冲区大小(单位:Byte)。 |
| sendBufferSize | number | 否 | 发送缓冲区大小(单位:Byte)。 |
| receiveBufferSize | number | 否 | 接收缓冲区大小(单位:Byte),默认为0。 |
| sendBufferSize | number | 否 | 发送缓冲区大小(单位:Byte),默认为0。 |
| reuseAddress | boolean | 否 | 是否重用地址。默认为false。 |
| socketTimeout | number | 否 | 套接字超时时间,单位毫秒(ms)。 |
| socketTimeout | number | 否 | 套接字超时时间,单位毫秒(ms),默认为0。 |
## SocketStateBase<sup>7+</sup>
......@@ -1569,10 +1569,10 @@ TCPSocket连接的其他属性。
| OOBInline | boolean | 否 | 是否为OOB内联。默认为false。 |
| TCPNoDelay | boolean | 否 | TCPSocket连接是否无时延。默认为false。 |
| socketLinger | Object | 是 | socket是否继续逗留。<br />- on:是否逗留(true:逗留;false:不逗留)。<br />- linger:逗留时长,单位毫秒(ms),取值范围为0~65535。<br />当入参on设置为true时,才需要设置。 |
| receiveBufferSize | number | 否 | 接收缓冲区大小(单位:Byte)。 |
| sendBufferSize | number | 否 | 发送缓冲区大小(单位:Byte)。 |
| receiveBufferSize | number | 否 | 接收缓冲区大小(单位:Byte),默认为0。 |
| sendBufferSize | number | 否 | 发送缓冲区大小(单位:Byte),默认为0。 |
| reuseAddress | boolean | 否 | 是否重用地址。默认为false。 |
| socketTimeout | number | 否 | 套接字超时时间,单位毫秒(ms)。 |
| socketTimeout | number | 否 | 套接字超时时间,单位毫秒(ms),默认为0。 |
## TCP 错误码说明
......@@ -2799,7 +2799,7 @@ TLS连接的操作。
| -------------- | ------------------------------------- | --- |-------------- |
| address | [NetAddress](#netaddress) | 是 | 网关地址。 |
| secureOptions | [TLSSecureOptions](#tlssecureoptions9) | 是 | TLS安全相关操作。|
| ALPNProtocols | Array\<string\> | 否 | ALPN协议。 |
| ALPNProtocols | Array\<string\> | 否 | ALPN协议,支持["spdy/1", "http/1.1"],默认为[]。 |
## TLSSecureOptions<sup>9+</sup>
......@@ -2813,10 +2813,10 @@ TLS安全相关操作,其中ca证书为必选参数,其他参数为可选参
| cert | string | 否 | 本地客户端的数字证书。 |
| key | string | 否 | 本地数字证书的私钥。 |
| password | string | 否 | 读取私钥的密码。 |
| protocols | [Protocol](#protocol9) \|Array\<[Protocol](#protocol9)\> | 否 | TLS的协议版本。 |
| useRemoteCipherPrefer | boolean | 否 | 优先使用对等方的密码套件。 |
| signatureAlgorithms | string | 否 | 通信过程中的签名算法 |
| cipherSuite | string | 否 | 通信过程中的加密套件 |
| protocols | [Protocol](#protocol9) \|Array\<[Protocol](#protocol9)\> | 否 | TLS的协议版本,默认为"TLSv1.2"。 |
| useRemoteCipherPrefer | boolean | 否 | 优先使用对等方的密码套件。 |
| signatureAlgorithms | string | 否 | 通信过程中的签名算法,默认为"" 。 |
| cipherSuite | string | 否 | 通信过程中的加密套件,默认为"" 。 |
## Protocol<sup>9+</sup>
......
# @ohos.taskpool(使用任务池)
# @ohos.taskpool(启动任务池)
任务池(taskpool)作用是为应用程序提供一个多线程的运行环境,降低整体资源的消耗、提高系统的整体性能,且您无需关心线程实例的生命周期。您可以使用任务池API创建后台任务(Task),并对所创建的任务进行如任务执行、任务取消的操作。理论上您可以使用任务池API创建数量不受限制的任务,但是出于内存因素不建议您这样做。此外,不建议您在任务中执行阻塞操作,特别是无限期阻塞操作,长时间的阻塞操作占据工作线程,可能会阻塞其他任务调度,影响您的应用性能。
......
......@@ -1086,6 +1086,8 @@ on(type: ChangeEvent, callback: Callback&lt;void&gt;): void
打开文件管理库变更通知,使用callback方式返回异步结果。
此接口即将废弃,请使用[on<sup>10+</sup>](#on10)的新接口
**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
**参数:**
......@@ -1131,6 +1133,8 @@ off(type: ChangeEvent, callback?: Callback&lt;void&gt;): void
关闭文件管理库变更通知,使用callback方式返回异步结果。
此接口即将废弃,请使用[off<sup>10+</sup>](#off10)的新接口
**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
**参数:**
......@@ -1365,6 +1369,112 @@ async function example() {
}
```
### on<sup>10+</sup>
on(uri: string, forSubUri: boolean, callback: Callback&lt;ChangeData&gt;) : void
打开对指定uri的监听,使用callback方式返回异步结果。
**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| --------- | ------------------------------------------- | ---- | ------------------------------------------------------------ |
| uri | string | 是 | FileAsset的uri, Album的uri或[DefaultChangeUri](#defaultchangeuri10)的值。 |
| forSubUri | boolean | 是 | 是否模糊监听,uri为相册uri时,forSubUri 为true能监听到相册中文件的变化,如果是false只能监听相册本身变化。uri为fileAsset时,forSubUri 为true、false没有区别,uri为DefaultChangeUri时,forSubUri必须为true,如果为false将找不到该uri,收不到任何消息。 |
| callback | Callback&lt;[ChangeData](#changedata10)&gt; | 是 | 返回要监听的[ChangeData](#changedata10)。注:uri可以注册多个不同的callback监听,[off<sup>10+</sup>](#off10)可以关闭该uri所有监听,也可以关闭指定callback的监听。 |
**示例:**
```ts
async function example() {
console.info('onDemo');
let predicates = new dataSharePredicates.DataSharePredicates();
let fetchOptions = {
fetchColumns: [],
predicates: predicates
};
let fetchResult = await mgr.getPhotoAssets(fetchOptions);
let fileAsset = await fetchResult.getFirstObject();
if (fileAsset != undefined) {
console.info('fileAsset.displayName : ' + fileAsset.displayName);
}
let onCallback1 = (changeData) => {
console.info('onCallback1 success, changData: ' + JSON.stringify(changeData));
//file had changed, do something
}
let onCallback2 = (changeData) => {
console.info('onCallback2 success, changData: ' + JSON.stringify(changeData));
//file had changed, do something
}
// 注册onCallback1监听
mgr.on(fileAsset.uri, false, onCallback1);
// 注册onCallback2监听
mgr.on(fileAsset.uri, false, onCallback2);
fileAsset.favorite(true, (err) => {
if (err == undefined) {
console.info('favorite successfully');
} else {
console.error('favorite failed with error:' + err);
}
});
}
```
### off<sup>10+</sup>
off(uri: string, callback?: Callback&lt;ChangeData&gt;): void
关闭指定uri的监听,一个uri可以注册多个监听,存在多个callback监听时,可以取消指定注册的callback的监听;不指定callback时解除该uri的所有监听。
**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------------------------------- | ---- | ------------------------------------------------------------ |
| uri | string | 是 | FileAsset的uri, Album的uri或[DefaultChangeUri](#defaultchangeuri10)的值。 |
| callback | Callback&lt;[ChangeData](#changedata10)&gt; | 否 | 解除[on<sup>10+</sup>](#on10)注册时的callback的监听,不填时,解除该uri的所有监听。注:off指定注册的callback后不会进入此回调。 |
**示例:**
```ts
async function example() {
console.info('offDemo');
let predicates = new dataSharePredicates.DataSharePredicates();
let fetchOptions = {
fetchColumns: [],
predicates: predicates
};
let fetchResult = await mgr.getPhotoAssets(fetchOptions);
let fileAsset = await fetchResult.getFirstObject();
if (fileAsset != undefined) {
console.info('fileAsset.displayName : ' + fileAsset.displayName);
}
let onCallback1 = (changeData) => {
console.info('onCallback1 on');
}
let onCallback2 = (changeData) => {
console.info('onCallback2 on');
}
// 注册onCallback1监听
mgr.on(fileAsset.uri, false, onCallback1);
// 注册onCallback2监听
mgr.on(fileAsset.uri, false, onCallback2);
// 关闭onCallback1监听,onCallback2 继续监听
mgr.off(fileAsset.uri, onCallback1);
fileAsset.favorite(true, (err) => {
if (err == undefined) {
console.info('favorite successfully');
} else {
console.error('favorite failed with error:' + err);
}
});
}
```
## FileAsset
提供封装文件属性的方法。
......@@ -3551,3 +3661,42 @@ async function example() {
| 名称 | 类型 | 可读 | 可写 | 说明 |
| ---------------------- | ------------------- | ---- |---- | ------------------------------------------------ |
| predicates | [dataSharePredicates.DataSharePredicates](js-apis-data-dataSharePredicates.md) | 是 | 是 | 谓词查询,显示过滤条件。 |
## ChangeData<sup>10+</sup>
监听器回调函数的值。
**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
| 名称 | 类型 | 可读 | 可写 | 说明 |
| ------- | --------------------------- | ---- | ---- | ------------------------------------------------------------ |
| type | [NotifyType](#notifytype10) | 是 | 否 | ChangeData的通知类型。 |
| uris | Array&lt;string&gt; | 是 | 否 | 相同[NotifyType](#notifytype10)的所有uri,可以是FileAsset或Album。 |
| subUris | Array&lt;string&gt; | 是 | 否 | 相册中变动文件的uri数组。 |
## NotifyType<sup>10+</sup>
枚举,通知事件的类型。
**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
| 名称 | 值 | 说明 |
| ------------------------- | ---- | -------------------------------- |
| NOTIFY_ADD | 0 | 添加文件集或相册通知的类型。 |
| NOTIFY_UPDATE | 1 | 文件集或相册的更新通知类型。 |
| NOTIFY_REMOVE | 2 | 删除文件集或相册的通知类型。 |
| NOTIFY_ALBUM_ADD_ASSET | 3 | 在相册中添加的文件集的通知类型。 |
| NOTIFY_ALBUM_REMOVE_ASSET | 4 | 在相册中删除的文件集的通知类型。 |
## DefaultChangeUri<sup>10+</sup>
枚举,DefaultChangeUri子类型。
**系统能力**:SystemCapability.FileManagement.UserFileManager.Core
| 名称 | 值 | 说明 |
| ----------------- | ----------------------- | ------------------------------------------------------------ |
| DEFAULT_PHOTO_URI | file://media/Photo | 默认PhotoAsset的Uri,与forSubUri{true}一起使用,将接收所有PhotoAsset的更改通知。 |
| DEFAULT_ALBUM_URI | file://media/PhotoAlbum | 默认相册的Uri,与forSubUri{true}一起使用,将接收所有相册的更改通知。 |
| DEFAULT_AUDIO_URI | file://media/Audio | 默认AudioAsset的Uri,与forSubUri{true}一起使用,将接收所有AudioAsset的更改通知。 |
......@@ -7,7 +7,7 @@ js标签中包含了实例名称、页面路由信息。
| 标签 | 类型 | 默认值 | 必填 | 描述 |
| ----- | ------ | ------- | ---- | ----------------------------- |
| name | string | default | 是 | 标识JS实例的名字。 |
| pages | Array | - | 是 | 路由信息,详见“**[pages](#pages)**”。 |
| pages | Array | - | 是 | 路由信息,详见“[pages](#pages)”。 |
> **说明:**
......@@ -46,7 +46,7 @@ js标签中包含了实例名称、页面路由信息。
```
{
"app": {
"bundleName": "com.huawei.player",
"bundleName": "com.example.player",
"version": {
"code": 1,
"name": "1.0"
......
......@@ -47,7 +47,7 @@ Gauge(options:{value: number, min?: number, max?: number})
| 名称 | 类型定义 | 描述 |
| --------- | -------------------- | ------------------------------------------------------------ |
| ColorStop | [[ResourceColor](ts-types.md#resourcecolor),&nbsp;number] | 描述渐进色颜色断点类型,第一个参数为颜色值,若设置为非颜色类型,则置为黑色。第二个参数为颜色所占比重,若设置为负数或是非数值类型,则将比重置为0,该颜色不显示。 |
| ColorStop | [[ResourceColor](ts-types.md#resourcecolor),&nbsp;number] | 描述渐进色颜色断点类型,第一个参数为颜色值,若设置为非颜色类型,则置为黑色。第二个参数为颜色所占比重,若设置为负数或是非数值类型,则将比重置为0。 |
## 示例
......
......@@ -6,7 +6,7 @@
>
> 该组件从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
>
> 该组件从API Version 10开始支持继承父组件Text的属性,即如果子组件未设置属性且父组件设置属性,则继承父组件设置的属性。支持继承的属性仅包括:fontColor、fontSize、fontStyle、fontWeight、decoration、letterSpacing、textCase、lineHeight、fontfamily。
> 该组件从API Version 10开始支持继承父组件Text的属性,即如果子组件未设置属性且父组件设置属性,则继承父组件设置的属性。支持继承的属性仅包括:fontColor、fontSize、fontStyle、fontWeight、decoration、letterSpacing、textCase、fontfamily。
## 子组件
......
......@@ -15,7 +15,7 @@
* 垂直方向为top, center, bottom,对应容器的VerticalAlign.Top, VerticalAlign.Center, VerticalAlign.Bottom。
* 子组件可以将容器或者其他子组件设为锚点:
* 参与相对布局的容器内组件必须设置id,不设置id的组件不显示,容器id固定为__container__。
* 此子组件某一方向上的三个位置可以将容器或其他子组件的同方向三个位置为锚点,同方向上两个以上位置设置锚点以后会跳过第三个
* 此子组件某一方向上的三个位置可以将容器或其他子组件的同方向三个位置为锚点,同方向上设置两个以上锚点的优先级。水平方向Start和Center优先,垂直方向Top和Center优先
* 前端页面设置的子组件尺寸大小不会受到相对布局规则的影响。子组件某个方向上设置两个或以上alignRules时不建议设置此方向尺寸大小。
* 对齐后需要额外偏移可设置offset。
* 特殊情况
......
......@@ -45,11 +45,9 @@ Swiper(controller?: SwiperController)
| cachedCount<sup>8+</sup> | number | 设置预加载子组件个数。<br/>默认值:1<br/>**说明:** <br/>cachedCount已经做了预加载的优化,不建议与[LazyForEach](../../quick-start/arkts-rendering-control-lazyforeach.md)一起使用。 |
| disableSwipe<sup>8+</sup> | boolean | 禁用组件滑动切换功能。<br/>默认值:false |
| curve<sup>8+</sup> | [Curve](ts-appendix-enums.md#curve) \| string | 设置Swiper的动画曲线,默认为淡入淡出曲线,常用曲线参考[Curve枚举说明](ts-appendix-enums.md#curve),也可以通过[插值计算](../apis/js-apis-curve.md)模块提供的接口创建自定义的插值曲线对象。<br/>默认值:Curve.Linear |
| indicatorStyle<sup>8+</sup> | {<br/>left?:&nbsp;[Length](ts-types.md#length),<br/>top?:&nbsp;[Length](ts-types.md#length),<br/>right?:&nbsp;[Length](ts-types.md#length),<br/>bottom?:&nbsp;[Length](ts-types.md#length),<br/>size?:&nbsp;[Length](ts-types.md#length),<br/>mask?:&nbsp;boolean,<br/>color?:&nbsp;[ResourceColor](ts-types.md),<br/>selectedColor?:&nbsp;[ResourceColor](ts-types.md)<br/>} | 设置导航点样式:<br/>\- left: 设置导航点距离Swiper组件左边的距离。<br/>\- top: 设置导航点距离Swiper组件顶部的距离。<br/>\- right: 设置导航点距离Swiper组件右边的距离。<br/>\- bottom: 设置导航点距离Swiper组件底部的距离。<br/>\- size: 设置导航点的直径。<br/>\- mask: 设置是否显示导航点蒙层样式。<br/>\- color: 设置导航点的颜色。<br/>\- selectedColor: 设置选中的导航点的颜色。 |
| indicatorStyle<sup>8+</sup> | {<br/>left?:&nbsp;[Length](ts-types.md#length),<br/>top?:&nbsp;[Length](ts-types.md#length),<br/>right?:&nbsp;[Length](ts-types.md#length),<br/>bottom?:&nbsp;[Length](ts-types.md#length),<br/>size?:&nbsp;[Length](ts-types.md#length),<br/>mask?:&nbsp;boolean,<br/>color?:&nbsp;[ResourceColor](ts-types.md),<br/>selectedColor?:&nbsp;[ResourceColor](ts-types.md)<br/>} | 设置导航点样式:<br/>\- left: 设置导航点距离Swiper组件左边的距离。<br/>\- top: 设置导航点距离Swiper组件顶部的距离。<br/>\- right: 设置导航点距离Swiper组件右边的距离。<br/>\- bottom: 设置导航点距离Swiper组件底部的距离。<br/>\- size: 设置导航点的直径,不支持设置百分比。默认值:6vp<br/>\- mask: 设置是否显示导航点蒙层样式。<br/>\- color: 设置导航点的颜色。<br/>\- selectedColor: 设置选中的导航点的颜色。 |
| displayCount<sup>8+</sup> | number\|string | 设置一页内元素显示个数。<br/>默认值:1<br/>**说明:** <br/>字符串类型仅支持设置为'auto',显示效果同SwiperDisplayMode.AutoLinear。<br/>使用number类型时,子组件按照主轴均分Swiper宽度(减去displayCount-1的itemSpace)的方式进行主轴拉伸(收缩)布局。 |
| effectMode<sup>8+</sup> | [EdgeEffect](ts-appendix-enums.md#edgeeffect) | 滑动效果,目前支持的滑动效果参见EdgeEffect的枚举说明。<br/>默认值:EdgeEffect.Spring<br/>**说明:** <br/>控制器接口调用时不生效回弹。 |
| nextMargin<sup>10+</sup> | <br/>[Length](ts-types.md#length)<br/> | 后边距,用于露出后一项的一小部分。<br/>默认值:0<br/>**说明:** <br/>仅当SwiperDisplayMode为STRETCH模式时生效。当cachedCount设置值小于等于0时,此时会露出后一项的一小部分,但无法加载子组件。 |
| prevMargin<sup>10+</sup> | <br/>[Length](ts-types.md#length)<br/> | 前边距,用于露出前一项的一小部分。<br/>默认值:0<br/>**说明:** <br/>仅当SwiperDisplayMode为STRETCH模式时生效。当cachedCount设置值小于等于0时,此时会露出前一项的一小部分,但无法加载子组件。 |
## SwiperDisplayMode枚举说明
......@@ -92,10 +90,10 @@ finishAnimation(callback?: () => void): void
| 参数名 | 参数类型 | 必填项 | 参数描述 |
| ------ | -------- | ------ | ------------------------------------ |
| left | [Length](ts-types.md#length) | 否 | 设置导航点距离Swiper组件左边的距离。 |
| top | [Length](ts-types.md#length) | 否 | 设置导航点距离Swiper组件顶部的距离。 |
| right | [Length](ts-types.md#length) | 否 | 设置导航点距离Swiper组件右边的距离。 |
| bottom | [Length](ts-types.md#length) | 否 | 设置导航点距离Swiper组件底部的距离。 |
| left | [Length](ts-types.md#length) | 否 | 设置导航点距离Swiper组件左边的距离。<br/>默认值:0<br/>单位:vp |
| top | [Length](ts-types.md#length) | 否 | 设置导航点距离Swiper组件顶部的距离。<br/>默认值:0<br/>单位:vp |
| right | [Length](ts-types.md#length) | 否 | 设置导航点距离Swiper组件右边的距离。<br/>默认值:0<br/>单位:vp |
| bottom | [Length](ts-types.md#length) | 否 | 设置导航点距离Swiper组件底部的距离。<br/>默认值:0<br/>单位:vp |
### DotIndicator
......
......@@ -164,142 +164,4 @@ struct ModalTransitionExample {
}
```
![zh-cn_full_screen_modal_none_2](figures/zh-cn_full_screen_modal_none_2.gif)
### 示例3
全屏模态上下切换转场。
```ts
// xxx.ets
@Entry
@Component
struct ModalTransitionExample {
@State isShow:boolean = false
@State isShow2:boolean = false
@Builder myBuilder2() {
Column() {
Button("close modal 2")
.margin(10)
.fontSize(20)
.onClick(()=>{
this.isShow2 = false;
})
}
.width('100%')
.height('100%')
.backgroundColor(Color.Gray)
}
@Builder myBuilder() {
Column() {
Button("transition modal 2")
.margin(10)
.fontSize(20)
.onClick(()=>{
this.isShow2 = true;
}).bindContentCover(this.isShow2, this.myBuilder2(), ModalTransition.DEFAULT)
Button("close modal 1")
.margin(10)
.fontSize(20)
.onClick(()=>{
this.isShow = false;
})
}
.width('100%')
.height('100%')
.backgroundColor(Color.Pink)
.justifyContent(FlexAlign.Center)
}
build() {
Column() {
Button("transition modal 1")
.onClick(() => {
this.isShow = true
})
.fontSize(20)
.margin(10)
.bindContentCover($$this.isShow, this.myBuilder(), ModalTransition.DEFAULT)
}
.justifyContent(FlexAlign.Center)
.backgroundColor(Color.White)
.width('100%')
.height('100%')
}
}
```
![zh-cn_full_screen_modal_default](figures/zh-cn_full_screen_modal_default.gif)
### 示例4
全屏模态透明度渐变转场。
```ts
// xxx.ets
@Entry
@Component
struct ModalTransitionExample {
@State isShow:boolean = false
@State isShow2:boolean = false
@Builder myBuilder2() {
Column() {
Button("close modal 2")
.margin(10)
.fontSize(20)
.onClick(()=>{
this.isShow2 = false;
})
}
.width('100%')
.height('100%')
.backgroundColor(Color.Gray)
.justifyContent(FlexAlign.Center)
}
@Builder myBuilder() {
Column() {
Button("transition modal 2")
.margin(10)
.fontSize(20)
.onClick(()=>{
this.isShow2 = true;
}).bindContentCover(this.isShow2, this.myBuilder2(), ModalTransition.ALPHA)
Button("close modal 1")
.margin(10)
.fontSize(20)
.onClick(()=>{
this.isShow = false;
})
}
.width('100%')
.height('100%')
.backgroundColor(Color.Pink)
.justifyContent(FlexAlign.Center)
}
build() {
Column() {
Button("transition modal 1")
.onClick(() => {
this.isShow = true
})
.fontSize(20)
.margin(10)
.bindContentCover($$this.isShow, this.myBuilder(), ModalTransition.ALPHA)
}
.justifyContent(FlexAlign.Center)
.backgroundColor(Color.White)
.width('100%')
.height('100%')
}
}
```
![zh-cn_full_screen_modal_alpha](figures/zh-cn_full_screen_modal_alpha.gif)
\ No newline at end of file
![zh-cn_full_screen_modal_none_2](figures/zh-cn_full_screen_modal_none_2.gif)
\ No newline at end of file
# 以太网错误码
# 以太网连接错误码
> **说明:**
>
......
......@@ -3,7 +3,7 @@
## 概述
AudioDecoder模块提供用于音频解码功能的函数。该模块在部分设备上可能不支持,可以通过[CanIUse](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/syscap.md)接口确认。
AudioDecoder模块提供用于音频解码功能的函数。该模块在部分设备上可能不支持,可以通过[CanIUse](../syscap.md)接口确认。
@syscap SystemCapability.Multimedia.Media.AudioDecoder
......
......@@ -3,7 +3,7 @@
## 概述
AudioEncoder模块提供用于音频编码功能的函数。该模块在部分设备上可能不支持,可以通过[CanIUse](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/syscap.md)接口确认。
AudioEncoder模块提供用于音频编码功能的函数。该模块在部分设备上可能不支持,可以通过[CanIUse](../syscap.md)接口确认。
@syscap SystemCapability.Multimedia.Media.AudioEncoder
......
......@@ -3,7 +3,7 @@
## 概述
CodecBase模块提供运行音视频编解码通用的结构体、字符常量、枚举。该模块在部分设备上可能不支持,可以通过[CanIUse](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/syscap.md)接口确认。
CodecBase模块提供运行音视频编解码通用的结构体、字符常量、枚举。该模块在部分设备上可能不支持,可以通过[CanIUse](../syscap.md)接口确认。
@syscap SystemCapability.Multimedia.Media.CodecBase
......
......@@ -56,7 +56,7 @@
| [OH_AI_TensorHandleArray](#oh_ai_tensorhandlearray) | 张量数组结构体,用于存储张量数组指针和张量数组长度 |
| [OH_AI_ShapeInfo](_o_h___a_i___shape_info.md) | 维度信息,最大的维度为MS_MAX_SHAPE_NUM。 |
| [OH_AI_CallBackParam](#oh_ai_callbackparam) | 回调函数中传入的算子信息。 |
| [OH_AI_KernelCallBack](#oh_ai_kernelcallback)) (const [OH_AI_TensorHandleArray](_o_h___a_i___tensor_handle_array.md) inputs, const [OH_AI_TensorHandleArray](_o_h___a_i___tensor_handle_array.md) outputs, const [OH_AI_CallBackParam](_o_h___a_i___call_back_param.md) kernel_Info) | 回调函数指针。 |
| [OH_AI_KernelCallBack](#oh_ai_kernelcallback) | 回调函数指针。 |
| [OH_AI_Status](#oh_ai_status) | Minspore的状态码。 |
| [OH_AI_TensorHandle](#oh_ai_tensorhandle) | 指向张量对象句柄。 |
| [OH_AI_ModelType](#oh_ai_modeltype) | 模型文件的类型。 |
......@@ -94,11 +94,11 @@
| [OH_AI_ContextGetThreadAffinityMode](#oh_ai_contextgetthreadaffinitymode) (const [OH_AI_ContextHandle](#oh_ai_contexthandle) context) | 获取运行时线程绑定CPU核心的策略。 |
| [OH_AI_ContextSetThreadAffinityCoreList](#oh_ai_contextsetthreadaffinitycorelist) ([OH_AI_ContextHandle](#oh_ai_contexthandle) context, const int32_t \*core_list, size_t core_num) | 设置运行时线程绑定CPU核心的列表。 |
| [OH_AI_ContextGetThreadAffinityCoreList](#oh_ai_contextgetthreadaffinitycorelist) (const [OH_AI_ContextHandle](#oh_ai_contexthandle) context, size_t \*core_num) | 获取CPU绑核列表。 |
| [OH_AI_ContextSetEnableParallel](#oh_ai_contextsetenableparallel) ([OH_AI_ContextHandle](#oh_ai_contexthandle) context, bool is_parallel) | 设置运行时是否支持并行。 |
| [OH_AI_ContextSetEnableParallel](#oh_ai_contextsetenableparallel) ([OH_AI_ContextHandle](#oh_ai_contexthandle) context, bool is_parallel) | 设置运行时是否支持并行。此接口特性当前未开启,设置无效。 |
| [OH_AI_ContextGetEnableParallel](#oh_ai_contextgetenableparallel) (const [OH_AI_ContextHandle](#oh_ai_contexthandle) context) | 获取是否支持算子间并行。 |
| [OH_AI_ContextAddDeviceInfo](#oh_ai_contextadddeviceinfo) ([OH_AI_ContextHandle](#oh_ai_contexthandle) context, [OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) device_info) | 添加运行设备信息。 |
| [OH_AI_ContextAddDeviceInfo](#oh_ai_contextadddeviceinfo) ([OH_AI_ContextHandle](#oh_ai_contexthandle) context, [OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) device_info) | 将一个用户定义的运行设备信息附加到推理上下文中。 |
| [OH_AI_DeviceInfoCreate](#oh_ai_deviceinfocreate) ([OH_AI_DeviceType](#oh_ai_devicetype) device_type) | 创建一个设备信息对象。 |
| [OH_AI_DeviceInfoDestroy](#oh_ai_deviceinfodestroy) ([OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) \*device_info) | 释放设备信息实例。 |
| [OH_AI_DeviceInfoDestroy](#oh_ai_deviceinfodestroy) ([OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) \*device_info) | 释放设备信息实例。注意:设备信息实例被添加到context后,无需调用者手动释放。 |
| [OH_AI_DeviceInfoSetProvider](#oh_ai_deviceinfosetprovider) ([OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) device_info, const char \*provider) | 设置供应商的名称。 |
| [OH_AI_DeviceInfoGetProvider](#oh_ai_deviceinfogetprovider) (const [OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) device_info) | 获取生产商的名称。 |
| [OH_AI_DeviceInfoSetProviderDevice](#oh_ai_deviceinfosetproviderdevice) ([OH_AI_DeviceInfoHandle](#oh_ai_deviceinfohandle) device_info, const char \*device) | 设置生产商设备的名称。 |
......@@ -465,23 +465,23 @@ MSTensor保存的数据支持的排列格式。
| 枚举值 | 描述 |
| ------------------- | ---------------- |
| OH_AI_FORMAT_NCHW | 表示NCHW排列。 |
| OH_AI_FORMAT_NHWC | 表示NHWC排列。 |
| OH_AI_FORMAT_NHWC4 | 表示NHWC4排列。 |
| OH_AI_FORMAT_HWKC | 表示HWKC排列。 |
| OH_AI_FORMAT_HWCK | 表示HWCK排列。 |
| OH_AI_FORMAT_KCHW | 表示KCHW排列。 |
| OH_AI_FORMAT_CKHW | 表示CKHW排列。 |
| OH_AI_FORMAT_KHWC | 表示KHWC排列。 |
| OH_AI_FORMAT_CHWK | 表示CHWK排列。 |
| OH_AI_FORMAT_HW | 表示HW排列。 |
| OH_AI_FORMAT_HW4 | 表示HW4排列。 |
| OH_AI_FORMAT_NC | 表示NC排列。 |
| OH_AI_FORMAT_NC4 | 表示NC4排列。 |
| OH_AI_FORMAT_NC4HW4 | 表示NC4HW4排列。 |
| OH_AI_FORMAT_NCDHW | 表示NCDHW排列。 |
| OH_AI_FORMAT_NWC | 表示NWC排列。 |
| OH_AI_FORMAT_NCW | 表示NCW排列。 |
| OH_AI_FORMAT_NCHW | 按批次N、通道C、高度H和宽度W的顺序存储张量数据。 |
| OH_AI_FORMAT_NHWC | 按批次N、高度H、宽度W和通道C的顺序存储张量数据。 |
| OH_AI_FORMAT_NHWC4 | 按批次N、高度H、宽度W和通道C的顺序存储张量数据,其中C轴是4字节对齐格式。 |
| OH_AI_FORMAT_HWKC | 按高度H、宽度W、核数K和通道C的顺序存储张量数据。 |
| OH_AI_FORMAT_HWCK | 按高度H、宽度W、通道C和核数K的顺序存储张量数据。 |
| OH_AI_FORMAT_KCHW | 按核数K、通道C、高度H和宽度W的顺序存储张量数据。 |
| OH_AI_FORMAT_CKHW | 按通道C、核数K、高度H和宽度W的顺序存储张量数据。 |
| OH_AI_FORMAT_KHWC | 按核数K、高度H、宽度W和通道C的顺序存储张量数据。 |
| OH_AI_FORMAT_CHWK | 按通道C、高度H、宽度W和核数K的顺序存储张量数据。 |
| OH_AI_FORMAT_HW | 按高度H和宽度W的顺序存储张量数据。 |
| OH_AI_FORMAT_HW4 | 按高度H和宽度W的顺序存储张量数据,其中W轴是4字节对齐格式。 |
| OH_AI_FORMAT_NC | 按批次N和通道C的顺序存储张量数据。 |
| OH_AI_FORMAT_NC4 | 按批次N和通道C的顺序存储张量数据,其中C轴是4字节对齐格式。 |
| OH_AI_FORMAT_NC4HW4 | 按批次N、通道C、高度H和宽度W的顺序存储张量数据,其中C轴和W轴是4字节对齐格式。 |
| OH_AI_FORMAT_NCDHW | 按批次N、通道C、深度D、高度H和宽度W的顺序存储张量数据。 |
| OH_AI_FORMAT_NWC | 按批次N、宽度W和通道C的顺序存储张量数据。 |
| OH_AI_FORMAT_NCW | 按批次N、通道C和宽度W的顺序存储张量数据。 |
### OH_AI_ModelType
......@@ -497,7 +497,7 @@ enum OH_AI_ModelType
| 枚举值 | 描述 |
| ----------------------- | ------------------ |
| OH_AI_MODELTYPE_MINDIR | 模型类型是MindIR。 |
| OH_AI_MODELTYPE_MINDIR | 模型类型是MindIR,对应的模型文件后缀为.ms。 |
| OH_AI_MODELTYPE_INVALID | 模型类型无效。 |
......@@ -620,7 +620,7 @@ OH_AI_API void OH_AI_ContextAddDeviceInfo (OH_AI_ContextHandle context, OH_AI_De
**描述:**
添加运行设备信息
将一个用户定义的运行设备信息附加到推理上下文中
**参数:**
......@@ -706,7 +706,7 @@ OH_AI_API const int32_t* OH_AI_ContextGetThreadAffinityCoreList (const OH_AI_Con
**返回:**
CPU绑核列表。
CPU绑核列表。此列表对象由[OH_AI_ContextHandle](#oh_ai_contexthandle)管理,调用者无须手动释放。
### OH_AI_ContextGetThreadAffinityMode()
......@@ -762,7 +762,7 @@ OH_AI_API void OH_AI_ContextSetEnableParallel (OH_AI_ContextHandle context, bool
**描述:**
设置运行时是否支持并行。
设置运行时是否支持并行。此接口特性当前未开启,设置无效。
**参数:**
......@@ -937,7 +937,7 @@ OH_AI_API void OH_AI_DeviceInfoDestroy (OH_AI_DeviceInfoHandle * device_info)
**描述:**
释放设备信息实例。
释放设备信息实例。注意:设备信息实例被添加到context后,无需调用者手动释放。
**参数:**
......
......@@ -3,7 +3,7 @@
## 概述
VideoDecoder模块提供用于视频解码功能的函数。该模块在部分设备上可能不支持,可以通过[CanIUse](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/syscap.md)接口确认。
VideoDecoder模块提供用于视频解码功能的函数。该模块在部分设备上可能不支持,可以通过[CanIUse](../syscap.md)接口确认。
@syscap SystemCapability.Multimedia.Media.VideoDecoder
......
......@@ -3,7 +3,7 @@
## 概述
VideoEncoder模块提供用于视频编码功能的函数和枚举。该模块在部分设备上可能不支持,可以通过[CanIUse](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/syscap.md)接口确认。
VideoEncoder模块提供用于视频编码功能的函数和枚举。该模块在部分设备上可能不支持,可以通过[CanIUse](../syscap.md)接口确认。
@syscap SystemCapability.Multimedia.Media.VideoEncoder
......
......@@ -37,11 +37,11 @@
| [OH_AI_ContextGetThreadAffinityMode](_mind_spore.md#oh_ai_contextgetthreadaffinitymode) (const [OH_AI_ContextHandle](_mind_spore.md#oh_ai_contexthandle) context) | 获取运行时线程绑定CPU核心的策略。 |
| [OH_AI_ContextSetThreadAffinityCoreList](_mind_spore.md#oh_ai_contextsetthreadaffinitycorelist) ([OH_AI_ContextHandle](_mind_spore.md#oh_ai_contexthandle) context, const int32_t \*core_list, size_t core_num) | 设置运行时线程绑定CPU核心的列表。 |
| [OH_AI_ContextGetThreadAffinityCoreList](_mind_spore.md#oh_ai_contextgetthreadaffinitycorelist) (const [OH_AI_ContextHandle](_mind_spore.md#oh_ai_contexthandle) context, size_t \*core_num) | 获取CPU绑核列表。 |
| [OH_AI_ContextSetEnableParallel](_mind_spore.md#oh_ai_contextsetenableparallel) ([OH_AI_ContextHandle](_mind_spore.md#oh_ai_contexthandle) context, bool is_parallel) | 设置运行时是否支持并行。 |
| [OH_AI_ContextSetEnableParallel](_mind_spore.md#oh_ai_contextsetenableparallel) ([OH_AI_ContextHandle](_mind_spore.md#oh_ai_contexthandle) context, bool is_parallel) | 设置运行时是否支持并行。此接口特性当前未开启,设置无效。 |
| [OH_AI_ContextGetEnableParallel](_mind_spore.md#oh_ai_contextgetenableparallel) (const [OH_AI_ContextHandle](_mind_spore.md#oh_ai_contexthandle) context) | 获取是否支持算子间并行。 |
| [OH_AI_ContextAddDeviceInfo](_mind_spore.md#oh_ai_contextadddeviceinfo) ([OH_AI_ContextHandle](_mind_spore.md#oh_ai_contexthandle) context, [OH_AI_DeviceInfoHandle](_mind_spore.md#oh_ai_deviceinfohandle) device_info) | 添加运行设备信息。 |
| [OH_AI_ContextAddDeviceInfo](_mind_spore.md#oh_ai_contextadddeviceinfo) ([OH_AI_ContextHandle](_mind_spore.md#oh_ai_contexthandle) context, [OH_AI_DeviceInfoHandle](_mind_spore.md#oh_ai_deviceinfohandle) device_info) | 将一个用户定义的运行设备信息附加到推理上下文中。 |
| [OH_AI_DeviceInfoCreate](_mind_spore.md#oh_ai_deviceinfocreate) ([OH_AI_DeviceType](_mind_spore.md#oh_ai_devicetype) device_type) | 创建一个设备信息对象。 |
| [OH_AI_DeviceInfoDestroy](_mind_spore.md#oh_ai_deviceinfodestroy) ([OH_AI_DeviceInfoHandle](_mind_spore.md#oh_ai_deviceinfohandle) \*device_info) | 释放设备信息实例。 |
| [OH_AI_DeviceInfoDestroy](_mind_spore.md#oh_ai_deviceinfodestroy) ([OH_AI_DeviceInfoHandle](_mind_spore.md#oh_ai_deviceinfohandle) \*device_info) | 释放设备信息实例。注意:设备信息实例被添加到context后,无需调用者手动释放。 |
| [OH_AI_DeviceInfoSetProvider](_mind_spore.md#oh_ai_deviceinfosetprovider) ([OH_AI_DeviceInfoHandle](_mind_spore.md#oh_ai_deviceinfohandle) device_info, const char \*provider) | 设置供应商的名称。 |
| [OH_AI_DeviceInfoGetProvider](_mind_spore.md#oh_ai_deviceinfogetprovider) (const [OH_AI_DeviceInfoHandle](_mind_spore.md#oh_ai_deviceinfohandle) device_info) | 获取生产商的名称。 |
| [OH_AI_DeviceInfoSetProviderDevice](_mind_spore.md#oh_ai_deviceinfosetproviderdevice) ([OH_AI_DeviceInfoHandle](_mind_spore.md#oh_ai_deviceinfohandle) device_info, const char \*device) | 设置生产商设备的名称。 |
......
# Native API标准库
- [Node_API](third_party_napi/napi.md)
- [Node-API](third_party_napi/napi.md)
- [libuv](third_party_libuv/libuv.md)
- [支持的标准库介绍](third_party_libc/musl.md)
- [Native API中支持的标准库](third_party_libc/musl.md)
- 附录
- [Native api中没有导出的符号列表](third_party_libc/musl-peculiar-symbol.md)
- [Native api中由于权限管控可能调用失败的符号列表](third_party_libc/musl-permission-control-symbol.md)
......
......@@ -14,7 +14,7 @@
- [通用密钥库密码算法规格](huks-appendix.md)
- 加解密算法库框架
- [加解密算法库框架概述](cryptoFramework-overview.md)
- [加解密算法框架开发指导](cryptoFramework-guidelines.md)
- [加解密算法框架开发指导](cryptoFramework-guidelines.md)
- 证书
- [证书概述](cert-overview.md)
- [证书开发指导](cert-guidelines.md)
......
# 访问控制授权申请
# 访问控制授权申请指导
## 场景介绍
......
......@@ -1130,83 +1130,70 @@ function signLongMessagePromise() {
```javascript
import cryptoFramework from "@ohos.security.cryptoFramework"
// turn string into uint8Arr
// 可理解的字符串转成字节流
function stringToUint8Array(str) {
var arr = [];
for (var i = 0, j = str.length; i < j; ++i) {
arr.push(str.charCodeAt(i));
}
var tmpUint8Array = new Uint8Array(arr);
return tmpUint8Array;
}
// generate dataBlob with given length
function GenDataBlob(dataBlobLen) {
var dataBlob;
if (dataBlobLen == 12) {
dataBlob = {data: stringToUint8Array("my test data")};
} else {
console.error("GenDataBlob: dataBlobLen is invalid");
dataBlob = {data: stringToUint8Array("my test data")};
let arr = [];
for (let i = 0, j = str.length; i < j; ++i) {
arr.push(str.charCodeAt(i));
}
return dataBlob;
return new Uint8Array(arr);
}
// md with promise async
function doMdByPromise(algName) {
var md;
// 以Promise方式完成摘要
function doMdByPromise() {
let mdAlgName = "SHA256"; // 摘要算法名
let message = "mdTestMessgae"; // 待摘要数据
let md;
let mdOutput;
try {
md = cryptoFramework.createMd(algName);
md = cryptoFramework.createMd(mdAlgName);
} catch (error) {
console.error("[Promise]: error code: " + error.code + ", message is: " + error.message);
return;
}
console.error("[Promise]: Md algName is: " + md.algName);
// 初次update
var promiseMdUpdate = md.update(GenDataBlob(12));
console.info("[Promise]: Md algName is: " + md.algName);
// 数据量较少时,可以只做一次update,将数据全部传入,接口未对入参长度做限制
let promiseMdUpdate = md.update({ data: stringToUint8Array(message) });
promiseMdUpdate.then(() => {
// 可根据情况进行多次update
promiseMdUpdate = md.update(GenDataBlob(12));
return promiseMdUpdate;
}).then(mdOutput => {
var PromiseMdDigest = md.digest();
// 通过digest,返回摘要结果
let PromiseMdDigest = md.digest();
return PromiseMdDigest;
}).then(mdOutput => {
console.error("[Promise]: MD result: " + mdOutput.data);
var mdLen = md.getMdLength();
console.error("[Promise]: MD len: " + mdLen);
}).then(digestOutput => {
mdOutput = digestOutput;
console.info("[Promise]: MD result: " + mdOutput.data);
let mdLen = md.getMdLength();
console.info("[Promise]: MD len: " + mdLen);
}).catch(error => {
console.error("[Promise]: error: " + error.message);
});
}
// md with callback async
function doMdByCallback(algName) {
var md;
// 以Callback方式完成摘要
function doMdByCallback() {
let mdAlgName = "SHA256"; // 摘要算法名
let message = "mdTestMessgae"; // 待摘要数据
let md;
let mdOutput;
try {
md = cryptoFramework.createMd(algName);
md = cryptoFramework.createMd(mdAlgName);
} catch (error) {
console.error("[Callback]: error code: " + error.code + ", message is: " + error.message);
}
console.error("[Callback]: Md algName is: " + md.algName);
// 初次update
md.update(GenDataBlob(12), (err,) => {
console.info("[Callback]: Md algName is: " + md.algName);
// 数据量较少时,可以只做一次update,将数据全部传入,接口未对入参长度做限制
md.update({ data: stringToUint8Array(message) }, (err,) => {
if (err) {
console.error("[Callback]: err: " + err.code);
}
// 可根据情况进行多次update
md.update(GenDataBlob(12), (err1,) => {
md.digest((err1, digestOutput) => {
if (err1) {
console.error("[Callback]: err: " + err1.code);
} else {
mdOutput = digestOutput;
console.info("[Callback]: MD result: " + mdOutput.data);
let mdLen = md.getMdLength();
console.info("[Callback]: MD len: " + mdLen);
}
md.digest((err2, mdOutput) => {
if (err2) {
console.error("[Callback]: err: " + err2.code);
} else {
console.error("[Callback]: MD result: " + mdOutput.data);
var mdLen = md.getMdLength();
console.error("[Callback]: MD len: " + mdLen);
}
});
});
});
}
......@@ -1215,54 +1202,56 @@ function doMdByCallback(algName) {
```javascript
import cryptoFramework from "@ohos.security.cryptoFramework"
async function updateData(index, obj, data) {
console.error("update " + (index + 1) + " MB data...");
return obj.update(data);
}
// 可理解的字符串转成字节流
function stringToUint8Array(str) {
var arr = [];
for (var i = 0, j = str.length; i < j; ++i) {
let arr = [];
for (let i = 0, j = str.length; i < j; ++i) {
arr.push(str.charCodeAt(i));
}
var tmpUint8Array = new Uint8Array(arr);
return tmpUint8Array;
return new Uint8Array(arr);
}
function GenDataBlob(dataBlobLen) {
var dataBlob;
if (dataBlobLen == 12) {
dataBlob = {data: stringToUint8Array("my test data")};
} else {
console.error("GenDataBlob: dataBlobLen is invalid");
dataBlob = {data: stringToUint8Array("my test data")};
}
return dataBlob;
}
function LoopMdPromise(algName, loopSize) {
var md;
// 使用Promise方式,完成分段摘要
async function doLoopMdPromise() {
let mdAlgName = "SHA256"; // 摘要算法名
let md;
let mdOutput;
try {
md = cryptoFramework.createMd(algName);
md = cryptoFramework.createMd(mdAlgName);
} catch (error) {
console.error("[Promise]: error code: " + error.code + ", message is: " + error.message);
return;
}
console.error("[Promise]: Md algName is: " + md.algName);
var promiseMdUpdate = md.update(GenDataBlob(12));
promiseMdUpdate.then(() => {
var PromiseMdDigest = md.digest();
return PromiseMdDigest;
}).then(async () => {
for (var i = 0; i < loopSize; i++) {
await updateData(i, md, GenDataBlob(12));
console.info("[Promise]: Md algName is: " + md.algName);
let messageText = "aaaaa.....bbbbb.....ccccc.....ddddd.....eee"; // 假设信息总共43字节
let messageArr = [];
let updateLength = 20; // 假设每20字节分段update一次,实际并无要求
for (let i = 0; i <= messageText.length; i++) {
if ((i % updateLength == 0 || i == messageText.length) && messageArr.length != 0) {
let message = new Uint8Array(messageArr);
let messageBlob = { data : message };
// 使用await处理for循环里的update
try {
await md.update(messageBlob); // 分段update
} catch (error) {
console.error("await update error code: " + error.code + ", message is: " + error.message);
return;
}
messageArr = [];
}
var PromiseMdDigest = md.digest();
return PromiseMdDigest;
}).then(mdOutput => {
console.error("[Promise]: MD result: " + mdOutput.data);
var mdLen = md.getMdLength();
console.error("[Promise]: MD len: " + mdLen);
// 按分割长度,填充messageArr
if (i < messageText.length) {
messageArr.push(messageText.charCodeAt(i));
}
}
let PromiseMdDigest = md.digest();
PromiseMdDigest.then(digestOutput => {
mdOutput = digestOutput;
console.info("[Promise]: MD result: " + mdOutput.data);
let mdLen = md.getMdLength();
console.info("[Promise]: MD len: " + mdLen);
}).catch(error => {
console.error("[Promise]: error: " + error.message);
});
......@@ -1374,77 +1363,72 @@ Mac(message authentication code)可以对消息进行完整性校验,通过使
```javascript
import cryptoFramework from "@ohos.security.cryptoFramework"
// turn string into uint8Arr
// 可理解的字符串转成字节流
function stringToUint8Array(str) {
var arr = [];
for (var i = 0, j = str.length; i < j; ++i) {
arr.push(str.charCodeAt(i));
}
var tmpUint8Array = new Uint8Array(arr);
return tmpUint8Array;
}
// generate blob with this func
function GenDataBlob(dataBlobLen) {
var dataBlob;
if (dataBlobLen == 12) {
dataBlob = {data: stringToUint8Array("my test data")};
} else {
console.error("GenDataBlob: dataBlobLen is invalid");
dataBlob = {data: stringToUint8Array("my test data")};
let arr = [];
for (let i = 0, j = str.length; i < j; ++i) {
arr.push(str.charCodeAt(i));
}
return dataBlob;
return new Uint8Array(arr);
}
function doHmacByPromise(algName) {
var mac;
// 以Promise方式完成HMAC
function doHmacByPromise() {
let macAlgName = "SHA256"; // 摘要算法名
let message = "hmacTestMessgae"; // 待hmac数据
let macOutput;
let mac;
try {
mac = cryptoFramework.createMac(algName);
mac = cryptoFramework.createMac(macAlgName);
} catch (error) {
console.error("[Promise]: error code: " + error.code + ", message is: " + error.message);
}
console.error("[Promise]: Mac algName is: " + mac.algName);
var KeyBlob = {
console.info("[Promise]: Mac algName is: " + mac.algName);
let KeyBlob = {
// 128位密钥
data : stringToUint8Array("12345678abcdefgh")
}
var symKeyGenerator = cryptoFramework.createSymKeyGenerator("AES128");
var promiseConvertKey = symKeyGenerator.convertKey(KeyBlob);
let symKeyGenerator = cryptoFramework.createSymKeyGenerator("AES128");
// 将二进制密钥转换为算法库密钥
let promiseConvertKey = symKeyGenerator.convertKey(KeyBlob);
promiseConvertKey.then(symKey => {
var promiseMacInit = mac.init(symKey);
let promiseMacInit = mac.init(symKey);
return promiseMacInit;
}).then(() => {
// 初次update
var promiseMacUpdate = mac.update(GenDataBlob(12));
return promiseMacUpdate;
}).then(() => {
// 可根据情况进行多次update
var promiseMacUpdate = mac.update(GenDataBlob(12));
// 数据量较少时,可以只做一次update,将数据全部传入,接口未对入参长度做限制
let promiseMacUpdate = mac.update({ data: stringToUint8Array(message) });
return promiseMacUpdate;
}).then(() => {
var PromiseMacDoFinal = mac.doFinal();
let PromiseMacDoFinal = mac.doFinal();
return PromiseMacDoFinal;
}).then(macOutput => {
console.error("[Promise]: HMAC result: " + macOutput.data);
var macLen = mac.getMacLength();
console.error("[Promise]: MAC len: " + macLen);
}).then(output => {
macOutput = output;
console.info("[Promise]: HMAC result: " + macOutput.data);
let macLen = mac.getMacLength();
console.info("[Promise]: MAC len: " + macLen);
}).catch(error => {
console.error("[Promise]: error: " + error.message);
});
}
// process by callback
function doHmacByCallback(algName) {
var mac;
// 以Callback方式完成HMAC
function doHmacByCallback() {
let macAlgName = "SHA256"; // 摘要算法名
let message = "hmacTestMessgae"; // 待hmac数据
let macOutput;
let mac;
try {
mac = cryptoFramework.createMac(algName);
mac = cryptoFramework.createMac(macAlgName);
} catch (error) {
AlertDialog.show({message: "[Callback]: error code: " + error.code + ", message is: " + error.message});
console.error("[Callback]: error code: " + error.code + ", message is: " + error.message);
}
var KeyBlob = {
console.info("[Promise]: Mac algName is: " + mac.algName);
let KeyBlob = {
// 128位密钥
data : stringToUint8Array("12345678abcdefgh")
}
var symKeyGenerator = cryptoFramework.createSymKeyGenerator("AES128");
let symKeyGenerator = cryptoFramework.createSymKeyGenerator("AES128");
// 将二进制密钥转换为算法库密钥
symKeyGenerator.convertKey(KeyBlob, (err, symKey) => {
if (err) {
console.error("[Callback]: err: " + err.code);
......@@ -1453,25 +1437,20 @@ function doHmacByCallback(algName) {
if (err1) {
console.error("[Callback]: err: " + err1.code);
}
// 初次update
mac.update(GenDataBlob(12), (err2, ) => {
// 数据量较少时,可以只做一次update,将数据全部传入,接口未对入参长度做限制
mac.update({ data: stringToUint8Array(message) }, (err2, ) => {
if (err2) {
console.error("[Callback]: err: " + err2.code);
}
// 可根据情况进行多次update
mac.update(GenDataBlob(12), (err3, ) => {
mac.doFinal((err3, output) => {
if (err3) {
console.error("[Callback]: err: " + err3.code);
} else {
macOutput = output;
console.info("[Callback]: HMAC result: " + macOutput.data);
let macLen = mac.getMacLength();
console.info("[Callback]: MAC len: " + macLen);
}
mac.doFinal((err4, macOutput) => {
if (err4) {
console.error("[Callback]: err: " + err4.code);
} else {
console.error("[Callback]: HMAC result: " + macOutput.data);
var macLen = mac.getMacLength();
console.error("[Callback]: MAC len: " + macLen);
}
});
});
});
});
......@@ -1482,61 +1461,67 @@ function doHmacByCallback(algName) {
```javascript
import cryptoFramework from "@ohos.security.cryptoFramework"
async function updateData(index, obj, data) {
console.error("update " + (index + 1) + " MB data...");
return obj.update(data);
}
function stringToUint8Array(str) {
var arr = [];
for (var i = 0, j = str.length; i < j; ++i) {
let arr = [];
for (let i = 0, j = str.length; i < j; ++i) {
arr.push(str.charCodeAt(i));
}
var tmpUint8Array = new Uint8Array(arr);
return tmpUint8Array;
}
function GenDataBlob(dataBlobLen) {
var dataBlob;
if (dataBlobLen == 12) {
dataBlob = {data: stringToUint8Array("my test data")};
} else {
console.error("GenDataBlob: dataBlobLen is invalid");
dataBlob = {data: stringToUint8Array("my test data")};
}
return dataBlob;
return new Uint8Array(arr);
}
function LoopHmacPromise(algName, loopSize) {
var mac;
function doLoopHmacPromise() {
let macAlgName = "SHA256"; // 摘要算法名
let macOutput;
let mac;
try {
mac = cryptoFramework.createMac(algName);
mac = cryptoFramework.createMac(macAlgName);
} catch (error) {
console.error("[Promise]: error code: " + error.code + ", message is: " + error.message);
return;
}
console.error("[Promise]: Mac algName is: " + mac.algName);
var KeyBlob = {
console.info("[Promise]: Mac algName is: " + mac.algName);
let KeyBlob = {
// 128位密钥
data : stringToUint8Array("12345678abcdefgh")
}
var symKeyGenerator = cryptoFramework.createSymKeyGenerator("AES128");
var promiseConvertKey = symKeyGenerator.convertKey(KeyBlob);
let messageText = "aaaaa.....bbbbb.....ccccc.....ddddd.....eee"; // 假设信息总共43字节
let updateLength = 20; // 假设每20字节分段update一次,实际并无要求
let symKeyGenerator = cryptoFramework.createSymKeyGenerator("AES128");
// 将二进制密钥转换为算法库密钥
let promiseConvertKey = symKeyGenerator.convertKey(KeyBlob);
promiseConvertKey.then(symKey => {
var promiseMacInit = mac.init(symKey);
let promiseMacInit = mac.init(symKey);
return promiseMacInit;
}).then(async () => {
for (var i = 0; i < loopSize; i++) {
await updateData(i, mac, GenDataBlob(12));
let promiseMacUpdate;
let messageArr = [];
for (let i = 0; i <= messageText.length; i++) {
if ((i % updateLength == 0 || i == messageText.length) && messageArr.length != 0) {
let message = new Uint8Array(messageArr);
let messageBlob = { data : message };
// 使用await处理for循环里的update
try {
promiseMacUpdate = await mac.update(messageBlob); // 分段update
} catch (error) {
console.error("await update error code: " + error.code + ", message is: " + error.message);
return;
}
messageArr = [];
}
// 按分割长度,填充messageArr
if (i < messageText.length) {
messageArr.push(messageText.charCodeAt(i));
}
}
var promiseMacUpdate = mac.update(GenDataBlob(12));
return promiseMacUpdate;
}).then(() => {
var PromiseMacDoFinal = mac.doFinal();
let PromiseMacDoFinal = mac.doFinal();
return PromiseMacDoFinal;
}).then(macOutput => {
console.error("[Promise]: HMAC result: " + macOutput.data);
var macLen = mac.getMacLength();
console.error("[Promise]: MAC len: " + macLen);
}).then(output => {
macOutput = output;
console.log("[Promise]: HMAC result: " + macOutput.data);
let macLen = mac.getMacLength();
console.log("[Promise]: MAC len: " + macLen);
}).catch(error => {
console.error("[Promise]: error: " + error.message);
});
......
......@@ -949,7 +949,7 @@ struct Index {
### 密钥协商
应用在协商密钥时建议传入[HuksKeyStorageType](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-huks.md#hukskeystoragetype)中定义的类型;从API10开始应用只能选择存储(HUKS_STORAGE_ONLY_USED_IN_HUKS),或者选择导出(HUKS_STORAGE_KEY_EXPORT_ALLOWED),若不传入,则默认同时支持存储和导出,存在安全问题,不推荐业务使用。
应用在协商密钥时建议传入[HuksKeyStorageType](../reference/apis/js-apis-huks.md#hukskeystoragetype)中定义的类型;从API10开始应用只能选择存储(HUKS_STORAGE_ONLY_USED_IN_HUKS),或者选择导出(HUKS_STORAGE_KEY_EXPORT_ALLOWED),若不传入,则默认同时支持存储和导出,存在安全问题,不推荐业务使用。
```ts
/*
......@@ -1320,7 +1320,7 @@ async function testAgree() {
### 密钥派生
应用在派生密钥时建议传入[HuksKeyStorageType](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-huks.md#hukskeystoragetype)中定义的类型;从API10开始应用只能选择存储(HUKS_STORAGE_ONLY_USED_IN_HUKS),或者选择导出(HUKS_STORAGE_KEY_EXPORT_ALLOWED),若不传入,则默认同时支持存储和导出,存在安全问题,不推荐业务使用。
应用在派生密钥时建议传入[HuksKeyStorageType](../reference/apis/js-apis-huks.md#hukskeystoragetype)中定义的类型;从API10开始应用只能选择存储(HUKS_STORAGE_ONLY_USED_IN_HUKS),或者选择导出(HUKS_STORAGE_KEY_EXPORT_ALLOWED),若不传入,则默认同时支持存储和导出,存在安全问题,不推荐业务使用。
```ts
/*
......@@ -2076,16 +2076,16 @@ HUKS提供了全面完善的密钥访问控制能力,确保存储在HUKS中的
### 细粒度用户身份认证访问控制
该功能是基于已有[密钥访问控制](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/huks-guidelines.md#%E5%AF%86%E9%92%A5%E8%AE%BF%E9%97%AE%E6%8E%A7%E5%88%B6)能力的扩展,提供了基于生物特征和锁屏密码二次身份认证的细粒度访问控制能力,允许设置密钥在加密、解密、签名、验签、密钥协商、密钥派生的单个或多个场景时是否需要进行身份验证。比如,业务需要使用HUKS密钥加密保存账号密码信息等数据,要求在加密的时候不进行指纹等身份认证,解密的时候需要进行指纹等身份认证,这是就需要依赖HUKS提供细粒度的二次身份认证访问控制机制。
该功能是基于已有[密钥访问控制](#密钥访问控制)能力的扩展,提供了基于生物特征和锁屏密码二次身份认证的细粒度访问控制能力,允许设置密钥在加密、解密、签名、验签、密钥协商、密钥派生的单个或多个场景时是否需要进行身份验证。比如,业务需要使用HUKS密钥加密保存账号密码信息等数据,要求在加密的时候不进行指纹等身份认证,解密的时候需要进行指纹等身份认证,这是就需要依赖HUKS提供细粒度的二次身份认证访问控制机制。
**开发流程**
1. 基于用户身份认证访问控制的流程,在密钥生成阶段,通过额外指定用于细粒度用户身份认证访问控制的HuksTag:[HUKS_TAG_KEY_AUTH_PURPOSE](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-huks.md#hukstag)值,来指定在某种算法用途的情况下需要使用用户身份认证访问控制能力。
1. 基于用户身份认证访问控制的流程,在密钥生成阶段,通过额外指定用于细粒度用户身份认证访问控制的HuksTag:[HUKS_TAG_KEY_AUTH_PURPOSE](../reference/apis/js-apis-huks.md#hukstag)值,来指定在某种算法用途的情况下需要使用用户身份认证访问控制能力。
2. 基于用户身份认证访问控制的流程,在密钥使用阶段,业务无需再次指定HUKS_TAG_KEY_AUTH_PURPOSE值,同用户身份认证访问控制的开发流程。
**接口说明**
新增用于细粒度用户身份认证访问控制的HuksTag:[HUKS_TAG_KEY_AUTH_PURPOSE](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-huks.md#hukstag),该Tag值取值范围为枚举类[HuksKeyAlg](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-huks.md#hukskeyalg)
新增用于细粒度用户身份认证访问控制的HuksTag:[HUKS_TAG_KEY_AUTH_PURPOSE](../reference/apis/js-apis-huks.md#hukstag),该Tag值取值范围为枚举类[HuksKeyAlg](../reference/apis/js-apis-huks.md#hukskeyalg)
**表8** 细粒度用户身份认证访问控制Tag类型介绍
| 名称 | 描述 |
......
# 概述
# WebGL开发概述
WebGL的全称为Web Graphic Library(网页图形库),主要用于交互式渲染2D图形和3D图形。目前OpenHarmony中使用的WebGL是基于OpenGL裁剪的OpenGL ES,可以在HTML5的canvas元素对象中使用,无需使用插件,支持跨平台。WebGL程序是由JavaScript代码组成的,其中使用的API可以利用用户设备提供的GPU硬件完成图形渲染和加速。更多信息请参考[WebGL™标准](https://www.khronos.org/registry/webgl/specs/latest/1.0/)
......
......@@ -26,10 +26,10 @@
- [HAR](quick-start/har-package.md)
- HSP
- [应用内HSP开发指导](quick-start/in-app-hsp.md)
- [应用间HSP开发指导(仅对系统应用开放)](quick-start/cross-app-hsp.md)
- [应用间HSP开发指导](quick-start/cross-app-hsp.md)
- 应用程序包快速修复
- [快速修复概述](quick-start/quickfix-principles.md)
- [快速修复调试指导](quick-start/quickfix-debug.md)
- [快速修复命令行调试开发指导](quick-start/quickfix-debug.md)
- 应用配置文件(Stage模型)
- [应用配置文件概述(Stage模型)](quick-start/application-configuration-file-overview-stage.md)
- [app.json5配置文件](quick-start/app-configuration-file.md)
......@@ -98,7 +98,7 @@
- [AccessibilityExtensionAbility](application-models/accessibilityextensionability.md)
- [EnterpriseAdminExtensionAbility](application-models/enterprise-extensionAbility.md)
- [InputMethodExtensionAbility](application-models/inputmethodextentionability.md)
- [WindowExtensionAbility](application-models/windowextensionability.md)
- [WindowExtensionAbility(仅对系统应用开放)](application-models/windowextensionability.md)
- 服务卡片开发指导(Stage模型)
- [服务卡片概述](application-models/service-widget-overview.md)
- 开发基于ArkTS UI的卡片
......@@ -151,7 +151,7 @@
- [静态订阅公共事件(仅对系统应用开放)](application-models/common-event-static-subscription.md)
- [取消动态订阅公共事件](application-models/common-event-unsubscription.md)
- [公共事件发布](application-models/common-event-publish.md)
- [移除粘性公共事件](application-models/common-event-remove-sticky.md)
- [移除粘性公共事件(仅对系统应用开放)](application-models/common-event-remove-sticky.md)
- [后台服务](application-models/background-services.md)
- 了解线程模型
- [线程模型概述](application-models/thread-model-stage.md)
......@@ -393,7 +393,7 @@
- [通知概述](notification/notification-overview.md)
- [订阅通知(仅对系统应用开放)](notification/notification-subscription.md)
- [使能通知开关](notification/notification-enable.md)
- [通知角标](notification/notification-badge.md)
- [管理通知角标](notification/notification-badge.md)
- 发布通知
- [发布基础类型通知](notification/text-notification.md)
- [发布进度条类型通知](notification/progress-bar-notification.md)
......@@ -426,7 +426,7 @@
- [音频录制开发概述](media/audio-recording-overview.md)
- [使用AVRecorder开发音频录制功能](media/using-avrecorder-for-recording.md)
- [使用AudioCapturer开发音频录制功能](media/using-audiocapturer-for-recording.md)
- [使用OpenSLES开发音频录制功能](media/using-opensl-es-for-recording.md)
- [使用OpenSL ES开发音频录制功能](media/using-opensl-es-for-recording.md)
- [管理麦克风](media/mic-management.md)
- [音频录制流管理](media/audio-recording-stream-management.md)
- [音频输入设备管理](media/audio-input-device-management.md)
......@@ -435,7 +435,7 @@
- [开发音频通话功能](media/audio-call-development.md)
- [视频播放](media/video-playback.md)
- [视频录制](media/video-recording.md)
- 媒体会话(仅对系统应用开放)
- 媒体会话
- [媒体会话概述](media/avsession-overview.md)
- 本地媒体会话
- [本地媒体会话概述](media/local-avsession-overview.md)
......@@ -480,7 +480,7 @@
- [通用密钥库密码算法规格](security/huks-appendix.md)
- 加解密算法库框架
- [加解密算法库框架概述](security/cryptoFramework-overview.md)
- [加解密算法框架开发指导](security/cryptoFramework-guidelines.md)
- [加解密算法框架开发指导](security/cryptoFramework-guidelines.md)
- 证书
- [证书概述](security/cert-overview.md)
- [证书开发指导](security/cert-guidelines.md)
......@@ -728,6 +728,9 @@
- [图像球面效果](reference/arkui-ts/ts-universal-attributes-sphericalEffect.md)
- [图像渐亮效果](reference/arkui-ts/ts-universal-attributes-lightUpEffect.md)
- [图像边缘像素扩展效果](reference/arkui-ts/ts-universal-attributes-pixelStretchEffect.md)
- 模态转场设置
- [全屏模态转场](reference/arkui-ts/ts-universal-attributes-modal-transition.md)
- [半模态转场](reference/arkui-ts/ts-universal-attributes-sheet-transition.md)
- [文本通用属性](reference/arkui-ts/ts-universal-attributes-text-style.md)
- 手势处理
- [绑定手势方法](reference/arkui-ts/ts-gesture-settings.md)
......@@ -827,10 +830,12 @@
- [Shape](reference/arkui-ts/ts-drawing-components-shape.md)
- 画布组件
- [Canvas](reference/arkui-ts/ts-components-canvas-canvas.md)
- [CanvasRenderingContext2D对象](reference/arkui-ts/ts-canvasrenderingcontext2d.md)
- [CanvasGradient对象](reference/arkui-ts/ts-components-canvas-canvasgradient.md)
- [CanvasPattern](reference/arkui-ts/ts-components-canvas-canvaspattern.md)
- [CanvasRenderingContext2D对象](reference/arkui-ts/ts-canvasrenderingcontext2d.md)
- [ImageBitmap对象](reference/arkui-ts/ts-components-canvas-imagebitmap.md)
- [ImageData对象](reference/arkui-ts/ts-components-canvas-imagedata.md)
- [Matrix2D](reference/arkui-ts/ts-components-canvas-matrix2d.md)
- [OffscreenCanvasRenderingContext2D对象](reference/arkui-ts/ts-offscreencanvasrenderingcontext2d.md)
- [Path2D对象](reference/arkui-ts/ts-components-canvas-path2d.md)
- [Lottie](reference/arkui-ts/ts-components-canvas-lottie.md)
......@@ -1269,7 +1274,7 @@
- security
- [PermissionRequestResult](reference/apis/js-apis-permissionrequestresult.md)
- 数据管理
- [@ohos.data.cloudData(端云协同)](reference/apis/js-apis-data-cloudData.md)
- [@ohos.data.cloudData (端云协同)](reference/apis/js-apis-data-cloudData.md)
- [@ohos.data.dataAbility (DataAbility谓词)](reference/apis/js-apis-data-ability.md)
- [@ohos.data.dataShare (数据共享)](reference/apis/js-apis-data-dataShare.md)
- [@ohos.data.dataSharePredicates (数据共享谓词)](reference/apis/js-apis-data-dataSharePredicates.md)
......@@ -1277,7 +1282,7 @@
- [@ohos.data.distributedDataObject (分布式数据对象)](reference/apis/js-apis-data-distributedobject.md)
- [@ohos.data.distributedKVStore (分布式键值数据库)](reference/apis/js-apis-distributedKVStore.md)
- [@ohos.data.preferences (用户首选项)](reference/apis/js-apis-data-preferences.md)
- [@ohos.data.relationalStore (关系型数据库)](reference/apis/js-apis-data-relationalStore.md)
- [@ohos.data.relationalStore (关系型数据库)](reference/apis/js-apis-data-relationalStore.md)
- [@ohos.data.UDMF (统一数据管理框架)](reference/apis/js-apis-data-udmf.md)
- [@ohos.data.ValuesBucket (数据集)](reference/apis/js-apis-data-valuesBucket.md)
- 文件管理
......@@ -1356,6 +1361,7 @@
- [@ohos.web.webview (Webview)](reference/apis/js-apis-webview.md)
- [console (控制台)](reference/apis/js-apis-logs.md)
- [Timer (定时器)](reference/apis/js-apis-timer.md)
- [syscap (系统能力)](reference/apis/js-apis-syscap.md)
- application
- [AccessibilityExtensionContext (辅助功能扩展上下文)](reference/apis/js-apis-inner-application-accessibilityExtensionContext.md)
- 设备管理
......@@ -1609,6 +1615,7 @@
- [HuksKeyApi](reference/native-apis/_huks_key_api.md)
- [HuksParamSetApi](reference/native-apis/_huks_param_set_api.md)
- [HuksTypeApi](reference/native-apis/_huks_type_api.md)
- [Init](reference/native-apis/init.md)
- 头文件
- [drawing_bitmap.h](reference/native-apis/drawing__bitmap_8h.md)
- [drawing_brush.h](reference/native-apis/drawing__brush_8h.md)
......@@ -1650,6 +1657,7 @@
- [native_huks_api.h](reference/native-apis/native__huks__api_8h.md)
- [native_huks_param.h](reference/native-apis/native__huks__param_8h.md)
- [native_huks_type.h](reference/native-apis/native__huks__type_8h.md)
- [syscap_ndk.h](reference/native-apis/syscap__ndk_8h.md)
- 结构体
- [OH_Drawing_BitmapFormat](reference/native-apis/_o_h___drawing___bitmap_format.md)
- [OH_NativeBuffer_Config](reference/native-apis/_o_h___native_buffer___config.md)
......@@ -1687,9 +1695,9 @@
- [OH_Huks_PubKeyInfo](reference/native-apis/_o_h___huks___pub_key_info.md)
- [OH_Huks_Result](reference/native-apis/_o_h___huks___result.md)
- 标准库
- [Node_API](reference/native-lib/third_party_napi/napi.md)
- [Node-API](reference/native-lib/third_party_napi/napi.md)
- [libuv](reference/native-lib/third_party_libuv/libuv.md)
- [支持的标准库介绍](reference/native-lib/third_party_libc/musl.md)
- [Native API中支持的标准库](reference/native-lib/third_party_libc/musl.md)
- 附录
- [Native api中没有导出的符号列表](reference/native-lib/third_party_libc/musl-peculiar-symbol.md)
- [Native api中由于权限管控可能调用失败的符号列表](reference/native-lib/third_party_libc/musl-permission-control-symbol.md)
......
# ActRecognitionEvent
## **概述**
## 概述
定义行为识别模块使用的数据类型
定义行为事件上报的数据结构
**Since**:
**Since:**
3.2
**Version**:
1.0
**相关模块:**
[HdiActivityRecognition](activity_recognition.md)
[HdiActivityRecognition](_hdi_activity_recognition.md)
## **汇总**
## 汇总
### Public 属性
| 名称 | 描述 |
| -------- | -------- |
| [activity](#activity) | 行为类型 |
| [eventType](#eventtype) | 事件类型 |
| [timestamp](#timestamp) | 时间戳 |
| [confidence](#confidence) | 置信度 |
| [activity](#activity) | int<br/>行为类型,详见[ActRecognitionEventType](_hdi_activity_recognition.md#actrecognitioneventtype) |
| [eventType](#eventtype) | int<br/>事件类型,详见[ActRecognitionEventType](_hdi_activity_recognition.md#actrecognitioneventtype) |
| [timestamp](#timestamp) | long<br/>时间戳 |
| [confidence](#confidence) | int<br/>置信度,100为最可信,0为最不可信,-1为该行为不支持置信度的计算。 |
## **类成员变量说明**
## 类成员变量说明
### activity
......@@ -41,9 +37,9 @@
int ActRecognitionEvent::activity
```
**描述**
**描述:**
行为类型,详见[ActRecognitionEventType](activity_recognition.md#actrecognitioneventtype)
行为类型,详见[ActRecognitionEventType](_hdi_activity_recognition.md#actrecognitioneventtype)
### confidence
......@@ -53,7 +49,7 @@ int ActRecognitionEvent::activity
int ActRecognitionEvent::confidence
```
**描述**
**描述:**
置信度,100为最可信,0为最不可信,-1为该行为不支持置信度的计算。
......@@ -65,9 +61,9 @@ int ActRecognitionEvent::confidence
int ActRecognitionEvent::eventType
```
**描述**
**描述:**
事件类型,详见[ActRecognitionEventType](activity_recognition.md#actrecognitioneventtype)
事件类型,详见[ActRecognitionEventType](_hdi_activity_recognition.md#actrecognitioneventtype)
### timestamp
......@@ -77,6 +73,6 @@ int ActRecognitionEvent::eventType
long ActRecognitionEvent::timestamp
```
**描述**
**描述:**
时间戳
时间戳
# Activation
## 概述
激活类型的算子,所有的激活函数都属于该算子,具体的激活函数类型一句参数来确定。
该算子对应的[NodeType](_n_n_rt.md#nodetype)为NODE_TYPE_ACTIVATION。
输入:
- x,n维张量。
输出:
- 输出x经过激活函数之后的张量。
**Since:**
3.2
**Version:**
1.0
**相关模块:**
[NNRt](_n_n_rt.md)
## 汇总
### Public 属性
| 名称 | 描述 |
| -------- | -------- |
| [activationType](#activationtype) | enum&nbsp;[ActivationType](_n_n_rt.md#activationtype)<br/>激活函数类型。&nbsp; |
| [alpha](#alpha) | float<br/>尺寸因子,用于LeakyReLU和ELU激活函数。&nbsp; |
| [minVal](#minval) | float<br/>最小值,用于HardTanh激活函数。&nbsp; |
| [maxVal](#maxval) | float<br/>最大值,用于HardTanh激活函数。&nbsp; |
| [approximate](#approximate) | boolean<br/>是否使用近似算法,用于GRLU激活函数。&nbsp; |
## 类成员变量说明
### activationType
```
enum ActivationType Activation::activationType
```
**描述:**
激活函数类型。
### alpha
```
float Activation::alpha
```
**描述:**
尺寸因子,用于LeakyReLU和ELU激活函数。
### approximate
```
boolean Activation::approximate
```
**描述:**
是否使用近似算法,用于GRLU激活函数。
### maxVal
```
float Activation::maxVal
```
**描述:**
最大值,用于HardTanh激活函数。
### minVal
```
float Activation::minVal
```
**描述:**
最小值,用于HardTanh激活函数。
# ActivityRecognitionTypes.idl
## **概述**
## 概述
定义行为识别模块使用的数据类型。
**Since**:
**Since:**
3.2
**Version**:
**Version:**
1.0
**相关模块:**
[HdiActivityRecognition](activity_recognition.md)
[HdiActivityRecognition](_hdi_activity_recognition.md)
## **汇总**
## 汇总
### 类
| 名称 | 描述 |
| -------- | -------- |
| [ActRecognitionEvent](_act_recognition_event.md) | 定义行为事件上报的数据结构。 |
| [ActRecognitionEvent](_act_recognition_event.md) | struct<br/>定义行为事件上报的数据结构。 |
### 枚举
| 名称 | 描述 |
| -------- | -------- |
| [ActRecognitionEventType](activity_recognition.md#actrecognitioneventtype)&nbsp;{&nbsp;ACT_RECOGNITION_EVENT_ENTER&nbsp;=&nbsp;0x01,&nbsp;ACT_RECOGNITION_EVENT_EXIT&nbsp;=&nbsp;0x02&nbsp;} | 枚举行为事件的类型。 |
| [ActRecognitionPowerMode](activity_recognition.md#actrecognitionpowermode)&nbsp;{&nbsp;ACT_RECOGNITION_NORMAL_MODE&nbsp;=&nbsp;0,&nbsp;ACT_RECOGNITION_LOW_POWER_MODE&nbsp;=&nbsp;1&nbsp;} | 枚举功耗模式的类型。 |
| [ActRecognitionEventType](_hdi_activity_recognition.md#actrecognitioneventtype)&nbsp;{&nbsp;ACT_RECOGNITION_EVENT_ENTER&nbsp;=&nbsp;0x01&nbsp;,&nbsp;ACT_RECOGNITION_EVENT_EXIT&nbsp;=&nbsp;0x02&nbsp;} | 枚举行为事件的类型。 |
| [ActRecognitionPowerMode](_hdi_activity_recognition.md#actrecognitionpowermode)&nbsp;{&nbsp;ACT_RECOGNITION_NORMAL_MODE&nbsp;=&nbsp;0&nbsp;,&nbsp;ACT_RECOGNITION_LOW_POWER_MODE&nbsp;=&nbsp;1&nbsp;} | 枚举功耗模式的类型。 |
### 关键字
......
# AddFusion
## 概述
输入Tensor逐元素相加, 输出x和y的和,数据形状与输入broadcast之后一样,数据类型与较高精度的输入精度一致。
该算子对应的[NodeType](_n_n_rt.md#nodetype)为NODE_TYPE_ADD_FUSION。
输入:
- x,第一个输入张量。
- y,第二个输入张量,数据类型和第一个张量保持一致。
输出:
- output,x和y逐元素相加, 输出x和y的和,数据形状与输入broadcast之后一样,数据类型与较高精度的输入精度一致。 如果配置了activationType则会在输出之前调用指定的激活函数。
**Since:**
3.2
**Version:**
1.0
**相关模块:**
[NNRt](_n_n_rt.md)
## 汇总
### Public 属性
| 名称 | 描述 |
| -------- | -------- |
| [activationType](#activationtype) | enum&nbsp;[ActivationType](_n_n_rt.md#activationtype)<br/>激活函数类型。详情请参考:[ActivationType](_n_n_rt.md#activationtype) |
## 类成员变量说明
### activationType
```
enum ActivationType AddFusion::activationType
```
**描述:**
激活函数类型。详情请参考:[ActivationType](_n_n_rt.md#activationtype)
# Alignment
## **概述**
## 概述
对齐结构定义,包含宽高的对齐值。
**相关模块:**
[Codec](codec.md)
[Codec](_codec.md)
## **汇总**
## 汇总
### Public 属性
| 名称 | 描述 |
| -------- | -------- |
| [widthAlignment](#widthalignment) | 宽的对齐值。 |
| [heightAlignment](#heightalignment) | 高的对齐值。 |
| [widthAlignment](#widthalignment) | int32_t<br/>宽的对齐值。&nbsp; |
| [heightAlignment](#heightalignment) | int32_t<br/>高的对齐值。&nbsp; |
## **类成员变量说明**
## 类成员变量说明
### heightAlignment
......@@ -30,9 +30,7 @@
```
int32_t Alignment::heightAlignment
```
**描述:**
**描述:**
高的对齐值。
......@@ -42,7 +40,5 @@ int32_t Alignment::heightAlignment
```
int32_t Alignment::widthAlignment
```
**描述:**
**描述:**
宽的对齐值。
# AllocInfo
## **概述**
## 概述
定义分配的内存的信息。
定义关于要分配的内存的信息。
**相关模块:**
[Display](_display.md)
## **汇总**
## 汇总
### Public 属性
| 名称 | 描述 |
| -------- | -------- |
| [width](_display.md#width-69) | 申请内存宽度 |
| [height](_display.md#height-68) | 申请内存高度 |
| [usage](_display.md#usage-12) | 申请内存的使用场景 |
| [format](_display.md#format-12) | 申请内存格式 |
| [expectedSize](_display.md#expectedsize) | 申请内存大小 |
| [width](_display.md#width-69) | uint32_t<br/>申请内存宽度 |
| [height](_display.md#height-68) | uint32_t<br/>申请内存高度 |
| [usage](_display.md#usage-12) | uint64_t<br/>申请内存的使用场景 |
| [format](_display.md#format-12) | [PixelFormat](_display.md#pixelformat)<br/>申请内存格式 |
| [expectedSize](_display.md#expectedsize) | uint32_t<br/>申请内存大小 |
此差异已折叠。
# AudioDeviceStatus
## 概述
音频设备状态。
**Since:**
3.2
**Version:**
1.0
**相关模块:**
[Audio](_audio.md)
## 汇总
### Public 属性
| 名称 | 描述 |
| -------- | -------- |
| [pnpStatus](#pnpstatus) | unsigned&nbsp;int<br/>PnP设备状态,详情参考[AudioDeviceType](_audio.md#audiodevicetype),[AudioEventType](_audio.md#audioeventtype)。&nbsp; |
## 类成员变量说明
### pnpStatus
```
unsigned int AudioDeviceStatus::pnpStatus
```
**描述:**
PnP设备状态,详情参考[AudioDeviceType](_audio.md#audiodevicetype)[AudioEventType](_audio.md#audioeventtype)
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册