“027cbe8332bf7f4db8781a66bc753e3bf00bb10b”上不存在“python/git@gitcode.net:s920243400/PaddleDetection.git”
提交 ccc7c3ae 编写于 作者: 田雨 提交者: Gitee

Merge branch 'master' of gitee.com:openharmony/docs into master

...@@ -22,8 +22,10 @@ ...@@ -22,8 +22,10 @@
- OpenHarmony 3.1 Release版本:点击[此处](zh-cn/release-notes/OpenHarmony-v3.1-release.md)了解版本详情。 - OpenHarmony 3.1 Release版本:点击[此处](zh-cn/release-notes/OpenHarmony-v3.1-release.md)了解版本详情。
该已更新至OpenHarmony 3.1.1 Release,点击[此处](zh-cn/release-notes/OpenHarmony-v3.1.1-release.md)了解版本详情。
- OpenHarmony 3.0 LTS版本:点击[此处](zh-cn/release-notes/OpenHarmony-v3.0-LTS.md)了解版本详情。 - OpenHarmony 3.0 LTS版本:点击[此处](zh-cn/release-notes/OpenHarmony-v3.0-LTS.md)了解版本详情。
该版本已更新至OpenHarmony 3.0.3 LTS,点击[此处](zh-cn/release-notes/OpenHarmony-v3.0.3-LTS.md)了解版本详情。 该版本已更新至OpenHarmony 3.0.3 LTS,点击[此处](zh-cn/release-notes/OpenHarmony-v3.0.3-LTS.md)了解版本详情。
- OpenHarmony 2.2 Beta2版本:点击[此处](zh-cn/release-notes/OpenHarmony-v2.2-beta2.md)了解版本详情。 - OpenHarmony 2.2 Beta2版本:点击[此处](zh-cn/release-notes/OpenHarmony-v2.2-beta2.md)了解版本详情。
...@@ -47,4 +49,8 @@ OpenHarmony_v1.x_release:OpenHarmony 1.1.4 LTS稳定版本,点击[此处](zh ...@@ -47,4 +49,8 @@ OpenHarmony_v1.x_release:OpenHarmony 1.1.4 LTS稳定版本,点击[此处](zh
您可以对现有文档进行评价、简单更改、反馈文档质量问题、贡献您的原创内容,详细请参考[贡献文档](zh-cn/contribute/贡献文档.md) 您可以对现有文档进行评价、简单更改、反馈文档质量问题、贡献您的原创内容,详细请参考[贡献文档](zh-cn/contribute/贡献文档.md)
卓越贡献者将会在开发者社区文档贡献专栏表彰公示。 卓越贡献者将会在开发者社区文档贡献专栏表彰公示。
\ No newline at end of file
- 邮件列表:docs@openharmony.io
- Zulip群组:documentation_sig
\ No newline at end of file
...@@ -836,7 +836,7 @@ Obtains information of the current ability. This API uses an asynchronous callba ...@@ -836,7 +836,7 @@ Obtains information of the current ability. This API uses an asynchronous callba
| Name | Type | Mandatory| Description | | Name | Type | Mandatory| Description |
| -------- | ---------------------- | ---- | ------------------------- | | -------- | ---------------------- | ---- | ------------------------- |
| callback | AsyncCallback\<[AbilityInfo](#abilityInfo)> | Yes | Callback used to return the ability information.| | callback | AsyncCallback\<[AbilityInfo](js-apis-bundle-AbilityInfo.md)> | Yes | Callback used to return the ability information.|
**Example** **Example**
...@@ -864,7 +864,7 @@ Obtains information of the current ability. This API uses a promise to return th ...@@ -864,7 +864,7 @@ Obtains information of the current ability. This API uses a promise to return th
| Type | Description | | Type | Description |
| --------------- | ------------------------- | | --------------- | ------------------------- |
| Promise\<[AbilityInfo](#abilityInfo)> | Promise used to return the ability information.| | Promise\<[AbilityInfo](js-apis-bundle-AbilityInfo.md)> | Promise used to return the ability information.|
**Example** **Example**
......
...@@ -20,7 +20,7 @@ This component contains the child component [<ListItem>](ts-container-listitem.m ...@@ -20,7 +20,7 @@ This component contains the child component [<ListItem>](ts-container-listitem.m
## APIs ## APIs
List(value:{space?: number, initialIndex?: number}) List(value:{space?: number | string, initialIndex?: number, scroller?: Scroller})
- Parameters - Parameters
| Name | Type | Mandatory | Default Value | Description | | Name | Type | Mandatory | Default Value | Description |
......
...@@ -15,7 +15,7 @@ This component supports only one child component. ...@@ -15,7 +15,7 @@ This component supports only one child component.
## APIs ## APIs
Refresh\(value: \{refreshing: boolean, offset?: Length, friction?: number\}\) Refresh\(value: \{refreshing: boolean, offset?: Length, friction?: number | string\}\)
- Parameters - Parameters
......
...@@ -23,11 +23,9 @@ Based on the unified user authentication framework, the system can be extended t ...@@ -23,11 +23,9 @@ Based on the unified user authentication framework, the system can be extended t
```undefined ```undefined
//base/user_iam //base/user_iam
├── auth_executor_mgr # Authentication executor management part, which supports unified authentication resource management and scheduling ├── user_auth_framework # User authentication framework, including user authentication, credential management and executor management
├── face_auth # Facial authentication module, which connects to the authentication executor management part and supports facial information recording, deletion, and verification ├── face_auth # Facial authentication module, which connects to the authentication executor management part and supports facial information recording, deletion, and verification
├── pin_auth # Password authentication module, which connects to the authentication executor management part and supports password recording, deletion, and verification ├── pin_auth # Password authentication module, which connects to the authentication executor management part and supports password recording, deletion, and verification
├── user_auth # Unified user authentication part
└── user_idm # User credential management part
``` ```
...@@ -45,12 +43,12 @@ Based on the unified user authentication framework, the system can be extended t ...@@ -45,12 +43,12 @@ Based on the unified user authentication framework, the system can be extended t
## Repositories Involved ## Repositories Involved
[useriam_auth_executor_mgr](https://gitee.com/openharmony/useriam_auth_executor_mgr) [useriam_user_auth_framework](https://gitee.com/openharmony/useriam_user_auth_framework)
[useriam_user_idm](https://gitee.com/openharmony/useriam_user_idm) [useriam_pin_auth](https://gitee.com/openharmony/useriam_pin_auth)
[useriam_user_auth](https://gitee.com/openharmony/useriam_user_auth) [useriam_face_auth](https://gitee.com/openharmony/useriam_face_auth)
[useriam_pin_auth](https://gitee.com/openharmony/useriam_pin_auth) [drivers_interface](https://gitee.com/openharmony/drivers_interface)
[useriam_faceauth](https://gitee.com/openharmony/useriam_faceauth) [drivers_peripheral](https://gitee.com/openharmony/drivers_peripheral)
\ No newline at end of file
...@@ -4,6 +4,28 @@ ...@@ -4,6 +4,28 @@
Data提供方可以自定义数据的增、删、改、查,以及文件打开等功能,并对外提供这些接口。 Data提供方可以自定义数据的增、删、改、查,以及文件打开等功能,并对外提供这些接口。
## URI介绍
Data的提供方和使用方都通过URI(Uniform Resource Identifier)来标识一个具体的数据,例如数据库中的某个表或磁盘上的某个文件。HarmonyOS的URI仍基于URI通用标准,格式如下:
![fa-dataability-uri](figures/fa-dataability-uri.png)
- scheme:协议方案名,固定为“dataability”,代表Data Ability所使用的协议类型。
- authority:设备ID。如果为跨设备场景,则为目标设备的ID;如果为本地设备场景,则不需要填写。
- path:资源的路径信息,代表特定资源的位置信息。
- query:查询参数。
- fragment:可以用于指示要访问的子资源。
URI示例:
- 跨设备场景:dataability://*device_id*/*com.domainname.dataability.persondata*/*person*/*10*
- 本地设备:dataability:///*com.domainname.dataability.persondata*/*person*/*10*
```
说明
本地设备的“device_id”字段为空,因此在“dataability:”后面有三个“/”。
```
## 接口说明 ## 接口说明
**表1** Data中相关生命周期API功能介绍 **表1** Data中相关生命周期API功能介绍
......
...@@ -8,13 +8,13 @@ Stage模型是区别于FA模型的一种应用开发模型,对此模型的介 ...@@ -8,13 +8,13 @@ Stage模型是区别于FA模型的一种应用开发模型,对此模型的介
- 应用迁移,详见[应用迁移开发指导](stage-ability-continuation.md) - 应用迁移,详见[应用迁移开发指导](stage-ability-continuation.md)
### 启动模式 ### 启动模式
ability支持单实例、多实例和指定实例3种启动模式,在module.json中通过launchType配置。启动模式对应Ability被启动时的行为,对启动模式的详细说明如下: Ability支持单实例、多实例和指定实例3种启动模式,在module.json中通过launchType配置。启动模式对应Ability被启动时的行为,对启动模式的详细说明如下:
| 启动模式 | 描述 |说明 | | 启动模式 | 描述 |说明 |
| ----------- | ------- |---------------- | | ----------- | ------- |---------------- |
| standard | 多实例 | 每次startAbility都会启动一个新的实例 | | standard | 多实例 | 每次startAbility都会启动一个新的实例 |
| singleton | 单实例 | 系统中只存在唯一一个实例,startAbility时,如果已存在,则复用系统中的唯一一个实例 | | singleton | 单实例 | 系统中只存在唯一一个实例,startAbility时,如果已存在,则复用系统中的唯一一个实例 |
| specified | 指定实例 | 运行时由ability内部业务决定是否创建多实例 | | specified | 指定实例 | 运行时由Ability内部业务决定是否创建多实例 |
缺省情况下是singleton模式,module.json示例如下: 缺省情况下是singleton模式,module.json示例如下:
```json ```json
...@@ -107,7 +107,7 @@ Ability功能如下(Ability类,具体的API详见[接口文档](../reference ...@@ -107,7 +107,7 @@ Ability功能如下(Ability类,具体的API详见[接口文档](../reference
} }
``` ```
### 获取AbilityStage及Ability的配置信息 ### 获取AbilityStage及Ability的配置信息
AbilityStage类及Ability类均拥有context属性,应用可以通过`this.context`获取Ability实例的上下文,进而获取详细的配置信息。如下示例展示了AbilityStage通过context属性获取包代码路径、hap包名、ability名以及系统语言的方法。具体示例代码如下: AbilityStage类及Ability类均拥有context属性,应用可以通过`this.context`获取Ability实例的上下文,进而获取详细的配置信息。如下示例展示了AbilityStage通过context属性获取包代码路径、hap包名、Ability名以及系统语言的方法。具体示例代码如下:
```ts ```ts
import AbilityStage from "@ohos.application.AbilityStage" import AbilityStage from "@ohos.application.AbilityStage"
export default class MyAbilityStage extends AbilityStage { export default class MyAbilityStage extends AbilityStage {
...@@ -126,7 +126,7 @@ export default class MyAbilityStage extends AbilityStage { ...@@ -126,7 +126,7 @@ export default class MyAbilityStage extends AbilityStage {
} }
``` ```
如下示例展示了Ability通过context属性获取包代码路径、hap包名、ability名以及系统语言的方法。具体示例代码如下: 如下示例展示了Ability通过context属性获取包代码路径、hap包名、Ability名以及系统语言的方法。具体示例代码如下:
```ts ```ts
import Ability from '@ohos.application.Ability' import Ability from '@ohos.application.Ability'
export default class MainAbility extends Ability { export default class MainAbility extends Ability {
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
## 场景介绍 ## 场景介绍
使用WebSocket建立服务器与客户端的双向连接,需要先通过createWebSocket方法创建WebSocket对象,然后通过connect方法连接到服务器。当连接成功后,客户端会收到open事件的回调,之后客户端就可以通过send方法与服务器进行通信。当服务器发信息给客户端时,客户端会收到message事件的回调。当客户端不要此连接时,可以通过调用close方法主动断开连接,之后客户端会收到close事件的回调。 使用WebSocket建立服务器与客户端的双向连接,需要先通过createWebSocket()方法创建WebSocket对象,然后通过connect()方法连接到服务器。当连接成功后,客户端会收到open事件的回调,之后客户端就可以通过send()方法与服务器进行通信。当服务器发信息给客户端时,客户端会收到message事件的回调。当客户端不要此连接时,可以通过调用close()方法主动断开连接,之后客户端会收到close事件的回调。
若在上述任一过程中发生错误,客户端会收到error事件的回调。 若在上述任一过程中发生错误,客户端会收到error事件的回调。
...@@ -18,23 +18,23 @@ WebSocket连接功能主要由webSocket模块提供。使用该功能需要申 ...@@ -18,23 +18,23 @@ WebSocket连接功能主要由webSocket模块提供。使用该功能需要申
| connect() | 根据URL地址,建立一个WebSocket连接。 | | connect() | 根据URL地址,建立一个WebSocket连接。 |
| send() | 通过WebSocket连接发送数据。 | | send() | 通过WebSocket连接发送数据。 |
| close() | 关闭WebSocket连接。 | | close() | 关闭WebSocket连接。 |
| on(type:&nbsp;'open') | 订阅WebSocket的打开事件。 | | on(type: 'open') | 订阅WebSocket的打开事件。 |
| off(type:&nbsp;'open') | 取消订阅WebSocket的打开事件。 | | off(type: 'open') | 取消订阅WebSocket的打开事件。 |
| on(type:&nbsp;'message') | 订阅WebSocket的接收到服务器消息事件。 | | on(type: 'message') | 订阅WebSocket的接收到服务器消息事件。 |
| off(type:&nbsp;'message') | 取消订阅WebSocket的接收到服务器消息事件。 | | off(type: 'message') | 取消订阅WebSocket的接收到服务器消息事件。 |
| on(type:&nbsp;'close') | 订阅WebSocket的关闭事件。 | | on(type: 'close') | 订阅WebSocket的关闭事件。 |
| off(type:&nbsp;'close') | 取消订阅WebSocket的关闭事件 | | off(type: 'close') | 取消订阅WebSocket的关闭事件 |
| on(type:&nbsp;'error') | 订阅WebSocket的Error事件。 | | on(type: 'error') | 订阅WebSocket的Error事件。 |
| off(type:&nbsp;'error') | 取消订阅WebSocket的Error事件。 | | off(type: 'error') | 取消订阅WebSocket的Error事件。 |
## 开发步骤 ## 开发步骤
1. import需要的webSocket模块。 1. 导入需要的webSocket模块。
2. 创建一个WebSocket连接,返回一个WebSocket对象。 2. 创建一个WebSocket连接,返回一个WebSocket对象。
3. (可选)订阅WebSocket的打开、消息、关闭、Error事件。 3. (可选)订阅WebSocket的打开、消息接收、关闭、Error事件。
4. 根据URL地址,发起WebSocket连接。 4. 根据URL地址,发起WebSocket连接。
...@@ -50,9 +50,9 @@ WebSocket连接功能主要由webSocket模块提供。使用该功能需要申 ...@@ -50,9 +50,9 @@ WebSocket连接功能主要由webSocket模块提供。使用该功能需要申
// 当收到on('open')事件时,可以通过send()方法与服务器进行通信 // 当收到on('open')事件时,可以通过send()方法与服务器进行通信
ws.send("Hello, server!", (err, value) => { ws.send("Hello, server!", (err, value) => {
if (!err) { if (!err) {
console.log("send success"); console.log("Message sent successfully");
} else { } else {
console.log("send fail, err:" + JSON.stringify(err)); console.log("Failed to send the message. Err:" + JSON.stringify(err));
} }
}); });
}); });
...@@ -62,9 +62,9 @@ WebSocket连接功能主要由webSocket模块提供。使用该功能需要申 ...@@ -62,9 +62,9 @@ WebSocket连接功能主要由webSocket模块提供。使用该功能需要申
if (value === 'bye') { if (value === 'bye') {
ws.close((err, value) => { ws.close((err, value) => {
if (!err) { if (!err) {
console.log("close success"); console.log("Connection closed successfully");
} else { } else {
console.log("close fail, err is " + JSON.stringify(err)); console.log("Failed to close the connection. Err: " + JSON.stringify(err));
} }
}); });
} }
...@@ -77,9 +77,9 @@ WebSocket连接功能主要由webSocket模块提供。使用该功能需要申 ...@@ -77,9 +77,9 @@ WebSocket连接功能主要由webSocket模块提供。使用该功能需要申
}); });
ws.connect(defaultIpAddress, (err, value) => { ws.connect(defaultIpAddress, (err, value) => {
if (!err) { if (!err) {
console.log("connect success"); console.log("Connected successfully");
} else { } else {
console.log("connect fail, err:" + JSON.stringify(err)); console.log("Connection failed. Err:" + JSON.stringify(err));
} }
}); });
``` ```
...@@ -70,8 +70,8 @@ ...@@ -70,8 +70,8 @@
| 类名 | 接口名 | 描述 | | 类名 | 接口名 | 描述 |
| -------- | -------- | -------- | | -------- | -------- | -------- |
| RdbStore | query(predicates:&nbsp;RdbPredicates,&nbsp;columns:&nbsp;Array,&nbsp;callback:&nbsp;AsyncCallback&lt;ResultSet&gt;):&nbsp;void | 根据指定条件查询数据库中的数据,结果以callback形式返回。<br/>-&nbsp;predicates:表示RdbPredicates的实例对象指定的查询条件。<br/>-&nbsp;columns:表示要查询的列。如果值为空,则查询应用于所有列。<br/>-&nbsp;callback:指定callback回调函数。如果操作成功,则返回ResultSet对象。 | | RdbStore | query(predicates:&nbsp;RdbPredicates,&nbsp;columns:&nbsp;Array&lt;string&gt;,&nbsp;callback:&nbsp;AsyncCallback&lt;ResultSet&gt;):&nbsp;void | 根据指定条件查询数据库中的数据,结果以callback形式返回。<br/>-&nbsp;predicates:表示RdbPredicates的实例对象指定的查询条件。<br/>-&nbsp;columns:表示要查询的列。如果值为空,则查询应用于所有列。<br/>-&nbsp;callback:指定callback回调函数。如果操作成功,则返回ResultSet对象。 |
| RdbStore | query(predicates:&nbsp;RdbPredicates,&nbsp;columns:&nbsp;Array):&nbsp;Promise&lt;ResultSet&gt; | 根据指定条件查询数据库中的数据,结果以Promise形式返回。<br/>-&nbsp;predicates:表示RdbPredicates的实例对象指定的查询条件。<br/>-&nbsp;columns:表示要查询的列。如果值为空,则查询应用于所有列。 | | RdbStore | query(predicates:&nbsp;RdbPredicates,&nbsp;columns?:&nbsp;Array&lt;string&gt;):&nbsp;Promise&lt;ResultSet&gt; | 根据指定条件查询数据库中的数据,结果以Promise形式返回。<br/>-&nbsp;predicates:表示RdbPredicates的实例对象指定的查询条件。<br/>-&nbsp;columns:表示要查询的列。如果值为空,则查询应用于所有列。 |
| RdbStore | querySql(sql:&nbsp;string,&nbsp;bindArgs:&nbsp;Array&lt;ValueType&gt;,&nbsp;callback:&nbsp;AsyncCallback&lt;ResultSet&gt;):void | 根据指定SQL语句查询数据库中的数据,结果以callback形式返回。<br/>-&nbsp;sql:指定要查询的SQL语句。<br/>-&nbsp;bindArgs:SQL语句中参数的值。<br/>-&nbsp;callback:指定callback回调函数。如果操作成功,则返回ResultSet对象。 | | RdbStore | querySql(sql:&nbsp;string,&nbsp;bindArgs:&nbsp;Array&lt;ValueType&gt;,&nbsp;callback:&nbsp;AsyncCallback&lt;ResultSet&gt;):void | 根据指定SQL语句查询数据库中的数据,结果以callback形式返回。<br/>-&nbsp;sql:指定要查询的SQL语句。<br/>-&nbsp;bindArgs:SQL语句中参数的值。<br/>-&nbsp;callback:指定callback回调函数。如果操作成功,则返回ResultSet对象。 |
| RdbStore | querySql(sql:&nbsp;string,&nbsp;bindArgs?:&nbsp;Array&lt;ValueType&gt;):Promise&lt;ResultSet&gt; | 根据指定SQL语句查询数据库中的数据,结果以Promise形式返回。<br/>-&nbsp;sql:指定要查询的SQL语句。<br/>-&nbsp;bindArgs:SQL语句中参数的值。 | | RdbStore | querySql(sql:&nbsp;string,&nbsp;bindArgs?:&nbsp;Array&lt;ValueType&gt;):Promise&lt;ResultSet&gt; | 根据指定SQL语句查询数据库中的数据,结果以Promise形式返回。<br/>-&nbsp;sql:指定要查询的SQL语句。<br/>-&nbsp;bindArgs:SQL语句中参数的值。 |
......
...@@ -44,7 +44,7 @@ import stats from '@ohos.bundleState'; ...@@ -44,7 +44,7 @@ import stats from '@ohos.bundleState';
..., ...,
"reqPermissions": [ "reqPermissions": [
{ {
"name": "ohos.permission.BUNDLE_ACTIVE_INFO" "name": "ohos.permission.BUNDLE_ACTIVE_INFO"
} }
] ]
} }
...@@ -56,13 +56,13 @@ import stats from '@ohos.bundleState'; ...@@ -56,13 +56,13 @@ import stats from '@ohos.bundleState';
import stats from '@ohos.bundleState' import stats from '@ohos.bundleState'
// 异步方法promise方式 // 异步方法promise方式
stats.queryBundleActiveStates(0, 20000000000000).then( res => { stats.queryBundleActiveStates(0, 20000000000000).then(res => {
console.log('BUNDLE_ACTIVE queryBundleActiveStates promise success.'); console.log('BUNDLE_ACTIVE queryBundleActiveStates promise success.');
for (let i = 0; i < res.length; i++) { for (let i = 0; i < res.length; i++) {
console.log('BUNDLE_ACTIVE queryBundleActiveStates promise number : ' + (i + 1)); console.log('BUNDLE_ACTIVE queryBundleActiveStates promise number : ' + (i + 1));
console.log('BUNDLE_ACTIVE queryBundleActiveStates promise result ' + JSON.stringify(res[i])); console.log('BUNDLE_ACTIVE queryBundleActiveStates promise result ' + JSON.stringify(res[i]));
} }
}).catch( err => { }).catch(err => {
console.log('BUNDLE_ACTIVE queryBundleActiveStates promise failed, because: ' + err.code); console.log('BUNDLE_ACTIVE queryBundleActiveStates promise failed, because: ' + err.code);
}); });
...@@ -86,7 +86,7 @@ import stats from '@ohos.bundleState'; ...@@ -86,7 +86,7 @@ import stats from '@ohos.bundleState';
import stats from '@ohos.bundleState' import stats from '@ohos.bundleState'
// 异步方法promise方式 // 异步方法promise方式
stats.queryBundleStateInfos(0, 20000000000000).then( res => { stats.queryBundleStateInfos(0, 20000000000000).then(res => {
console.log('BUNDLE_ACTIVE queryBundleStateInfos promise success.'); console.log('BUNDLE_ACTIVE queryBundleStateInfos promise success.');
let i = 1; let i = 1;
for (let key in res){ for (let key in res){
...@@ -94,7 +94,7 @@ import stats from '@ohos.bundleState'; ...@@ -94,7 +94,7 @@ import stats from '@ohos.bundleState';
console.log('BUNDLE_ACTIVE queryBundleStateInfos promise result ' + JSON.stringify(res[key])); console.log('BUNDLE_ACTIVE queryBundleStateInfos promise result ' + JSON.stringify(res[key]));
i++; i++;
} }
}).catch( err => { }).catch(err => {
console.log('BUNDLE_ACTIVE queryBundleStateInfos promise failed, because: ' + err.code); console.log('BUNDLE_ACTIVE queryBundleStateInfos promise failed, because: ' + err.code);
}); });
...@@ -120,13 +120,13 @@ import stats from '@ohos.bundleState'; ...@@ -120,13 +120,13 @@ import stats from '@ohos.bundleState';
import stats from '@ohos.bundleState' import stats from '@ohos.bundleState'
// 异步方法promise方式 // 异步方法promise方式
stats.queryCurrentBundleActiveStates(0, 20000000000000).then( res => { stats.queryCurrentBundleActiveStates(0, 20000000000000).then(res => {
console.log('BUNDLE_ACTIVE queryCurrentBundleActiveStates promise success.'); console.log('BUNDLE_ACTIVE queryCurrentBundleActiveStates promise success.');
for (let i = 0; i < res.length; i++) { for (let i = 0; i < res.length; i++) {
console.log('BUNDLE_ACTIVE queryCurrentBundleActiveStates promise number : ' + (i + 1)); console.log('BUNDLE_ACTIVE queryCurrentBundleActiveStates promise number : ' + (i + 1));
console.log('BUNDLE_ACTIVE queryCurrentBundleActiveStates promise result ' + JSON.stringify(res[i])); console.log('BUNDLE_ACTIVE queryCurrentBundleActiveStates promise result ' + JSON.stringify(res[i]));
} }
}).catch( err => { }).catch(err => {
console.log('BUNDLE_ACTIVE queryCurrentBundleActiveStates promise failed, because: ' + err.code); console.log('BUNDLE_ACTIVE queryCurrentBundleActiveStates promise failed, because: ' + err.code);
}); });
...@@ -150,13 +150,13 @@ import stats from '@ohos.bundleState'; ...@@ -150,13 +150,13 @@ import stats from '@ohos.bundleState';
import stats from '@ohos.bundleState' import stats from '@ohos.bundleState'
// 异步方法promise方式 // 异步方法promise方式
stats.queryBundleStateInfoByInterval(0, 0, 20000000000000).then( res => { stats.queryBundleStateInfoByInterval(0, 0, 20000000000000).then(res => {
console.log('BUNDLE_ACTIVE queryBundleStateInfoByInterval promise success.'); console.log('BUNDLE_ACTIVE queryBundleStateInfoByInterval promise success.');
for (let i = 0; i < res.length; i++) { for (let i = 0; i < res.length; i++) {
console.log('BUNDLE_ACTIVE queryBundleStateInfoByInterval promise number : ' + (i + 1)); console.log('BUNDLE_ACTIVE queryBundleStateInfoByInterval promise number : ' + (i + 1));
console.log('BUNDLE_ACTIVE queryBundleStateInfoByInterval promise result ' + JSON.stringify(res[i])); console.log('BUNDLE_ACTIVE queryBundleStateInfoByInterval promise result ' + JSON.stringify(res[i]));
} }
}).catch( err => { }).catch(err => {
console.log('BUNDLE_ACTIVE queryBundleStateInfoByInterval promise failed, because: ' + err.code); console.log('BUNDLE_ACTIVE queryBundleStateInfoByInterval promise failed, because: ' + err.code);
}); });
...@@ -180,9 +180,9 @@ import stats from '@ohos.bundleState'; ...@@ -180,9 +180,9 @@ import stats from '@ohos.bundleState';
import stats from '@ohos.bundleState' import stats from '@ohos.bundleState'
// promise方式 // promise方式
stats.queryAppUsagePriorityGroup().then( res => { stats.queryAppUsagePriorityGroup().then(res => {
console.log('BUNDLE_ACTIVE queryAppUsagePriorityGroup promise succeeded. result: ' + JSON.stringify(res)); console.log('BUNDLE_ACTIVE queryAppUsagePriorityGroup promise succeeded. result: ' + JSON.stringify(res));
}).catch( err => { }).catch(err => {
console.log('BUNDLE_ACTIVE queryAppUsagePriorityGroup promise failed. because: ' + err.code); console.log('BUNDLE_ACTIVE queryAppUsagePriorityGroup promise failed. because: ' + err.code);
}); });
...@@ -202,9 +202,9 @@ import stats from '@ohos.bundleState'; ...@@ -202,9 +202,9 @@ import stats from '@ohos.bundleState';
import stats from '@ohos.bundleState' import stats from '@ohos.bundleState'
// 异步方法promise方式 // 异步方法promise方式
stats.isIdleState("com.ohos.camera").then( res => { stats.isIdleState("com.ohos.camera").then(res => {
console.log('BUNDLE_ACTIVE isIdleState promise succeeded, result: ' + JSON.stringify(res)); console.log('BUNDLE_ACTIVE isIdleState promise succeeded, result: ' + JSON.stringify(res));
}).catch( err => { }).catch(err => {
console.log('BUNDLE_ACTIVE isIdleState promise failed, because: ' + err.code); console.log('BUNDLE_ACTIVE isIdleState promise failed, because: ' + err.code);
}); });
...@@ -224,18 +224,18 @@ import stats from '@ohos.bundleState'; ...@@ -224,18 +224,18 @@ import stats from '@ohos.bundleState';
import stats from '@ohos.bundleState' import stats from '@ohos.bundleState'
// 异步方法promise方式 // 异步方法promise方式
stats.getRecentlyUsedModules(1000).then( res => { stats.getRecentlyUsedModules(1000).then(res => {
console.log('BUNDLE_ACTIVE getRecentlyUsedModules promise succeeded'); console.log('BUNDLE_ACTIVE getRecentlyUsedModules promise succeeded');
for (let i = 0; i < res.length; i++) { for (let i = 0; i < res.length; i++) {
console.log('BUNDLE_ACTIVE getRecentlyUsedModules promise number : ' + (i + 1)); console.log('BUNDLE_ACTIVE getRecentlyUsedModules promise number : ' + (i + 1));
console.log('BUNDLE_ACTIVE getRecentlyUsedModules promise result ' + JSON.stringify(res[i])); console.log('BUNDLE_ACTIVE getRecentlyUsedModules promise result ' + JSON.stringify(res[i]));
} }
}).catch( err=> { }).catch(err=> {
console.log('BUNDLE_ACTIVE getRecentlyUsedModules promise failed, because: ' + err.code); console.log('BUNDLE_ACTIVE getRecentlyUsedModules promise failed, because: ' + err.code);
}); });
// 无maNum参数异步方法promise方式 // 无maNum参数异步方法promise方式
stats.getRecentlyUsedModules().then( res => { stats.getRecentlyUsedModules().then(res => {
console.log('BUNDLE_ACTIVE getRecentlyUsedModules promise succeeded'); console.log('BUNDLE_ACTIVE getRecentlyUsedModules promise succeeded');
for (let i = 0; i < res.length; i++) { for (let i = 0; i < res.length; i++) {
console.log('BUNDLE_ACTIVE getRecentlyUsedModules promise number : ' + (i + 1)); console.log('BUNDLE_ACTIVE getRecentlyUsedModules promise number : ' + (i + 1));
...@@ -246,7 +246,7 @@ import stats from '@ohos.bundleState'; ...@@ -246,7 +246,7 @@ import stats from '@ohos.bundleState';
}); });
// 异步方法callback方式 // 异步方法callback方式
stats.getRecentlyUsedModules(1000,(err, res) => { stats.getRecentlyUsedModules(1000, (err, res) => {
if(err) { if(err) {
console.log('BUNDLE_ACTIVE getRecentlyUsedModules callback failed, because: ' + err.code); console.log('BUNDLE_ACTIVE getRecentlyUsedModules callback failed, because: ' + err.code);
} else { } else {
...@@ -260,7 +260,7 @@ import stats from '@ohos.bundleState'; ...@@ -260,7 +260,7 @@ import stats from '@ohos.bundleState';
// 无maNum参数异步方法callback方式 // 无maNum参数异步方法callback方式
stats.getRecentlyUsedModules((err, res) => { stats.getRecentlyUsedModules((err, res) => {
if(err) { if (err) {
console.log('BUNDLE_ACTIVE getRecentlyUsedModules callback failed, because: ' + err.code); console.log('BUNDLE_ACTIVE getRecentlyUsedModules callback failed, because: ' + err.code);
} else { } else {
console.log('BUNDLE_ACTIVE getRecentlyUsedModules callback succeeded.'); console.log('BUNDLE_ACTIVE getRecentlyUsedModules callback succeeded.');
...@@ -278,10 +278,10 @@ import stats from '@ohos.bundleState'; ...@@ -278,10 +278,10 @@ import stats from '@ohos.bundleState';
import stats from '@ohos.bundleState' import stats from '@ohos.bundleState'
// 异步方法promise方式 // 异步方法promise方式
stats.queryAppNotificationNumber(0, 20000000000000).then( res => { stats.queryAppNotificationNumber(0, 20000000000000).then(res => {
console.log('BUNDLE_ACTIVE queryAppNotificationNumber promise success.'); console.log('BUNDLE_ACTIVE queryAppNotificationNumber promise success.');
console.log('BUNDLE_ACTIVE queryAppNotificationNumber promise result ' + JSON.stringify(res)); console.log('BUNDLE_ACTIVE queryAppNotificationNumber promise result ' + JSON.stringify(res));
}).catch( err => { }).catch(err => {
console.log('BUNDLE_ACTIVE queryAppNotificationNumber promise failed, because: ' + err.code); console.log('BUNDLE_ACTIVE queryAppNotificationNumber promise failed, because: ' + err.code);
}); });
...@@ -302,10 +302,10 @@ import stats from '@ohos.bundleState'; ...@@ -302,10 +302,10 @@ import stats from '@ohos.bundleState';
import stats from '@ohos.bundleState' import stats from '@ohos.bundleState'
// 异步方法promise方式 // 异步方法promise方式
stats.queryBundleActiveEventStates(0, 20000000000000).then( res => { stats.queryBundleActiveEventStates(0, 20000000000000).then(res => {
console.log('BUNDLE_ACTIVE queryBundleActiveEventStates promise success.'); console.log('BUNDLE_ACTIVE queryBundleActiveEventStates promise success.');
console.log('BUNDLE_ACTIVE queryBundleActiveEventStates promise result ' + JSON.stringify(res)); console.log('BUNDLE_ACTIVE queryBundleActiveEventStates promise result ' + JSON.stringify(res));
}).catch( err => { }).catch(err => {
console.log('BUNDLE_ACTIVE queryBundleActiveEventStates promise failed, because: ' + err.code); console.log('BUNDLE_ACTIVE queryBundleActiveEventStates promise failed, because: ' + err.code);
}); });
...@@ -326,9 +326,9 @@ import stats from '@ohos.bundleState'; ...@@ -326,9 +326,9 @@ import stats from '@ohos.bundleState';
import stats from '@ohos.bundleState' import stats from '@ohos.bundleState'
// 无参异步方法promise方式 // 无参异步方法promise方式
stats.queryAppUsagePriorityGroup().then( res => { stats.queryAppUsagePriorityGroup().then(res => {
console.log('BUNDLE_ACTIVE queryAppUsagePriorityGroup promise succeeded. result: ' + JSON.stringify(res)); console.log('BUNDLE_ACTIVE queryAppUsagePriorityGroup promise succeeded. result: ' + JSON.stringify(res));
}).catch( err => { }).catch(err => {
console.log('BUNDLE_ACTIVE queryAppUsagePriorityGroup promise failed. because: ' + err.code); console.log('BUNDLE_ACTIVE queryAppUsagePriorityGroup promise failed. because: ' + err.code);
}); });
...@@ -342,15 +342,15 @@ import stats from '@ohos.bundleState'; ...@@ -342,15 +342,15 @@ import stats from '@ohos.bundleState';
}); });
//有参异步promise方式 //有参异步promise方式
stats.queryAppUsagePriorityGroup(this.bundleName).then( res => { stats.queryAppUsagePriorityGroup(this.bundleName).then(res => {
console.log('BUNDLE_ACTIVE QueryPackageGroup promise succeeded. result: ' + JSON.stringify(res)); console.log('BUNDLE_ACTIVE QueryPackageGroup promise succeeded. result: ' + JSON.stringify(res));
}).catch( err => { }).catch(err => {
console.log('BUNDLE_ACTIVE QueryPackageGroup promise failed. because: ' + err.code); console.log('BUNDLE_ACTIVE QueryPackageGroup promise failed. because: ' + err.code);
}); });
//有参异步方法callback方式 //有参异步方法callback方式
stats.queryAppUsagePriorityGroup(this.bundleName, (err, res) => { stats.queryAppUsagePriorityGroup(this.bundleName, (err, res) => {
if(err) { if (err) {
console.log('BUNDLE_ACTIVE QueryPackageGroup callback failed. because: ' + err.code); console.log('BUNDLE_ACTIVE QueryPackageGroup callback failed. because: ' + err.code);
} else { } else {
console.log('BUNDLE_ACTIVE QueryPackageGroup callback succeeded. result: ' + JSON.stringify(res)); console.log('BUNDLE_ACTIVE QueryPackageGroup callback succeeded. result: ' + JSON.stringify(res));
...@@ -364,14 +364,14 @@ import stats from '@ohos.bundleState'; ...@@ -364,14 +364,14 @@ import stats from '@ohos.bundleState';
import stats from '@ohos.bundleState' import stats from '@ohos.bundleState'
//异步方法promise //异步方法promise
stats.setBundleGroup(this.bundleName, this.newGroup).then( () => { stats.setBundleGroup(this.bundleName, this.newGroup).then(() => {
console.log('BUNDLE_ACTIVE SetBundleGroup promise succeeded.'); console.log('BUNDLE_ACTIVE SetBundleGroup promise succeeded.');
}).catch( err => { }).catch( err => {
console.log('BUNDLE_ACTIVE SetBundleGroup promise failed. because: ' + err.code); console.log('BUNDLE_ACTIVE SetBundleGroup promise failed. because: ' + err.code);
}); });
//异步方法callback //异步方法callback
stats.setBundleGroup(this.bundleName, this.newGroup, (err) => { stats.setBundleGroup(this.bundleName, this.newGroup, (err) => {
if(err) { if (err) {
console.log('BUNDLE_ACTIVE SetBundleGroup callback failed. because: ' + err.code); console.log('BUNDLE_ACTIVE SetBundleGroup callback failed. because: ' + err.code);
} else { } else {
console.log('BUNDLE_ACTIVE SetBundleGroup callback succeeded.'); console.log('BUNDLE_ACTIVE SetBundleGroup callback succeeded.');
...@@ -385,7 +385,7 @@ import stats from '@ohos.bundleState'; ...@@ -385,7 +385,7 @@ import stats from '@ohos.bundleState';
import stats from '@ohos.bundleState' import stats from '@ohos.bundleState'
//异步方法promise形式 //异步方法promise形式
let onBundleGroupChanged = (err,res) =>{ let onBundleGroupChanged = (err,res) => {
console.log('BUNDLE_ACTIVE onBundleGroupChanged RegisterGroupCallBack callback success.'); console.log('BUNDLE_ACTIVE onBundleGroupChanged RegisterGroupCallBack callback success.');
console.log('BUNDLE_ACTIVE onBundleGroupChanged RegisterGroupCallBack result oldGroup is : ' + res.oldGroup); console.log('BUNDLE_ACTIVE onBundleGroupChanged RegisterGroupCallBack result oldGroup is : ' + res.oldGroup);
console.log('BUNDLE_ACTIVE onBundleGroupChanged RegisterGroupCallBack result newGroup is : ' + res.newGroup); console.log('BUNDLE_ACTIVE onBundleGroupChanged RegisterGroupCallBack result newGroup is : ' + res.newGroup);
...@@ -393,13 +393,13 @@ import stats from '@ohos.bundleState'; ...@@ -393,13 +393,13 @@ import stats from '@ohos.bundleState';
console.log('BUNDLE_ACTIVE onBundleGroupChanged RegisterGroupCallBack result userId is : ' + res.userId); console.log('BUNDLE_ACTIVE onBundleGroupChanged RegisterGroupCallBack result userId is : ' + res.userId);
console.log('BUNDLE_ACTIVE onBundleGroupChanged RegisterGroupCallBack result bundleName is : ' + res.bundleName); console.log('BUNDLE_ACTIVE onBundleGroupChanged RegisterGroupCallBack result bundleName is : ' + res.bundleName);
}; };
stats.registerGroupCallBack(onBundleGroupChanged).then( () => { stats.registerGroupCallBack(onBundleGroupChanged).then(() => {
console.log('BUNDLE_ACTIVE RegisterGroupCallBack promise succeeded.'); console.log('BUNDLE_ACTIVE RegisterGroupCallBack promise succeeded.');
}).catch( err => { }).catch(err => {
console.log('BUNDLE_ACTIVE RegisterGroupCallBack promise failed. because: ' + err.code); console.log('BUNDLE_ACTIVE RegisterGroupCallBack promise failed. because: ' + err.code);
}); });
//异步方法callback形式 //异步方法callback形式
let onBundleGroupChanged = (err,res) =>{ let onBundleGroupChanged = (err,res) => {
console.log('BUNDLE_ACTIVE onBundleGroupChanged RegisterGroupCallBack callback success.'); console.log('BUNDLE_ACTIVE onBundleGroupChanged RegisterGroupCallBack callback success.');
console.log('BUNDLE_ACTIVE onBundleGroupChanged RegisterGroupCallBack result‘s oldGroup is : ' + res.oldGroup); console.log('BUNDLE_ACTIVE onBundleGroupChanged RegisterGroupCallBack result‘s oldGroup is : ' + res.oldGroup);
console.log('BUNDLE_ACTIVE onBundleGroupChanged RegisterGroupCallBack result‘s newGroup is : ' + res.newGroup); console.log('BUNDLE_ACTIVE onBundleGroupChanged RegisterGroupCallBack result‘s newGroup is : ' + res.newGroup);
...@@ -407,8 +407,8 @@ import stats from '@ohos.bundleState'; ...@@ -407,8 +407,8 @@ import stats from '@ohos.bundleState';
console.log('BUNDLE_ACTIVE onBundleGroupChanged RegisterGroupCallBack result‘s userId is : ' + res.userId); console.log('BUNDLE_ACTIVE onBundleGroupChanged RegisterGroupCallBack result‘s userId is : ' + res.userId);
console.log('BUNDLE_ACTIVE onBundleGroupChanged RegisterGroupCallBack result‘s bundleName is : ' + res.bundleName); console.log('BUNDLE_ACTIVE onBundleGroupChanged RegisterGroupCallBack result‘s bundleName is : ' + res.bundleName);
}; };
stats.registerGroupCallBack(onBundleGroupChanged, (err)=>{ stats.registerGroupCallBack(onBundleGroupChanged, (err) => {
if(err) { if (err) {
console.log('BUNDLE_ACTIVE RegisterGroupCallBack callback failed, because: ' + err.code); console.log('BUNDLE_ACTIVE RegisterGroupCallBack callback failed, because: ' + err.code);
} else { } else {
console.log('BUNDLE_ACTIVE RegisterGroupCallBack callback success.'); console.log('BUNDLE_ACTIVE RegisterGroupCallBack callback success.');
...@@ -422,14 +422,14 @@ import stats from '@ohos.bundleState'; ...@@ -422,14 +422,14 @@ import stats from '@ohos.bundleState';
import stats from '@ohos.bundleState' import stats from '@ohos.bundleState'
//promise //promise
stats.unRegisterGroupCallBack().then( () => { stats.unRegisterGroupCallBack().then(() => {
console.log('BUNDLE_ACTIVE UnRegisterGroupCallBack promise succeeded.'); console.log('BUNDLE_ACTIVE UnRegisterGroupCallBack promise succeeded.');
}).catch( err => { }).catch(err => {
console.log('BUNDLE_ACTIVE UnRegisterGroupCallBack promise failed. because: ' + err.code); console.log('BUNDLE_ACTIVE UnRegisterGroupCallBack promise failed. because: ' + err.code);
}); });
//callback //callback
stats.unRegisterGroupCallBack((err)=>{ stats.unRegisterGroupCallBack((err) => {
if(err) { if (err) {
console.log('BUNDLE_ACTIVE UnRegisterGroupCallBack callback failed, because: ' + err.code); console.log('BUNDLE_ACTIVE UnRegisterGroupCallBack callback failed, because: ' + err.code);
} else { } else {
console.log('BUNDLE_ACTIVE UnRegisterGroupCallBack callback success.'); console.log('BUNDLE_ACTIVE UnRegisterGroupCallBack callback success.');
......
...@@ -34,40 +34,52 @@ ...@@ -34,40 +34,52 @@
1. 获取设备上传感器的数据,需要在“config.json”里面进行配置请求权限。具体如下: 1. 获取设备上传感器的数据,需要在“config.json”里面进行配置请求权限。具体如下:
``` ```
”reqPermissions“:[ "reqPermissions": [
{ {
"name":"ohos.permission.ACCELEROMETER", "name": "ohos.permission.ACCELEROMETER",
"reason"":"", "reason": "",
"usedScene":{ "usedScene": {
"ability": ["sensor.index.MainAbility",".MainAbility"], "ability": [
"when":"inuse" "sensor.index.MainAbility",
} ".MainAbility"
}, ],
{ "when": "inuse"
"name":"ohos.permission.GYROSCOPE", }
"reason"":"", },
"usedScene":{ {
"ability": ["sensor.index.MainAbility",".MainAbility"], "name": "ohos.permission.GYROSCOPE",
"when":"inuse" "reason": "",
} "usedScene": {
}, "ability": [
{ "sensor.index.MainAbility",
"name":"ohos.permission.ACTIVITY_MOTION", ".MainAbility"
"reason"":"ACTIVITY_MOTION_TEST", ],
"usedScene":{ "when": "inuse"
"ability": ["sensor.index.MainAbility",".MainAbility"], }
"when":"inuse" },
} {
}, "name": "ohos.permission.ACTIVITY_MOTION",
{ "reason": "ACTIVITY_MOTION_TEST",
"name":"ohos.permission.READ_HEALTH_DATA", "usedScene": {
"reason"":"HEALTH_DATA_TEST", "ability": [
"usedScene":{ "sensor.index.MainAbility",
"ability": ["sensor.index.MainAbility",".MainAbility"], ".MainAbility"
"when":"inuse" ],
} "when": "inuse"
}, }
] },
{
"name": "ohos.permission.READ_HEALTH_DATA",
"reason": "HEALTH_DATA_TEST",
"usedScene": {
"ability": [
"sensor.index.MainAbility",
".MainAbility"
],
"when": "inuse"
}
}
]
``` ```
2. 持续监听传感器数据变化。 2. 持续监听传感器数据变化。
......
...@@ -26,36 +26,36 @@ ...@@ -26,36 +26,36 @@
``` ```
"reqPermissions": [ "reqPermissions": [
{ {
"name": "ohos.permission.ACCELEROMETER", "name": "ohos.permission.ACCELEROMETER",
"reason": "", "reason": "",
"usedScene": { "usedScene": {
"ability": [ "ability": [
".MainAbility" ".MainAbility"
], ],
"when": "inuse" "when": "inuse"
} }
}, },
{ {
"name": "ohos.permission.VIBRATE", "name": "ohos.permission.VIBRATE",
"reason": "", "reason": "",
"usedScene": { "usedScene": {
"ability": [ "ability": [
".MainAbility" ".MainAbility"
], ],
"when": "inuse" "when": "inuse"
} }
}, },
{ {
"name": "ohos.permission.ACTIVITY_MOTION", "name": "ohos.permission.ACTIVITY_MOTION",
"reason": "", "reason": "",
"usedScene": { "usedScene": {
"ability": [ "ability": [
".MainAbility" ".MainAbility"
], ],
"when": "inuse" "when": "inuse"
} }
}, },
] ]
``` ```
...@@ -63,12 +63,12 @@ ...@@ -63,12 +63,12 @@
``` ```
import vibrator from "@ohos.vibrator" import vibrator from "@ohos.vibrator"
vibrator.vibrate(1000).then((error)=>{ vibrator.vibrate(1000).then((error) => {
if(error){//调用失败,打印error.code和error.message if (error) { //调用失败,打印error.code和error.message
Console.log("Promise return failed.error.code"+error.code+"error.message"+error.message); Console.log("Promise return failed.error.code " + error.code + "error.message " + error.message);
}else{//调用成功,设备开始振动 } else { //调用成功,设备开始振动
Console.log("Promise returned to indicate a successful vibration.") Console.log("Promise returned to indicate a successful vibration.")
}; }
}) })
``` ```
...@@ -76,12 +76,12 @@ ...@@ -76,12 +76,12 @@
``` ```
import vibrator from "@ohos.vibrator" import vibrator from "@ohos.vibrator"
vibrator.stop(vibrator.VibratorStopMode.VIBRATOR_STOP_MODE_PRESET).then((error)=>{ vibrator.stop(vibrator.VibratorStopMode.VIBRATOR_STOP_MODE_PRESET).then((error) => {
if(error){//调用失败,打印error.code和error.message if (error) { //调用失败,打印error.code和error.message
Console.log("Promise return failed.error.code"+error.code+"error.message"+error.message); Console.log("Promise return failed.error.code " + error.code + "error.message " + error.message);
}else{//调用成功,设备停止振动 } else { //调用成功,设备停止振动
Console.log("Promise returned to indicate successful."); Console.log("Promise returned to indicate successful.");
}; }
}) })
``` ```
......
...@@ -7,232 +7,229 @@ ...@@ -7,232 +7,229 @@
调用系统提供的接口访问系统的语言区域信息。 调用系统提供的接口访问系统的语言区域信息。
### 接口说明 ### 接口说明
| 模块 | 接口名称 | 描述 | | 模块 | 接口名称 | 描述 |
| -------- | -------- | -------- | | -------- | -------- | -------- |
| ohos.i18n | getSystemLanguage():&nbsp;string | 获取系统语言。 | | ohos.i18n | getSystemLanguage():string | 获取系统语言。 |
| ohos.i18n | getSystemRegion():&nbsp;string | 获取系统区域。 | | ohos.i18n | getSystemRegion():string | 获取系统区域。 |
| ohos.i18n | getSystemLocale():&nbsp;string | 获取系统Locale。 | | ohos.i18n | getSystemLocale():string | 获取系统Locale。 |
| ohos.i18n | isRTL(locale:&nbsp;string):&nbsp;boolean<sup>7+</sup> | locale对应的语言是否为从右到左语言。 | | ohos.i18n | isRTL(locale:string):boolean<sup>7+</sup> | locale对应的语言是否为从右到左语言。 |
| ohos.i18n | is24HourClock():&nbsp;boolean<sup>7+</sup> | 获取当前系统时间是否采用24小时制 | | ohos.i18n | is24HourClock():boolean<sup>7+</sup> | 获取当前系统时间是否采用24小时制。 |
| ohos.i18n | getDisplayLanguage(language:&nbsp;string,&nbsp;locale:&nbsp;string,&nbsp;sentenceCase?:&nbsp;boolean):&nbsp;string | 获取语言的本地化表示。 | | ohos.i18n | getDisplayLanguage(language:string,locale:string,sentenceCase?:boolean):string | 获取语言的本地化表示。 |
| ohos.i18n | getDisplayCountry(country:&nbsp;string,&nbsp;locale:&nbsp;string,&nbsp;sentenceCase?:&nbsp;boolean):&nbsp;string | 获取国家名称的本地化表示。 | | ohos.i18n | getDisplayCountry(country:string,locale:string,sentenceCase?:boolean):string | 获取国家的本地化表示。 |
### 开发步骤 ### 开发步骤
1. 获取系统语言。<br> 1. 获取系统语言。
调用getSystemLanguage方法获取当前系统设置的语言(i18n为导入的模块)。 调用getSystemLanguage方法获取当前系统设置的语言(i18n为导入的模块)。
```js
```
var language = i18n.getSystemLanguage(); var language = i18n.getSystemLanguage();
``` ```
2. 获取系统区域。<br> 2. 获取系统区域。
调用getSystemRegion方法获取当前系统设置的区域。
调用getSystemRegion方法获取当前系统设置的区域
``` ```js
var region = i18n.getSystemRegion(); var region = i18n.getSystemRegion();
``` ```
3. 获取系统Locale。<br> 3. 获取系统Locale。
调用getSystemLocale方法获取当前系统设置的Locale。
调用getSystemLocale方法获取当前系统设置的Locale
``` ```js
var locale = i18n.getSystemLocale(); var locale = i18n.getSystemLocale();
``` ```
4. 判断Locale的语言是否为RTL语言。<br> 4. 判断Locale的语言是否为RTL语言。
调用isRTL方法获取Locale的语言是否为从右到左语言。 调用isRTL方法获取Locale的语言是否为从右到左语言。
```js
```
var rtl = i18n.isRTL("zh-CN"); var rtl = i18n.isRTL("zh-CN");
``` ```
5. 判断当前系统时间是否采用24小时制。<br> 5. 判断当前系统时间是否采用24小时制。
调用is24HourClock方法来判断当前系统的时间是否采用24小时制。
调用is24HourClock方法来判断当前系统的时间是否采用24小时制。
``` ```js
var hourClock = i18n.is24HourClock(); var hourClock = i18n.is24HourClock();
``` ```
6. 获取语言的本地化表示。<br> 6. 获取语言的本地化表示。
调用getDisplayLanguage方法获取某一语言的本地化表示。其中,language表示待本地化显示的语言,locale表示本地化的Locale,sentenceCase结果是否需要首字母大写。
调用getDisplayLanguage方法获取某一语言的本地化表示。其中,language表示待本地化显示的语言,locale表示本地化的Locale,sentenceCase结果是否需要首字母大写。
``` ```js
var language = "en"; var language = "en";
var locale = "zh-CN"; var locale = "zh-CN";
var sentenceCase = false; var sentenceCase = false;
var localizedLanguage = i18n.getDisplayLanguage(language, locale, sentenceCase); var localizedLanguage = i18n.getDisplayLanguage(language, locale, sentenceCase);
``` ```
7. 获取国家的本地化表示。<br> 7. 获取国家的本地化表示。
调用getDisplayCountry方法获取某一国家名称的本地化表示。其中,country表示国家码,使用两个大写字母表示(可参考ISO-3166),例如中国使用“CN”表示。locale表示本地化的Locale字符串。sentenceCase表示是否需要将返回结果的首字母大写。
调用getDisplayCountry方法获取某一国家的本地化表示。其中,country表示待本地化显示的国家,locale表示本地化的Locale,sentenceCase结果是否需要首字母大写。
``` ```js
var country = "US"; var country = "US";
var locale = "zh-CN"; var locale = "zh-CN";
var sentenceCase = false; var sentenceCase = false;
var localizedCountry = i18n.getDisplayCountry(country, locale, sentenceCase); // 返回 “美国” var localizedCountry = i18n.getDisplayCountry(country, locale, sentenceCase);
``` ```
## 获取日历信息 ## 获取日历信息
调用日历[Calendar](../reference/apis/js-apis-intl.md)相关接口来获取日历的相关信息,例如获取日历的本地化显示、一周起始日、一年中第一周的最小天数等。 调用日历[Calendar](../reference/apis/js-apis-intl.md)相关接口来获取日历的相关信息,例如获取日历的本地化显示、一周起始日、一年中第一周的最小天数等。
### 接口说明 ### 接口说明
| 模块 | 接口名称 | 描述 | | 模块 | 接口名称 | 描述 |
| -------- | -------- | -------- | | -------- | -------- | -------- |
| ohos.i18n | getCalendar(locale:&nbsp;string,&nbsp;type?:&nbsp;string):&nbsp;Calendar<sup>8+</sup> | 获取指定locale和type的日历对象。 | | ohos.i18n | getCalendar(locale:string,type?:string):Calendar<sup>8+</sup> | 获取指定locale和type的日历对象。 |
| ohos.i18n | setTime(date:&nbsp;Date): void<sup>8+</sup> | 设置日历对象内部的时间日期。 | | ohos.i18n | setTime(date:Date): void<sup>8+</sup> | 设置日历对象内部的时间日期。 |
| ohos.i18n | setTime(time:&nbsp;number): void<sup>8+</sup> | 设置日历对象内部的时间日期。 | | ohos.i18n | setTime(time:number): void<sup>8+</sup> | 设置日历对象内部的时间日期。 |
| ohos.i18n | set(year:&nbsp;number,&nbsp;month:&nbsp;number,&nbsp;date:&nbsp;number,&nbsp;hour?:&nbsp;number,&nbsp;minute?:&nbsp;number,&nbsp;second?:&nbsp;number): void<sup>8+</sup> | 设置日历对象的年、月、日、时、分、秒。 | | ohos.i18n | set(year:number,month:number,date:number,hour?:number,minute?:number,second?:number): void<sup>8+</sup> | 设置日历对象的年、月、日、时、分、秒。 |
| ohos.i18n | setTimeZone(timezone:&nbsp;string): void<sup>8+</sup> | 设置日历对象的时区。 | | ohos.i18n | setTimeZone(timezone:string): void<sup>8+</sup> | 设置日历对象的时区。 |
| ohos.i18n | getTimeZone():&nbsp;string<sup>8+</sup> | 获取日历对象的时区。 | | ohos.i18n | getTimeZone():string<sup>8+</sup> | 获取日历对象的时区。 |
| ohos.i18n | getFirstDayOfWeek():&nbsp;number<sup>8+</sup> | 获取日历对象的一周起始日。 | | ohos.i18n | getFirstDayOfWeek():number<sup>8+</sup> | 获取日历对象的一周起始日。 |
| ohos.i18n | setFirstDayOfWeek(value:&nbsp;number): void<sup>8+</sup> | 设置日历对象的一周起始日。 | | ohos.i18n | setFirstDayOfWeek(value:number): void<sup>8+</sup> | 设置日历对象的一周起始日。 |
| ohos.i18n | getMinimalDaysInFirstWeek():&nbsp;number<sup>8+</sup> | 获取一年中第一周的最小天数。 | | ohos.i18n | getMinimalDaysInFirstWeek():number<sup>8+</sup> | 获取一年中第一周的最小天数。 |
| ohos.i18n | setMinimalDaysInFirstWeek(value:&nbsp;number): void<sup>8+</sup> | 设置一年中第一周的最小天数。 | | ohos.i18n | setMinimalDaysInFirstWeek(value:number): void<sup>8+</sup> | 设置一年中第一周的最小天数。 |
| ohos.i18n | getDisplayName(locale:&nbsp;string):&nbsp;string<sup>8+</sup> | 获取日历对象的本地化表示。 | | ohos.i18n | getDisplayName(locale:string):string<sup>8+</sup> | 获取日历对象的本地化表示。 |
| ohos.i18n | isWeekend(date?:&nbsp;Date):&nbsp;boolean<sup>8+</sup> | 判断给定的日期是否在日历中是周末。 | | ohos.i18n | isWeekend(date?:Date):boolean<sup>8+</sup> | 判断给定的日期是否在日历中是周末。 |
### 开发步骤 ### 开发步骤
1. 实例化日历对象。<br> 1. 实例化日历对象。
调用getCalendar方法获取指定locale和type的时区对象(i18n为导入的模块)。其中,type表示合法的日历类型,目前合法的日历类型包括:"buddhist", "chinese", "coptic", "ethiopic", "hebrew", "gregory", "indian", "islamic_civil", "islamic_tbla", "islamic_umalqura", "japanese", "persian"。当type没有给出时,采用区域默认的日历类型。
调用getCalendar方法获取指定locale和type的时区对象(i18n为导入的模块)。其中,type表示合法的日历类型,目前合法的日历类型包括:"buddhist", "chinese", "coptic", "ethiopic", "hebrew", "gregory", "indian", "islamic_civil", "islamic_tbla", "islamic_umalqura", "japanese", "persian"。当type没有给出时,采用区域默认的日历类型。
``` ```js
var calendar = i18n.getCalendar("zh-CN", "gregory); var calendar = i18n.getCalendar("zh-CN", "gregory);
``` ```
2. 设置日历对象的时间。<br> 2. 设置日历对象的时间。
调用setTime方法设置日历对象的时间。setTime方法接收两种类型的参数。一种是传入一个Date对象,另一种是传入一个数值表示从1970.1.1 00:00:00 GMT逝去的毫秒数。
调用setTime方法设置日历对象的时间。setTime方法接收两种类型的参数。一种是传入一个Date对象,另一种是传入一个数值表示从1970.1.1 00:00:00 GMT逝去的毫秒数。
``` ```js
var date1 = new Date(); var date1 = new Date();
calendar.setTime(date1); calendar.setTime(date1);
var date2 = 1000; var date2 = 1000;
calendar.setTime(date2); calendar.setTime(date2);
``` ```
3. 设置日历对象的年、月、日、时、分、秒。<br> 3. 设置日历对象的年、月、日、时、分、秒。
调用set方法设置日历对象的年、月、日、时、分、秒。
调用set方法设置日历对象的年、月、日、时、分、秒。
``` ```js
calendar.set(2021, 12, 21, 6, 0, 0) calendar.set(2021, 12, 21, 6, 0, 0)
``` ```
4. 设置、获取日历对象的时区。<br> 4. 设置、获取日历对象的时区。
调用setTimeZone方法和getTimeZone方法来设置、获取日历对象的时区。其中,setTimeZone方法需要传入一个字符串表示需要设置的时区。
调用setTimeZone方法和getTimeZone方法来设置、获取日历对象的时区。其中,setTimeZone方法需要传入一个字符串表示需要设置的时区。
``` ```js
calendar.setTimeZone("Asia/Shanghai"); calendar.setTimeZone("Asia/Shanghai");
var timezone = calendar.getTimeZone(); var timezone = calendar.getTimeZone();
``` ```
5. 设置、获取日历对象的一周起始日。<br> 5. 设置、获取日历对象的一周起始日。
调用setFirstDayOfWeek方法和getFirstDayOfWeek方法设置、获取日历对象的一周起始日。其中,setFirstDayOfWeek需要传入一个数值表示一周的起始日,1代表周日,7代表周六。 调用setFirstDayOfWeek方法和getFirstDayOfWeek方法设置、获取日历对象的一周起始日。其中,setFirstDayOfWeek需要传入一个数值表示一周的起始日,1代表周日,7代表周六。
```js
```
calendar.setFirstDayOfWeek(1); calendar.setFirstDayOfWeek(1);
var firstDayOfWeek = calendar.getFirstDayOfWeek(); var firstDayOfWeek = calendar.getFirstDayOfWeek();
``` ```
6. 设置、获取日历对象第一周的最小天数<br> 6. 设置、获取日历对象第一周的最小天数
调用setMinimalDaysInFirstWeek方法和getMinimalDaysInFirstWeek方法来设置、获取日历对象第一周的最小天数。 调用setMinimalDaysInFirstWeek方法和getMinimalDaysInFirstWeek方法来设置、获取日历对象第一周的最小天数。
``` ```js
calendar.setMinimalDaysInFirstWeek(3); calendar.setMinimalDaysInFirstWeek(3);
var minimalDaysInFirstWeek = calendar.getMinimalDaysInFirstWeek(); var minimalDaysInFirstWeek = calendar.getMinimalDaysInFirstWeek();
``` ```
7. 获取日历对象的本地化显示<br> 7. 获取日历对象的本地化显示
调用getDisplayName来获取日历对象的本地化显示。 调用getDisplayName来获取日历对象的本地化显示。
``` ```js
var localizedName = calendar.getDisplayName("zh-CN"); var localizedName = calendar.getDisplayName("zh-CN");
``` ```
8. 判断某一个日期是否为周末。<br> 8. 判断某一个日期是否为周末。
调用isWeekend方法来判断输入的Date是否为周末。
调用isWeekend方法来判断输入的Date是否为周末。
``` ```js
var date = new Date(); var date = new Date();
var weekend = calendar.isWeekend(date); var weekend = calendar.isWeekend(date);
``` ```
## 电话号码格式化 ## 电话号码格式化
调用电话号码格式化[PhoneNumberFormat](../reference/apis/js-apis-intl.md)的接口,实现对针对不同国家电话号码的格式化以及判断电话号码格式是否正确的功能。 调用电话号码格式化[PhoneNumberFormat](../reference/apis/js-apis-intl.md)的接口,实现对针对不同国家电话号码的格式化以及判断电话号码格式是否正确的功能。
### 接口说明 ### 接口说明
| 模块 | 接口名称 | 描述 | | 模块 | 接口名称 | 描述 |
| -------- | -------- | -------- | | -------- | -------- | -------- |
| ohos.i18n | constructor(country:&nbsp;string,&nbsp;options?:&nbsp;PhoneNumberFormatOptions)<sup>8+</sup> | 实例化PhoneNumberFormat对象。 | | ohos.i18n | constructor(country:string,options?:PhoneNumberFormatOptions)<sup>8+</sup> | 实例化PhoneNumberFormat对象。 |
| ohos.i18n | isValidNumber(number:&nbsp;string):&nbsp;boolean<sup>8+</sup> | 判断number是否是一个格式正确的电话号码。 | | ohos.i18n | isValidNumber(number:string):boolean<sup>8+</sup> | 判断number是否是一个格式正确的电话号码。 |
| ohos.i18n | format(number:&nbsp;string):&nbsp;string<sup>8+</sup> | 对number按照指定国家及风格进行格式化。 | | ohos.i18n | format(number:string):string<sup>8+</sup> | 对number按照指定国家及风格进行格式化。 |
### 开发步骤 ### 开发步骤
1. 实例化电话号码格式化对象。<br> 1. 实例化电话号码格式化对象。
调用PhoneNumberFormat的构造函数来实例化电话号码格式化对象,需要传入电话号码的国家代码及格式化选项。其中,格式化选项是可选的,包括style选项,该选项的取值包括:"E164", "INTERNATIONAL", "NATIONAL", "RFC3966"。
调用PhoneNumberFormat的构造函数来实例化电话号码格式化对象,需要传入电话号码的国家代码及格式化选项。其中,格式化选项是可选的,包括style选项,该选项的取值包括:"E164", "INTERNATIONAL", "NATIONAL", "RFC3966"。
``` ```js
var phoneNumberFormat = new i18n.PhoneNumberFormat("CN", {type: "E164"}); var phoneNumberFormat = new i18n.PhoneNubmerFormat("CN", {type: "E164"});
``` ```
2. 判断电话号码格式是否正确。<br> 2. 判断电话号码格式是否正确。
调用isValidNumber方法来判断输入的电话号码的格式是否正确。
调用isValidNumber方法来判断输入的电话号码的格式是否正确。
``` ```js
var validNumber = phoneNumberFormat.isValidNumber("15812341234"); var validNumber = phoneNumberFormat.isValidNumber("15812341234");
``` ```
3. 电话号码格式化。<br> 3. 电话号码格式化。
调用电话号码格式化对象的format方法来对输入的电话号码进行格式化。
调用电话号码格式化对象的format方法来对输入的电话号码进行格式化。
``` ```js
var formattedNumber = phoneNumberFormat.format("15812341234"); var formattedNumber = phoneNumberFormat.format("15812341234");
``` ```
## 度量衡转换 ## 度量衡转换
度量衡转换接口可以实现度量衡转换的相关功能。 度量衡转换接口可以实现度量衡转换的相关功能。
### 接口说明 ### 接口说明
| 模块 | 接口名称 | 描述 | | 模块 | 接口名称 | 描述 |
| -------- | -------- | -------- | | -------- | -------- | -------- |
| ohos.i18n | unitConvert(fromUnit:&nbsp;UnitInfo,&nbsp;toUnit:&nbsp;UnitInfo,&nbsp;value:&nbsp;number,&nbsp;locale:&nbsp;string,&nbsp;style?:&nbsp;string):&nbsp;string<sup>8+</sup> | 将fromUnit的单位转换为toUnit的单位,并根据区域与风格进行格式化。 | | ohos.i18n | unitConvert(fromUnit:UnitInfo,toUnit:UnitInfo,value:number,locale:string,style?:string):string<sup>8+</sup> | 将fromUnit的单位转换为toUnit的单位,并根据区域与风格进行格式化。 |
### 开发步骤 ### 开发步骤
1. 度量衡单位转换。<br> 1. 度量衡单位转换。
调用[unitConvert](../reference/apis/js-apis-intl.md)方法实现度量衡单位转换,并进行格式化显示的功能。 调用[unitConvert](../reference/apis/js-apis-intl.md)方法实现度量衡单位转换,并进行格式化显示的功能。
```js
```
var fromUnit = {unit: "cup", measureSystem: "US"}; var fromUnit = {unit: "cup", measureSystem: "US"};
var toUnit = {unit: "liter", measureSystem: "SI"}; var toUnit = {unit: "liter", measureSystem: "SI"};
var number = 1000; var number = 1000;
...@@ -241,110 +238,108 @@ ...@@ -241,110 +238,108 @@
i18n.Util.unitConvert(fromUtil, toUtil, number, locale, style); i18n.Util.unitConvert(fromUtil, toUtil, number, locale, style);
``` ```
## 字母表索引 ## 字母表索引
调用字母表索引[IndexUtil](../reference/apis/js-apis-intl.md)的接口可以获取不同Locale的字母表索引,以及实现计算字符串所属索引的功能。 调用字母表索引[IndexUtil](../reference/apis/js-apis-intl.md)的接口可以获取不同Locale的字母表索引,以及实现计算字符串所属索引的功能。
### 接口说明 ### 接口说明
| 模块 | 接口名称 | 描述 | | 模块 | 接口名称 | 描述 |
| -------- | -------- | -------- | | -------- | -------- | -------- |
| ohos.i18n | getInstance(locale?:&nbsp;string):&nbsp;IndexUtil<sup>8+</sup> | 实例化字母表索引对象。 | | ohos.i18n | getInstance(locale?:string):IndexUtil<sup>8+</sup> | 实例化字母表索引对象。 |
| ohos.i18n | getIndexList():&nbsp;Array&lt;string&gt;<sup>8+</sup> | 获取当前Locale的索引列表。 | | ohos.i18n | getIndexList():Array&lt;string&gt;<sup>8+</sup> | 获取当前Locale的索引列表。 |
| ohos.i18n | addLocale(locale:&nbsp;string): void<sup>8+</sup> | 将新的Locale对应的索引加入当前索引列表。 | | ohos.i18n | addLocale(locale:string): void<sup>8+</sup> | 将新的Locale对应的索引加入当前索引列表。 |
| ohos.i18n | getIndex(text:&nbsp;string):&nbsp;string<sup>8+</sup> | 获取text对应的索引。 | | ohos.i18n | getIndex(text:string):string<sup>8+</sup> | 获取text对应的索引。 |
### 开发步骤 ### 开发步骤
1. 实例化字母表索引对象。<br> 1. 实例化字母表索引对象。
调用getInstance方法来实例化特定locale对应的字母表索引对象。当locale参数为空时,实例化系统默认Locale的字母表索引对象。 调用getInstance方法来实例化特定locale对应的字母表索引对象。当locale参数为空时,实例化系统默认Locale的字母表索引对象。
``` ```js
var indexUtil = getInstance("zh-CN"); var indexUtil = getInstance("zh-CN");
``` ```
2. 获取索引列表。<br> 2. 获取索引列表。
调用getIndexList方法来获取当前Locale对应的字母表索引列表。
调用getIndexList方法来获取当前Locale对应的字母表索引列表。
``` ```js
var indexList = indexUtil.getIndexList(); var indexList = indexUtil.getIndexList();
``` ```
3. 增加新的索引。<br> 3. 增加新的索引。
调用addLocale方法,将新的Locale对应的字母表索引添加到当前字母表索引列表中。
调用addLocale方法,将新的Locale对应的字母表索引添加到当前字母表索引列表中。
``` ```js
indexUtil.addLocale("ar") indexUtil.addLocale("ar")
``` ```
4. 获取字符串对应的索引。<br> 4. 获取字符串对应的索引。
调用getIndex方法来获取某一字符串对应的字母表索引。
调用getIndex方法来获取某一字符串对应的字母表索引。
``` ```js
var text = "access index"; var text = "access index";
indexUtil.getIndex(text); indexUtil.getIndex(text);
``` ```
## 获取文本断点位置 ## 获取文本断点位置
当文本比较长无法在一行进行显示时,调用文本断点[BreakIterator8](../reference/apis/js-apis-intl.md)的接口,来获取文本可以断行的位置。 当文本比较长无法在一行进行显示时,调用文本断点[BreakIterator8](../reference/apis/js-apis-intl.md)的接口,来获取文本可以断行的位置。
### 接口说明 ### 接口说明
| 模块 | 接口名称 | 描述 | | 模块 | 接口名称 | 描述 |
| -------- | -------- | -------- | | -------- | -------- | -------- |
| ohos.i18n | getLineInstance(locale:&nbsp;string):&nbsp;BreakIterator<sup>8+</sup> | 实例化断行对象。 | | ohos.i18n | getLineInstance(locale:string):BreakIterator<sup>8+</sup> | 实例化断行对象。 |
| ohos.i18n | setLineBreakText(text:&nbsp;string): void<sup>8+</sup> | 设置要处理的文本。 | | ohos.i18n | setLineBreakText(text:string): void<sup>8+</sup> | 设置要处理的文本。 |
| ohos.i18n | getLineBreakText():&nbsp;string<sup>8+</sup> | 获取要处理的文本。 | | ohos.i18n | getLineBreakText():string<sup>8+</sup> | 获取要处理的文本。 |
| ohos.i18n | current():&nbsp;number<sup>8+</sup> | 获取当前断行对象在处理文本的位置。 | | ohos.i18n | current():number<sup>8+</sup> | 获取当前断行对象在处理文本的位置。 |
| ohos.i18n | first():&nbsp;number<sup>8+</sup> | 将断行对象设置到第一个可断句的分割点。 | | ohos.i18n | first():number<sup>8+</sup> | 将断行对象设置到第一个可断句的分割点。 |
| ohos.i18n | last():&nbsp;number<sup>8+</sup> | 将断行对象设置到最后一个可断句的分割点。 | | ohos.i18n | last():number<sup>8+</sup> | 将断行对象设置到最后一个可断句的分割点。 |
| ohos.i18n | next(index?:&nbsp;number):&nbsp;number<sup>8+</sup> | 将断行对象移动index个分割点的位置。 | | ohos.i18n | next(index?:number):number<sup>8+</sup> | 将断行对象移动index个分割点的位置。 |
| ohos.i18n | previous():&nbsp;number<sup>8+</sup> | 将断行对象移动到前一个分割点的位置。 | | ohos.i18n | previous():number<sup>8+</sup> | 将断行对象移动到前一个分割点的位置。 |
| ohos.i18n | following(offset:&nbsp;number):&nbsp;number<sup>8+</sup> | 将断行对象移动到offset指定位置的后面一个分割点的位置。 | | ohos.i18n | following(offset:number):number<sup>8+</sup> | 将断行对象移动到offset指定位置的后面一个分割点的位置。 |
| ohos.i18n | isBoundary(offset:&nbsp;number):&nbsp;boolean<sup>8+</sup> | 判断某个位置是否是分割点。 | | ohos.i18n | isBoundary(offset:number):boolean<sup>8+</sup> | 判断某个位置是否是分割点。 |
### 开发步骤 ### 开发步骤
1. 实例化断行对象。<br> 1. 实例化断行对象。
调用getLineInstance方法来实例化断行对象。 调用getLineInstance方法来实例化断行对象。
```js
```
var locale = "en-US" var locale = "en-US"
var breakIterator = i18n.getLineInstance(locale); var breakIterator = i18n.getLineInstance(locale);
``` ```
2. 设置、访问要断行处理的文本。<br> 2. 设置、访问要断行处理的文本。
调用setLineBreakText方法和getLineBreakText方法来设置、访问要断行处理的文本。 调用setLineBreakText方法和getLineBreakText方法来设置、访问要断行处理的文本。
```js
```
var text = "Apple is my favorite fruit"; var text = "Apple is my favorite fruit";
breakIterator.setLineBreakText(text); breakIterator.setLineBreakText(text);
var breakText = breakIterator.getLineBreakText(); var breakText = breakIterator.getLineBreakText();
``` ```
3. 获取断行对象当前的位置。<br> 3. 获取断行对象当前的位置。
调用current方法来获取断行对象在当前处理文本中的位置。
调用current方法来获取断行对象在当前处理文本中的位置。
``` ```js
var pos = breakIterator.current(); var pos = breakIterator.current();
``` ```
4. 设置断行对象的位置。<br> 4. 设置断行对象的位置。
系统提供了很多接口可以用于调整断行对象在处理文本中的位置,包括first, last, next, previous, following。 系统提供了很多接口可以用于调整断行对象在处理文本中的位置,包括first, last, next, previous, following。
```js
```
var firstPos = breakIterator.first(); // 将断行对象设置到第一个分割点的位置,即文本的起始位置; var firstPos = breakIterator.first(); // 将断行对象设置到第一个分割点的位置,即文本的起始位置;
var lastPos = breakIterator.last(); // 将断行对象设置到最后一个分割点的位置,即文本末尾的下一个位置; var lastPos = breakIterator.last(); // 将断行对象设置到最后一个分割点的位置,即文本末尾的下一个位置;
// 将断行对象向前或向后移动一定数量的分割点。 // 将断行对象向前或向后移动一定数量的分割点。
...@@ -356,10 +351,10 @@ ...@@ -356,10 +351,10 @@
var followingPos = breakIterator.following(10); var followingPos = breakIterator.following(10);
``` ```
5. 判断某个位置是否为分割点。<br> 5. 判断某个位置是否为分割点。
调用isBoundary方法来判断一个方法是否为分割点;如果该位置是分割点,则返回true,并且将断行对象移动到该位置;如果该位置不是分割点,则返回false,并且将断行对象移动到该位置后的一个分割点。
调用isBoundary方法来判断一个方法是否为分割点;如果该位置是分割点,则返回true,并且将断行对象移动到该位置;如果该位置不是分割点,则返回false,并且将断行对象移动到该位置后的一个分割点。
``` ```js
var isboundary = breakIterator.isBoundary(5); var isboundary = breakIterator.isBoundary(5);
``` ```
\ No newline at end of file
...@@ -7,21 +7,19 @@ ...@@ -7,21 +7,19 @@
调用[Locale](../reference/apis/js-apis-intl.md)的相关接口实现最大化区域信息或最小化区域信息。 调用[Locale](../reference/apis/js-apis-intl.md)的相关接口实现最大化区域信息或最小化区域信息。
### 接口说明 ### 接口说明
| 模块 | 接口名称 | 描述 | | 模块 | 接口名称 | 描述 |
| -------- | -------- | -------- | | -------- | -------- | -------- |
| ohos.intl | constructor()<sup>8+</sup> | 实例化Locale对象。 | | ohos.intl | constructor()<sup>8+</sup> | 实例化Locale对象。 |
| ohos.intl | constructor(locale:&nbsp;string,&nbsp;options?:&nbsp;LocaleOptions) | 基于locale参数及其选项实例化Locale对象。 | | ohos.intl | constructor(locale:string,options?:LocaleOptions) | 基于locale参数及其选项实例化Locale对象。 |
| ohos.intl | toString():&nbsp;string | 将Locale信息转换为字符串。 | | ohos.intl | toString():string | 将Locale信息转换为字符串。 |
| ohos.intl | maximize():&nbsp;Locale | 最大化区域信息。 | | ohos.intl | maximize():Locale | 最大化区域信息。 |
| ohos.intl | minimize():&nbsp;Locale | 最小化区域信息。 | | ohos.intl | minimize():Locale | 最小化区域信息。 |
### 开发步骤 ### 开发步骤
1. 实例化Locale对象 1. 实例化Locale对象
使用Locale的构造函数创建Locale对象,该方法接收一个表示Locale的字符串及可选的[属性](../reference/apis/js-apis-intl.md)列表(intl为导入的模块名)。 使用Locale的构造函数创建Locale对象,该方法接收一个表示Locale的字符串及可选的[属性](../reference/apis/js-apis-intl.md)列表(intl为导入的模块名)。
...@@ -39,281 +37,290 @@ ...@@ -39,281 +37,290 @@
| kn | 表示字符串排序、比较时是否考虑数字的实际值 | | kn | 表示字符串排序、比较时是否考虑数字的实际值 |
| kf | 表示字符串排序、比较时是否考虑大小写 | | kf | 表示字符串排序、比较时是否考虑大小写 |
``` | 扩展参数ID | 扩展参数说明 |
| -------- | -------- |
| ca | 表示日历系统 |
| co | 表示排序规则 |
| hc | 表示守时惯例 |
| nu | 表示数字系统 |
| kn | 表示字符串排序、比较时是否考虑数字的实际值 |
| kf | 表示字符串排序、比较时是否考虑大小写 |
```js
var locale = "zh-CN"; var locale = "zh-CN";
var options = {caseFirst: false, calendar: "chinese", collation: pinyin}; var options = {caseFirst: false, calendar: "chinese", collation: pinyin};
var localeObj = new intl.Locale(locale, options); var localeObj = new intl.Locale(locale, options);
``` ```
2. 获取Locale的字符串表示 2. 获取Locale的字符串表示。
调用toString方法来获取Locale对象的字符串表示,其中包括了语言、区域及其他选项信息。 调用toString方法来获取Locale对象的字符串表示,其中包括了语言、区域及其他选项信息。
``` ```js
var localeStr = localeObj.toString(); var localeStr = localeObj.toString();
``` ```
3. 最大化区域信息 3. 最大化区域信息。
调用maximize方法来最大化区域信息,即当缺少脚本与地区信息时,对其进行补全。 调用maximize方法来最大化区域信息,即当缺少脚本与地区信息时,对其进行补全。
``` ```js
var maximizedLocale = localeObj.maximize(); var maximizedLocale = localeObj.maximize();
``` ```
4. 最小化区域信息 4. 最小化区域信息。
调用minimize方法来最小化区域信息,即当存在脚本与地区信息时,对其进行删除。 调用minimize方法来最小化区域信息,即当存在脚本与地区信息时,对其进行删除。
``` ```js
var minimizedLocale = localeObj.minimize(); var minimizedLocale = localeObj.minimize();
``` ```
## 格式化日期时间 ## 格式化日期时间
调用日期时间格式化[DateTimeFormat](../reference/apis/js-apis-intl.md)的接口,实现针对特定Locale的日期格式化以及时间段格式化功能。 调用日期时间格式化[DateTimeFormat](../reference/apis/js-apis-intl.md)的接口,实现针对特定Locale的日期格式化以及时间段格式化功能。
### 接口说明 ### 接口说明
| 模块 | 接口名称 | 描述 | | 模块 | 接口名称 | 描述 |
| -------- | -------- | -------- | | -------- | -------- | -------- |
| ohos.intl | constructor()<sup>8+</sup> | 创建日期时间格式化对象。 | | ohos.intl | constructor()<sup>8+</sup> | 创建日期时间格式化对象。 |
| ohos.intl | constructor(locale:&nbsp;string&nbsp;\|&nbsp;Array&lt;string&gt;,&nbsp;options?:&nbsp;DateTimeOptions) | 创建日期时间格式化对象,并设置提供的Locale和格式化相关属性。 | | ohos.intl | constructor(locale:string\|Array&lt;string&gt;,options?:DateTimeOptions) | 创建日期时间格式化对象,并设置提供的Locale和格式化相关属性。 |
| ohos.intl | format(date:&nbsp;Date):&nbsp;string | 依据DateTimeFormat对象的Locale及其他格式化属性,计算日期时间的格式化表示。 | | ohos.intl | format(date:Date):string | 依据DateTimeFormat对象的Locale及其他格式化属性,计算日期时间的格式化表示。 |
| ohos.intl | formatRange(startDate:&nbsp;Date,&nbsp;endDate:&nbsp;Date):&nbsp;string | 依据DateTimeFormat对象的Locale及其他格式化属性,计算时间段的格式化表示。 | | ohos.intl | formatRange(startDate:Date,endDate:Date):string | 依据DateTimeFormat对象的Locale及其他格式化属性,计算时间段的格式化表示。 |
| ohos.intl | resolvedOptions():&nbsp;DateTimeOptions | 获取DateTimeFormat对象的相关属性。 | | ohos.intl | resolvedOptions():DateTimeOptions | 获取DateTimeFormat对象的相关属性。 |
### 开发步骤 ### 开发步骤
1. 实例化日期时间格式化对象 1. 实例化日期时间格式化对象。
一种方法是使用DateTimeFormat提供的默认构造函数,通过访问系统语言和地区设置,获取系统默认Locale,并将其作为DateTimeFormat对象内部的Locale(intl为导入的模块名)。 一种方法是使用DateTimeFormat提供的默认构造函数,通过访问系统语言和地区设置,获取系统默认Locale,并将其作为DateTimeFormat对象内部的Locale(intl为导入的模块名)。
```js
```
var dateTimeFormat = new intl.DateTimeFormat(); var dateTimeFormat = new intl.DateTimeFormat();
``` ```
另一种方法是使用开发者提供的Locale和格式化参数来创建日期时间格式化对象。其中,格式化参数是可选的,完整的格式化参数列表见[DateTimeOptions](../reference/apis/js-apis-intl.md)。 另一种方法是使用开发者提供的Locale和格式化参数来创建日期时间格式化对象。其中,格式化参数是可选的,完整的格式化参数列表见[DateTimeOptions](../reference/apis/js-apis-intl.md)。
``` ```js
var options = {dateStyle: "full", timeStyle: "full"}; var options = {dateStyle: "full", timeStyle: "full"};
var dateTimeFormat = new intl.DateTimeFormat("zh-CN", options); var dateTimeFormat = new intl.DateTimeFormat("zh-CN", options);
``` ```
2. 格式化日期时间 2. 格式化日期时间。
使用DateTimeFormat的format方法对一个Date对象进行格式化,该方法会返回一个字符串作为格式化的结果。 使用DateTimeFormat的format方法对一个Date对象进行格式化,该方法会返回一个字符串作为格式化的结果。
``` ```js
Date date = new Date(); Date date = new Date();
var formatResult = dateTimeFormat.format(date); var formatResult = dateTimeFormat.format(date);
``` ```
3. 格式化时间段 3. 格式化时间段。
使用DateTimeFormat的formatRange方法对一个时间段进行格式化。该方法需要传入两个Date对象,分别表示时间段的起止时间,返回一个字符串作为格式化的结果。 使用DateTimeFormat的formatRange方法对一个时间段进行格式化。该方法需要传入两个Date对象,分别表示时间段的起止时间,返回一个字符串作为格式化的结果。
``` ```js
Date startDate = new Date(); Date startDate = new Date();
Date endDate = new Date(); Date endDate = new Date();
var formatResult = dateTimeFormat.formatRange(startDate, endDate); var formatResult = dateTimeFormat.formatRange(startDate, endDate);
``` ```
4. 访问日期时间格式化对象的相关属性 4. 访问日期时间格式化对象的相关属性。
DateTimeFormat的resolvedOptions方法会返回一个对象,该对象包含了DateTimeFormat对象的所有相关属性及其值。 DateTimeFormat的resolvedOptions方法会返回一个对象,该对象包含了DateTimeFormat对象的所有相关属性及其值。
``` ```js
var options = dateTimeFormat.resolvedOptions(); var options = dateTimeFormat.resolvedOptions();
``` ```
## 数字格式化 ## 数字格式化
调用数字格式化[NumberFormat](../reference/apis/js-apis-intl.md)的接口,实现针对特定Locale的数字格式化功能。 调用数字格式化[NumberFormat](../reference/apis/js-apis-intl.md)的接口,实现针对特定Locale的数字格式化功能。
### 接口说明 ### 接口说明
| 模块 | 接口名称 | 描述 | | 模块 | 接口名称 | 描述 |
| -------- | -------- | -------- | | -------- | -------- | -------- |
| ohos.intl | constructor()<SUP>8+</SUP> | 创建数字格式化对象。 | | ohos.intl | constructor()<SUP>8+</SUP> | 创建数字格式化对象。 |
| ohos.intl | constructor(locale:&nbsp;string&nbsp;\|&nbsp;Array&lt;string&gt;,&nbsp;options?:&nbsp;NumberOptions) | 创建数字格式化对象,并设置提供的locale和格式化相关属性。 | | ohos.intl | constructor(locale:string\|Array&lt;string&gt;,options?:NumberOptions) | 创建数字格式化对象,并设置提供的locale和格式化相关属性。 |
| ohos.intl | format(number:&nbsp;number):&nbsp;string | 依据NumberFormat对象的Locale及其他格式化属性,计算数字的格式化表示。 | | ohos.intl | format(number:number):string | 依据NumberFormat对象的Locale及其他格式化属性,计算数字的格式化表示。 |
| ohos.intl | resolvedOptions():&nbsp;NumberOptions | 获取NumberFormat对象的相关属性。 | | ohos.intl | resolvedOptions():NumberOptions | 获取NumberFormat对象的相关属性。 |
### 开发步骤 ### 开发步骤
1. 实例化数字格式化对象 1. 实例化数字格式化对象。
一种方法是使用NumberFormat提供的默认构造函数,通过访问系统的语言和地区以获取系统默认Locale并进行设置(intl为导入的模块名)。 一种方法是使用NumberFormat提供的默认构造函数,通过访问系统的语言和地区以获取系统默认Locale并进行设置(intl为导入的模块名)。
```js
```
var numberFormat = new intl.NumberFormat(); var numberFormat = new intl.NumberFormat();
``` ```
另一种方法是使用开发者提供的Locale和格式化参数来创建数字格式化对象。其中,格式化参数是可选的,完整的格式化参数列表参见[NumberOptions](../reference/apis/js-apis-intl.md)。 另一种方法是使用开发者提供的Locale和格式化参数来创建数字格式化对象。其中,格式化参数是可选的,完整的格式化参数列表参见[NumberOptions](../reference/apis/js-apis-intl.md)。
``` ```js
var options = {compactDisplay: "short", notation: "compact"}; var options = {compactDisplay: "short", notation: "compact"};
var numberFormat = new intl.NumberFormat("zh-CN", options); var numberFormat = new intl.NumberFormat("zh-CN", options);
``` ```
2. 数字格式化 2. 数字格式化。
使用NumberFormat的format方法对传入的数字进行格式化。该方法返回一个字符串作为格式化的结果。 使用NumberFormat的format方法对传入的数字进行格式化。该方法返回一个字符串作为格式化的结果。
``` ```js
var number = 1234.5678 var number = 1234.5678
var formatResult = numberFormat.format(number); var formatResult = numberFormat.format(number);
``` ```
3. 访问数字格式化对象的相关属性 3. 访问数字格式化对象的相关属性。
NumberFormat的resolvedOptions方法会返回一个对象,该对象包含了NumberFormat对象的所有相关属性及其值。 NumberFormat的resolvedOptions方法会返回一个对象,该对象包含了NumberFormat对象的所有相关属性及其值。
``` ```js
var options = numberFormat.resolvedOptions(); var options = numberFormat.resolvedOptions();
``` ```
## 字符串排序 ## 字符串排序
不同区域的用户对于字符串排序具有不同的需求。调用字符串排序[Collator](../reference/apis/js-apis-intl.md)的接口,实现针对特定Locale的字符串排序功能。 不同区域的用户对于字符串排序具有不同的需求。调用字符串排序[Collator](../reference/apis/js-apis-intl.md)的接口,实现针对特定Locale的字符串排序功能。
### 接口说明 ### 接口说明
| 模块 | 接口名称 | 描述 | | 模块 | 接口名称 | 描述 |
| -------- | -------- | -------- | | -------- | -------- | -------- |
| ohos.intl | constructor()<sup>8+</sup> | 创建排序对象。 | | ohos.intl | constructor()<sup>8+</sup> | 创建排序对象。 |
| ohos.intl | constructor(locale:&nbsp;string&nbsp;\|&nbsp;Array&lt;string&gt;,&nbsp;options?:&nbsp;CollatorOptions)<sup>8+</sup> | 创建排序对象,并设置提供的locale和其他相关属性。 | | ohos.intl | constructor(locale:string\|Array&lt;string&gt;,options?:CollatorOptions)<sup>8+</sup> | 创建排序对象,并设置提供的locale和其他相关属性。 |
| ohos.intl | compare(first:&nbsp;string,&nbsp;second:&nbsp;string):&nbsp;number<sup>8+</sup> | 依据排序对象的Locale及其属性,计算两个字符串的比较结果。 | | ohos.intl | compare(first:string,second:string):number<sup>8+</sup> | 依据排序对象的Locale及其属性,计算两个字符串的比较结果。 |
| ohos.intl | resolvedOptions():&nbsp;CollatorOptions<sup>8+</sup> | 获取排序对象的相关属性。 | | ohos.intl | resolvedOptions():CollatorOptions<sup>8+</sup> | 获取排序对象的相关属性。 |
### 开发步骤 ### 开发步骤
1. 实例化排序对象 1. 实例化排序对象。
一种方法是使用Collator提供的默认构造函数,通过访问系统的语言和地区以获取系统默认Locale并进行设置(intl为导入的模块名)。 一种方法是使用Collator提供的默认构造函数,通过访问系统的语言和地区以获取系统默认Locale并进行设置(intl为导入的模块名)。
```js
```
var collator = new intl.Collator(); var collator = new intl.Collator();
``` ```
另一种方法是使用开发者提供的Locale和其他相关参数来创建Collator对象,完整的参数列表参见[CollatorOptions](../reference/apis/js-apis-intl.md)。 另一种方法是使用开发者提供的Locale和其他相关参数来创建Collator对象,完整的参数列表参见[CollatorOptions](../reference/apis/js-apis-intl.md)。
``` ```js
var collator= new intl.Collator("zh-CN", {localeMatcher: "best fit", usage: "sort"}; var collator= new intl.Collator("zh-CN", {localeMatcher: "best fit", usage: "sort"});
``` ```
2. 比较字符串 2. 比较字符串。
使用Collator的compare方法对传入的两个字符串进行比较。该方法返回一个数值作为比较的结果,返回-1表示第一个字符串小于第二个字符串,返回1表示第一个字符大于第二个字符串,返回0表示两个字符串相同。 使用Collator的compare方法对传入的两个字符串进行比较。该方法返回一个数值作为比较的结果,返回-1表示第一个字符串小于第二个字符串,返回1表示第一个字符大于第二个字符串,返回0表示两个字符串相同。
``` ```js
var str1 = "first string"; var str1 = "first string";
var str2 = "second string"; var str2 = "second string";
var compareResult = collator.compare(str1, str2); var compareResult = collator.compare(str1, str2);
``` ```
3. 访问排序对象的相关属性 3. 访问排序对象的相关属性。
Collator的resolvedOptions方法会返回一个对象,该对象包含了Collator对象的所有相关属性及其值。 Collator的resolvedOptions方法会返回一个对象,该对象包含了Collator对象的所有相关属性及其值。
``` ```js
var options = collator.resolvedOptions(); var options = collator.resolvedOptions();
``` ```
## 判定单复数类别 ## 判定单复数类别
在一些语言的语法中,当数字后面存在名词时,名词需要根据数字的值采用不同的形式。调用单复数[PluralRules](../reference/apis/js-apis-intl.md)的接口,可以实现针对特定Locale计算数字单复数类别的功能,从而选择合适的名词单复数表示。 在一些语言的语法中,当数字后面存在名词时,名词需要根据数字的值采用不同的形式。调用单复数[PluralRules](../reference/apis/js-apis-intl.md)的接口,可以实现针对特定Locale计算数字单复数类别的功能,从而选择合适的名词单复数表示。
### 接口说明 ### 接口说明
| 模块 | 接口名称 | 描述 | | 模块 | 接口名称 | 描述 |
| -------- | -------- | -------- | | -------- | -------- | -------- |
| ohos.intl | constructor()<sup>8+</sup> | 创建单复数对象。 | | ohos.intl | constructor()<sup>8+</sup> | 创建单复数对象。 |
| ohos.intl | constructor(locale:&nbsp;string&nbsp;\|&nbsp;Array&lt;string&gt;,&nbsp;options?:&nbsp;PluralRulesOptions)<sup>8+</sup> | 创建单复数对象,并设置提供的locale和其他相关属性。 | | ohos.intl | constructor(locale:string\|Array&lt;string&gt;,options?:PluralRulesOptions)<sup>8+</sup> | 创建单复数对象,并设置提供的locale和其他相关属性。 |
| ohos.intl | select(n:&nbsp;number):&nbsp;string<sup>8+</sup> | 依据单复数对象的Locale及其他格式化属性,计算数字的单复数类别。 | | ohos.intl | select(n:number):string<sup>8+</sup> | 依据单复数对象的Locale及其他格式化属性,计算数字的单复数类别。 |
### 开发步骤 ### 开发步骤
1. 实例化单复数对象 1. 实例化单复数对象。
一种方法是使用PluralRules提供的默认构造函数,通过访问系统的语言和地区以获取系统默认Locale并进行设置(intl为导入的模块名)。 一种方法是使用PluralRules提供的默认构造函数,通过访问系统的语言和地区以获取系统默认Locale并进行设置(intl为导入的模块名)。
```js
```
var pluralRules = new intl.PluralRules(); var pluralRules = new intl.PluralRules();
``` ```
另一种方法是使用开发者提供的Locale和其他相关参数来创建单复数对象完整的参数列表参见[PluralRulesOptions](../reference/apis/js-apis-intl.md)。 另一种方法是使用开发者提供的Locale和其他相关参数来创建单复数对象完整的参数列表参见[PluralRulesOptions](../reference/apis/js-apis-intl.md)。
``` ```js
var plurals = new intl.PluralRules("zh-CN", {localeMatcher: "best fit", type: "cardinal"}; var plurals = new intl.PluralRules("zh-CN", {localeMatcher: "best fit", type: "cardinal"});
``` ```
2. 计算数字单复数类别 2. 计算数字单复数类别。
使用PluralRules的select方法计算传入数字的单复数类别。该方法返回一个字符串作为传入数字的类别,包括:"zero", "one", "two", "few", "many", "other"六个类别。 使用PluralRules的select方法计算传入数字的单复数类别。该方法返回一个字符串作为传入数字的类别,包括:"zero", "one", "two", "few", "many", "other"六个类别。
``` ```js
var number = 1234.5678 var number = 1234.5678
var categoryResult = plurals.select(number); var categoryResult = plurals.select(number);
``` ```
## 相对时间格式化 ## 相对时间格式化
调用相对时间格式化[RelativeTimeFormat](../reference/apis/js-apis-intl.md)的接口,实现针对特定Locale的相对时间格式化功能。 调用相对时间格式化[RelativeTimeFormat](../reference/apis/js-apis-intl.md)的接口,实现针对特定Locale的相对时间格式化功能。
### 接口说明 ### 接口说明
| 模块 | 接口名称 | 描述 | | 模块 | 接口名称 | 描述 |
| -------- | -------- | -------- | | -------- | -------- | -------- |
| ohos.intl | constructor()<sup>8+</sup> | 创建相对时间格式化对象。 | | ohos.intl | constructor()<sup>8+</sup> | 创建相对时间格式化对象。 |
| ohos.intl | constructor(locale:&nbsp;string&nbsp;\|&nbsp;Array&lt;string&gt;,&nbsp;options?:&nbsp;RelativeTimeFormatInputOptions)<sup>8+</sup> | 创建相对时间格式化对象,并设置提供的locale和格式化相关属性。 | | ohos.intl | constructor(locale:string\|Array&lt;string&gt;,options?:RelativeTimeFormatInputOptions)<sup>8+</sup> | 创建相对时间格式化对象,并设置提供的locale和格式化相关属性。 |
| ohos.intl | format(value:&nbsp;number,&nbsp;unit:&nbsp;string):&nbsp;string<sup>8+</sup> | 依据相对时间格式化对象的Locale及其他格式化属性,计算相对时间的格式化表示。 | | ohos.intl | format(value:number,unit:string):string<sup>8+</sup> | 依据相对时间格式化对象的Locale及其他格式化属性,计算相对时间的格式化表示。 |
| ohos.intl | formatToParts(value:&nbsp;number,&nbsp;unit:&nbsp;string):&nbsp;Array&lt;object&gt;<sup>8+</sup> | 依据相对时间格式化对象的Locale及其他格式化属性,返回相对时间格式化表示的各个部分。 | | ohos.intl | formatToParts(value:number,unit:string):Array&lt;object&gt;<sup>8+</sup> | 依据相对时间格式化对象的Locale及其他格式化属性,返回相对时间格式化表示的各个部分。 |
| ohos.intl | resolvedOptions():&nbsp;RelativeTimeFormatResolvedOptions<sup>8+</sup> | 获取相对时间格式化对象的相关属性。 | | ohos.intl | resolvedOptions():RelativeTimeFormatResolvedOptions<sup>8+</sup> | 获取相对时间格式化对象的相关属性。 |
### 开发步骤 ### 开发步骤
1. 实例化相对时间格式化对象 1. 实例化相对时间格式化对象。
一种方法是使用RelativeTimeFormat提供的默认构造函数,通过访问系统的语言和地区以获取系统默认Locale并进行设置(intl为导入的模块名)。
一种方法是使用RelativeTimeFormat提供的默认构造函数,通过访问系统的语言和地区以获取系统默认Locale并进行设置(intl为导入的模块名)。
``` ```js
var relativeTimeFormat = new intl.RelativeTimeFormat(); var relativeTimeFormat = new intl.RelativeTimeFormat();
``` ```
另一种方法是使用开发者提供的Locale和格式化参数来创建相对时间格式化对象。其中,格式化参数是可选的,完整的参数列表参见[ RelativeTimeFormatInputOptions](../reference/apis/js-apis-intl.md)。 另一种方法是使用开发者提供的Locale和格式化参数来创建相对时间格式化对象。其中,格式化参数是可选的,完整的参数列表参见[ RelativeTimeFormatInputOptions](../reference/apis/js-apis-intl.md)。
``` ```
var relativeTimeFormat = new intl.RelativeTimeFormat("zh-CN", {numeric: "always", style: "long"}; var relativeTimeFormat = new intl.RelativeTimeFormat("zh-CN", {numeric: "always", style: "long"});
``` ```
2. 相对时间格式化 2. 相对时间格式化。
使用RelativeTimeFormat的format方法对相对时间进行格式化。方法接收一个表示相对时间长度的数值和表示单位的字符串,其中单位包括:"year", "quarter", "month", "week", "day", "hour", "minute", "second"。方法返回一个字符串作为格式化的结果。 使用RelativeTimeFormat的format方法对相对时间进行格式化。方法接收一个表示相对时间长度的数值和表示单位的字符串,其中单位包括:"year", "quarter", "month", "week", "day", "hour", "minute", "second"。方法返回一个字符串作为格式化的结果。
``` ```js
var number = 2; var number = 2;
var unit = "year" var unit = "year"
var formatResult = relativeTimeFormat.format(number, unit); var formatResult = relativeTimeFormat.format(number, unit);
``` ```
3. 获取相对时间格式化结果的各个部分 3. 获取相对时间格式化结果的各个部分。
获取相对时间格式化结果的各个部分,从而自定义格式化结果。 获取相对时间格式化结果的各个部分,从而自定义格式化结果。
``` ```js
var number = 2; var number = 2;
var unit = "year" var unit = "year"
var formatResult = relativeTimeFormat.formatToParts(number, unit); var formatResult = relativeTimeFormat.formatToParts(number, unit);
``` ```
4. 访问相对时间格式化对象的相关属性 4. 访问相对时间格式化对象的相关属性。
RelativeTimeFormat的resolvedOptions方法会返回一个对象,该对象包含了RelativeTimeFormat对象的所有相关属性及其值,完整的属性列表参见[ RelativeTimeFormatResolvedOptions](../reference/apis/js-apis-intl.md)。 RelativeTimeFormat的resolvedOptions方法会返回一个对象,该对象包含了RelativeTimeFormat对象的所有相关属性及其值,完整的属性列表参见[ RelativeTimeFormatResolvedOptions](../reference/apis/js-apis-intl.md)。
``` ```js
var options = numberFormat.resolvedOptions(); var options = numberFormat.resolvedOptions();
``` ```
......
...@@ -15,13 +15,13 @@ ...@@ -15,13 +15,13 @@
包含流程:创建实例、读取图片信息、读写pixelmap、更新数据、打包像素、释放资源等流程。 包含流程:创建实例、读取图片信息、读写pixelmap、更新数据、打包像素、释放资源等流程。
```js ```js
const Color = new ArrayBuffer(96);//用于存放图像像素数据 const color = new ArrayBuffer(96);//用于存放图像像素数据
let opts = { alphaType: 0, editable: true, pixelFormat: 4, scaleMode: 1, size: { height: 2, width: 3 } } //图像像素数据 let opts = { alphaType: 0, editable: true, pixelFormat: 4, scaleMode: 1, size: { height: 2, width: 3 } } //图像像素数据
//创建pixelmap对象 //创建pixelmap对象
const Color = new ArrayBuffer(96); const color = new ArrayBuffer(96);
let opts = { alphaType: 0, editable: true, pixelFormat: 4, scaleMode: 1, size: { height: 2, width: 3 } } let opts = { alphaType: 0, editable: true, pixelFormat: 4, scaleMode: 1, size: { height: 2, width: 3 } }
image.createPixelMap(Color, opts, pixelmap => { image.createPixelMap(color, opts, pixelmap => {
expect(pixelmap !== null).assertTrue(); expect(pixelmap !== null).assertTrue();
console.info('TC_001-1 success'); console.info('TC_001-1 success');
done(); done();
......
# full-SDK替换指南
**public-SDK**是提供给应用开发的工具包,跟随DevEco Studio下载,不包含系统应用所需要的高权限API
**full-SDK**是提供给OEM厂商开发应用的工具包,不能随DevEco Studio下载,包含了系统应用所需要的高权限API
三方开发者通过DevEco Studio自动下载的**API8版本**SDK均为**public版本**。public-SDK**不支持**开发者使用**所有的系统API**,包括animator组件、xcomponent组件、@ohos.application.abilityManager.d.ts、@ohos.application.formInfo.d.ts、@ohos.bluetooth.d.ts等,如工程必须依赖于系统API,请按照以下步骤替换**full-SDK**
## 下载full-SDK(这里以3.1.1 Release版本为例)
full-SDK需要手动下载。请参考[OpenHarmony 3.1.1 Release版本说明书](https://gitee.com/openharmony/docs/blob/master/zh-cn/release-notes/OpenHarmony-v3.1.1-release.md)中的获取方式,获取所需的操作系统的full-SDK。
![image-20220613161049897](figures/zh-cn_image_0000001655128646.png)
## 查看本地SDK路径(此处以ets工程为例,1.0工程请以相同方式替换js-SDK)
打开DevEco Studio——>Tools——>OpenHarmony SDK Manager,查看本地SDK安装路径。
![](figures/zh-cn_image_0000001655128939.png)
![image-20220613160524053](figures/zh-cn_image_0000001655128998.png)
## 替换SDK
1. 确认下载的SDK版本是否为full-SDK
a.检查下载文件名是否包含full-SDK字样
![image-20220613220702504](figures/zh-cn_image_0000001655129232.png)
b.检查api中是否包含系统API(@ohos.application.abilityManager.d.ts、@ohos.application.formInfo.d.ts、@ohos.bluetooth.d.ts等)
注:系统api判定标准以发布api指导文档为主。
2. 替换SDK,以public-SDK-3.1.6.6版本为例。
以windows为例:
a.解压已下载的full-SDK文件:`ets-windows-3.1.6.5-Release.zip`
![image-20220613165018184](figures/zh-cn_image_0000001655129264.png)
b.替换SDK文件
**备份本地SDK**(复制并重命名ets目录下版本信息目录名,或者将ets目录拷贝至其他本地路径)
打开获取到的本地已安装SDK文件路径并进行备份。
![image-20220613161352157](figures/zh-cn_image_0000001655129041.png)
注:备份版本信息目录名称只要与其下`oh-uni-package.json`配置文件的version字段不一致即可,如下图所示,备份3.1.6.6版本sdk
![image-20220613165018184](figures/zh-cn_image_0000001655129398.png)
`oh-uni-package.json`文件配置信息如下:
```
{
"apiVersion": "8",
"displayName": "Ets",
"meta": {
"metaVersion": "3.0.0"
},
"path": "ets",
"releaseType": "Release",
"version": "3.1.6.6"
}
```
**删除原SDK(3.1.6.6)目录中的所有文件**(否则可能会导致文件无法全部覆盖)
**拷贝full-SDK至本地SDK路径**
将下载的full-SDK文件包中`ets`目录下的所有文件替换至本地SDK路径下`ets\3.1.6.6`目录中
修改`oh-uni-package.json`配置文件的version字段为当前SDK版本号
`3.1.6.6\build-tools\ets-loader`目录中打开cmd/powerShell窗口,输入命令`npm install`下载**node_modules**依赖包
![image-20220613171111405](figures/zh-cn_image_0000001655129333.png)
c.验证系统API接口
![image-20220613213038104](figures/zh-cn_image_0000001655129372.png)
\ No newline at end of file
...@@ -116,15 +116,15 @@ app实例: ...@@ -116,15 +116,15 @@ app实例:
"bundleName": "com.example.myapplication", "bundleName": "com.example.myapplication",
"vendor": "example", "vendor": "example",
"version": { "version": {
"code": 1, "code": 1,
"name": "1.0" "name": "1.0"
}, },
"apiVersion": { "apiVersion": {
"compatible": 4, "compatible": 4,
"target": 5, "target": 5,
"releaseType": "Beta1" "releaseType": "Beta1"
} }
} }
``` ```
### deviceConfig对象的内部结构 ### deviceConfig对象的内部结构
...@@ -187,24 +187,24 @@ deviceConfig示例: ...@@ -187,24 +187,24 @@ deviceConfig示例:
```json ```json
"deviceConfig": { "deviceConfig": {
"default": { "default": {
"process": "com.example.test.example", "process": "com.example.test.example",
"supportBackup": false, "supportBackup": false,
"network": { "network": {
"cleartextTraffic": true, "cleartextTraffic": true,
"securityConfig": { "securityConfig": {
"domainSettings": { "domainSettings": {
"cleartextPermitted": true, "cleartextPermitted": true,
"domains": [ "domains": [
{ {
"subdomains": true, "subdomains": true,
"name": "example.ohos.com" "name": "example.ohos.com"
} }
] ]
} }
} }
} }
} }
} }
``` ```
...@@ -240,33 +240,33 @@ module示例: ...@@ -240,33 +240,33 @@ module示例:
```json ```json
"module": { "module": {
"mainAbility": "MainAbility", "mainAbility": "MainAbility",
"package": "com.example.myapplication.entry", "package": "com.example.myapplication.entry",
"name": ".MyOHOSAbilityPackage", "name": ".MyOHOSAbilityPackage",
"description": "$string:description_application", "description": "$string:description_application",
"supportModes": [ "supportModes": [
"drive" "drive"
], ],
"deviceType": [ "deviceType": [
"car" "car"
], ],
"distro": { "distro": {
"moduleName": "ohos_entry", "moduleName": "ohos_entry",
"moduleType": "entry" "moduleType": "entry"
}, },
"abilities": [ "abilities": [
... ...
], ],
"shortcuts": [ "shortcuts": [
... ...
], ],
"js": [ "js": [
... ...
], ],
"reqPermissions": [ "reqPermissions": [
... ...
], ],
"colorMode": "light" "colorMode": "light"
} }
``` ```
...@@ -283,9 +283,9 @@ distro示例: ...@@ -283,9 +283,9 @@ distro示例:
```json ```json
"distro": { "distro": {
"moduleName": "ohos_entry", "moduleName": "ohos_entry",
"moduleType": "entry", "moduleType": "entry",
"installationFree": true, "installationFree": true,
"deliveryWithInstall": true "deliveryWithInstall": true
} }
``` ```
...@@ -398,8 +398,7 @@ abilities示例: ...@@ -398,8 +398,7 @@ abilities示例:
"label": "$media:example", "label": "$media:example",
"launchType": "standard", "launchType": "standard",
"orientation": "unspecified", "orientation": "unspecified",
"permissions": [ "permissions": [],
],
"visible": true, "visible": true,
"skills": [ "skills": [
{ {
...@@ -488,13 +487,13 @@ skills示例: ...@@ -488,13 +487,13 @@ skills示例:
], ],
"uris": [ "uris": [
{ {
"scheme": "http", "scheme": "http",
"host": "www.example.com", "host": "www.example.com",
"port": "8080", "port": "8080",
"path": "query/student/name", "path": "query/student/name",
"type": "text/*" "type": "text/*"
} }
] ]
} }
] ]
``` ```
...@@ -750,18 +749,18 @@ commonEvents示例: ...@@ -750,18 +749,18 @@ commonEvents示例:
```json ```json
"commonEvents": [ "commonEvents": [
{ {
"name":"MainAbility", "name":"MainAbility",
"permission": "string", "permission": "string",
"data":[ "data":[
"string", "string",
"string" "string"
], ],
"events": [ "events": [
"string", "string",
"string" "string"
] ]
} }
] ]
``` ```
...@@ -774,8 +773,8 @@ commonEvents示例: ...@@ -774,8 +773,8 @@ commonEvents示例:
```json ```json
"testRunner": { "testRunner": {
"name": "myTestRUnnerName", "name": "myTestRUnnerName",
"srcPath": "etc/test/TestRunner.ts" "srcPath": "etc/test/TestRunner.ts"
} }
``` ```
...@@ -21,7 +21,7 @@ app.json示例: ...@@ -21,7 +21,7 @@ app.json示例:
```json ```json
{ {
"app": { "app": {
"bundleName": "com.application.music", "bundleName": "com.application.music",
"vendor": "application", "vendor": "application",
"versionCode": 1, "versionCode": 1,
...@@ -233,13 +233,13 @@ deviceTypes示例 : ...@@ -233,13 +233,13 @@ deviceTypes示例 :
```json ```json
{ {
"module": { "module": {
"name": "myHapName", "name": "myHapName",
"type": "har", "type": "har",
"deviceTypes" : [ "deviceTypes" : [
"wearable" "wearable"
] ]
} }
} }
``` ```
...@@ -604,7 +604,7 @@ form示例 : ...@@ -604,7 +604,7 @@ form示例 :
"supportDimensions": [ "supportDimensions": [
"2*2" "2*2"
], ],
"metadata": [ "metadata": [
{ {
"name": "string", "name": "string",
"value": "string", "value": "string",
...@@ -620,18 +620,14 @@ form示例 : ...@@ -620,18 +620,14 @@ form示例 :
```json ```json
{ {
"extensionAbilities": [ "extensionAbilities": [{
{ "name": "MyForm",
"name": "MyForm", "type": "form",
"type": "form", "metadata": [{
"metadata": [ "name": "ohos.extability.form",
{ "resource": "$profile:form_config"
"name": "ohos.extability.form", }]
"resource": "$profile:form_config", }]
}
],
}
]
} }
``` ```
...@@ -656,19 +652,15 @@ metadata中指定shortcut信息,其中 : ...@@ -656,19 +652,15 @@ metadata中指定shortcut信息,其中 :
```json ```json
{ {
"shortcuts": [ "shortcuts": [{
{ "shortcutId": "id_test1",
"shortcutId": "id_test1", "label": "$string:shortcut",
"label": "$string:shortcut", "icon": "$media:aa_icon",
"icon": "$media:aa_icon", "wants": [{
"wants": [ "bundleName": "com.ohos.hello",
{ "abilityName": "MainAbility"
"bundleName": "com.ohos.hello" }]
"abilityName": "MainAbility" }]
}
]
}
]
} }
``` ```
...@@ -678,23 +670,19 @@ metadata中指定shortcut信息,其中 : ...@@ -678,23 +670,19 @@ metadata中指定shortcut信息,其中 :
{ {
"module": { "module": {
"name": "MyAbilityStage", "name": "MyAbilityStage",
"abilities" : [ "abilities": [{
{ "name": "MyAbility",
"name" : "MyAbility", "srcEntrance": "./abilities/MyAbility.ts",
"srcEntrance": "./abilities/MyAbility.ts", "skills": [{
"skills": [{ "actions": ["action.system.home"],
"actions": ["action.system.home"], "entities": ["entity.system.home"],
"entities": ["entity.system.home"], "uris": []
"uris": [] }],
}], "metadata": [{
"metadata": [ "name": "ohos.ability.shortcuts",
{ "resource": "$profile:shortcuts_config"
"name": "ohos.ability.shortcuts", }]
"resource": "$profile:shortcuts_config", }]
}
],
}
]
} }
} }
``` ```
...@@ -721,20 +709,18 @@ metadata中指定commonEvent信息,其中 : ...@@ -721,20 +709,18 @@ metadata中指定commonEvent信息,其中 :
```json ```json
{ {
"commonEvents": [ "commonEvents": [{
{ "name": "abilityName",
"name": "abilityName", "permission": "string",
"permission": "string", "types": [
"types": [ "string",
"string", "string"
"string" ],
], "events": [
"events": [ "string",
"string", "string"
"string" ]
] }]
}
]
} }
``` ```
...@@ -746,12 +732,10 @@ metadata中指定commonEvent信息,其中 : ...@@ -746,12 +732,10 @@ metadata中指定commonEvent信息,其中 :
"name": "mySubscriber", "name": "mySubscriber",
"srcEntrance": "./extension/my_subscriber.js", "srcEntrance": "./extension/my_subscriber.js",
"type": "staticSubscriber", "type": "staticSubscriber",
"metadata": [ "metadata": [{
{ "name": "ohos.extability.staticSubscriber",
"name": "ohos.extability.staticSubscriber", "resource": "$profile:common_event_config",
"resource": "$profile:common_event_config", }],
}
],
} }
] ]
``` ```
...@@ -814,17 +798,17 @@ distroFilter示例 : ...@@ -814,17 +798,17 @@ distroFilter示例 :
```json ```json
"distroFilter": [ "distroFilter": [
{ {
"apiVersion": { "apiVersion": {
"policy": "include", "policy": "include",
"value": [4,5] "value": [4, 5]
}, },
"screenShape": { "screenShape": {
"policy": "include", "policy": "include",
"value": ["circle","rect"] "value": ["circle", "rect"]
}, },
"screenWindow": { "screenWindow": {
"policy": "include", "policy": "include",
"value": ["454*454","466*466"] "value": ["454*454", "466*466"]
} }
} }
] ]
...@@ -837,16 +821,13 @@ distroFilter示例 : ...@@ -837,16 +821,13 @@ distroFilter示例 :
{ {
"name": "mySubscriber", "name": "mySubscriber",
"srcEntrance": "./extension/my_subscriber.js", "srcEntrance": "./extension/my_subscriber.js",
"type": "staticSubscriber", "type": "staticSubscriber",
"metadata": [ "metadata": [{
{ "name": "ohos.extability.staticSubscriber",
"name": "ohos.extability.staticSubscriber", "resource": "$profile:distroFilter_config",
"resource": "$profile:distroFilter_config", }],
}
],
} }
] ]
``` ```
#### testRunner对象内部结构 #### testRunner对象内部结构
...@@ -858,8 +839,8 @@ distroFilter示例 : ...@@ -858,8 +839,8 @@ distroFilter示例 :
``` ```
"testRunner": { "testRunner": {
"name": "myTestRUnnerName", "name": "myTestRUnnerName",
"srcPath": "etc/test/TestRunner.ts" "srcPath": "etc/test/TestRunner.ts"
} }
``` ```
...@@ -81,6 +81,7 @@ ...@@ -81,6 +81,7 @@
- 图形图像 - 图形图像
- [@ohos.display (屏幕属性)](js-apis-display.md) - [@ohos.display (屏幕属性)](js-apis-display.md)
- [@ohos.effectKit (图像效果)](js-apis-effectKit.md)
- [@ohos.screenshot (屏幕截图)](js-apis-screenshot.md) - [@ohos.screenshot (屏幕截图)](js-apis-screenshot.md)
- [@ohos.window (窗口)](js-apis-window.md) - [@ohos.window (窗口)](js-apis-window.md)
- [webgl (WebGL)](js-apis-webgl.md) - [webgl (WebGL)](js-apis-webgl.md)
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
> API9 当前为Canary版本,仅供试用,不保证接口可稳定调用。 > API9 当前为Canary版本,仅供试用,不保证接口可稳定调用。
## 导入模块 ## 导入模块
``` ```js
import bundle from '@ohos.bundle'; import bundle from '@ohos.bundle';
``` ```
...@@ -69,8 +69,6 @@ bundle.getApplicationInfo(bundleName, bundleFlags, userId) ...@@ -69,8 +69,6 @@ bundle.getApplicationInfo(bundleName, bundleFlags, userId)
}) })
``` ```
## bundle.getApplicationInfo ## bundle.getApplicationInfo
getApplicationInfo(bundleName: string, bundleFlags: number, userId: number, callback: AsyncCallback\<ApplicationInfo>): void getApplicationInfo(bundleName: string, bundleFlags: number, userId: number, callback: AsyncCallback\<ApplicationInfo>): void
...@@ -109,7 +107,6 @@ bundle.getApplicationInfo(bundleName, bundleFlags, userId, (err, data) => { ...@@ -109,7 +107,6 @@ bundle.getApplicationInfo(bundleName, bundleFlags, userId, (err, data) => {
}) })
``` ```
## bundle.getApplicationInfo ## bundle.getApplicationInfo
getApplicationInfo(bundleName: string, bundleFlags: number, callback: AsyncCallback\<ApplicationInfo>): void getApplicationInfo(bundleName: string, bundleFlags: number, callback: AsyncCallback\<ApplicationInfo>): void
...@@ -146,7 +143,6 @@ bundle.getApplicationInfo(bundleName, bundleFlags, (err, data) => { ...@@ -146,7 +143,6 @@ bundle.getApplicationInfo(bundleName, bundleFlags, (err, data) => {
}) })
``` ```
## bundle.getAllBundleInfo ## bundle.getAllBundleInfo
getAllBundleInfo(bundleFlag: BundleFlag, userId?: number): Promise<Array\<BundleInfo>> getAllBundleInfo(bundleFlag: BundleFlag, userId?: number): Promise<Array\<BundleInfo>>
...@@ -187,8 +183,6 @@ bundle.getAllBundleInfo(bundleFlag, userId) ...@@ -187,8 +183,6 @@ bundle.getAllBundleInfo(bundleFlag, userId)
}) })
``` ```
## bundle.getAllBundleInfo ## bundle.getAllBundleInfo
getAllBundleInfo(bundleFlag: BundleFlag, callback: AsyncCallback<Array\<BundleInfo>>): void getAllBundleInfo(bundleFlag: BundleFlag, callback: AsyncCallback<Array\<BundleInfo>>): void
...@@ -223,7 +217,6 @@ bundle.getAllBundleInfo(bundleFlag, (err, data) => { ...@@ -223,7 +217,6 @@ bundle.getAllBundleInfo(bundleFlag, (err, data) => {
}) })
``` ```
## bundle.getAllBundleInfo ## bundle.getAllBundleInfo
getAllBundleInfo(bundleFlag: BundleFlag, userId: number, callback: AsyncCallback<Array\<BundleInfo>>): void getAllBundleInfo(bundleFlag: BundleFlag, userId: number, callback: AsyncCallback<Array\<BundleInfo>>): void
...@@ -260,8 +253,6 @@ bundle.getAllBundleInfo(bundleFlag, userId, (err, data) => { ...@@ -260,8 +253,6 @@ bundle.getAllBundleInfo(bundleFlag, userId, (err, data) => {
}) })
``` ```
## bundle.getBundleInfo ## bundle.getBundleInfo
getBundleInfo(bundleName: string, bundleFlags: number, options?: BundleOptions): Promise\<BundleInfo> getBundleInfo(bundleName: string, bundleFlags: number, options?: BundleOptions): Promise\<BundleInfo>
...@@ -306,8 +297,6 @@ bundle.getBundleInfo(bundleName, bundleFlags, options) ...@@ -306,8 +297,6 @@ bundle.getBundleInfo(bundleName, bundleFlags, options)
}) })
``` ```
## bundle.getBundleInfo ## bundle.getBundleInfo
getBundleInfo(bundleName: string, bundleFlags: number, callback: AsyncCallback\<BundleInfo>): void getBundleInfo(bundleName: string, bundleFlags: number, callback: AsyncCallback\<BundleInfo>): void
......
...@@ -832,7 +832,7 @@ getAbilityInfo(callback: AsyncCallback\<AbilityInfo>): void ...@@ -832,7 +832,7 @@ getAbilityInfo(callback: AsyncCallback\<AbilityInfo>): void
| 名称 | 类型 | 必填 | 描述 | | 名称 | 类型 | 必填 | 描述 |
| -------- | ---------------------- | ---- | ------------------------- | | -------- | ---------------------- | ---- | ------------------------- |
| callback | AsyncCallback\<[AbilityInfo](#abilityInfo)> | 是 | 回调函数,可以在回调函数中处理接口返回值,返回当前归属Ability详细信息。| | callback | AsyncCallback\<[AbilityInfo](js-apis-bundle-AbilityInfo.md)> | 是 | 回调函数,可以在回调函数中处理接口返回值,返回当前归属Ability详细信息。|
**示例:** **示例:**
...@@ -860,7 +860,7 @@ getAbilityInfo(): Promise\<AbilityInfo> ...@@ -860,7 +860,7 @@ getAbilityInfo(): Promise\<AbilityInfo>
| 类型 | 说明 | | 类型 | 说明 |
| --------------- | ------------------------- | | --------------- | ------------------------- |
| Promise\<[AbilityInfo](#abilityInfo)> | 返回当前归属Ability详细信息。 | | Promise\<[AbilityInfo](js-apis-bundle-AbilityInfo.md)> | 返回当前归属Ability详细信息。 |
**示例:** **示例:**
......
# EnterpriseAdminExtentionAbility # EnterpriseAdminExtentionAbility
EnterpriseAdminExtentionAbility模块提供企业管理员应用扩展相关接口。 本模块提供企业管理员应用拓展能力。
企业管理员应用需要存在一个EnterpriseAdminExtentionAbility并重写相关接口,以此具备模块提供的各项能力,比如接收由系统发送的该应用被激活或者去激活的通知。
> **说明:** > **说明:**
> >
> 本模块首批接口从API version 9 开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 > 本模块首批接口从API version 9 开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
>
> 本模块接口仅可在Stage模型下使用。 > 本模块接口仅可在Stage模型下使用。
## 导入模块 ## 导入模块
```ts ```ts
...@@ -22,12 +26,12 @@ onAdminEnabled(): void ...@@ -22,12 +26,12 @@ onAdminEnabled(): void
**示例:** **示例:**
```ts ```ts
export default class EnterpriseAdminAbility extends EnterpriseAdminExtensionAbility { export default class EnterpriseAdminAbility extends EnterpriseAdminExtensionAbility {
onAdminEnabled() { onAdminEnabled() {
} }
}; };
``` ```
## EnterpriseAdminExtentionAbility.onAdminDisabled ## EnterpriseAdminExtentionAbility.onAdminDisabled
...@@ -38,11 +42,10 @@ onAdminDisabled(): void ...@@ -38,11 +42,10 @@ onAdminDisabled(): void
**系统能力**:SystemCapability.Customation.EnterpriseDeviceManager **系统能力**:SystemCapability.Customation.EnterpriseDeviceManager
**示例:** **示例:**
```ts ```ts
export default class EnterpriseAdminAbility extends EnterpriseAdminExtensionAbility { export default class EnterpriseAdminAbility extends EnterpriseAdminExtensionAbility {
onAdminDisabled() { onAdminDisabled() {
} }
}; };
``` ```
\ No newline at end of file
...@@ -68,6 +68,36 @@ promise.then(data => { ...@@ -68,6 +68,36 @@ promise.then(data => {
}); });
``` ```
### verifyAccessTokenSync<sup>9+</sup>
verifyAccessTokenSync(tokenID: number, permissionName: string): GrantStatus
校验应用是否被授予权限,同步返回结果。
**系统能力:** SystemCapability.Security.AccessToken
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------- | ---- | ------------------------------------------ |
| tokenID | number | 是 | 要校验应用的身份标识。 |
| permissionName | string | 是 | 需要校验的权限名称。 |
**返回值:**
| 类型 | 说明 |
| :------------ | :---------------------------------- |
| [GrantStatus](#grantstatus) | 枚举实例,返回授权状态。 |
**示例:**
```js
var AtManager = abilityAccessCtrl.createAtManager();
let tokenID = 0;
let data = verifyAccessTokenSync(tokenID, "ohos.permission.GRANT_SENSITIVE_PERMISSIONS");
console.log(`data->${JSON.stringify(data)}`);
```
### grantUserGrantedPermission ### grantUserGrantedPermission
grantUserGrantedPermission(tokenID: number, permissionName: string, permissionFlag: number): Promise&lt;number&gt; grantUserGrantedPermission(tokenID: number, permissionName: string, permissionFlag: number): Promise&lt;number&gt;
......
...@@ -20,11 +20,26 @@ import Want from '@ohos.application.Want'; ...@@ -20,11 +20,26 @@ import Want from '@ohos.application.Want';
| ----------- | -------- | -------------------- | ---- | ------------------------------------------------------------ | | ----------- | -------- | -------------------- | ---- | ------------------------------------------------------------ |
| deviceId | 只读 | string | 否 | 表示运行指定Ability的设备ID。 | | deviceId | 只读 | string | 否 | 表示运行指定Ability的设备ID。 |
| bundleName | 只读 | string | 否 | 表示包描述。如果在Want中同时指定了BundleName和AbilityName,则Want可以直接匹配到指定的Ability。 | | bundleName | 只读 | string | 否 | 表示包描述。如果在Want中同时指定了BundleName和AbilityName,则Want可以直接匹配到指定的Ability。 |
| abilityName | 只读 | string | 否 | 表示待启动的Ability名称。如果在Want中该字段同时指定了package和AbilityName,则Want可以直接匹配到指定的Ability。 | | abilityName | 只读 | string | 否 | 表示待启动的Ability名称。如果在Want中该字段同时指定了package和AbilityName,则Want可以直接匹配到指定的Ability。AbilityName需要在一个应用的范围内保证唯一。 |
| uri | 只读 | string | 否 | 表示Uri描述。如果在Want中指定了Uri,则Want将匹配指定的Uri信息,包括scheme, schemeSpecificPart, authority和path信息。 | | uri | 只读 | string | 否 | 表示Uri描述。如果在Want中指定了Uri,则Want将匹配指定的Uri信息,包括scheme, schemeSpecificPart, authority和path信息。 |
| type | 只读 | string | 否 | 表示MIME type类型描述,比如:"text/plain" 、 "image/*"等。 | | type | 只读 | string | 否 | 表示MIME type类型描述,比如:"text/plain" 、 "image/*"等。 |
| flags | 只读 | number | 否 | 表示处理Want的方式。默认传数字,具体参考:[flags说明](js-apis-featureAbility.md#flags说明)。 | | flags | 只读 | number | 否 | 表示处理Want的方式。默认传数字,具体参考:[flags说明](js-apis-featureAbility.md#flags说明)。 |
| action | 只读 | string | 否 | 表示action选项描述。 | | action | 只读 | string | 否 | 表示action选项描述。 |
| parameters | 只读 | {[key: string]: any} | 否 | 表示WantParams描述,由开发者自行决定传入的键值对。默认会携带以下key值:<br>ohos.aafwk.callerPid 表示拉起方的pid。<br>ohos.aafwk.param.callerToken 表示拉起方的token。<br>ohos.aafwk.param.callerUid 表示发起方的uid。[Bundle](js-apis-Bundle.js)模块中userId参数,可用于获取应用信息、包信息等,具体参考:[Bundle](js-apis-Bundle.js)。 | | parameters | 只读 | {[key: string]: any} | 否 | 表示WantParams描述,由开发者自行决定传入的键值对。默认会携带以下key值:<br>ohos.aafwk.callerPid 表示拉起方的pid。<br>ohos.aafwk.param.callerToken 表示拉起方的token。<br>ohos.aafwk.param.callerUid 表示发起方的uid。[Bundle](js-apis-Bundle.js)模块中userId参数,可用于获取应用信息、包信息等,具体参考:[Bundle](js-apis-Bundle.js)。 |
| entities | 只读 | Array\<string> | 否 | 表示entities相关描述。 | | entities | 只读 | Array\<string> | 否 | 表示entities相关描述。 |
| moduleName<sup>9+</sup> | 只读 | string | 否 | 表示待启动的Ability所属的模块(module)。同一应用的不同hap的组件可能重名,仅通过BundleName和AbilityName无法区分时,可以通过设置moduleName加以区分,以匹配到指定的Ability。 | | | moduleName<sup>9+</sup> | 只读 | string | 否 | 表示待启动的Ability所属的模块(module)。 |
**示例:**
``` js
var want = {
"deviceId": "", // deviceId为空表示本设备
"bundleName": "com.extreme.test",
"abilityName": "MainAbility",
"moduleName": "entry" // moduleName非必选
};
this.context.startAbility(want, (error) => {
// 显式拉起Ability,通过bundleName、abilityName和moduleName可以唯一确定一个Ability
console.log("error.code = " + error.code)
})
```
# ApplicationInfo # ApplicationInfo
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 本模块首批接口从API version 7 开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 > 本模块首批接口从API version 7 开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
应用程序信息 应用程序信息
## ApplicationInfo ## ApplicationInfo
...@@ -41,4 +37,4 @@ ...@@ -41,4 +37,4 @@
| entityType<sup>8+</sup> | string | 是 | 否 | 应用程序的实体类型。 | | entityType<sup>8+</sup> | string | 是 | 否 | 应用程序的实体类型。 |
| fingerprint<sup>9+</sup> | string | 是 | 否 | 应用程序的签名证书指纹信息,即开发者申请的签名证书的sha256值。 | | fingerprint<sup>9+</sup> | string | 是 | 否 | 应用程序的签名证书指纹信息,即开发者申请的签名证书的sha256值。 |
| appDistributionType<sup>9+</sup> | string | 是 | 否 | 应用程序签名证书的分发类型,分为:app_gallery、enterprise、os_integration和crowdtesting。 | | appDistributionType<sup>9+</sup> | string | 是 | 否 | 应用程序签名证书的分发类型,分为:app_gallery、enterprise、os_integration和crowdtesting。 |
| appProvisionType<sup>9+</sup> | string | 是 | 否 | 应用程序签名证书文件的类型,分为debug和release两种类型。| | appProvisionType<sup>9+</sup> | string | 是 | 否 | 应用程序签名证书文件的类型,分为debug和release两种类型。|
\ No newline at end of file
...@@ -6,15 +6,12 @@ ...@@ -6,15 +6,12 @@
> - 从API Version 8开始,该接口不再维护,推荐使用新接口[`@ohos.hiTraceMeter`](js-apis-hitracemeter.md)。 > - 从API Version 8开始,该接口不再维护,推荐使用新接口[`@ohos.hiTraceMeter`](js-apis-hitracemeter.md)。
> - 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 > - 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
## 导入模块 ## 导入模块
``` ```js
import bytrace from '@ohos.bytrace'; import bytrace from '@ohos.bytrace';
``` ```
## bytrace.startTrace ## bytrace.startTrace
startTrace(name: string, taskId: number, expectedTime?: number): void startTrace(name: string, taskId: number, expectedTime?: number): void
...@@ -36,12 +33,11 @@ startTrace(name: string, taskId: number, expectedTime?: number): void ...@@ -36,12 +33,11 @@ startTrace(name: string, taskId: number, expectedTime?: number): void
**示例:** **示例:**
``` ```js
bytrace.startTrace("myTestFunc", 1); bytrace.startTrace("myTestFunc", 1);
bytrace.startTrace("myTestFunc", 1, 5); // 从startTrace到finishTrace流程的期望耗时为5ms bytrace.startTrace("myTestFunc", 1, 5); // 从startTrace到finishTrace流程的期望耗时为5ms
``` ```
## bytrace.finishTrace ## bytrace.finishTrace
finishTrace(name: string, taskId: number): void finishTrace(name: string, taskId: number): void
...@@ -62,7 +58,7 @@ finishTrace(name: string, taskId: number): void ...@@ -62,7 +58,7 @@ finishTrace(name: string, taskId: number): void
**示例:** **示例:**
``` ```js
bytrace.finishTrace("myTestFunc", 1); bytrace.finishTrace("myTestFunc", 1);
``` ```
...@@ -88,7 +84,6 @@ bytrace.startTrace("myTestFunc", 1); // 第二个跟踪任务开始,同名 ...@@ -88,7 +84,6 @@ bytrace.startTrace("myTestFunc", 1); // 第二个跟踪任务开始,同名
bytrace.finishTrace("myTestFunc", 1); bytrace.finishTrace("myTestFunc", 1);
``` ```
## bytrace.traceByValue ## bytrace.traceByValue
traceByValue(name: string, count: number): void traceByValue(name: string, count: number): void
...@@ -105,7 +100,7 @@ traceByValue(name: string, count: number): void ...@@ -105,7 +100,7 @@ traceByValue(name: string, count: number): void
**示例:** **示例:**
``` ```js
let traceCount = 3; let traceCount = 3;
bytrace.traceByValue("myTestCount", traceCount); bytrace.traceByValue("myTestCount", traceCount);
traceCount = 4; traceCount = 4;
......
...@@ -185,7 +185,7 @@ on(type: 'add'|'remove'|'change', callback: Callback&lt;number&gt;): void ...@@ -185,7 +185,7 @@ on(type: 'add'|'remove'|'change', callback: Callback&lt;number&gt;): void
**参数:** **参数:**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- | | -------- | -------- | -------- | -------- |
| type | string | 是 | 监听事件。<br/>-&nbsp;type为"add",表示增加显示设备事件。<br/>-&nbsp;type为"remove",表示移除显示设备事件。<br/>-&nbsp;type为"change",表示改变显示设备事件。 | | type | string | 是 | 监听事件。<br/>- type为"add",表示增加显示设备事件。<br/>- type为"remove",表示移除显示设备事件。<br/>- type为"change",表示改变显示设备事件。 |
| callback | Callback&lt;number&gt; | 是 | 回调函数。返回监听到的显示设备的id。 | | callback | Callback&lt;number&gt; | 是 | 回调函数。返回监听到的显示设备的id。 |
**示例:** **示例:**
...@@ -208,7 +208,7 @@ off(type: 'add'|'remove'|'change', callback?: Callback&lt;number&gt;): void ...@@ -208,7 +208,7 @@ off(type: 'add'|'remove'|'change', callback?: Callback&lt;number&gt;): void
**参数:** **参数:**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- | | -------- | -------- | -------- | -------- |
| type | string | 是 | 设置监听类型。<br/>-&nbsp;type为"add",表示监听增加显示设备。<br/>-&nbsp;type为"remove",表示监听移除显示设备。<br/>-&nbsp;type为"change",表示监听改变显示设备。 | | type | string | 是 | 监听事件。<br/>- type为"add",表示增加显示设备事件。<br/>- type为"remove",表示移除显示设备事件。<br/>- type为"change",表示改变显示设备事件。 |
| callback | Callback&lt;number&gt; | 否 | 回调函数。返回监听到的显示设备的id。 | | callback | Callback&lt;number&gt; | 否 | 回调函数。返回监听到的显示设备的id。 |
**示例:** **示例:**
......
# distributedMissionManager
distributedMissionManager模块提供跨设备系统任务管理能力,包括注册系统任务状态监听、取消系统任务状态监听、开始同步远端任务列表、停止同步远端任务列表操作。
> **说明:**
>
> 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
## 导入模块
```
import distributedMissionManager from '@ohos.distributedMissionManager'
```
## 权限列表
ohos.permission.MANAGE_MISSIONS
## distributedMissionManager.registerMissionListener
registerMissionListener(parameter: MissionDeviceInfo, options: MissionCallback, callback: AsyncCallback&lt;void&gt;): void;
注册系统任务状态监听,以回调函数的方式返回。
**需要权限**:ohos.permission.MANAGE_MISSIONS
**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission
**系统API**: 此接口为系统接口,三方应用不支持调用。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| parameter | <a href="#missiondeviceinfo">MissionDeviceInfo</a> | 是 | 注册监听设备信息。 |
| options | <a href="#missioncallback">MissionCallback</a> | 是 | 注册的回调方法。 |
| callback | AsyncCallback&lt;void&gt; | 是 | 执行结果回调函数。 |
**示例:**
```ts
function NotifyMissionsChanged(deviceId) {
console.log('NotifyMissionsChanged deviceId ' + JSON.stringify(deviceId));
}
function NotifySnapshot(deviceId, missionId) {
console.log('NotifySnapshot deviceId ' + JSON.stringify(deviceId));
console.log('NotifySnapshot missionId ' + JSON.stringify(missionId));
}
function NotifyNetDisconnect(deviceId, state) {
console.log('NotifyNetDisconnect deviceId ' + JSON.stringify(deviceId));
console.log('NotifyNetDisconnect state ' + JSON.stringify(state));
}
var parameter = {
deviceId: remoteDeviceId
};
var options = {
notifyMissionsChanged: NotifyMissionsChanged,
notifySnapshot: NotifySnapshot,
notifyNetDisconnect: NotifyNetDisconnect
}
distributedMissionManager.registerMissionListener(parameter, options, (error) => {
console.log("error.code = " + error.code)
})
```
## distributedMissionManager.registerMissionListener
registerMissionListener(parameter: MissionDeviceInfo, options: MissionCallback): Promise&lt;void&gt;
注册系统任务状态监听,以promise的方式返回。
**需要权限**:ohos.permission.MANAGE_MISSIONS
**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission
**系统API**: 此接口为系统接口,三方应用不支持调用。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| parameter | <a href="#missiondeviceinfo">MissionDeviceInfo</a> | 是 | 设备信息。 |
| options | <a href="#missioncallback">MissionCallback</a> | 是 | 注册的回调方法。 |
**返回值:**
| 类型 | 说明 |
| -------- | -------- |
| Promise&lt;void&gt; | promise方式返回执行结果。 |
**示例:**
```ts
function NotifyMissionsChanged(deviceId) {
console.log('NotifyMissionsChanged deviceId ' + JSON.stringify(deviceId));
}
function NotifySnapshot(deviceId, missionId) {
console.log('NotifySnapshot deviceId ' + JSON.stringify(deviceId));
console.log('NotifySnapshot missionId ' + JSON.stringify(missionId));
}
function NotifyNetDisconnect(deviceId, state) {
console.log('NotifyNetDisconnect deviceId ' + JSON.stringify(deviceId));
console.log('NotifyNetDisconnect state ' + JSON.stringify(state));
}
var parameter = {
deviceId: remoteDeviceId
};
var options = {
notifyMissionsChanged: NotifyMissionsChanged,
notifySnapshot: NotifySnapshot,
notifyNetDisconnect: NotifyNetDisconnect
}
distributedMissionManager.registerMissionListener(parameter, options)
.then(data => {
console.info('success data is ' + data);
}).catch(error => {
console.info('error error is ' + error);
})
```
## distributedMissionManager.unregisterMissionListener
unregisterMissionListener(parameter: MissionDeviceInfo, callback: AsyncCallback&lt;void&gt;): void;
取消任务状态监听, 以回调函数的方式返回。
**需要权限**:ohos.permission.MANAGE_MISSIONS
**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission
**系统API**: 此接口为系统接口,三方应用不支持调用。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| listenerId | number | 是 | 系统任务状态监听方法的index值,和监听方法一一对应,由registerMissionListener方法返回。 |
| parameter | <a href="#missiondeviceinfo">MissionDeviceInfo</a> | 是 | 设备信息。 |
| callback | AsyncCallback&lt;void&gt; | 是 | 执行结果回调函数。 |
**示例:**
```ts
var parameter = {
deviceId: remoteDeviceId
};
distributedMissionManager.unregisterMissionListener(parameter, (error) => {
console.log("error.code = " + error.code)
})
```
## distributedMissionManager.unregisterMissionListener
unregisterMissionListener(parameter: MissionDeviceInfo): Promise&lt;void&gt;
取消任务状态监听,以promise方式返回执行结果。
**需要权限**:ohos.permission.MANAGE_MISSIONS
**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission
**系统API**: 此接口为系统接口,三方应用不支持调用。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| parameter | <a href="#missiondeviceinfo">MissionDeviceInfo</a> | 是 | 设备信息。 |
**返回值:**
| 类型 | 说明 |
| -------- | -------- |
| Promise&lt;void&gt; | promise方式返回执行结果。 |
**示例:**
```ts
var parameter = {
deviceId: remoteDeviceId
};
distributedMissionManager.unregisterMissionListener(parameter)
.then(data => {
console.info('success data is ' + data);
}).catch(error => {
console.info('error error is ' + error);
})
```
## distributedMissionManager.startSyncRemoteMissions
startSyncRemoteMissions(parameter: MissionParameter, callback: AsyncCallback&lt;void&gt;): void;
开始同步远端任务列表, 以回调函数的方式返回。
**需要权限**:ohos.permission.MANAGE_MISSIONS
**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission
**系统API**: 此接口为系统接口,三方应用不支持调用。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| listenerId | number | 是 | 系统任务状态监听方法的index值,和监听方法一一对应,由registerMissionListener方法返回。 |
| parameter | <a href="#missionparameter">MissionParameter</a> | 是 | 同步信息。 |
| callback | AsyncCallback&lt;void&gt; | 是 | 执行结果回调函数。 |
**示例:**
```ts
var parameter = {
deviceId: remoteDeviceId,
fixConflict: false,
tag: 0
};
distributedMissionManager.startSyncRemoteMissions(parameter, (error) => {
console.log("error.code = " + error.code)
})
```
## distributedMissionManager.startSyncRemoteMissions
startSyncRemoteMissions(parameter: MissionParameter): Promise&lt;void&gt;
开始同步远端任务列表,以promise方式返回执行结果。
**需要权限**:ohos.permission.MANAGE_MISSIONS
**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission
**系统API**: 此接口为系统接口,三方应用不支持调用。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| parameter | <a href="#missionparameter">MissionParameter</a> | 是 | 同步信息。 |
**返回值:**
| 类型 | 说明 |
| -------- | -------- |
| Promise&lt;void&gt; | promise方式返回执行结果。 |
**示例:**
```ts
var parameter = {
deviceId: remoteDeviceId,
fixConflict: false,
tag: 0
};
distributedMissionManager.startSyncRemoteMissions(parameter)
.then(data => {
console.info('success data is ' + data);
}).catch(error => {
console.info('error error is ' + error);
})
```
## distributedMissionManager.stopSyncRemoteMissions
stopSyncRemoteMissions(parameter: MissionDeviceInfo, callback: AsyncCallback&lt;void&gt;): void;
停止同步远端任务列表, 以回调函数的方式返回。
**需要权限**:ohos.permission.MANAGE_MISSIONS
**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission
**系统API**: 此接口为系统接口,三方应用不支持调用。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| listenerId | number | 是 | 系统任务状态监听方法的index值,和监听方法一一对应,由registerMissionListener方法返回。 |
| parameter | <a href="#missiondeviceinfo">MissionDeviceInfo</a> | 是 | 同步信息。 |
| callback | AsyncCallback&lt;void&gt; | 是 | 执行结果回调函数。 |
**示例:**
```ts
var parameter = {
deviceId: remoteDeviceId
};
distributedMissionManager.stopSyncRemoteMissions(parameter, (error) => {
console.log("error.code = " + error.code)
})
```
## distributedMissionManager.stopSyncRemoteMissions
stopSyncRemoteMissions(parameter: MissionDeviceInfo): Promise&lt;void&gt;
停止同步远端任务列表,以promise方式返回执行结果。
**需要权限**:ohos.permission.MANAGE_MISSIONS
**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission
**系统API**: 此接口为系统接口,三方应用不支持调用。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| parameter | <a href="#missiondeviceinfo">MissionDeviceInfo</a> | 是 | 同步信息。 |
**返回值:**
| 类型 | 说明 |
| -------- | -------- |
| Promise&lt;void&gt; | promise方式返回执行结果。 |
**示例:**
```ts
var parameter = {
deviceId: remoteDeviceId
};
distributedMissionManager.stopSyncRemoteMissions(parameter)
.then(data => {
console.info('success data is ' + data);
}).catch(error => {
console.info('error error is ' + error);
})
```
## <a id ="missioncallback">MissionCallback</a>
表示开始同步后,建立的回调函数。
**系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.Mission
**系统API**: 此接口为系统接口,三方应用不支持调用。
| 名称 | 类型 | 可读 | 可写 | 说明 |
| -------- | -------- | -------- | -------- | -------- |
| notifyMissionsChanged | function | 是 | 否 | 通知任务变化,返回设备ID。|
| notifySnapshot | function | 是 | 否 | 通知快照变化,返回设备ID,任务ID |
| notifyNetDisconnect | function | 是 | 否 | 通知断开连接,返回设备ID,网络状态 |
## <a id ="missionparameter">MissionParameter</a>
表示同步时所需参数的枚举。
**系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.Mission
**系统API**: 此接口为系统接口,三方应用不支持调用。
| 名称 | 参数类型 | 可读 | 可写 | 说明 |
| -------- | -------- | -------- | -------- | -------- |
| deviceId | string | 是 | 是 | 表示设备ID。|
| fixConflict | boolean | 是 | 是 | 表示是否存在版本冲突。 |
| tag | number | 是 | 是 | 表示特定的标签。 |
## <a id ="missiondeviceinfo">MissionDeviceInfo</a>
表示注册监听时所需参数的枚举。
**系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.Mission
**系统API**: 此接口为系统接口,三方应用不支持调用。
| 名称 | 参数类型 | 可读 | 可写 | 说明 |
| -------- | -------- | -------- | -------- | -------- |
| deviceId | string | 是 | 是 | 表示设备ID。|
\ No newline at end of file
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
该模块提供以下图像效果相关的常用功能: 该模块提供以下图像效果相关的常用功能:
- [Filter](#filter):效果链。 - [Filter](#filter):效果链。
- [Color](#color):颜色类,用于保存取色的结果。
- [ColorPicker](#colorpicker):智能取色器。 - [ColorPicker](#colorpicker):智能取色器。
> **说明:** > **说明:**
...@@ -52,7 +53,7 @@ image.createPixelMap(color, opts) ...@@ -52,7 +53,7 @@ image.createPixelMap(color, opts)
createColorPicker(source: image.PixelMap): Promise\<ColorPicker> createColorPicker(source: image.PixelMap): Promise\<ColorPicker>
通过属性创建PixelMap,使用Promise异步回调。 通过传入的PixelMap创建ColorPicker实例,使用Promise异步回调。
**系统能力:** SystemCapability.Multimedia.Image.Core **系统能力:** SystemCapability.Multimedia.Image.Core
...@@ -60,13 +61,13 @@ createColorPicker(source: image.PixelMap): Promise\<ColorPicker> ...@@ -60,13 +61,13 @@ createColorPicker(source: image.PixelMap): Promise\<ColorPicker>
| 名称 | 类型 | 必填 | 说明 | | 名称 | 类型 | 必填 | 说明 |
| -------- | ----------- | ---- | -------------------------- | | -------- | ----------- | ---- | -------------------------- |
| source | [image.PixelMap](js-apis-image.md#pixelmap7) | 是 | image模块创建的PixelMap实例 | | source | [image.PixelMap](js-apis-image.md#pixelmap7) | 是 | image模块创建的PixelMap实例 |
**返回值:** **返回值:**
| 类型 | 说明 | | 类型 | 说明 |
| ---------------------- | -------------- | | ---------------------- | -------------- |
| Promisse\<[ColorPicker](#colorpicker)> | Promise对象。返回当前创建的子窗口对象。 | | Promisse\<[ColorPicker](#colorpicker)> | Promise对象。返回创建的ColorPicker实例。 |
**示例:** **示例:**
...@@ -87,7 +88,7 @@ image.createPixelMap(color, opts, (pixelmap) => { ...@@ -87,7 +88,7 @@ image.createPixelMap(color, opts, (pixelmap) => {
createColorPicker(source: image.PixelMap, callback: AsyncCallback\<ColorPicker>): void createColorPicker(source: image.PixelMap, callback: AsyncCallback\<ColorPicker>): void
通过属性创建PixelMap,使用callback异步回调。 通过传入的PixelMap创建ColorPicker实例,使用callback异步回调。
**系统能力:** SystemCapability.Multimedia.Image.Core **系统能力:** SystemCapability.Multimedia.Image.Core
...@@ -95,8 +96,8 @@ createColorPicker(source: image.PixelMap, callback: AsyncCallback\<ColorPicker>) ...@@ -95,8 +96,8 @@ createColorPicker(source: image.PixelMap, callback: AsyncCallback\<ColorPicker>)
| 名称 | 类型 | 必填 | 说明 | | 名称 | 类型 | 必填 | 说明 |
| -------- | ------------------ | ---- | -------------------------- | | -------- | ------------------ | ---- | -------------------------- |
| source | [image.PixelMap](js-apis-image.md#pixelmap7) | 是 | BGRA_8888格式的颜色数组。 | | source | [image.PixelMap](js-apis-image.md#pixelmap7) | 是 |image模块创建的PixelMap实例。 |
| callback | AsyncCallback\<[ColorPicker](#colorpicker)> | 是 | 回调函数,返回ColorPicker。 | | callback | AsyncCallback\<[ColorPicker](#colorpicker)> | 是 | 回调函数。返回创建的ColorPicker实例。 |
**示例:** **示例:**
...@@ -107,9 +108,9 @@ let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } } ...@@ -107,9 +108,9 @@ let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } }
image.createPixelMap(color, opts, (pixelmap) => { image.createPixelMap(color, opts, (pixelmap) => {
effectKit.createColorPicker(pixelMap, (error, colorPicker) ) { effectKit.createColorPicker(pixelMap, (error, colorPicker) ) {
if(error) { if(error) {
console.log('create color picker failed.'); console.log('Failed to create color picker.');
} else { } else {
console.log('create color picker succeeded.'); console.log('Succeeded in creating color picker.');
} }
}) })
}) })
...@@ -144,16 +145,16 @@ getMainColor(): Promise\<Color> ...@@ -144,16 +145,16 @@ getMainColor(): Promise\<Color>
| 类型 | 说明 | | 类型 | 说明 |
| :------------- | :---------------------------------------------- | | :------------- | :---------------------------------------------- |
| Promise\<[Color](#color)> | Promise实例,用于获取结果,失败时返回错误信息。 | | Promise\<[Color](#color)> | Promise对象。返回图像主色对应的颜色值,失败时返回错误信息。 |
**示例:** **示例:**
```js ```js
colorPicker.getMainColor().then(color => { colorPicker.getMainColor().then(color => {
console.log('get main color succeeded.') console.log('Succeeded in getting main color.')
console.info("color[ARGB]=" + color.alpha "," + color.red + "," + color.green + "," + color.blue); console.info("color[ARGB]=" + color.alpha "," + color.red + "," + color.green + "," + color.blue);
}).catch(error => { }).catch(error => {
console.log('get main color failed.'); console.log('Failed to get main color.');
}) })
``` ```
...@@ -169,7 +170,7 @@ getMainColorSync(): Color ...@@ -169,7 +170,7 @@ getMainColorSync(): Color
| 类型 | 说明 | | 类型 | 说明 |
| :------- | :----------------------------------- | | :------- | :----------------------------------- |
| [Color](#color) | Color实例,用于获取结果,失败时返回null。 | | [Color](#color) | Color实例,即图像主色对应的颜色值,失败时返回null。 |
**示例:** **示例:**
...@@ -266,7 +267,7 @@ grayscale(): Filter ...@@ -266,7 +267,7 @@ grayscale(): Filter
| 类型 | 说明 | | 类型 | 说明 |
| :------------- | :---------------------------------------------- | | :------------- | :---------------------------------------------- |
| Filter | 返回效果链表头。 | | [Filter](#filter) | 返回效果链表头。 |
**示例:** **示例:**
......
# 企业设备管理 # 企业设备管理
本模块提供企业设备管理能力,使设备具备企业场景下所需的定制能力。
> **说明:** > **说明:**
> >
> 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 > 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
## 导入模块 ## 导入模块
```js ```js
import enterpriseDeviceManager from '@ohos.enterpriseDeviceManager'; import enterpriseDeviceManager from '@ohos.enterpriseDeviceManager';
``` ```
## enterpriseDeviceManager.enableAdmin ## enterpriseDeviceManager.enableAdmin
enableAdmin(admin: Want, enterpriseInfo: EnterpriseInfo, type: AdminType, userId?: number, callback: AsyncCallback\<boolean>): void enableAdmin(admin: Want, enterpriseInfo: EnterpriseInfo, type: AdminType, userId?: number, callback: AsyncCallback\<boolean>): void
...@@ -26,24 +26,24 @@ SystemCapability.Customation.EnterpriseDeviceManager ...@@ -26,24 +26,24 @@ SystemCapability.Customation.EnterpriseDeviceManager
**参数** **参数**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------------- | ----------------------------------- | ---- | ----------------------------------------------------- | | -------------- | ----------------------------------- | --- | ---------------------------- |
| admin | [Want](js-apis-application-Want.md) | 是 | 设备管理员应用 | | admin | [Want](js-apis-application-Want.md) | 是 | 设备管理员应用 |
| enterpriseInfo | [EnterpriseInfo](#EnterpriseInfo) | 是 | 设备管理员应用的企业信息 | | enterpriseInfo | [EnterpriseInfo](#EnterpriseInfo) | 是 | 设备管理员应用的企业信息 |
| type | [AdminType](#AdminType) | 是 | 激活的设备管理员类型 | | type | [AdminType](#AdminType) | 是 | 激活的设备管理员类型 |
| userId | number | 否 | 用户ID。默认值:调用方所在用户,取值范围:大于等于0。 | | userId | number | 否 | 用户ID。默认值:调用方所在用户,取值范围:大于等于0。 |
| callback | AsyncCallback\<boolean> | 是 | callback方式返回是否激活成功 | | callback | AsyncCallback\<boolean> | 是 | callback方式返回是否激活成功 |
**示例** **示例**
```js ```js
let wantTemp = { let wantTemp = {
bundleName: "com.example.myapplication", bundleName: "com.example.myapplication",
abilityName: "com.example.myapplication.MainAbility", abilityName: "com.example.myapplication.MainAbility",
}; };
let enterpriseInfo = { let enterpriseInfo = {
name: "enterprise name", name: "enterprise name",
description: "enterprise description" description: "enterprise description"
} }
enterpriseDeviceManager.enableAdmin(wantTemp, enterpriseInfo, enterpriseDeviceManager.AdminType.ADMIN_TYPE_NORMAL, 100, (error, result) => { enterpriseDeviceManager.enableAdmin(wantTemp, enterpriseInfo, enterpriseDeviceManager.AdminType.ADMIN_TYPE_NORMAL, 100, (error, result) => {
if (error != null) { if (error != null) {
...@@ -68,11 +68,11 @@ SystemCapability.Customation.EnterpriseDeviceManager ...@@ -68,11 +68,11 @@ SystemCapability.Customation.EnterpriseDeviceManager
**参数** **参数**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------------- | ----------------------------------- | ---- | ----------------------------------------------------- | | -------------- | ----------------------------------- | --- | ---------------------------- |
| admin | [Want](js-apis-application-Want.md) | 是 | 设备管理员应用 | | admin | [Want](js-apis-application-Want.md) | 是 | 设备管理员应用 |
| enterpriseInfo | [EnterpriseInfo](#EnterpriseInfo) | 是 | 设备管理员应用的企业信息 | | enterpriseInfo | [EnterpriseInfo](#EnterpriseInfo) | 是 | 设备管理员应用的企业信息 |
| type | [AdminType](#AdminType) | 是 | 激活的设备管理员类型 | | type | [AdminType](#AdminType) | 是 | 激活的设备管理员类型 |
| userId | number | 否 | 用户ID。默认值:调用方所在用户,取值范围:大于等于0。 | | userId | number | 否 | 用户ID。默认值:调用方所在用户,取值范围:大于等于0。 |
**返回值:** **返回值:**
...@@ -85,18 +85,18 @@ SystemCapability.Customation.EnterpriseDeviceManager ...@@ -85,18 +85,18 @@ SystemCapability.Customation.EnterpriseDeviceManager
```js ```js
let wantTemp = { let wantTemp = {
bundleName: "com.example.myapplication", bundleName: "com.example.myapplication",
abilityName: "com.example.myapplication.MainAbility", abilityName: "com.example.myapplication.MainAbility",
}; };
let enterpriseInfo = { let enterpriseInfo = {
name: "enterprise name", name: "enterprise name",
description: "enterprise description" description: "enterprise description"
} }
enterpriseDeviceManager.enableAdmin(wantTemp, enterpriseInfo, enterpriseDeviceManager.AdminType.ADMIN_TYPE_NORMAL, 100) enterpriseDeviceManager.enableAdmin(wantTemp, enterpriseInfo, enterpriseDeviceManager.AdminType.ADMIN_TYPE_NORMAL, 100)
.then((result) => { .then((result) => {
console.log("result is " + result); console.log("result is " + result);
}).catch(error => { }).catch(error => {
console.log("error occurs" + error); console.log("error occurs" + error);
}); });
``` ```
...@@ -114,18 +114,18 @@ SystemCapability.Customation.EnterpriseDeviceManager ...@@ -114,18 +114,18 @@ SystemCapability.Customation.EnterpriseDeviceManager
**参数** **参数**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | ----------------------------------- | ---- | ----------------------------------------------------- | | -------- | ----------------------------------- | --- | ---------------------------- |
| admin | [Want](js-apis-application-Want.md) | 是 | 普通设备管理员应用 | | admin | [Want](js-apis-application-Want.md) | 是 | 普通设备管理员应用 |
| userId | number | 否 | 用户ID。默认值:调用方所在用户,取值范围:大于等于0。 | | userId | number | 否 | 用户ID。默认值:调用方所在用户,取值范围:大于等于0。 |
| callback | AsyncCallback\<boolean> | 是 | callback方式返回是否去激活成功 | | callback | AsyncCallback\<boolean> | 是 | callback方式返回是否去激活成功 |
**示例** **示例**
```js ```js
let wantTemp = { let wantTemp = {
bundleName: "bundleName", bundleName: "bundleName",
abilityName: "abilityName", abilityName: "abilityName",
}; };
enterpriseDeviceManager.disableAdmin(wantTemp, 100, (error, result) => { enterpriseDeviceManager.disableAdmin(wantTemp, 100, (error, result) => {
if (error != null) { if (error != null) {
...@@ -136,8 +136,6 @@ enterpriseDeviceManager.disableAdmin(wantTemp, 100, (error, result) => { ...@@ -136,8 +136,6 @@ enterpriseDeviceManager.disableAdmin(wantTemp, 100, (error, result) => {
}); });
``` ```
## enterpriseDeviceManager.disableAdmin ## enterpriseDeviceManager.disableAdmin
disableAdmin(admin: Want, userId?: number): Promise\<boolean> disableAdmin(admin: Want, userId?: number): Promise\<boolean>
...@@ -152,9 +150,9 @@ SystemCapability.Customation.EnterpriseDeviceManager ...@@ -152,9 +150,9 @@ SystemCapability.Customation.EnterpriseDeviceManager
**参数** **参数**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| ------ | ----------------------------------- | ---- | ----------------------------------------------------- | | ------ | ----------------------------------- | --- | ---------------------------- |
| admin | [Want](js-apis-application-Want.md) | 是 | 普通设备管理员应用 | | admin | [Want](js-apis-application-Want.md) | 是 | 普通设备管理员应用 |
| userId | number | 否 | 用户ID。默认值:调用方所在用户,取值范围:大于等于0。 | | userId | number | 否 | 用户ID。默认值:调用方所在用户,取值范围:大于等于0。 |
**返回值:** **返回值:**
...@@ -167,13 +165,13 @@ SystemCapability.Customation.EnterpriseDeviceManager ...@@ -167,13 +165,13 @@ SystemCapability.Customation.EnterpriseDeviceManager
```js ```js
let wantTemp = { let wantTemp = {
bundleName: "bundleName", bundleName: "bundleName",
abilityName: "abilityName", abilityName: "abilityName",
}; };
enterpriseDeviceManager.disableAdmin(wantTemp, 100).then((result) => { enterpriseDeviceManager.disableAdmin(wantTemp, 100).then((result) => {
console.log("result is " + result); console.log("result is " + result);
}).catch(error => { }).catch(error => {
console.log("error occurs" + error); console.log("error occurs" + error);
}); });
``` ```
...@@ -188,10 +186,10 @@ SystemCapability.Customation.EnterpriseDeviceManager ...@@ -188,10 +186,10 @@ SystemCapability.Customation.EnterpriseDeviceManager
**参数** **参数**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| ---------- | ----------------------- | ---- | ------------------- | | ---------- | ----------------------- | --- | ------------------- |
| bundleName | String | 是 | 超级设备管理员应用的包名 | | bundleName | String | 是 | 超级设备管理员应用的包名 |
| callback | AsyncCallback\<boolean> | 是 | callback方式返回是否去激活成功 | | callback | AsyncCallback\<boolean> | 是 | callback方式返回是否去激活成功 |
**示例** **示例**
...@@ -217,9 +215,9 @@ SystemCapability.Customation.EnterpriseDeviceManager ...@@ -217,9 +215,9 @@ SystemCapability.Customation.EnterpriseDeviceManager
**参数** **参数**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| ---------- | ------ | ---- | ------------ | | ---------- | ------ | --- | ------------ |
| bundleName | String | 是 | 超级设备管理员应用的包名 | | bundleName | String | 是 | 超级设备管理员应用的包名 |
**返回值:** **返回值:**
...@@ -232,9 +230,9 @@ SystemCapability.Customation.EnterpriseDeviceManager ...@@ -232,9 +230,9 @@ SystemCapability.Customation.EnterpriseDeviceManager
```js ```js
let bundleName = "com.example.myapplication"; let bundleName = "com.example.myapplication";
enterpriseDeviceManager.disableSuperAdmin(bundleName).then((result) => { enterpriseDeviceManager.disableSuperAdmin(bundleName).then((result) => {
console.log("result is " + result); console.log("result is " + result);
}).catch(error => { }).catch(error => {
console.log("error occurs" + error); console.log("error occurs" + error);
}); });
``` ```
...@@ -249,18 +247,18 @@ SystemCapability.Customation.EnterpriseDeviceManager ...@@ -249,18 +247,18 @@ SystemCapability.Customation.EnterpriseDeviceManager
**参数** **参数**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | ----------------------------------- | ---- | ----------------------------------------------------- | | -------- | ----------------------------------- | --- | ---------------------------- |
| admin | [Want](js-apis-application-Want.md) | 是 | 设备管理员应用 | | admin | [Want](js-apis-application-Want.md) | 是 | 设备管理员应用 |
| userId | number | 否 | 用户ID。默认值:调用方所在用户,取值范围:大于等于0。 | | userId | number | 否 | 用户ID。默认值:调用方所在用户,取值范围:大于等于0。 |
| callback | AsyncCallback\<boolean> | 是 | callback方式返回是否处于激活状态 | | callback | AsyncCallback\<boolean> | 是 | callback方式返回是否处于激活状态 |
**示例** **示例**
```js ```js
let wantTemp = { let wantTemp = {
bundleName: "bundleName", bundleName: "bundleName",
abilityName: "abilityName", abilityName: "abilityName",
}; };
enterpriseDeviceManager.isAdminEnabled(wantTemp, 100, (error, result) => { enterpriseDeviceManager.isAdminEnabled(wantTemp, 100, (error, result) => {
if (error != null) { if (error != null) {
...@@ -271,8 +269,6 @@ enterpriseDeviceManager.isAdminEnabled(wantTemp, 100, (error, result) => { ...@@ -271,8 +269,6 @@ enterpriseDeviceManager.isAdminEnabled(wantTemp, 100, (error, result) => {
}); });
``` ```
## enterpriseDeviceManager.isAdminEnabled ## enterpriseDeviceManager.isAdminEnabled
isAdminEnabled(admin: Want, userId?: number): Promise\<boolean> isAdminEnabled(admin: Want, userId?: number): Promise\<boolean>
...@@ -284,9 +280,9 @@ SystemCapability.Customation.EnterpriseDeviceManager ...@@ -284,9 +280,9 @@ SystemCapability.Customation.EnterpriseDeviceManager
**参数** **参数**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| ------ | ----------------------------------- | ---- | ----------------------------------------------------- | | ------ | ----------------------------------- | --- | ---------------------------- |
| admin | [Want](js-apis-application-Want.md) | 是 | 设备管理员应用 | | admin | [Want](js-apis-application-Want.md) | 是 | 设备管理员应用 |
| userId | number | 否 | 用户ID。默认值:调用方所在用户,取值范围:大于等于0。 | | userId | number | 否 | 用户ID。默认值:调用方所在用户,取值范围:大于等于0。 |
**返回值:** **返回值:**
...@@ -299,13 +295,13 @@ SystemCapability.Customation.EnterpriseDeviceManager ...@@ -299,13 +295,13 @@ SystemCapability.Customation.EnterpriseDeviceManager
```js ```js
let wantTemp = { let wantTemp = {
bundleName: "bundleName", bundleName: "bundleName",
abilityName: "abilityName", abilityName: "abilityName",
}; };
enterpriseDeviceManager.isAdminEnabled(wantTemp, 100).then((result) => { enterpriseDeviceManager.isAdminEnabled(wantTemp, 100).then((result) => {
console.log("result is " + result); console.log("result is " + result);
}).catch(error => { }).catch(error => {
console.log("error occurs" + error); console.log("error occurs" + error);
}); });
``` ```
...@@ -320,10 +316,10 @@ SystemCapability.Customation.EnterpriseDeviceManager ...@@ -320,10 +316,10 @@ SystemCapability.Customation.EnterpriseDeviceManager
**参数** **参数**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| ---------- | ----------------------- | ---- | -------------------- | | ---------- | ----------------------- | --- | -------------------- |
| bundleName | String | 是 | 设备管理员应用 | | bundleName | String | 是 | 设备管理员应用 |
| callback | AsyncCallback\<boolean> | 是 | callback方式返回是否处于激活状态 | | callback | AsyncCallback\<boolean> | 是 | callback方式返回是否处于激活状态 |
**示例** **示例**
...@@ -338,8 +334,6 @@ enterpriseDeviceManager.isSuperAdmin(bundleName, (error, result) => { ...@@ -338,8 +334,6 @@ enterpriseDeviceManager.isSuperAdmin(bundleName, (error, result) => {
}); });
``` ```
## enterpriseDeviceManager.isSuperAdmin ## enterpriseDeviceManager.isSuperAdmin
isSuperAdmin(bundleName: String): Promise\<boolean> isSuperAdmin(bundleName: String): Promise\<boolean>
...@@ -351,9 +345,9 @@ SystemCapability.Customation.EnterpriseDeviceManager ...@@ -351,9 +345,9 @@ SystemCapability.Customation.EnterpriseDeviceManager
**参数** **参数**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| ---------- | ------ | ---- | --------- | | ---------- | ------ | --- | --------- |
| bundleName | String | 是 | 超级设备管理员应用 | | bundleName | String | 是 | 超级设备管理员应用 |
**返回值:** **返回值:**
...@@ -366,9 +360,9 @@ SystemCapability.Customation.EnterpriseDeviceManager ...@@ -366,9 +360,9 @@ SystemCapability.Customation.EnterpriseDeviceManager
```js ```js
let bundleName = "com.example.myapplication"; let bundleName = "com.example.myapplication";
enterpriseDeviceManager.isSuperAdmin(bundleName).then((result) => { enterpriseDeviceManager.isSuperAdmin(bundleName).then((result) => {
console.log("result is " + result); console.log("result is " + result);
}).catch(error => { }).catch(error => {
console.log("error occurs" + error); console.log("error occurs" + error);
}); });
``` ```
...@@ -383,16 +377,16 @@ SystemCapability.Customation.EnterpriseDeviceManager ...@@ -383,16 +377,16 @@ SystemCapability.Customation.EnterpriseDeviceManager
**参数:** **参数:**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | --------------------------------------- | ---- | ----------------------------------- | | -------- | --------------------------------------- | --- | ----------------------------------- |
| callback | AsyncCallback<DeviceSettingsManager&gt; | 是 | callback方式返回DeviceSettingsManager对象 | | callback | AsyncCallback<DeviceSettingsManager&gt; | 是 | callback方式返回DeviceSettingsManager对象 |
**示例:** **示例:**
```js ```js
let wantTemp = { let wantTemp = {
bundleName: "bundleName", bundleName: "bundleName",
abilityName: "abilityName", abilityName: "abilityName",
}; };
enterpriseDeviceManager.getDeviceSettingsManager((error, mgr) => { enterpriseDeviceManager.getDeviceSettingsManager((error, mgr) => {
if (error != null) { if (error != null) {
...@@ -409,7 +403,6 @@ enterpriseDeviceManager.getDeviceSettingsManager((error, mgr) => { ...@@ -409,7 +403,6 @@ enterpriseDeviceManager.getDeviceSettingsManager((error, mgr) => {
}); });
``` ```
## enterpriseDeviceManager.getDeviceSettingsManager ## enterpriseDeviceManager.getDeviceSettingsManager
getDeviceSettingsManager(): Promise&lt;DeviceSettingsManager&gt; getDeviceSettingsManager(): Promise&lt;DeviceSettingsManager&gt;
...@@ -429,8 +422,8 @@ SystemCapability.Customation.EnterpriseDeviceManager ...@@ -429,8 +422,8 @@ SystemCapability.Customation.EnterpriseDeviceManager
```js ```js
let wantTemp = { let wantTemp = {
bundleName: "bundleName", bundleName: "bundleName",
abilityName: "abilityName", abilityName: "abilityName",
}; };
mgr.getDeviceSettingsManager().then((mgr) => { mgr.getDeviceSettingsManager().then((mgr) => {
mgr.setDateTime(wantTemp, 1526003846000).then((value) => { mgr.setDateTime(wantTemp, 1526003846000).then((value) => {
...@@ -454,32 +447,31 @@ SystemCapability.Customation.EnterpriseDeviceManager ...@@ -454,32 +447,31 @@ SystemCapability.Customation.EnterpriseDeviceManager
**参数:** **参数:**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------------- | ----------------------------------- | ---- | ---------------------- | | -------------- | ----------------------------------- | --- | ---------------------- |
| admin | [Want](js-apis-application-Want.md) | 是 | 设备管理员应用 | | admin | [Want](js-apis-application-Want.md) | 是 | 设备管理员应用 |
| enterpriseInfo | [EnterpriseInfo](#EnterpriseInfo) | 是 | 设备管理员应用的企业信息 | | enterpriseInfo | [EnterpriseInfo](#EnterpriseInfo) | 是 | 设备管理员应用的企业信息 |
| callback | AsyncCallback\<boolean&gt; | 是 | callback方式返回是否设置企业信息成功 | | callback | AsyncCallback\<boolean&gt; | 是 | callback方式返回是否设置企业信息成功 |
**示例:** **示例:**
```js ```js
let wantTemp = { let wantTemp = {
bundleName: "com.example.myapplication", bundleName: "com.example.myapplication",
abilityName: "com.example.myapplication.MainAbility", abilityName: "com.example.myapplication.MainAbility",
}; };
let enterpriseInfo = { let enterpriseInfo = {
name: "enterprise name", name: "enterprise name",
description: "enterprise description" description: "enterprise description"
} }
enterpriseDeviceManager.setEnterpriseInfo(wantTemp, enterpriseInfo) enterpriseDeviceManager.setEnterpriseInfo(wantTemp, enterpriseInfo)
.then((result) => { .then((result) => {
console.log("result is " + result); console.log("result is " + result);
}).catch(error => { }).catch(error => {
console.log("error occurs" + error); console.log("error occurs" + error);
}); });
``` ```
## enterpriseDeviceManager.setEnterpriseInfo ## enterpriseDeviceManager.setEnterpriseInfo
setEnterpriseInfo(admin: Want, enterpriseInfo: EnterpriseInfo): Promise&lt;boolean&gt; setEnterpriseInfo(admin: Want, enterpriseInfo: EnterpriseInfo): Promise&lt;boolean&gt;
...@@ -491,10 +483,10 @@ SystemCapability.Customation.EnterpriseDeviceManager ...@@ -491,10 +483,10 @@ SystemCapability.Customation.EnterpriseDeviceManager
**参数:** **参数:**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------------- | ----------------------------------- | ---- | ------------ | | -------------- | ----------------------------------- | --- | ------------ |
| admin | [Want](js-apis-application-Want.md) | 是 | 设备管理员应用 | | admin | [Want](js-apis-application-Want.md) | 是 | 设备管理员应用 |
| enterpriseInfo | [EnterpriseInfo](#EnterpriseInfo) | 是 | 设备管理员应用的企业信息 | | enterpriseInfo | [EnterpriseInfo](#EnterpriseInfo) | 是 | 设备管理员应用的企业信息 |
**返回值:** **返回值:**
...@@ -506,18 +498,18 @@ SystemCapability.Customation.EnterpriseDeviceManager ...@@ -506,18 +498,18 @@ SystemCapability.Customation.EnterpriseDeviceManager
```js ```js
let wantTemp = { let wantTemp = {
bundleName: "com.example.myapplication", bundleName: "com.example.myapplication",
abilityName: "com.example.myapplication.MainAbility", abilityName: "com.example.myapplication.MainAbility",
}; };
let enterpriseInfo = { let enterpriseInfo = {
name: "enterprise name", name: "enterprise name",
description: "enterprise description" description: "enterprise description"
} }
enterpriseDeviceManager.setEnterpriseInfo(wantTemp, enterpriseInfo) enterpriseDeviceManager.setEnterpriseInfo(wantTemp, enterpriseInfo)
.then((result) => { .then((result) => {
console.log("result is " + result); console.log("result is " + result);
}).catch(error => { }).catch(error => {
console.log("error occurs" + error); console.log("error occurs" + error);
}); });
``` ```
...@@ -532,17 +524,17 @@ SystemCapability.Customation.EnterpriseDeviceManager ...@@ -532,17 +524,17 @@ SystemCapability.Customation.EnterpriseDeviceManager
**参数:** **参数:**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | ---------------------------------------- | ---- | ------------------------ | | -------- | ------------------------------------------------------ | --- | ------------------------ |
| admin | [Want](js-apis-application-Want.md) | 是 | 设备管理员应用 | | admin | [Want](js-apis-application-Want.md) | 是 | 设备管理员应用 |
| callback | AsyncCallback&lt;[EnterpriseInfo](#EnterpriseInfo)&gt; | 是 | callback方式返回设备管理员应用的企业信息 | | callback | AsyncCallback&lt;[EnterpriseInfo](#EnterpriseInfo)&gt; | 是 | callback方式返回设备管理员应用的企业信息 |
**示例:** **示例:**
```js ```js
let wantTemp = { let wantTemp = {
bundleName: "com.example.myapplication", bundleName: "com.example.myapplication",
abilityName: "com.example.myapplication.MainAbility", abilityName: "com.example.myapplication.MainAbility",
}; };
enterpriseDeviceManager.getEnterpriseInfo(wantTemp, (error, result) => { enterpriseDeviceManager.getEnterpriseInfo(wantTemp, (error, result) => {
if (error != null) { if (error != null) {
...@@ -550,11 +542,10 @@ enterpriseDeviceManager.getEnterpriseInfo(wantTemp, (error, result) => { ...@@ -550,11 +542,10 @@ enterpriseDeviceManager.getEnterpriseInfo(wantTemp, (error, result) => {
return; return;
} }
console.log(result.name); console.log(result.name);
console.log(result.description); console.log(result.description);
}); });
``` ```
## enterpriseDeviceManager.getEnterpriseInfo ## enterpriseDeviceManager.getEnterpriseInfo
getEnterpriseInfo(admin: Want): Promise&lt;EnterpriseInfo&gt; getEnterpriseInfo(admin: Want): Promise&lt;EnterpriseInfo&gt;
...@@ -566,28 +557,28 @@ SystemCapability.Customation.EnterpriseDeviceManager ...@@ -566,28 +557,28 @@ SystemCapability.Customation.EnterpriseDeviceManager
**参数:** **参数:**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| ----- | ----------------------------------- | ---- | ------- | | ----- | ----------------------------------- | --- | ------- |
| admin | [Want](js-apis-application-Want.md) | 是 | 设备管理员应用 | | admin | [Want](js-apis-application-Want.md) | 是 | 设备管理员应用 |
**返回值:** **返回值:**
| 类型 | 说明 | | 类型 | 说明 |
| ---------------------------------------- | ------------------------- | | ------------------------------------------------ | ------------------------- |
| Promise&lt;[EnterpriseInfo](#EnterpriseInfo)&gt; | Promise方式返回设备管理员应用的企业信息对象 | | Promise&lt;[EnterpriseInfo](#EnterpriseInfo)&gt; | Promise方式返回设备管理员应用的企业信息对象 |
**示例:** **示例:**
```js ```js
let wantTemp = { let wantTemp = {
bundleName: "com.example.myapplication", bundleName: "com.example.myapplication",
abilityName: "com.example.myapplication.MainAbility", abilityName: "com.example.myapplication.MainAbility",
}; };
enterpriseDeviceManager.getEnterpriseInfo(wantTemp).then((result) => { enterpriseDeviceManager.getEnterpriseInfo(wantTemp).then((result) => {
console.log(result.name); console.log(result.name);
console.log(result.description); console.log(result.description);
}).catch(error => { }).catch(error => {
console.log("error occurs" + error); console.log("error occurs" + error);
}); });
``` ```
...@@ -602,7 +593,6 @@ enterpriseDeviceManager.getEnterpriseInfo(wantTemp).then((result) => { ...@@ -602,7 +593,6 @@ enterpriseDeviceManager.getEnterpriseInfo(wantTemp).then((result) => {
| name | 只读 | string | 是 | 表示设备管理员应用所属企业的名称。 | | name | 只读 | string | 是 | 表示设备管理员应用所属企业的名称。 |
| description | 只读 | string | 是 | 表示设备管理员应用所属企业的描述。 | | description | 只读 | string | 是 | 表示设备管理员应用所属企业的描述。 |
## AdminType ## AdminType
设备管理员应用的管理员类型。 设备管理员应用的管理员类型。
......
# 目录环境能力 # 目录环境能力
该模块提供环境目录能力,获取内存存储根目录、公共文件根目录的JS接口。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> >
> - 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 > - 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
> - 本模块接口为系统接口,三方应用不支持调用。 > - 本模块接口为系统接口,三方应用不支持调用。
该模块提供环境目录能力,获取内存存储根目录、公共文件根目录的JS接口。
## 导入模块 ## 导入模块
```js ```js
......
# 文件管理 # 文件管理
该模块提供文件存储管理能力,包括文件基本管理、文件目录管理、文件信息统计、文件流式读写等常用功能。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 > 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
该模块提供文件存储管理能力,包括文件基本管理、文件目录管理、文件信息统计、文件流式读写等常用功能。
## 导入模块 ## 导入模块
......
# 公共文件访问与管理 # 公共文件访问与管理
该模块提供公共文件访问和管理的服务接口,向下对接底层文件管理服务,如媒体库、外卡管理;向上对应用程序提供公共文件查询、创建的能力。
>![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** >![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> >
>- 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 >- 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
>- 本模块接口为系统接口,三方应用不支持调用,当前只支持filepicker调用。 >- 本模块接口为系统接口,三方应用不支持调用,当前只支持filepicker调用。
该模块提供公共文件访问和管理的服务接口,向下对接底层文件管理服务,如媒体库、外卡管理;向上对应用程序提供公共文件查询、创建的能力。
## 导入模块 ## 导入模块
```js ```js
......
...@@ -1333,7 +1333,7 @@ videoPlayer.setSpeed(speed).then() => { ...@@ -1333,7 +1333,7 @@ videoPlayer.setSpeed(speed).then() => {
selectBitrate(bitrate:number, callback: AsyncCallback\<number>): void selectBitrate(bitrate:number, callback: AsyncCallback\<number>): void
通过回调方式设置码率。 通过回调方式设置码率,通过[availableBitrateCollected](#on('availableBitrateCollected')<sup>9+</sup>)获取当前码流支持的Bitrate
**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer **系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
...@@ -1392,7 +1392,7 @@ videoPlayer.selectBitrate(bitrate).then() => { ...@@ -1392,7 +1392,7 @@ videoPlayer.selectBitrate(bitrate).then() => {
on(type: 'playbackCompleted', callback: Callback\<void>): void on(type: 'playbackCompleted', callback: Callback\<void>): void
开始监听视频播放完成事件,通过[availableBitrateCollected](#on('availableBitrateCollected')<sup>9+</sup>)获取当前码流支持的Bitrate 开始监听视频播放完成事件。
**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer **系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
...@@ -1521,7 +1521,7 @@ on(type: 'availableBitrateCollected', callback: (bitrates: Array<number>) => voi ...@@ -1521,7 +1521,7 @@ on(type: 'availableBitrateCollected', callback: (bitrates: Array<number>) => voi
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | ---- | ------------------------------------------------------------ | | -------- | -------- | ---- | ------------------------------------------------------------ |
| type | string | 是 | 视频播放码率上报事件回调类型,支持的事件:'availableBitrateCollected',只在开始播放时候上报一次 | | type | string | 是 | 视频播放码率上报事件回调类型,支持的事件:'availableBitrateCollected',只在开始播放时候上报一次 |
| callback | function | 是 | 视频播放码率事件回调方法,使用Array数组存放支持的码率。 | | callback | function | 是 | 视频播放码率事件回调方法,使用数组存放支持的码率。 |
**示例:** **示例:**
...@@ -1875,7 +1875,7 @@ audioRecorder.prepare(); // pre ...@@ -1875,7 +1875,7 @@ audioRecorder.prepare(); // pre
## AudioOutputFormat<sup>(deprecated)</sup> ## AudioOutputFormat<sup>(deprecated)</sup>
> **说明:** > **说明:**
> 从 API Version 8 开始废弃,建议使用[ContainerFormatType ](#containerformattype8)替代。 > 从 API Version 8 开始废弃,建议使用[ContainerFormatType](#containerformattype8)替代。
表示音频封装格式的枚举。 表示音频封装格式的枚举。
......
# 上传下载 # 上传下载
request部件主要给应用提供上传下载文件、后台传输代理的基础能力。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 > 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
...@@ -18,14 +19,16 @@ import request from '@ohos.request'; ...@@ -18,14 +19,16 @@ import request from '@ohos.request';
默认支持https,如果要支持http,需要在config.json里增加network标签,属性标识 "cleartextTraffic": true。即: 默认支持https,如果要支持http,需要在config.json里增加network标签,属性标识 "cleartextTraffic": true。即:
``` ```
var config = {
"deviceConfig": { "deviceConfig": {
"default": { "default": {
"network": { "network": {
"cleartextTraffic": true "cleartextTraffic": true
} }
... //...
} }
} }
}
``` ```
...@@ -466,11 +469,10 @@ on(type: 'progress', callback:(receivedSize: number, totalSize: number) =&gt; vo ...@@ -466,11 +469,10 @@ on(type: 'progress', callback:(receivedSize: number, totalSize: number) =&gt; vo
**示例:** **示例:**
```js ```js
downloadTask.on('progress', function download_callback(receivedSize, totalSize) { downloadTask.on('progress', function download_callback(receivedSize, totalSize) {
console.info("download receivedSize:" + receivedSize + " totalSize:" + totalSize); console.info("download receivedSize:" + receivedSize + " totalSize:" + totalSize);
} }
); );
});
``` ```
...@@ -501,11 +503,10 @@ off(type: 'progress', callback?: (receivedSize: number, totalSize: number) =&gt; ...@@ -501,11 +503,10 @@ off(type: 'progress', callback?: (receivedSize: number, totalSize: number) =&gt;
**示例:** **示例:**
```js ```js
downloadTask .off('progress', function download_callback(receivedSize, totalSize) { downloadTask .off('progress', function download_callback(receivedSize, totalSize) {
console.info("download receivedSize:" + receivedSize + " totalSize:" + totalSize); console.info("download receivedSize:" + receivedSize + " totalSize:" + totalSize);
} }
); );
});
``` ```
...@@ -529,11 +530,10 @@ on(type: 'complete'|'pause'|'remove', callback:() =&gt; void): void ...@@ -529,11 +530,10 @@ on(type: 'complete'|'pause'|'remove', callback:() =&gt; void): void
**示例:** **示例:**
```js ```js
downloadTask.on('complete', function callback() { downloadTask.on('complete', function callback() {
console.info('Download task completed.'); console.info('Download task completed.');
} }
); );
});
``` ```
...@@ -557,11 +557,10 @@ off(type: 'complete'|'pause'|'remove', callback?:() =&gt; void): void ...@@ -557,11 +557,10 @@ off(type: 'complete'|'pause'|'remove', callback?:() =&gt; void): void
**示例:** **示例:**
```js ```js
downloadTask.off('complete', function callback() { downloadTask.off('complete', function callback() {
console.info('Download task completed.'); console.info('Download task completed.');
} }
); );
});
``` ```
...@@ -591,11 +590,10 @@ on(type: 'fail', callback: (err: number) =&gt; void): void ...@@ -591,11 +590,10 @@ on(type: 'fail', callback: (err: number) =&gt; void): void
**示例:** **示例:**
```js ```js
downloadTask.on('fail', function callBack(err) { downloadTask.on('fail', function callBack(err) {
console.info('Download task failed. Cause:' + err); console.info('Download task failed. Cause:' + err);
} }
); );
});
``` ```
...@@ -625,11 +623,10 @@ off(type: 'fail', callback?: (err: number) =&gt; void): void ...@@ -625,11 +623,10 @@ off(type: 'fail', callback?: (err: number) =&gt; void): void
**示例:** **示例:**
```js ```js
downloadTask.off('fail', function callBack(err) { downloadTask.off('fail', function callBack(err) {
console.info('Download task failed. Cause:' + err); console.info('Download task failed. Cause:' + err);
} }
); );
});
``` ```
......
...@@ -238,6 +238,18 @@ resourceManager.getResourceManager((error, mgr) => { ...@@ -238,6 +238,18 @@ resourceManager.getResourceManager((error, mgr) => {
| offset | number | rawfile的起始偏移量 | | offset | number | rawfile的起始偏移量 |
| length | number | rawfile的文件长度 | | length | number | rawfile的文件长度 |
## Resource
表示的资源信息。
**系统能力:** 以下各项对应的系统能力均为SystemCapability.Global.ResourceManager
| 名称 | 类型 | 说明 |
| ------ | ------ | ------------------ |
| bundleName | string | 应用的bundle名称 |
| moduleName | string | 应用的module名称 |
| id | number | 资源的id值 |
## ResourceManager ## ResourceManager
...@@ -307,6 +319,68 @@ getString(resId: number): Promise&lt;string&gt; ...@@ -307,6 +319,68 @@ getString(resId: number): Promise&lt;string&gt;
``` ```
### getString<sup>9+</sup>
getString(resource: Resource, callback: AsyncCallback&lt;string&gt;): void
用户获取指定resource对象对应的字符串,使用callback形式返回字符串。
**系统能力**:SystemCapability.Global.ResourceManager
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | --------------------------- | ---- | --------------- |
| resource | [Resource](#resource) | 是 | 资源信息 |
| callback | AsyncCallback&lt;string&gt; | 是 | 异步回调,用于返回获取的字符串 |
**示例:**
```
let resource = {
bundleName: "com.example.myapplication",
moduleName: "entry",
id: $r('app.string.test').id
};
this.context.resourceManager.getString(resource, (error, value) => {
if (error != null) {
console.log("error is " + error);
} else {
let str = value;
}
});
```
### getString<sup>9+</sup>
getString(resource: Resource): Promise&lt;string&gt;
用户获取指定resource对象对应的字符串,使用Promise形式返回字符串。
**系统能力**:SystemCapability.Global.ResourceManager
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ----- | ------ | ---- | ----- |
| resource | [Resource](#resource) | 是 | 资源信息 |
**返回值:**
| 类型 | 说明 |
| --------------------- | ----------- |
| Promise&lt;string&gt; | resource对象对应的字符串 |
**示例:**
```
let resource = {
bundleName: "com.example.myapplication",
moduleName: "entry",
id: $r('app.string.test').id
};
this.context.resourceManager.getString(resource).then(value => {
let str = value;
}).catch(error => {
console.log("getstring promise error is " + error);
});
```
### getStringArray ### getStringArray
getStringArray(resId: number, callback: AsyncCallback&lt;Array&lt;string&gt;&gt;): void getStringArray(resId: number, callback: AsyncCallback&lt;Array&lt;string&gt;&gt;): void
...@@ -364,6 +438,67 @@ getStringArray(resId: number): Promise&lt;Array&lt;string&gt;&gt; ...@@ -364,6 +438,67 @@ getStringArray(resId: number): Promise&lt;Array&lt;string&gt;&gt;
}); });
``` ```
### getStringArray<sup>9+</sup>
getStringArray(resource: Resource, callback: AsyncCallback&lt;Array&lt;string&gt;&gt;): void
用户获取指定resource对象对应的字符串数组,使用callback形式返回回字符串数组。
**系统能力**:SystemCapability.Global.ResourceManager
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | --------------------------- | ---- | --------------- |
| resource | [Resource](#resource) | 是 | 资源信息 |
| callback | AsyncCallback&lt;Array&lt;string&gt;&gt; | 是 | 异步回调,用于返回获取的字符串数组 |
**示例:**
```
let resource = {
bundleName: "com.example.myapplication",
moduleName: "entry",
id: $r('app.strarray.test').id
};
this.context.resourceManager.getStringArray(resource, (error, value) => {
if (error != null) {
console.log("error is " + error);
} else {
let strArray = value;
}
});
```
### getStringArray<sup>9+</sup>
getStringArray(resource: Resource): Promise&lt;Array&lt;string&gt;&gt;
用户获取指定resource对象对应的字符串数组,使用Promise形式返回字符串数组。
**系统能力**:SystemCapability.Global.ResourceManager
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ----- | ------ | ---- | ----- |
| resource | [Resource](#resource) | 是 | 资源信息 |
**返回值:**
| 类型 | 说明 |
| --------------------- | ----------- |
| Promise&lt;Array&lt;string&gt;&gt; | resource对象对应的字符串数组 |
**示例:**
```
let resource = {
bundleName: "com.example.myapplication",
moduleName: "entry",
id: $r('app.strarray.test').id
};
this.context.resourceManager.getStringArray(resource).then(value => {
let strArray = value;
}).catch(error => {
console.log("getStringArray promise error is " + error);
});
```
### getMedia ### getMedia
...@@ -422,6 +557,67 @@ getMedia(resId: number): Promise&lt;Uint8Array&gt; ...@@ -422,6 +557,67 @@ getMedia(resId: number): Promise&lt;Uint8Array&gt;
}); });
``` ```
### getMedia<sup>9+</sup>
getMedia(resource: Resource, callback: AsyncCallback&lt;Uint8Array&gt;): void
用户获取指定resource对象对应的媒体文件内容,使用callback形式返回字节数组。
**系统能力**:SystemCapability.Global.ResourceManager
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | --------------------------- | ---- | --------------- |
| resource | [Resource](#resource) | 是 | 资源信息 |
| callback | AsyncCallback&lt;Uint8Array&gt; | 是 | 异步回调,用于返回获取的媒体文件内容 |
**示例:**
```
let resource = {
bundleName: "com.example.myapplication",
moduleName: "entry",
id: $r('app.media.test').id
};
this.context.resourceManager.getMedia(resource, (error, value) => {
if (error != null) {
console.log("error is " + error);
} else {
let media = value;
}
});
```
### getMedia<sup>9+</sup>
getMedia(resource: Resource): Promise&lt;Uint8Array&gt;
用户获取指定resource对象对应的媒体文件内容,使用Promise形式返回字节数组。
**系统能力**:SystemCapability.Global.ResourceManager
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ----- | ------ | ---- | ----- |
| resource | [Resource](#resource) | 是 | 资源信息 |
**返回值:**
| 类型 | 说明 |
| --------------------- | ----------- |
| Promise&lt;Uint8Array&gt; | resource对象对应的媒体文件内容 |
**示例:**
```
let resource = {
bundleName: "com.example.myapplication",
moduleName: "entry",
id: $r('app.media.test').id
};
this.context.resourceManager.getMedia(resource).then(value => {
let media = value;
}).catch(error => {
console.log("getMedia promise error is " + error);
});
```
### getMediaBase64 ### getMediaBase64
...@@ -480,6 +676,68 @@ getMediaBase64(resId: number): Promise&lt;string&gt; ...@@ -480,6 +676,68 @@ getMediaBase64(resId: number): Promise&lt;string&gt;
}); });
``` ```
### getMediaBase64<sup>9+</sup>
getMediaBase64(resource: Resource, callback: AsyncCallback&lt;string&gt;): void
用户获取指定resource对象对应的图片资源Base64编码,使用callback形式返回字符串。
**系统能力**:SystemCapability.Global.ResourceManager
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | --------------------------- | ---- | ------------------------ |
| resource | [Resource](#resource) | 是 | 资源信息 |
| callback | AsyncCallback&lt;string&gt; | 是 | 异步回调,用于返回获取的图片资源Base64编码 |
**示例:**
```
let resource = {
bundleName: "com.example.myapplication",
moduleName: "entry",
id: $r('app.media.test').id
};
this.context.resourceManager.getMediaBase64(resource, (error, value) => {
if (error != null) {
console.log("error is " + error);
} else {
let media = value;
}
});
```
### getMediaBase64<sup>9+</sup>
getMediaBase64(resource: Resource): Promise&lt;string&gt;
用户获取指定resource对象对应的图片资源Base64编码,使用Promise形式返回字符串。
**系统能力**:SystemCapability.Global.ResourceManager
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ----- | ------ | ---- | ----- |
| resource | [Resource](#resource) | 是 | 资源信息 |
**返回值:**
| 类型 | 说明 |
| --------------------- | -------------------- |
| Promise&lt;string&gt; | resource对象对应的图片资源Base64编码 |
**示例:**
```
let resource = {
bundleName: "com.example.myapplication",
moduleName: "entry",
id: $r('app.media.test').id
};
this.context.resourceManager.getMediaBase64(resource).then(value => {
let media = value;
}).catch(error => {
console.log("getMediaBase64 promise error is " + error);
});
```
### getConfiguration ### getConfiguration
...@@ -648,6 +906,70 @@ getPluralString(resId: number, num: number): Promise&lt;string&gt; ...@@ -648,6 +906,70 @@ getPluralString(resId: number, num: number): Promise&lt;string&gt;
}); });
``` ```
### getPluralString<sup>9+</sup>
getPluralString(resource: Resource, num: number, callback: AsyncCallback&lt;string&gt;): void
根据指定数量获取指定resource对象表示的单复数字符串,使用callback形式返回字符串。
**系统能力**:SystemCapability.Global.ResourceManager
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | --------------------------- | ---- | ------------------------------- |
| resource | [Resource](#resource) | 是 | 资源信息 |
| num | number | 是 | 数量值 |
| callback | AsyncCallback&lt;string&gt; | 是 | 异步回调,返回根据指定数量获取指定resource对象表示的单复数字符串 |
**示例:**
```
let resource = {
bundleName: "com.example.myapplication",
moduleName: "entry",
id: $r('app.plural.test').id
};
this.context.resourceManager.getPluralString(resource, 1, (error, value) => {
if (error != null) {
console.log("error is " + error);
} else {
let str = value;
}
});
```
### getPluralString<sup>9+</sup>
getPluralString(resource: Resource, num: number): Promise&lt;string&gt;
根据指定数量获取对指定resource对象表示的单复数字符串,使用Promise形式返回字符串。
**系统能力**:SystemCapability.Global.ResourceManager
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ----- | ------ | ---- | ----- |
| resource | [Resource](#resource) | 是 | 资源信息 |
| num | number | 是 | 数量值 |
**返回值:**
| 类型 | 说明 |
| --------------------- | ------------------------- |
| Promise&lt;string&gt; | 根据提供的数量获取对应resource对象表示的单复数字符串 |
**示例:**
```
let resource = {
bundleName: "com.example.myapplication",
moduleName: "entry",
id: $r('app.plural.test').id
};
this.context.resourceManager.getPluralString(resource, 1).then(value => {
let str = value;
}).catch(error => {
console.log("getPluralString promise error is " + error);
});
```
### getRawFile<sup>8+</sup> ### getRawFile<sup>8+</sup>
getRawFile(path: string, callback: AsyncCallback&lt;Uint8Array&gt;): void getRawFile(path: string, callback: AsyncCallback&lt;Uint8Array&gt;): void
...@@ -1118,6 +1440,34 @@ getStringSync(resId: number): string ...@@ -1118,6 +1440,34 @@ getStringSync(resId: number): string
resourceManager.getStringSync($r('app.string.test').id); resourceManager.getStringSync($r('app.string.test').id);
``` ```
### getStringSync<sup>9+</sup>
getStringSync(resource: Resource): string
用户获取指定resource对象对应的字符串,使用同步方式返回字符串。
**系统能力**:SystemCapability.Global.ResourceManager
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ----- | ------ | ---- | ----- |
| resource | [Resource](#resource) | 是 | 资源信息 |
**返回值:**
| 类型 | 说明 |
| --------------------- | ----------- |
| string | resource对象对应的字符串 |
**示例:**
```
let resource = {
bundleName: "com.example.myapplication",
moduleName: "entry",
id: $r('app.string.test').id
};
this.context.resourceManager.getStringSync(resource);
```
### getStringByNameSync<sup>9+</sup> ### getStringByNameSync<sup>9+</sup>
getStringByNameSync(resName: string): string getStringByNameSync(resName: string): string
...@@ -1163,6 +1513,33 @@ getBoolean(resId: number): boolean ...@@ -1163,6 +1513,33 @@ getBoolean(resId: number): boolean
``` ```
resourceManager.getBoolean($r('app.boolean.boolean_test').id); resourceManager.getBoolean($r('app.boolean.boolean_test').id);
``` ```
### getBoolean<sup>9+</sup>
getBoolean(resource: Resource): boolean
使用同步方式,返回获取指定resource对象对应的布尔结果。
**系统能力**:SystemCapability.Global.ResourceManager
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ----- | ------ | ---- | ----- |
| resource | [Resource](#resource) | 是 | 资源信息 |
**返回值:**
| 类型 | 说明 |
| --------------------- | ----------- |
| boolean | resource对象对应的布尔结果 |
**示例:**
```
let resource = {
bundleName: "com.example.myapplication",
moduleName: "entry",
id: $r('app.boolean.boolean_test').id
};
this.context.resourceManager.getBoolean(resource);
```
### getBooleanByName<sup>9+</sup> ### getBooleanByName<sup>9+</sup>
...@@ -1211,6 +1588,34 @@ getNumber(resId: number): number ...@@ -1211,6 +1588,34 @@ getNumber(resId: number): number
resourceManager.getNumber($r('app.float.float_test').id); resourceManager.getNumber($r('app.float.float_test').id);
``` ```
### getNumber<sup>9+</sup>
getNumber(resource: Resource): number
用户获取指定resource对象对应的integer数值或者float数值,使用同步方式返回资源对应的数值。
**系统能力**:SystemCapability.Global.ResourceManager
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ----- | ------ | ---- | ----- |
| resource | [Resource](#resource) | 是 | 资源信息 |
**返回值:**
| 类型 | 说明 |
| --------------------- | ----------- |
| number | resource对象对应的数值 |
**示例:**
```
let resource = {
bundleName: "com.example.myapplication",
moduleName: "entry",
id: $r('app.integer.integer_test').id
};
this.context.resourceManager.getNumber(resource);
```
### getNumberByName<sup>9+</sup> ### getNumberByName<sup>9+</sup>
getNumberByName(resName: string): number getNumberByName(resName: string): number
......
...@@ -29,6 +29,7 @@ push(options: RouterOptions): void ...@@ -29,6 +29,7 @@ push(options: RouterOptions): void
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- | | -------- | -------- | -------- | -------- |
| options | [RouterOptions](#routeroptions) | 是 | 跳转页面描述信息。 | | options | [RouterOptions](#routeroptions) | 是 | 跳转页面描述信息。 |
| mode<sup>9+</sup> | [RouterMode](#routermode9) | 否 | 跳转页面使用的模式。 |
**示例:** **示例:**
...@@ -77,6 +78,7 @@ replace(options: RouterOptions): void ...@@ -77,6 +78,7 @@ replace(options: RouterOptions): void
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- | | -------- | -------- | -------- | -------- |
| options | [RouterOptions](#routeroptions) | 是 | 替换页面描述信息。 | | options | [RouterOptions](#routeroptions) | 是 | 替换页面描述信息。 |
| mode<sup>9+</sup> | [RouterMode](#routermode9) | 否 | 跳转页面使用的模式。 |
**示例:** **示例:**
...@@ -89,7 +91,7 @@ replace(options: RouterOptions): void ...@@ -89,7 +91,7 @@ replace(options: RouterOptions): void
params: { params: {
data1: 'message', data1: 'message',
}, },
}); }, router.RouterMode.Standard);
} }
} }
``` ```
...@@ -438,3 +440,13 @@ getParams(): Object ...@@ -438,3 +440,13 @@ getParams(): Object
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 页面路由栈支持的最大Page数量为32。 > 页面路由栈支持的最大Page数量为32。
## RouterMode<sup>9+</sup>
路由跳转模式。
**系统能力:** 以下各项对应的系统能力均为SystemCapability.ArkUI.ArkUI.Lite。
| 名称 | 描述 |
| -------- | -------- |
| Standard | 标准模式。 |
| Single | 单实例模式。<br/>如果目标页面的url在页面栈中已经存在同url页面,离栈顶最近的页面会被移动到栈顶,移动后的页面为新建页。<br/>如目标页面的url在页面栈中不存在同url页面,按标准模式跳转。 |
# 数据标签 # 数据标签
该模块提供文件数据安全等级的相关功能:向应用程序提供查询、设置文件数据安全等级的JS接口。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 > 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
该模块提供文件数据安全等级的相关功能:向应用程序提供查询、设置文件数据安全等级的JS接口。
## 导入模块 ## 导入模块
```js ```js
......
# statfs # statfs
该模块提供文件系统相关存储信息的功能,向应用程序提供获取文件系统总字节数、空闲字节数的JS接口。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 > 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
该模块提供文件系统相关存储信息的功能,向应用程序提供获取文件系统总字节数、空闲字节数的JS接口。
## 导入模块 ## 导入模块
```js ```js
......
# 应用空间统计 # 应用空间统计
该模块提供空间查询相关的常用功能:包括对内外卡的空间查询,对应用分类数据统计的查询,对应用数据的查询等。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> >
> - 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 > - 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
> - API 9当前为Canary版本,仅供试用,不保证接口可稳定调用。 > - API 9当前为Canary版本,仅供试用,不保证接口可稳定调用。
该模块提供空间查询相关的常用功能:包括对内外卡的空间查询,对应用分类数据统计的查询,对应用数据的查询等。
## 导入模块 ## 导入模块
```js ```js
......
# 升级 # 升级
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** > **说明:**
> 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 >
> 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
升级范围:升级整个系统,包括内置的资源、预置应用;第三方的应用不在升级的范围。 升级范围:升级整个系统,包括内置的资源、预置应用;第三方的应用不在升级的范围。
...@@ -16,15 +17,11 @@ ...@@ -16,15 +17,11 @@
import update from '@ohos.update' import update from '@ohos.update'
``` ```
## 权限列表 ## update.getOnlineUpdater
getOnlineUpdater(upgradeInfo: UpgradeInfo): Updater
## update.getUpdater 获取在线升级对象。
getUpdater(upgradeFile: string, updateType?: UpdateTypes): Updater
获取本地升级Updater。
**系统能力**:SystemCapability.Update.UpdateService **系统能力**:SystemCapability.Update.UpdateService
...@@ -32,8 +29,7 @@ getUpdater(upgradeFile: string, updateType?: UpdateTypes): Updater ...@@ -32,8 +29,7 @@ getUpdater(upgradeFile: string, updateType?: UpdateTypes): Updater
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| ----------- | --------------------------- | ---- | ---- | | ----------- | --------------------------- | ---- | ---- |
| upgradeFile | string | 是 | 升级文件 | | upgradeInfo | [UpgradeInfo](#upgradeinfo) | 是 | 升级信息对象 |
| updateType | [UpdateTypes](#updatetypes) | 是 | 升级类型 |
**返回值:** **返回值:**
...@@ -45,100 +41,144 @@ getUpdater(upgradeFile: string, updateType?: UpdateTypes): Updater ...@@ -45,100 +41,144 @@ getUpdater(upgradeFile: string, updateType?: UpdateTypes): Updater
``` ```
try { try {
let updater = update.getUpdater('/data/updater/updater.zip', 'OTA'); var upgradeInfo = {
upgradeApp: "com.ohos.ota.updateclient",
businessType: {
vendor: update.BusinessVendor.PUBLIC,
subType: update.BusinessSubType.FIRMWARE
}
}
let updater = update.getOnlineUpdater(upgradeInfo);
} catch(error) { } catch(error) {
console.error(" Fail to get updater error: " + error); console.error(`Fail to get updater error: ${error}`);
} }
``` ```
## update.getUpdaterForOther ## update.getRestorer
getUpdaterForOther(upgradeFile: string, device: string, updateType?: UpdateTypes): Updater getRestorer(): Restorer
获取升级对象给待升级设备 获取恢复出厂对象
**系统能力**:SystemCapability.Update.UpdateService **系统能力**:SystemCapability.Update.UpdateService
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ----------- | --------------------------- | ---- | ----- |
| upgradeFile | string | 是 | 升级文件 |
| device | string | 是 | 待升级设备 |
| updateType | [UpdateTypes](#updatetypes) | 是 | 升级类型 |
**返回值:** **返回值:**
| 类型 | 说明 | | 类型 | 说明 |
| ------------------- | ---- | | ------------------- | ---- |
| [Updater](#updater) | 升级对象 | | [Restorer](#restorer) | 恢复出厂对象 |
**示例:** **示例:**
``` ```
try { try {
let updater = update.getUpdaterForOther('/data/updater/updater.zip', '1234567890', 'OTA'); let restorer = update.getRestorer();
} catch(error) { } catch(error) {
console.error(" Fail to get updater error: " + error); console.error(`Fail to get restorer: ${error}`);
} }
``` ```
## update.getUpdaterFromOther ## update.getLocalUpdater
getUpdaterFromOther(upgradeFile: string, device: string, updateType?: UpdateTypes): Updater getLocalUpdater(): LocalUpdater
获取其它设备为本设备升级的Updater 获取本地升级对象
**系统能力**:SystemCapability.Update.UpdateService **系统能力**:SystemCapability.Update.UpdateService
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ----------- | --------------------------- | ---- | ----- |
| upgradeFile | string | 是 | 升级文件 |
| device | string | 是 | 待升级设备 |
| updateType | [UpdateTypes](#updatetypes) | 是 | 升级类型 |
**返回值:** **返回值:**
| 类型 | 说明 | | 类型 | 说明 |
| ------------------- | ---- | | ------------------- | ---- |
| [Updater](#updater) | 升级对象 | | [LocalUpdater](#localupdater) | 本地升级对象 |
**示例:** **示例:**
``` ```
try { try {
let updater = update.getUpdaterFromOther('/data/updater/updater.zip', '1234567890', 'OTA'); let localUpdater = update.getLocalUpdater();
} catch(error) { } catch(error) {
console.error(" Fail to get updater error: " + error); console.error(`Fail to get localUpdater error: ${error}`);
} }
``` ```
## Updater ## Updater
### checkNewVersion
checkNewVersion(callback: AsyncCallback\<CheckResult>): void
检查新版本信息。使用callback异步回调。
**系统能力**:SystemCapability.Update.UpdateService
**需要权限**:ohos.permission.UPDATE_SYSTEM,该权限为系统权限
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ---------------------------------------- | ---- | --------- |
| callback | AsyncCallback\<[CheckResult](#checkresult)> | 是 | 回调函数,返回搜包结果对象。 |
**示例:**
```
updater.checkNewVersion((err, result) => {
console.log(`checkNewVersion isExistNewVersion ${result?.isExistNewVersion}`);
});
```
### checkNewVersion
checkNewVersion(): Promise\<CheckResult>
检查新版本信息。使用Promise异步回调。
**系统能力**:SystemCapability.Update.UpdateService
**需要权限**:ohos.permission.UPDATE_SYSTEM,该权限为系统权限
**返回值:**
| 类型 | 说明 |
| ---------------------------------------- | ---------------- |
| Promise\<[CheckResult](#checkresult)> | Promise对象,返回搜包结果对象。 |
**示例:**
```
updater.checkNewVersion().then(result => {
console.log(`checkNewVersion isExistNewVersion: ${result.isExistNewVersion}`);
// 版本摘要信息
console.log(`checkNewVersion versionDigestInfo: ${result.newVersionInfo.versionDigestInfo.versionDigest}`);
}).catch(err => {
console.log(`checkNewVersion promise error ${JSON.stringify(err)}`);
});
```
### getNewVersionInfo ### getNewVersionInfo
getNewVersionInfo(callback: AsyncCallback\<NewVersionInfo>): void getNewVersionInfo(callback: AsyncCallback\<NewVersionInfo>): void
获取新版本信息,使用callback方式作为异步方法 获取新版本信息。使用callback异步回调
**系统能力**:SystemCapability.Update.UpdateService **系统能力**:SystemCapability.Update.UpdateService
**需要权限**:ohos.permission.UPDATE_SYSTEM,该权限为系统权限
**参数:** **参数:**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | ---------------------------------------- | ---- | --------- | | -------- | ---------------------------------------- | ---- | --------- |
| callback | AsyncCallback<[NewVersionInfo](#newversioninfo)> | 否 | 回调返回新版本信息 | | callback | AsyncCallback\<[NewVersionInfo](#newversioninfo)> | 是 | 回调函数,返回新版本信息对象。 |
**示例:** **示例:**
``` ```
updater.getNewVersionInfo((err, info) => { updater.getNewVersionInfo((err, info) => {
console.log("getNewVersionInfo success " + info.status); console.log(`info displayVersion = ${info?.versionComponents[0].displayVersion}`);
console.log(`info versionName = ` + info.checkResults[0].versionName); console.log(`info innerVersion = ${info?.versionComponents[0].innerVersion}`);
console.log(`info versionCode = ` + info.checkResults[0].versionCode);
console.log(`info verifyInfo = ` + info.checkResults[0].verifyInfo);
}); });
``` ```
...@@ -146,451 +186,1377 @@ updater.getNewVersionInfo((err, info) => { ...@@ -146,451 +186,1377 @@ updater.getNewVersionInfo((err, info) => {
getNewVersionInfo(): Promise\<NewVersionInfo> getNewVersionInfo(): Promise\<NewVersionInfo>
获取新版本信息,使用promise方式作为异步方法 获取新版本信息。使用Promise异步回调
**系统能力**:SystemCapability.Update.UpdateService **系统能力**:SystemCapability.Update.UpdateService
**需要权限**:ohos.permission.UPDATE_SYSTEM,该权限为系统权限
**返回值:** **返回值:**
| 类型 | 说明 | | 类型 | 说明 |
| ---------------------------------------- | ---------------- | | ---------------------------------------- | ---------------- |
| Promise\<[NewVersionInfo](#newversioninfo)> | Promise,用于异步获取结果 | | Promise\<[NewVersionInfo](#newversioninfo)> | Promise对象,返回新版本信息对象。 |
**示例:** **示例:**
``` ```
updater.getNewVersionInfo().then(value => { updater.getNewVersionInfo().then(info => {
console.log(`info versionName = ` + value.checkResults[0].versionName); console.log(`info displayVersion = ${info.versionComponents[0].displayVersion}`);
console.log(`info versionCode = ` + value.checkResults[0].versionCode); console.log(`info innerVersion = ${info.versionComponents[0].innerVersion}`);
console.log(`info verifyInfo = ` + value.checkResults[0].verifyInfo);
}).catch(err => { }).catch(err => {
console.log("getNewVersionInfo promise error: " + err.code); console.log(`getNewVersionInfo promise error ${JSON.stringify(err)}`);
}); });
``` ```
### checkNewVersion ### getCurrentVersionInfo
checkNewVersion(callback: AsyncCallback\<NewVersionInfo>): void getCurrentVersionInfo(callback: AsyncCallback\<CurrentVersionInfo>): void
检查新版本,使用callback方式作为异步方法 获取当前版本信息。使用callback异步回调
**系统能力**:SystemCapability.Update.UpdateService **系统能力**:SystemCapability.Update.UpdateService
**需要权限**:ohos.permission.UPDATE_SYSTEM,该权限为系统权限
**参数:** **参数:**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | ---------------------------------------- | ---- | --------- | | -------- | ---------------------------------------- | ---- | --------- |
| callback | AsyncCallback\<[NewVersionInfo](#newversioninfo)> | 否 | 回调返回新版本信息 | | callback | AsyncCallback\<[CurrentVersionInfo](#currentversioninfo)> | 是 | 回调函数,返回当前版本信息对象。 |
**示例:** **示例:**
``` ```
updater.checkNewVersion((err, info) => { updater.getCurrentVersionInfo((err, info) => {
console.log("checkNewVersion success " + info.status); console.log(`info osVersion = ${info?.osVersion}`);
console.log(`info versionName = ` + info.checkResults[0].versionName); console.log(`info deviceName = ${info?.deviceName}`);
console.log(`info versionCode = ` + info.checkResults[0].versionCode); console.log(`info displayVersion = ${info?.versionComponents[0].displayVersion}`);
console.log(`info verifyInfo = ` + info.checkResults[0].verifyInfo);
}); });
``` ```
### checkNewVersion ### getCurrentVersionInfo
checkNewVersion(): Promise\<NewVersionInfo> getCurrentVersionInfo(): Promise\<CurrentVersionInfo>
检查新版本,使用promise方式作为异步方法 获取当前版本信息。使用Promise异步回调
**系统能力**:SystemCapability.Update.UpdateService **系统能力**:SystemCapability.Update.UpdateService
**返回值:** **需要权限**:ohos.permission.UPDATE_SYSTEM,该权限为系统权限
**返回值:**
| 类型 | 说明 | | 类型 | 说明 |
| ---------------------------------------- | ---------------- | | ---------------------------------------- | ---------------- |
| Promise\<[NewVersionInfo](#newversioninfo)> | Promise函数返回新版本信息 | | Promise\<[CurrentVersionInfo](#currentversioninfo)> | Promise对象,返回当前版本对象。 |
**示例:** **示例**
``` ```
updater.checkNewVersion().then(value => { updater.getCurrentVersionInfo().then(info => {
console.log(`info versionName = ` + value.checkResults[0].versionName); console.log(`info osVersion = ${info.osVersion}`);
console.log(`info versionCode = ` + value.checkResults[0].versionCode); console.log(`info deviceName = ${info.deviceName}`);
console.log(`info verifyInfo = ` + value.checkResults[0].verifyInfo); console.log(`info displayVersion = ${info.versionComponents[0].displayVersion}`);
}).catch(err => { }).catch(err => {
console.log("checkNewVersion promise error: " + err.code); console.log(`getCurrentVersionInfo promise error ${JSON.stringify(err)}`);
}); });
``` ```
### verifyUpdatePackage ### getTaskInfo
verifyUpdatePackage(upgradeFile: string, certsFile: string): void getTaskInfo(callback: AsyncCallback\<TaskInfo>): void
升级前检查升级包是否有效 获取升级任务信息。使用callback异步回调
**系统能力**:SystemCapability.Update.UpdateService **系统能力**:SystemCapability.Update.UpdateService
**需要权限**:ohos.permission.UPDATE_SYSTEM,该权限为系统权限
**参数:** **参数:**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| ----------- | ------ | ---- | --------- | | -------- | ---------------------------------------- | ---- | --------- |
| upgradeFile | string | 是 | 待校验的升级包路径 | | callback | AsyncCallback\<[TaskInfo](#taskinfo)> | 是 | 回调函数,返回升级任务信息对象。 |
| certsFile | string | 是 | 证书路径 |
**示例:** **示例:**
``` ```
updater.on("verifyProgress", callback => { updater.getTaskInfo((err, info) => {
console.info('on verifyProgress ' + callback.percent); console.log(`getTaskInfo isexistTask= ${info?.existTask}`);
}); });
update.verifyUpdatePackage("XXX", "XXX");
``` ```
### rebootAndCleanUserData<sup>8+</sup> ### getTaskInfo
rebootAndCleanUserData(): Promise\<number> getTaskInfo(): Promise\<TaskInfo>
重启设备并清除用户分区数据 获取升级任务信息。使用Promise异步回调
**系统能力**:SystemCapability.Update.UpdateService **系统能力**:SystemCapability.Update.UpdateService
**返回值:** **返回值:**
| 类型 | 说明 | | 类型 | 说明 |
| ---------------- | ------------------- | | ---------------------------------------- | ---------------- |
| Promise\<number> | Promise示例,用于异步获取结果。 | | Promise\<[TaskInfo](#taskinfo)> | Promise对象,返回任务信息对象。 |
**示例:** **示例:**
``` ```
updater.rebootAndCleanUserData().then(result => { updater.getTaskInfo().then(info => {
console.log("rebootAndCleanUserData " + result); console.log(`getTaskInfo isexistTask= ${info.existTask}`);
}).catch(err => { }).catch(err => {
console.info("rebootAndCleanUserData promise error: " + err.code); console.log(`getTaskInfo promise error ${JSON.stringify(err)}`);
}); });
``` ```
### rebootAndCleanUserData<sup>8+</sup> ### download
rebootAndCleanUserData(callback: AsyncCallback\<number>): void download(versionDigestInfo: VersionDigestInfo, downloadOptions: DownloadOptions, callback: AsyncCallback\<void>): void
重启设备并清除用户分区数据 下载新版本。使用callback异步回调
**系统能力**:SystemCapability.Update.UpdateService **系统能力**:SystemCapability.Update.UpdateService
**需要权限**:ohos.permission.UPDATE_SYSTEM,该权限为系统权限
**参数:** **参数:**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | ---- | ---------------------- | | -------- | ---------------------------------------- | ---- | --------- |
| callback | Function | 是 | AsyncCallback\<number> | | versionDigestInfo | [VersionDigestInfo](#versiondigestinfo) | 是 | 版本摘要信息 |
| downloadOptions | [DownloadOptions](#downloadoptions) | 是 | 下载选项 |
| callback | AsyncCallback\<void> | 是 | 回调函数。当下载成功时,err为undefined,否则为错误对象。 |
**示例:** **示例:**
``` ```
updater.rebootAndCleanUserData((err, result) => { // 版本摘要信息
console.log("rebootAndCleanUserData ", result) var versionDigestInfo = {
versionDigest: "versionDigest" // 检测结果中的版本摘要信息
}
// 下载选项
var downloadOptions = {
allowNetwork: update.NetType.CELLULAR_AND_WIFI, // 允许所有网络下载
order: update.Order.DOWNLOAD // 下载
}
updater.download(versionDigestInfo, downloadOptions, (err) => {
console.log(`download error ${JSON.stringify(err)}`);
}); });
``` ```
### applyNewVersion ### download
applyNewVersion(): Promise\<number> download(versionDigestInfo: VersionDigestInfo, downloadOptions: DownloadOptions): Promise\<void>
重启设备后安装升级包 下载新版本。使用Promise异步回调
**系统能力**:SystemCapability.Update.UpdateService **系统能力**:SystemCapability.Update.UpdateService
**需要权限**:ohos.permission.UPDATE_SYSTEM,该权限为系统权限
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ---------------------------------------- | ---- | --------- |
| versionDigestInfo | [VersionDigestInfo](#versiondigestinfo) | 是 | 版本摘要信息 |
| downloadOptions | [DownloadOptions](#downloadoptions) | 是 | 下载选项 |
**返回值:** **返回值:**
| 类型 | 说明 | | 类型 | 说明 |
| ---------------- | ------------------- | | ---------------------------------------- | ---------------- |
| Promise\<number> | Promise示例,用于异步获取结果。 | | Promise\<void> | Promise对象。无返回结果的Promise对象。 |
**示例:** **示例:**
``` ```
updater.applyNewVersion().then(result => { // 版本摘要信息
console.log("appVewVersion ", result) var versionDigestInfo = {
versionDigest: "versionDigest" // 检测结果中的版本摘要信息
}
// 下载选项
var downloadOptions = {
allowNetwork: update.NetType.CELLULAR_AND_WIFI, // 允许所有网络下载
order: update.Order.DOWNLOAD // 下载
}
updater.download(versionDigestInfo, downloadOptions).then(() => {
console.log(`download start`);
}).catch(err => { }).catch(err => {
console.info("applyNewVersion promise error: " + err.code); console.log(`download error ${JSON.stringify(err)}`);
}); });
``` ```
### applyNewVersion ### resumeDownload
applyNewVersion(callback: AsyncCallback\<number>): void resumeDownload(versionDigestInfo: VersionDigestInfo, resumeDownloadOptions: ResumeDownloadOptions, callback: AsyncCallback\<void>): void
重启设备后安装升级包 恢复下载新版本。使用callback异步回调
**系统能力**:SystemCapability.Update.UpdateService **系统能力**:SystemCapability.Update.UpdateService
**需要权限**:ohos.permission.UPDATE_SYSTEM,该权限为系统权限
**参数:** **参数:**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | ---- | ---------------------- | | -------- | ---------------------------------------- | ---- | --------- |
| callback | Function | 是 | AsyncCallback\<number> | | versionDigestInfo | [VersionDigestInfo](#versiondigestinfo) | 是 | 版本摘要信息 |
| resumeDownloadOptions | [ResumeDownloadOptions](#resumedownloadoptions) | 是 | 恢复下载选项 |
| callback | AsyncCallback\<void> | 是 | 回调函数。当恢复下载成功时,err为undefined,否则为错误对象。 |
**示例:** **示例:**
``` ```
updater.applyNewVersion((err, result) => { // 版本摘要信息
console.log("applyNewVersion ", result) var versionDigestInfo = {
versionDigest: "versionDigest" // 检测结果中的版本摘要信息
}
// 恢复下载选项
var resumeDownloadOptions = {
allowNetwork: update.NetType.CELLULAR_AND_WIFI, // 允许所有网络下载
}
updater.resumeDownload(versionDigestInfo, resumeDownloadOptions, (err) => {
console.log(`resumeDownload error ${JSON.stringify(err)}`);
}); });
``` ```
### download ### resumeDownload
resumeDownload(versionDigestInfo: VersionDigestInfo, resumeDownloadOptions: ResumeDownloadOptions): Promise\<void>
恢复下载新版本。使用Promise异步回调。
**系统能力**:SystemCapability.Update.UpdateService
**需要权限**:ohos.permission.UPDATE_SYSTEM,该权限为系统权限
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ---------------------------------------- | ---- | --------- |
| versionDigestInfo | [VersionDigestInfo](#versiondigestinfo) | 是 | 版本摘要信息 |
| resumeDownloadOptions | [ResumeDownloadOptions](#resumedownloadoptions) | 是 | 恢复下载选项 |
**返回值:**
| 类型 | 说明 |
| ---------------------------------------- | ---------------- |
| Promise\<void> | Promise对象。无返回结果的Promise对象。 |
**示例:**
```
// 版本摘要信息
var versionDigestInfo = {
versionDigest: "versionDigest" // 检测结果中的版本摘要信息
}
// 恢复下载选项
var resumeDownloadOptions = {
allowNetwork: update.NetType.CELLULAR_AND_WIFI, // 允许所有网络下载
}
updater.resumeDownload(versionDigestInfo, resumeDownloadOptions).then(value => {
console.log(`resumeDownload start`);
}).catch(err => {
console.log(`resumeDownload error ${JSON.stringify(err)}`);
});
```
### pauseDownload
pauseDownload(versionDigestInfo: VersionDigestInfo, pauseDownloadOptions: PauseDownloadOptions, callback: AsyncCallback\<void>): void
暂停下载新版本。使用callback异步回调。
**系统能力**:SystemCapability.Update.UpdateService
**需要权限**:ohos.permission.UPDATE_SYSTEM,该权限为系统权限
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ---------------------------------------- | ---- | --------- |
| versionDigestInfo | [VersionDigestInfo](#versiondigestinfo) | 是 | 版本摘要信息 |
| pauseDownloadOptions | [PauseDownloadOptions](#pausedownloadoptions) | 是 | 暂停下载选项 |
| callback | AsyncCallback\<void> | 是 | 回调函数。当暂停下载成功时,err为undefined,否则为错误对象。 |
**示例:**
```
// 版本摘要信息
var versionDigestInfo = {
versionDigest: "versionDigest" // 检测结果中的版本摘要信息
}
// 暂停下载选项
var pauseDownloadOptions = {
isAllowAutoResume: true // 允许自动恢复下载
}
updater.pauseDownload(versionDigestInfo, pauseDownloadOptions, (err) => {
console.log(`pauseDownload error ${JSON.stringify(err)}`);
});
```
### pauseDownload
pauseDownload(versionDigestInfo: VersionDigestInfo, pauseDownloadOptions: PauseDownloadOptions): Promise\<void>
恢复下载新版本。使用Promise异步回调。
**系统能力**:SystemCapability.Update.UpdateService
**需要权限**:ohos.permission.UPDATE_SYSTEM,该权限为系统权限
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ---------------------------------------- | ---- | --------- |
| versionDigestInfo | [VersionDigestInfo](#versiondigestinfo) | 是 | 版本摘要信息 |
| pauseDownloadOptions | [PauseDownloadOptions](#pausedownloadoptions) | 是 | 暂停下载选项 |
**返回值:**
| 类型 | 说明 |
| ---------------------------------------- | ---------------- |
| Promise\<void> | Promise对象。无返回结果的Promise对象。 |
**示例:**
```
// 版本摘要信息
var versionDigestInfo = {
versionDigest: "versionDigest" // 检测结果中的版本摘要信息
}
// 暂停下载选项
var pauseDownloadOptions = {
isAllowAutoResume: true // 允许自动恢复下载
}
updater.pauseDownload(versionDigestInfo, pauseDownloadOptions).then(value => {
console.log(`pauseDownload`);
}).catch(err => {
console.log(`pauseDownload error ${JSON.stringify(err)}`);
});
```
### upgrade
download(): void upgrade(versionDigestInfo: VersionDigestInfo, upgradeOptions: UpgradeOptions, callback: AsyncCallback\<void>): void
下载新版本,并监听下载进程 升级新版本。使用callback异步回调
**系统能力**:SystemCapability.Update.UpdateService **系统能力**:SystemCapability.Update.UpdateService
**需要权限**:ohos.permission.UPDATE_SYSTEM,该权限为系统权限
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ---------------------------------------- | ---- | --------- |
| versionDigestInfo | [VersionDigestInfo](#versiondigestinfo) | 是 | 版本摘要信息 |
| upgradeOptions | [UpgradeOptions](#upgradeoptions) | 是 | 更新选项 |
| callback | AsyncCallback\<void> | 是 | 回调函数。当升级执行成功时,err为undefined,否则为错误对象。 |
**示例:** **示例:**
``` ```
updater.on("downloadProgress", progress => { // 版本摘要信息
console.log("downloadProgress on" + progress); var versionDigestInfo = {
console.log(`downloadProgress status: ` + progress.status); versionDigest: "versionDigest" // 检测结果中的版本摘要信息
console.log(`downloadProgress percent: ` + progress.percent); }
// 安装选项
var upgradeOptions = {
order: update.Order.INSTALL // 安装指令
}
updater.upgrade(versionDigestInfo, upgradeOptions, (err) => {
console.log(`upgrade error ${JSON.stringify(err)}`);
}); });
updater.download();
``` ```
### upgrade ### upgrade
upgrade():void upgrade(versionDigestInfo: VersionDigestInfo, upgradeOptions: UpgradeOptions): Promise\<void>
启动升级 升级新版本。使用Promise异步回调
**系统能力**:SystemCapability.Update.UpdateService **系统能力**:SystemCapability.Update.UpdateService
**需要权限**:ohos.permission.UPDATE_SYSTEM,该权限为系统权限
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ---------------------------------------- | ---- | --------- |
| versionDigestInfo | [VersionDigestInfo](#versiondigestinfo) | 是 | 版本摘要信息 |
| upgradeOptions | [UpgradeOptions](#upgradeoptions) | 是 | 更新选项 |
**返回值:**
| 类型 | 说明 |
| ---------------------------------------- | ---------------- |
| Promise\<void> | Promise对象。无返回结果的Promise对象。 |
**示例:** **示例:**
``` ```
updater.on("upgradeProgress", progress => { // 版本摘要信息
console.log("upgradeProgress on" + progress); var versionDigestInfo = {
console.log(`upgradeProgress status: ` + progress.status); versionDigest: "versionDigest" // 检测结果中的版本摘要信息
console.log(`upgradeProgress percent: ` + progress.percent); }
// 安装选项
var upgradeOptions = {
order: update.Order.INSTALL // 安装指令
}
updater.upgrade(versionDigestInfo, upgradeOptions).then(() => {
console.log(`upgrade start`);
}).catch(err => {
console.log(`upgrade error ${JSON.stringify(err)}`);
}); });
updater.upgrade();
``` ```
### setUpdatePolicy ### clearError
setUpdatePolicy(policy: UpdatePolicy, callback: AsyncCallback\<number>): void clearError(versionDigestInfo: VersionDigestInfo, clearOptions: ClearOptions, callback: AsyncCallback\<void>): void
设置升级策略,使用callback方式作为异步方法 清除异常状态。使用callback异步回调
**系统能力**:SystemCapability.Update.UpdateService **系统能力**:SystemCapability.Update.UpdateService
**需要权限**:ohos.permission.UPDATE_SYSTEM,该权限为系统权限
**参数:** **参数:**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | ----------------------------- | ---- | ------ | | -------- | ---------------------------------------- | ---- | --------- |
| policy | [UpdatePolicy](#updatepolicy) | 是 | 设置升级策略 | | versionDigestInfo | [VersionDigestInfo](#versiondigestinfo) | 是 | 版本摘要信息 |
| callback | AsyncCallback\<number> | 是 | 回调返回结果 | | clearOptions | [ClearOptions](#clearoptions) | 是 | 清除选项 |
| callback | AsyncCallback\<void> | 是 | 回调函数。当清除异常成功时,err为undefined,否则为错误对象。 |
**示例:** **示例:**
``` ```
// 设置策略 // 版本摘要信息
let policy = { var versionDigestInfo = {
autoDownload: false, versionDigest: "versionDigest" // 检测结果中的版本摘要信息
autoDownloadNet: true, }
mode: 2,
autoUpgradeInterval: [ 2, 3 ], // 清除选项
autoUpgradeCondition: 2 var clearOptions = {
} status: update.UpgradeStatus.UPGRADE_FAIL,
updater.setUpdatePolicy(policy, (err, result) => { }
console.log("setUpdatePolicy ", result) updater.clearError(versionDigestInfo, clearOptions, (err) => {
console.log(`clearError error ${JSON.stringify(err)}`);
}); });
``` ```
### setUpdatePolicy ### clearError
setUpdatePolicy(policy: UpdatePolicy): Promise\<number> clearError(versionDigestInfo: VersionDigestInfo, clearOptions: ClearOptions): Promise\<void>
设置升级策略,使用promise方式作为异步方法 清除异常状态。使用Promise异步回调
**系统能力**:SystemCapability.Update.UpdateService **系统能力**:SystemCapability.Update.UpdateService
**需要权限**:ohos.permission.UPDATE_SYSTEM,该权限为系统权限
**参数:** **参数:**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| ------ | ----------------------------- | ---- | ------ | | -------- | ---------------------------------------- | ---- | --------- |
| policy | [UpdatePolicy](#updatepolicy) | 是 | 设置升级策略 | | versionDigestInfo | [VersionDigestInfo](#versiondigestinfo) | 是 | 版本摘要信息 |
| clearOptions | [ClearOptions](#clearoptions) | 是 | 更新选项 |
**返回值:** **返回值:**
| 类型 | 说明 | | 类型 | 说明 |
| ---------------- | --------------- | | ---------------------------------------- | ---------------- |
| Promise\<number> | Promise函数返回设置结果 | | Promise\<void> | Promise对象。无返回结果的Promise对象。 |
**示例:** **示例:**
``` ```
let policy = { // 版本摘要信息
autoDownload: false, var versionDigestInfo = {
autoDownloadNet: true, versionDigest: "versionDigest" // 检测结果中的版本摘要信息
mode: 2, }
autoUpgradeInterval: [ 2, 3 ],
autoUpgradeCondition: 2 // 清除选项
} var clearOptions = {
updater.setUpdatePolicy(policy).then(result => status: update.UpgradeStatus.UPGRADE_FAIL,
console.log("setUpdatePolicy ", result) }
).catch(err => { updater.clearError(versionDigestInfo, clearOptions).then(() => {
console.log("setUpdatePolicy promise error: " + err.code); console.log(`clearError success`);
}).catch(err => {
console.log(`clearError error ${JSON.stringify(err)}`);
}); });
``` ```
### getUpdatePolicy ### getUpgradePolicy
getUpdatePolicy(callback: AsyncCallback\<UpdatePolicy>): void getUpgradePolicy(callback: AsyncCallback\<UpgradePolicy>): void
获取升级策略信息,使用callback方式作为异步方法 获取升级策略信息。使用callback异步回调
**系统能力**:SystemCapability.Update.UpdateService **系统能力**:SystemCapability.Update.UpdateService
**需要权限**:ohos.permission.UPDATE_SYSTEM,该权限为系统权限
**参数:** **参数:**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | ---------------------------------------- | ---- | ---------- | | -------- | ---------------------------------------- | ---- | ---------- |
| callback | AsyncCallback\<[UpdatePolicy](#updatepolicy)> | 否 | 回调返回升级策略信息 | | callback | AsyncCallback\<[UpgradePolicy](#upgradepolicy)> | 是 | 回调函数,返回升级策略信息对象 |
**示例:** **示例:**
``` ```
updater.getUpdatePolicy((err, policy) => { updater.getUpgradePolicy((err, policy) => {
console.log("getUpdatePolicy success"); console.log(`policy downloadStrategy = ${policy?.downloadStrategy}`);
console.log(`policy autoDownload = ` + policy.autoDownload); console.log(`policy autoUpgradeStrategy = ${policy?.autoUpgradeStrategy}`);
console.log(`policy autoDownloadNet = ` + policy.autoDownloadNet);
console.log(`policy mode = ` + policy.mode);
}); });
``` ```
### getUpdatePolicy ### getUpgradePolicy
getUpdatePolicy(): Promise\<UpdatePolicy> getUpgradePolicy(): Promise\<UpgradePolicy>
获取升级策略,通过promise方式作为异步方法。 获取升级策略,通过promise方式作为异步方法。
**系统能力**:SystemCapability.Update.UpdateService **系统能力**:SystemCapability.Update.UpdateService
**需要权限**:ohos.permission.UPDATE_SYSTEM,该权限为系统权限
**返回值:** **返回值:**
| 类型 | 说明 | | 类型 | 说明 |
| --------------------------------------- | ----------------- | | --------------------------------------- | ----------------- |
| Promise\<[UpdatePolicy](#updatepolicy)> | Promise函数返回升级策略信息 | | Promise\<[UpgradePolicy](#upgradepolicy)> | Promise对象,返回升级策略信息对象。 |
**示例:** **示例:**
``` ```
updater.getUpdatePolicy().then(value => { updater.getUpgradePolicy().then(policy => {
console.log(`info autoDownload = ` + value.autoDownload); console.log(`policy downloadStrategy = ${policy.downloadStrategy}`);
console.log(`info autoDownloadNet = ` + value.autoDownloadNet); console.log(`policy autoUpgradeStrategy = ${policy.autoUpgradeStrategy}`);
console.log(`info mode = ` + value.mode);
}).catch(err => { }).catch(err => {
console.log("getUpdatePolicy promise error: " + err.code); console.log(`getUpgradePolicy promise error ${JSON.stringify(err)}`);
}); });
``` ```
## UpdateTypes ### setUpgradePolicy
升级类型。 setUpgradePolicy(policy: UpgradePolicy, callback: AsyncCallback\<number>): void
**系统能力**:以下各项对应的系统能力均为:SystemCapability.Update.UpdateService 设置升级策略。使用callback异步回调。
| 参数名 | 说明 | **系统能力**:SystemCapability.Update.UpdateService
| ----- | ----- |
| OTA | OTA升级 |
| patch | 补丁升级 |
## PackageTypes **需要权限**:ohos.permission.UPDATE_SYSTEM,该权限为系统权限
升级包类型。 **参数:**
**系统能力**:以下各项对应的系统能力均为:SystemCapability.Update.UpdateService | 参数名 | 类型 | 必填 | 说明 |
| -------- | ---------------------------------------- | ---- | ---------- |
| policy | [UpgradePolicy](#upgradepolicy) | 是 | 升级策略 |
| callback | AsyncCallback\<number> | 是 | 回调函数,返回设置结果对象 |
| 参数名 | 默认值 | 说明 | **示例:**
| -------------------- | ---- | ------- |
| PACKAGE_TYPE_NORMAL | 1 | 通用升级包 |
| PACKAGE_TYPE_BASE | 2 | 基础升级包 |
| PACKAGE_TYPE_CUST | 3 | 定制升级包 |
| PACKAGE_TYPE_PRELOAD | 4 | 预装升级包 |
| PACKAGE_TYPE_COTA | 5 | 参数配置升级包 |
| PACKAGE_TYPE_VERSION | 6 | 版本升级包 |
| PACKAGE_TYPE_PATCH | 7 | 补丁包 |
## InstallMode ```
let policy = {
downloadStrategy: false,
autoUpgradeStrategy: false,
autoUpgradeInterval: [ 120, 240 ], // 自动升级时间段,用分钟表示
}
updater.setUpgradePolicy(policy, (err, value) => {
console.log(`setUpgradePolicy result: ${value?}`);
});
```
安装模式。 ### setUpgradePolicy
**系统能力**:以下各项对应的系统能力均为:SystemCapability.Update.UpdateService setUpgradePolicy(policy: UpgradePolicy): Promise\<number>
| 参数名 | 默认值 | 说明 | 设置升级策略。使用Promise异步回调。
| ------------------- | ---- | ---- |
| INSTALL_MODE_NORMAL | 0 | 正常升级 |
| INSTALL_MODE_NIGHT | 1 | 夜间升级 |
| INSTALL_MODE_AUTO | 2 | 自动升级 |
## NewVersionStatus **系统能力**:SystemCapability.Update.UpdateService
新版本检测状态。 **需要权限**:ohos.permission.UPDATE_SYSTEM,该权限为系统权限
**系统能力**:以下各项对应的系统能力均为:SystemCapability.Update.UpdateService **参数:**
| 参数名 | 默认值 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| ------------------- | ---- | -------- | | ------ | ----------------------------- | ---- | ------ |
| VERSION_STATUS_ERR | -1 | 检测版本时出错 | | policy | [UpgradePolicy](#upgradepolicy) | 是 | 升级策略 |
| VERSION_STATUS_NEW | 0 | 检测到新版本 |
| VERSION_STATUS_NONE | 1 | 没有检测到新版本 |
| VERSION_STATUS_BUSY | 2 | 检测版本时忙 |
## UpdatePolicy **返回值:**
升级策略。 | 类型 | 说明 |
| ---------------- | --------------- |
| Promise\<number> | Promise对象,返回设置结果对象。 |
**系统能力**:以下各项对应的系统能力均为:SystemCapability.Update.UpdateService **示例:**
| 名称 | 参数类型 | 必填 | 说明 | ```
| ------------------- | --------------------------- | ---- | ------- | let policy = {
| autoDownload | bool | 是 | 自动升级开关 | downloadStrategy: false,
| installMode | [InstallMode](#installmode) | 是 | 安装模式 | autoUpgradeStrategy: false,
| autoUpgradeInterval | Array\<number> | 是 | 自动升级时间段 | autoUpgradeInterval: [ 120, 240 ], // 自动升级时间段,用分钟表示
}
updater.setUpgradePolicy(policy).then(result =>
console.log(`setUpgradePolicy &{result}`);
).catch(err => {
console.log(`setUpgradePolicy promise error ${JSON.stringify(err)}`);
});
```
## NewVersionInfo ### terminateUpgrade
新版本信息。 terminateUpgrade(callback: AsyncCallback\<void>): void
**系统能力**:以下各项对应的系统能力均为:SystemCapability.Update.UpdateService 终止升级。使用callback异步回调。
| 名称 | 参数类型 | 必填 | 说明 | **系统能力**:SystemCapability.Update.UpdateService
| --------------- | ---------------------------------------- | ---- | ---- |
| status | [NewVersionStatus](#newversionstatus) | 是 | 升级状态 |
| errMsg | string | 是 | 错误信息 |
| checkResults | Array<[CheckResult](#checkresult)> | 是 | 检测结果 |
| descriptionInfo | Array\<[DescriptionInfo](#descriptioninfo)> | 是 | 描述信息 |
## CheckResult **需要权限**:ohos.permission.UPDATE_SYSTEM,该权限为系统权限
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ---------------------------------------- | ---- | --------- |
| callback | AsyncCallback\<void> | 是 | 回调函数。当清除升级缓存成功时,err为undefined,否则为错误对象。 |
检测结果。 **示例:**
**系统能力**:以下各项对应的系统能力均为:SystemCapability.Update.UpdateService ```
updater.terminateUpgrade((err) => {
console.log(`terminateUpgrade error ${JSON.stringify(err)}`);
});
```
| 名称 | 参数类型 | 必填 | 说明 | ### terminateUpgrade
| ------------- | ----------------------------- | ---- | ------ |
| versionName | string | 是 | 版本名称 |
| versionCode | number | 是 | 版本编码 |
| size | number | 是 | 版本大小 |
| verifyInfo | string | 是 | 版本校验信息 |
| packageType | [PackageTypes](#packagetypes) | 是 | 版本类型 |
| descriptionId | string | 是 | 版本描述信息 |
## DescriptionInfo terminateUpgrade(): Promise\<void>
版本描述信息 终止升级。使用Promise异步回调
**系统能力**以下各项对应的系统能力均为:SystemCapability.Update.UpdateService **系统能力**:SystemCapability.Update.UpdateService
| 名称 | 参数类型 | 必填 | 说明 | **返回值:**
| ------------- | ------ | ---- | ------------- |
| descriptionId | string | 是 | 版本versionId信息 | | 类型 | 说明 |
| content | string | 是 | 版本changelog信息 | | ---------------------------------------- | ---------------- |
\ No newline at end of file | Promise\<void> | Promise对象。无返回结果的Promise对象。 |
**示例:**
```
updater.terminateUpgrade().then(() => {
console.log(`terminateUpgrade success`);
}).catch(err => {
console.log(`terminateUpgrade error ${JSON.stringify(err)}`);
});
```
### on
on(eventClassifyInfo: EventClassifyInfo, taskCallback: UpgradeTaskCallback): void
注册事件监听。使用callback异步回调。
**系统能力**:SystemCapability.Update.UpdateService
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ---------------------------------------- | ---- | --------- |
| eventClassifyInfo | [EventClassifyInfo](#eventclassifyinfo) | 是 | 事件信息 |
| taskCallback | [UpgradeTaskCallback](#upgradetaskcallback) | 是 | 事件回调 |
**示例:**
```
var eventClassifyInfo = {
eventClassify: update.EventClassify.TASK, // 订阅升级更新事件
extraInfo: ""
}
function onTaskUpdate(eventInfo): void {
console.log(`on eventInfo id `, eventInfo.eventId);
}
updater.on(eventClassifyInfo, onTaskUpdate);
```
### off
off(eventClassifyInfo: EventClassifyInfo, taskCallback?: UpgradeTaskCallback): void
取消注册事件监听。使用callback异步回调。
**系统能力**:SystemCapability.Update.UpdateService
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ---------------------------------------- | ---- | --------- |
| eventClassifyInfo | [EventClassifyInfo](#eventclassifyinfo) | 是 | 事件信息 |
| taskCallback | [UpgradeTaskCallback](#upgradetaskcallback) | 否 | 事件回调 |
**示例:**
```
var eventClassifyInfo = {
eventClassify: update.EventClassify.TASK, // 订阅升级更新事件
extraInfo: ""
}
function onTaskUpdate(eventInfo): void {
console.log(`on eventInfo id `, eventInfo.eventId);
}
updater.off(eventClassifyInfo, onTaskUpdate);
```
## Restorer
### factoryReset
factoryReset(callback: AsyncCallback\<void>): void
恢复出厂设置。使用callback异步回调。
**系统能力**:SystemCapability.Update.UpdateService
**需要权限**:ohos.permission.FACTORY_RESET,该权限为系统权限
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ---------------------------------------- | ---- | --------- |
| callback | AsyncCallback\<void> | 是 | 回调函数。当恢复出厂执行成功时,err为undefined,否则为错误对象。 |
**示例:**
```
restorer.factoryReset((err) => {
console.log(`factoryReset error ${JSON.stringify(err)}`);
});
```
### factoryReset
factoryReset(): Promise\<void>
恢复出厂设置。使用Promise异步回调。
**系统能力**:SystemCapability.Update.UpdateService
**需要权限**:ohos.permission.FACTORY_RESET,该权限为系统权限
**返回值:**
| 类型 | 说明 |
| ---------------------------------------- | ---------------- |
| Promise\<void> | Promise对象。无返回结果的Promise对象。 |
**示例:**
```
restorer.factoryReset().then(() => {
console.log(`factoryReset success`);
}).catch(err => {
console.log(`factoryReset error ${JSON.stringify(err)}`);
});
```
## LocalUpdater
### verifyUpgradePackage
verifyUpgradePackage(upgradeFile: UpgradeFile, certsFile: string, callback: AsyncCallback\<number>): void
校验升级包。使用callback异步回调。
**系统能力**:SystemCapability.Update.UpdateService
**需要权限**:ohos.permission.UPDATE_SYSTEM,该权限为系统权限
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ---------------------------------------- | ---- | --------- |
| upgradeFile | [UpgradeFile](#upgradefile) | 是 | 升级文件 |
| certsFile | string | 是 | 证书文件路径 |
| callback | AsyncCallback\<number> | 是 | 回调函数,返回升级包校验结果对象 |
**示例:**
```
var upgradeFile = {
fileType: update.ComponentType.OTA, // OTA包
filePath: "path" // 本地升级包路径
}
localUpdater.verifyUpgradePackage(upgradeFile, "cerstFilePath", (err, result) => {
console.log(`factoryReset error ${JSON.stringify(err)}`);
});
```
### verifyUpgradePackage
verifyUpgradePackage(upgradeFile: UpgradeFile, certsFile: string): Promise\<number>
校验升级包。使用Promise异步回调。
**系统能力**:SystemCapability.Update.UpdateService
**需要权限**:ohos.permission.UPDATE_SYSTEM,该权限为系统权限
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ---------------------------------------- | ---- | --------- |
| upgradeFile | [UpgradeFile](#upgradefile) | 是 | 升级文件 |
| certsFile | string | 是 | 证书文件路径 |
**返回值:**
| 类型 | 说明 |
| ---------------------------------------- | ---------------- |
| Promise\<number> | Promise对象,返回升级包校验结果对象。 |
**示例:**
```
var upgradeFile = {
fileType: update.ComponentType.OTA, // OTA包
filePath: "path" // 本地升级包路径
}
localUpdater.verifyUpgradePackage(upgradeFile, "cerstFilePath").then(result => {
console.log(`verifyUpgradePackage result: ${result}`);
}).catch(err => {
console.log(`verifyUpgradePackage error ${JSON.stringify(err)}`);
});
```
### applyNewVersion
applyNewVersion(upgradeFiles: Array<[UpgradeFile](#upgradefile)>, callback: AsyncCallback\<void>): void
安装升级包。使用callback异步回调。
**系统能力**:SystemCapability.Update.UpdateService
**需要权限**:ohos.permission.UPDATE_SYSTEM,该权限为系统权限
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ---------------------------------------- | ---- | --------- |
| upgradeFile | Array<[UpgradeFile](#upgradefile)> | 是 | 升级文件 |
| callback | AsyncCallback\<void> | 是 | 回调函数。当安装升级包执行成功时,err为undefined,否则为错误对象。 |
**示例:**
```
var upgradeFiles = [{
fileType: update.ComponentType.OTA, // OTA包
filePath: "path" // 本地升级包路径
}]
localUpdater.applyNewVersion(upgradeFiles, (err) => {
console.log(`applyNewVersion error ${JSON.stringify(err)}`);
});
```
### applyNewVersion
applyNewVersion(upgradeFiles: Array<[UpgradeFile](#upgradefile)>): Promise\<void>
安装升级包。使用Promise异步回调。
**系统能力**:SystemCapability.Update.UpdateService
**需要权限**:ohos.permission.UPDATE_SYSTEM,该权限为系统权限
**返回值:**
| 类型 | 说明 |
| ---------------------------------------- | ---------------- |
| Promise\<void> | Promise对象。无返回结果的Promise对象。 |
**示例:**
```
var upgradeFiles = [{
fileType: update.update.ComponentType.OTA, // OTA包
filePath: "path" // 本地升级包路径
}]
localUpdater.applyNewVersion(upgradeFiles).then(() => {
console.log(`applyNewVersion success`);
}).catch(err => {
console.log(`applyNewVersion error ${JSON.stringify(err)}`);
});
```
### on
on(eventClassifyInfo: EventClassifyInfo, taskCallback: UpgradeTaskCallback): void
注册事件监听。使用callback异步回调。
**系统能力**:SystemCapability.Update.UpdateService
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ---------------------------------------- | ---- | --------- |
| eventClassifyInfo | [EventClassifyInfo](#eventclassifyinfo) | 是 | 事件信息 |
| taskCallback | [UpgradeTaskCallback](#upgradetaskcallback) | 是 | 事件回调 |
**示例:**
```
var eventClassifyInfo = {
eventClassify: update.EventClassify.TASK, // 订阅升级更新事件
extraInfo: ""
}
function onTaskUpdate(eventInfo) {
console.log(`on eventInfo id `, eventInfo.eventId);
}
localUpdater.on(eventClassifyInfo, onTaskUpdate);
```
### off
off(eventClassifyInfo: EventClassifyInfo, taskCallback?: UpgradeTaskCallback): void
取消注册事件监听。使用callback异步回调。
**系统能力**:SystemCapability.Update.UpdateService
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ---------------------------------------- | ---- | --------- |
| eventClassifyInfo | [EventClassifyInfo](#eventclassifyinfo) | 是 | 事件信息 |
| taskCallback | [UpgradeTaskCallback](#upgradetaskcallback) | 是 | 事件回调 |
**示例:**
```
var eventClassifyInfo = {
eventClassify: update.EventClassify.TASK, // 订阅升级更新事件
extraInfo: ""
}
function onTaskUpdate(eventInfo) {
console.log(`on eventInfo id `, eventInfo.eventId);
}
localUpdater.off(eventClassifyInfo, onTaskUpdate);
```
## UpgradeInfo
升级信息。
**系统能力**:SystemCapability.Update.UpdateService
| 名称 | 参数类型 | 必填 | 说明 |
| ------------------- | --------------------------- | ---- | ------- |
| upgradeApp | string | 是 | 调用方包名 |
| businessType | [BusinessType](#businesstype) | 是 | 升级业务类型 |
## BusinessType
升级业务类型。
**系统能力**:SystemCapability.Update.UpdateService
| 名称 | 参数类型 | 必填 | 说明 |
| ------------------- | --------------------------- | ---- | ------- |
| vendor | [BusinessVendor](#businessvendor) | 是 | 供应商 |
| subType | [BusinessSubType](#businesssubtype) | 是 | 类型 |
## CheckResult
搜包结果。
**系统能力**:SystemCapability.Update.UpdateService
| 名称 | 参数类型 | 必填 | 说明 |
| ------------------- | --------------------------- | ---- | ------- |
| isExistNewVersion | bool | 是 | 是否有新版本 |
| newVersionInfo | [NewVersionInfo](#newversioninfo) | 否 | 新版本数据 |
## NewVersionInfo
新版本数据。
**系统能力**:SystemCapability.Update.UpdateService
| 名称 | 参数类型 | 必填 | 说明 |
| ------------------- | --------------------------- | ---- | ------- |
| versionDigestInfo | [VersionDigestInfo](#versiondigestinfo) | 是 | 版本摘要 |
| versionComponents | Array\<[VersionComponent](#versioncomponent)> | 是 | 版本组件 |
## VersionDigestInfo
版本摘要。
**系统能力**:SystemCapability.Update.UpdateService
| 名称 | 参数类型 | 必填 | 说明 |
| ------------------- | --------------------------- | ---- | ------- |
| versionDigest | string | 是 | 版本摘要 |
## VersionComponent
版本组件。
**系统能力**:SystemCapability.Update.UpdateService
| 名称 | 参数类型 | 必填 | 说明 |
| ------------------- | --------------------------- | ---- | ------- |
| componentType | [ComponentType](#componentyype) | 是 | 组件类型 |
| upgradeAction | [UpgradeAction](#upgradeaction) | 是 | 升级方式 |
| displayVersion | string | 是 | 显示版本号 |
| innerVersion | string | 是 | 版本号 |
| size | number | 是 | 升级包大小 |
| effectiveMode | [EffectiveMode](#effectivemode) | 是 | 生效模式 |
| descriptionInfo | [DescriptionInfo](#descriptioninfo) | 是 | 版本描述文件信息 |
## DescriptionInfo
版本描述文件信息。
**系统能力**:SystemCapability.Update.UpdateService
| 名称 | 参数类型 | 必填 | 说明 |
| ------------------- | --------------------------- | ---- | ------- |
| descriptionType | [DescriptionType](#descriptiontype) | 是 | 描述文件类型 |
| content | string | 是 | 描述文件内容 |
## CurrentVersionInfo
当前版本信息。
**系统能力**:SystemCapability.Update.UpdateService
| 名称 | 参数类型 | 必填 | 说明 |
| ------------------- | --------------------------- | ---- | ------- |
| osVersion | string | 是 | 系统版本号 |
| deviceName | string | 是 | 设备名 |
| versionComponents | Array\<[VersionComponent](#vesioncomponent)> | 否 | 版本组件 |
## DownloadOptions
下载选项。
**系统能力**:SystemCapability.Update.UpdateService
| 名称 | 参数类型 | 必填 | 说明 |
| ------------------- | --------------------------- | ---- | ------- |
| allowNetwork | [NetType](#nettype) | 是 | 网络类型 |
| order | [Order](#order) | 是 | 升级指令 |
## ResumeDownloadOptions
恢复下载选项。
**系统能力**:SystemCapability.Update.UpdateService
| 名称 | 参数类型 | 必填 | 说明 |
| ------------------- | --------------------------- | ---- | ------- |
| allowNetwork | [NetType](#nettype) | 是 | 网络类型 |
## PauseDownloadOptions
暂停下载选项。
**系统能力**:SystemCapability.Update.UpdateService
| 名称 | 参数类型 | 必填 | 说明 |
| ------------------- | --------------------------- | ---- | ------- |
| isAllowAutoResume | bool | 是 | 是否允许自动恢复 |
## UpgradeOptions
升级选项。
**系统能力**:SystemCapability.Update.UpdateService
| 名称 | 参数类型 | 必填 | 说明 |
| ------------------- | --------------------------- | ---- | ------- |
| order | [Order](#order) | 是 | 升级指令 |
## ClearOptions
清除异常选项。
**系统能力**:SystemCapability.Update.UpdateService
| 名称 | 参数类型 | 必填 | 说明 |
| ------------------- | --------------------------- | ---- | ------- |
| status | [UpgradeStatus](#upgradestatus) | 是 | 异常状态 |
## UpgradePolicy
升级策略。
**系统能力**:SystemCapability.Update.UpdateService
| 名称 | 参数类型 | 必填 | 说明 |
| ------------------- | --------------------------- | ---- | ------- |
| downloadStrategy | bool | 是 | 自动下载策略 |
| autoUpgradeStrategy | bool | 是 | 自动升级策略 |
| autoUpgradePeriods | Array\<[UpgradePeriod](#upgradeperiod)> | 是 | 自动升级时间段 |
## UpgradePeriod
升级时间段。
**系统能力**:SystemCapability.Update.UpdateService
| 名称 | 参数类型 | 必填 | 说明 |
| ------------------- | --------------------------- | ---- | ------- |
| start | number | 是 | 开始时间 |
| end | number | 是 | 结束时间 |
## TaskInfo
任务信息。
**系统能力**:SystemCapability.Update.UpdateService
| 名称 | 参数类型 | 必填 | 说明 |
| ------------------- | --------------------------- | ---- | ------- |
| existTask | bool | 是 | 是否存在任务 |
| taskBody | [TaskBody](#taskinfo) | 是 | 任务数据 |
## EventInfo
事件信息。
**系统能力**:SystemCapability.Update.UpdateService
| 名称 | 参数类型 | 必填 | 说明 |
| ------------------- | --------------------------- | ---- | ------- |
| eventId | [EventId](#eventid) | 是 | 事件ID |
| taskBody | [TaskBody](#taskinfo) | 是 | 任务数据 |
## TaskBody
任务数据。
**系统能力**:SystemCapability.Update.UpdateService
| 名称 | 参数类型 | 必填 | 说明 |
| ------------------- | --------------------------- | ---- | ------- |
| versionDigestInfo | [VersionDigestInfo](#versiondigestinfo) | 是 | 版本摘要 |
| status | [UpgradeStatus](#upgradestatus) | 是 | 升级状态 |
| subStatus | number | 否 | 子状态 |
| progress | number | 是 | 进度 |
| installMode | number | 是 | 安装模式 |
| errorMessages | Array\<[ErrorMessage](#errormessage)> | 否 | 错误信息 |
| versionComponets | Array\<[VersionComponet](#versioncomponet)> | 是 | 版本组件 |
## ErrorMessage
错误信息。
**系统能力**:SystemCapability.Update.UpdateService
| 名称 | 参数类型 | 必填 | 说明 |
| ------------------- | --------------------------- | ---- | ------- |
| errorCode | number | 是 | 错误码 |
| errorMessage | string | 是 | 错误描述 |
## EventClassifyInfo
事件信息。
**系统能力**:SystemCapability.Update.UpdateService
| 名称 | 参数类型 | 必填 | 说明 |
| ------------------- | --------------------------- | ---- | ------- |
| eventClassify | [EventClassify](#eventclassify) | 是 | 事件类型 |
| extraInfo | string | 是 | 额外信息 |
## UpgradeFile
升级文件。
**系统能力**:SystemCapability.Update.UpdateService
| 名称 | 参数类型 | 必填 | 说明 |
| ------------------- | --------------------------- | ---- | ------- |
| fileType | [ComponentType](#componenttype) | 是 | 文件类型 |
| filePath | string | 是 | 文件路径 |
## UpgradeTaskCallback
### onTaskUpdate
onTaskUpdate(eventInfo: [EventInfo](#eventinfo)): void
事件回调。
**系统能力**:SystemCapability.Update.UpdateService
| 名称 | 参数类型 | 必填 | 说明 |
| --------------- | ---------------------------------------- | ---- | ---- |
| eventInfo | [EventInfo](#eventinfo) | 是 | 事件信息 |
## BusinessVendor
设备厂家。
**系统能力**:SystemCapability.Update.UpdateService
| 参数名 | 默认值 | 说明 |
| ------------------- | ---- | -------- |
| PUBLIC | "public" | 开源 |
## BusinessSubType
升级类型。
**系统能力**:SystemCapability.Update.UpdateService
| 参数名 | 默认值 | 说明 |
| ------------------- | ---- | -------- |
| FIRWARE | 1 | 固件 |
## ComponentType
升级包类型。
**系统能力**:SystemCapability.Update.UpdateService
| 参数名 | 默认值 | 说明 |
| ------------------- | ---- | -------- |
| OTA | 1 | 固件 |
## UpgradeAction
升级方式。
**系统能力**:SystemCapability.Update.UpdateService
| 参数名 | 默认值 | 说明 |
| ------------------- | ---- | -------- |
| UPGRADE | "upgrade" | 差分包 |
| RECOVERY | "recovery" | 修复包 |
## EffectiveMode
生效模式。
**系统能力**:SystemCapability.Update.UpdateService
| 参数名 | 默认值 | 说明 |
| ------------------- | ---- | -------- |
| COLD | 1 | 冷升级 |
| LIVE | 2 | 热升级 |
| LIVE_AND_COLD | 3 | 融合升级 |
## DescriptionType
描述文件类型。
**系统能力**:SystemCapability.Update.UpdateService
| 参数名 | 默认值 | 说明 |
| ------------------- | ---- | -------- |
| CONTENT | 0 | 内容 |
| URI | 1 | 链接 |
## NetType
网络类型。
**系统能力**:SystemCapability.Update.UpdateService
| 参数名 | 默认值 | 说明 |
| ------------------- | ---- | -------- |
| CELLULAR | 1 | 数据网络 |
| METERED_WIFI | 2 | 热点WIFI |
| NOT_METERED_WIFI | 4 | 非热点WIFI |
| WIFI | 6 | WIFI |
| CELLULAR_AND_WIFI | 7 | 数据网络和WIFI |
## Order
升级指令。
**系统能力**:SystemCapability.Update.UpdateService
| 参数名 | 默认值 | 说明 |
| ------------------- | ---- | -------- |
| DOWNLOAD | 1 | 下载 |
| INSTALL | 2 | 安装 |
| APPLY | 4 | 生效 |
| DOWNLOAD_AND_INSTALL | 3 | 下载并安装 |
| INSTALL_AND_APPLY | 6 | 安装并生效 |
## UpgradeStatus
升级状态。
**系统能力**:SystemCapability.Update.UpdateService
| 参数名 | 默认值 | 说明 |
| ------------------- | ---- | -------- |
| WAITING_DOWNLOAD | 20 | 待下载 |
| DOWNLOADING | 21 | 下载中 |
| DOWNLOAD_PAUSE | 22 | 下载暂停 |
| DOWNLOAD_FAIL | 23 | 下载失败 |
| WAITING_INSTALL | 30 | 待安装 |
| UPDATING | 31 | 更新中 |
| WATING_APPLY | 40 | 待生效 |
| APPLYING | 21 | 生效中 |
| UPGRADE_SUCCESS | 50 | 升级成功 |
| UPGRADE_FAIL | 51 | 升级失败 |
## EventClassify
事件类型。
**系统能力**:SystemCapability.Update.UpdateService
| 参数名 | 默认值 | 说明 |
| ------------------- | ---- | -------- |
| TASK | 0x01000000 | 任务事件 |
## EventId
事件ID。
**系统能力**:SystemCapability.Update.UpdateService
| 参数名 | 默认值 | 说明 |
| ------------------- | ---- | -------- |
| EVENT_TASK_BASE | 0x01000000 | 任务事件 |
| EVENT_TASK_RECEIVE | 0x01000001 | 收到任务 |
| EVENT_TASK_CANCEL | 0x01000010 | 取消任务 |
| EVENT_DOWNLOAD_WAIT | 0x01000011 | 待下载 |
| EVENT_DOWNLOAD_START | 0x01000100 | 开始下载 |
| EVENT_DOWNLOAD_UPDATE | 0x01000101 | 下载进度更新 |
| EVENT_DOWNLOAD_PAUSE | 0x01000110 | 下载暂停 |
| EVENT_DOWNLOAD_RESUME | 0x01000111 | 恢复下载 |
| EVENT_DOWNLOAD_SUCCESS | 0x01001000 | 下载成功 |
| EVENT_DOWNLOAD_FAIL | 0x01001001 | 下载失败 |
| EVENT_UPGRADE_WAIT | 0x01001010 | 待升级 |
| EVENT_UPGRADE_START | 0x01001011 | 开始升级 |
| EVENT_UPGRADE_UPDATE | 0x01001100 | 升级中 |
| EVENT_APPLY_WAIT | 0x01001101 | 待生效 |
| EVENT_APPLY_START | 0x01001110 | 开始生效 |
| EVENT_UPGRADE_SUCCESS | 0x01001111 | 更新成功 |
| EVENT_UPGRADE_FAIL | 0x01010000 | 更新失败 |
# USB管理 # USB管理
本模块主要提供管理USB设备的相关功能,包括查询USB设备列表、批量数据传输、控制命令传输、权限控制等。
> **说明:** > **说明:**
>
> 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 > 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
## 导入模块 ## 导入模块
......
# 卷管理 # 卷管理
该模块提供卷、磁盘查询和管理的相关功能:包括查询卷信息,对卷的挂载卸载、对磁盘分区以及卷的格式化等功能。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> >
> - 本模块首批接口从API version 9开始支持。 > - 本模块首批接口从API version 9开始支持。
> - API 9当前为Canary版本,仅供试用,不保证接口可稳定调用。 > - API 9当前为Canary版本,仅供试用,不保证接口可稳定调用。
> - 本模块接口为系统接口,三方应用不支持调用。 > - 本模块接口为系统接口,三方应用不支持调用。
该模块提供卷、磁盘查询和管理的相关功能:包括查询卷信息,对卷的挂载卸载、对磁盘分区以及卷的格式化等功能。
## 导入模块 ## 导入模块
```js ```js
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
| 名称 | 类型定义 | 描述 | | 名称 | 类型定义 | 描述 |
| ----- | --------------------- | ---------------------------------------- | | ----- | --------------------- | ---------------------------------------- |
| color | string&nbsp;\|颜色枚举字符串 | 用于描述颜色信息,JS脚本中不支持颜色枚举格式。<br/>字符串格式如下:<br/>-&nbsp;'rgb(255,&nbsp;255,&nbsp;255)'<br/>-&nbsp;'rgba(255,&nbsp;255,&nbsp;255,&nbsp;1.0)'<br/>-&nbsp;HEX格式:'\#rrggbb','\#aarrggbb'<br/>-&nbsp;枚举格式:'black','white'。 | | color | string&nbsp;\|&nbsp;颜色枚举字符串 | 用于描述颜色信息,JS脚本中不支持颜色枚举格式。<br/>字符串格式如下:<br/>-&nbsp;'rgb(255,&nbsp;255,&nbsp;255)'<br/>-&nbsp;'rgba(255,&nbsp;255,&nbsp;255,&nbsp;1.0)'<br/>-&nbsp;HEX格式:'\#rrggbb','\#aarrggbb'<br/>-&nbsp;枚举格式:'black','white'。 |
**表1** 当前支持的颜色枚举 **表1** 当前支持的颜色枚举
......
...@@ -70,7 +70,7 @@ ...@@ -70,7 +70,7 @@
| 名称 | 类型 | 默认值 | 必填 | 描述 | | 名称 | 类型 | 默认值 | 必填 | 描述 |
| -------------------------------- | -------------- | ---------- | ---- | ---------------------------------------- | | -------------------------------- | -------------- | ---------- | ---- | ---------------------------------------- |
| color | &lt;color&gt | \#ffffff | 否 | 候选项字体颜色。 | | color | &lt;color&gt; | \#ffffff | 否 | 候选项字体颜色。 |
| font-size | &lt;length&gt; | 16px | 否 | 候选项字体尺寸,类型length,单位px。 | | font-size | &lt;length&gt; | 16px | 否 | 候选项字体尺寸,类型length,单位px。 |
| selected-color | &lt;color&gt; | #ff0a69f7 | 否 | 选中项字体颜色。 | | selected-color | &lt;color&gt; | #ff0a69f7 | 否 | 选中项字体颜色。 |
| selected-font-size | &lt;length&gt; | 20px | 否 | 选中项字体尺寸,类型length,单位px。 | | selected-font-size | &lt;length&gt; | 20px | 否 | 选中项字体尺寸,类型length,单位px。 |
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
| animation-name | string | - | 指定\@keyframes,详见表 @keyframes属性说明。 | | animation-name | string | - | 指定\@keyframes,详见表 @keyframes属性说明。 |
| animation-delay | &lt;time&gt; | 0 | 定义动画播放的延迟时间。支持的单位为[s(秒)\|ms(毫秒)&nbsp;],默认单位为ms,格式为:1000ms或1s。 | | animation-delay | &lt;time&gt; | 0 | 定义动画播放的延迟时间。支持的单位为[s(秒)\|ms(毫秒)&nbsp;],默认单位为ms,格式为:1000ms或1s。 |
| animation-duration | &lt;time&gt; | 0 | 定义一个动画周期。支持的单位为[s(秒)\|ms(毫秒)&nbsp;],默认单位为ms,格式为:1000ms或1s。<br/>必须设置animation-duration&nbsp;样式,否则时长为&nbsp;0将不会播放动画。 | | animation-duration | &lt;time&gt; | 0 | 定义一个动画周期。支持的单位为[s(秒)\|ms(毫秒)&nbsp;],默认单位为ms,格式为:1000ms或1s。<br/>必须设置animation-duration&nbsp;样式,否则时长为&nbsp;0将不会播放动画。 |
| animation-iteration-count | number&nbsp;&nbsp;\|&nbsp;infinite | 1 | 定义动画播放的次数,默认播放一次,可通过设置为infinite无限次播放。 | | animation-iteration-count | number&nbsp;\|&nbsp;infinite | 1 | 定义动画播放的次数,默认播放一次,可通过设置为infinite无限次播放。 |
| animation-timing-function | string | ease<br/> | 描述动画执行的速度曲线,用于使动画更为平滑。<br/>可选项有:<br/>-&nbsp;linear:表示动画从头到尾的速度都是相同的。<br/>-&nbsp;ease:表示动画以低速开始,然后加快,在结束前变慢,cubic-bezier(0.25,&nbsp;0.1,&nbsp;0.25,&nbsp;1.0)。<br/>-&nbsp;ease-in:表示动画以低速开始,cubic-bezier(0.42,&nbsp;0.0,&nbsp;1.0,&nbsp;1.0)。<br/>-&nbsp;ease-out:表示动画以低速结束,cubic-bezier(0.0,&nbsp;0.0,&nbsp;0.58,&nbsp;1.0)。<br/>-&nbsp;ease-in-out:表示动画以低速开始和结束,cubic-bezier(0.42,&nbsp;0.0,&nbsp;0.58,&nbsp;1.0)。<br/>-&nbsp;friction:阻尼曲线,cubic-bezier(0.2,&nbsp;0.0,&nbsp;0.2,&nbsp;1.0)。<br/>-&nbsp;extreme-deceleration:急缓曲线,cubic-bezier(0.0,&nbsp;0.0,&nbsp;0.0,&nbsp;1.0)。<br/>-&nbsp;sharp:锐利曲线,cubic-bezier(0.33,&nbsp;0.0,&nbsp;0.67,&nbsp;1.0)。<br/>-&nbsp;rhythm:节奏曲线,cubic-bezier(0.7,&nbsp;0.0,&nbsp;0.2,&nbsp;1.0)。<br/>-&nbsp;smooth:平滑曲线,cubic-bezier(0.4,&nbsp;0.0,&nbsp;0.4,&nbsp;1.0)。<br/>-&nbsp;cubic-bezier:在三次贝塞尔函数中定义动画变化过程,入参的x和y值必须处于0-1之间。<br/>-&nbsp;steps:&nbsp;阶梯曲线<sup>6+</sup>。语法:steps(number[,&nbsp;end\|start]);number必须设置,支持的类型为正整数。第二个参数可选,表示在每个间隔的起点或是终点发生阶跃变化,支持设置end或start,默认值为end。 | | animation-timing-function | string | ease<br/> | 描述动画执行的速度曲线,用于使动画更为平滑。<br/>可选项有:<br/>-&nbsp;linear:表示动画从头到尾的速度都是相同的。<br/>-&nbsp;ease:表示动画以低速开始,然后加快,在结束前变慢,cubic-bezier(0.25,&nbsp;0.1,&nbsp;0.25,&nbsp;1.0)。<br/>-&nbsp;ease-in:表示动画以低速开始,cubic-bezier(0.42,&nbsp;0.0,&nbsp;1.0,&nbsp;1.0)。<br/>-&nbsp;ease-out:表示动画以低速结束,cubic-bezier(0.0,&nbsp;0.0,&nbsp;0.58,&nbsp;1.0)。<br/>-&nbsp;ease-in-out:表示动画以低速开始和结束,cubic-bezier(0.42,&nbsp;0.0,&nbsp;0.58,&nbsp;1.0)。<br/>-&nbsp;friction:阻尼曲线,cubic-bezier(0.2,&nbsp;0.0,&nbsp;0.2,&nbsp;1.0)。<br/>-&nbsp;extreme-deceleration:急缓曲线,cubic-bezier(0.0,&nbsp;0.0,&nbsp;0.0,&nbsp;1.0)。<br/>-&nbsp;sharp:锐利曲线,cubic-bezier(0.33,&nbsp;0.0,&nbsp;0.67,&nbsp;1.0)。<br/>-&nbsp;rhythm:节奏曲线,cubic-bezier(0.7,&nbsp;0.0,&nbsp;0.2,&nbsp;1.0)。<br/>-&nbsp;smooth:平滑曲线,cubic-bezier(0.4,&nbsp;0.0,&nbsp;0.4,&nbsp;1.0)。<br/>-&nbsp;cubic-bezier:在三次贝塞尔函数中定义动画变化过程,入参的x和y值必须处于0-1之间。<br/>-&nbsp;steps:&nbsp;阶梯曲线<sup>6+</sup>。语法:steps(number[,&nbsp;end\|start]);number必须设置,支持的类型为正整数。第二个参数可选,表示在每个间隔的起点或是终点发生阶跃变化,支持设置end或start,默认值为end。 |
| animation-direction<sup>6+</sup> | string | normal | 指定动画的播放模式:<br/>-&nbsp;normal:&nbsp;动画正向循环播放。<br/>-&nbsp;reverse:&nbsp;动画反向循环播放。<br/>-&nbsp;alternate:动画交替循环播放,奇数次正向播放,偶数次反向播放。<br/>-&nbsp;alternate-reverse:动画反向交替循环播放,奇数次反向播放,偶数次正向播放。 | | animation-direction<sup>6+</sup> | string | normal | 指定动画的播放模式:<br/>-&nbsp;normal:&nbsp;动画正向循环播放。<br/>-&nbsp;reverse:&nbsp;动画反向循环播放。<br/>-&nbsp;alternate:动画交替循环播放,奇数次正向播放,偶数次反向播放。<br/>-&nbsp;alternate-reverse:动画反向交替循环播放,奇数次反向播放,偶数次正向播放。 |
| animation-fill-mode | string | none | 指定动画开始和结束的状态:<br/>-&nbsp;none:在动画执行之前和之后都不会应用任何样式到目标上。<br/>-&nbsp;forwards:在动画结束后,目标将保留动画结束时的状态(在最后一个关键帧中定义)。<br/>-&nbsp;backwards<sup>6+</sup>:动画将在animation-delay期间应用第一个关键帧中定义的值。当animation-direction为"normal"或"alternate"时应用from关键帧中的值,当animation-direction为"reverse"或"alternate-reverse"时应用to关键帧中的值。<br/>-&nbsp;both<sup>6+</sup>:动画将遵循forwards和backwards的规则,从而在两个方向上扩展动画属性。 | | animation-fill-mode | string | none | 指定动画开始和结束的状态:<br/>-&nbsp;none:在动画执行之前和之后都不会应用任何样式到目标上。<br/>-&nbsp;forwards:在动画结束后,目标将保留动画结束时的状态(在最后一个关键帧中定义)。<br/>-&nbsp;backwards<sup>6+</sup>:动画将在animation-delay期间应用第一个关键帧中定义的值。当animation-direction为"normal"或"alternate"时应用from关键帧中的值,当animation-direction为"reverse"或"alternate-reverse"时应用to关键帧中的值。<br/>-&nbsp;both<sup>6+</sup>:动画将遵循forwards和backwards的规则,从而在两个方向上扩展动画属性。 |
......
...@@ -30,7 +30,7 @@ Checkbox( name?: string, group?: string ) ...@@ -30,7 +30,7 @@ Checkbox( name?: string, group?: string )
| 名称 | 参数类型 | 默认值 | 描述 | | 名称 | 参数类型 | 默认值 | 描述 |
| ------------- | ------- | ------ | -------- | | ------------- | ------- | ------ | -------- |
| select | bool | false | 设置多选框是否选中。 | | select | boolean | false | 设置多选框是否选中。 |
| selectedColor | Color | - | 设置多选框选中状态颜色。 | | selectedColor | Color | - | 设置多选框选中状态颜色。 |
## 事件 ## 事件
......
...@@ -29,7 +29,7 @@ CheckboxGroup( group?: string ) ...@@ -29,7 +29,7 @@ CheckboxGroup( group?: string )
| 名称 | 参数类型 | 默认值 | 描述 | | 名称 | 参数类型 | 默认值 | 描述 |
| -------- | -------- | -------- | -------- | | -------- | -------- | -------- | -------- |
| selectAll | bool | false | 设置是否全选。 | | selectAll | boolean | false | 设置是否全选。 |
| selectedColor | Color | - | 设置被选中或部分选中状态的颜色。 | | selectedColor | Color | - | 设置被选中或部分选中状态的颜色。 |
## 事件 ## 事件
......
...@@ -166,8 +166,6 @@ struct ImageExample1 { ...@@ -166,8 +166,6 @@ struct ImageExample1 {
@Entry @Entry
@Component @Component
struct ImageExample2 { struct ImageExample2 {
@State width: number = 100
@State height: number = 100
build() { build() {
Column({ space: 10 }) { Column({ space: 10 }) {
......
...@@ -29,7 +29,7 @@ Navigation() ...@@ -29,7 +29,7 @@ Navigation()
| 名称 | 参数类型 | 默认值 | 描述 | | 名称 | 参数类型 | 默认值 | 描述 |
| -------------- | ---------------------------------------- | ------------------------ | ---------------------------------------- | | -------------- | ---------------------------------------- | ------------------------ | ---------------------------------------- |
| title | string&nbsp;\|&nbsp;[CustomBuilder](../../ui/ts-types.md) | - | 页面标题。 | | title | string&nbsp;\|&nbsp;[CustomBuilder](../../ui/ts-types.md) | - | 页面标题。 |
| subtitle | string | - | 页面副标题。 | | subTitle | string | - | 页面副标题。 |
| menus | Array<NavigationMenuItem&gt;&nbsp;\|&nbsp;[CustomBuilder](../../ui/ts-types.md) | - | 页面右上角菜单。 | | menus | Array<NavigationMenuItem&gt;&nbsp;\|&nbsp;[CustomBuilder](../../ui/ts-types.md) | - | 页面右上角菜单。 |
| titleMode | NavigationTitleMode | NavigationTitleMode.Free | 页面标题栏显示模式。 | | titleMode | NavigationTitleMode | NavigationTitleMode.Free | 页面标题栏显示模式。 |
| toolBar | {<br/>items:[<br/>Object<br/>]&nbsp;}<br/>\|&nbsp;[CustomBuilder](../../ui/ts-types.md) | - | 设置工具栏内容。<br/>items:&nbsp;工具栏所有项。 | | toolBar | {<br/>items:[<br/>Object<br/>]&nbsp;}<br/>\|&nbsp;[CustomBuilder](../../ui/ts-types.md) | - | 设置工具栏内容。<br/>items:&nbsp;工具栏所有项。 |
......
...@@ -4,13 +4,12 @@ ...@@ -4,13 +4,12 @@
> 从 API Version 8 开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 > 从 API Version 8 开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
CanvasImageData对象可以存储canvas渲染的像素数据。 ImageBitmap对象可以存储canvas渲染的像素数据。
## 属性 ## 属性
| 属性 | 类型 | 描述 | | 属性 | 类型 | 描述 |
| -------- | -------- | -------- | | -------- | -------- | -------- |
| width | number | 矩形区域实际像素宽度。 | | width | number | ImageBitmap的像素宽度。 |
| height | number | 矩形区域实际像素高度。 | | height | number | ImageBitmap的像素高度。 |
| data | &lt;Uint8ClampedArray&gt; | 一维数组,保存了相应的颜色数据,数据值范围为0到255。 |
...@@ -32,7 +32,7 @@ Grid() ...@@ -32,7 +32,7 @@ Grid()
| columnsGap | Length | 0 | 用于设置列与列的间距。 | | columnsGap | Length | 0 | 用于设置列与列的间距。 |
| rowsGap | Length | 0 | 用于设置行与行的间距。 | | rowsGap | Length | 0 | 用于设置行与行的间距。 |
| editMode<font color=ff0000><sup>8+</sup></font> | boolean | flase | 是否进入编辑模式,进入编辑模式可以拖拽Gird组件内部[GridItem](ts-container-griditem.md)。 | | editMode<font color=ff0000><sup>8+</sup></font> | boolean | flase | 是否进入编辑模式,进入编辑模式可以拖拽Gird组件内部[GridItem](ts-container-griditem.md)。 |
| layoutDirection<font color=ff0000><sup>8+</sup></font> | [LayoutDirection](ts-appendix-enums.md) | LayoutDirection.Row |设置布局的主轴方向,目前支持的主轴布局方向如下:<br/>-&nbsp;LayoutDirection.Row:沿水平方向布局,即先填满一列,再去填下一列。 <br/>-&nbsp;LayoutDirection.Column:沿垂直方向布局,即先填满一行,再去填下一行。| | layoutDirection<font color=ff0000><sup>8+</sup></font> | number | 0 |设置布局的主轴方向,目前支持的主轴布局方向如下:<br/>-&nbsp;0:主轴布局方向沿水平方向布局,即先填满一列,再去填下一列。 <br/>-&nbsp;1:主轴布局方向沿垂直方向布局,即先填满一行,再去填下一行。|
| maxCount<font color=ff0000><sup>8+</sup></font> | number | 1 | 当layoutDirection是Row时,表示可显示的最大行数<br/>当layoutDirection是Column时,表示可显示的最大列数。 | | maxCount<font color=ff0000><sup>8+</sup></font> | number | 1 | 当layoutDirection是Row时,表示可显示的最大行数<br/>当layoutDirection是Column时,表示可显示的最大列数。 |
| minCount<font color=ff0000><sup>8+</sup></font> | number | 1 | 当layoutDirection是Row时,表示可显示的最小行数<br/>当layoutDirection是Column时,表示可显示的最小列数。 | | minCount<font color=ff0000><sup>8+</sup></font> | number | 1 | 当layoutDirection是Row时,表示可显示的最小行数<br/>当layoutDirection是Column时,表示可显示的最小列数。 |
| cellLength<font color=ff0000><sup>8+</sup></font> | number | 0 | 当layoutDirection是Row时,表示一行的高度<br/>当layoutDirection是Column时,表示一列的宽度。 | | cellLength<font color=ff0000><sup>8+</sup></font> | number | 0 | 当layoutDirection是Row时,表示一行的高度<br/>当layoutDirection是Column时,表示一列的宽度。 |
......
...@@ -19,13 +19,14 @@ ...@@ -19,13 +19,14 @@
## 接口 ## 接口
List(value:{space?: number, initialIndex?: number}) List(value:{space?: number | string, initialIndex?: number, scroller?: Scroller})
- 参数 - 参数
| 参数名 | 参数类型 | 必填 | 默认值 | 参数描述 | | 参数名 | 参数类型 | 必填 | 默认值 | 参数描述 |
| -------- | -------- | -------- | -------- | -------- | | -------- | -------- | -------- | -------- | -------- |
| space | number | 否 | 0 | 列表项间距。 | | space | number&nbsp;\|&nbsp;string | 否 | 0 | 列表项间距。 |
| initialIndex | number | 否 | 0 | 设置当前List初次加载时视口起始位置显示的item,即显示第一个item,如设置的序号超过了最后一个item的序号,则设置不生效。 | | initialIndex | number | 否 | 0 | 设置当前List初次加载时视口起始位置显示的item,即显示第一个item,如设置的序号超过了最后一个item的序号,则设置不生效。 |
| scroller | [Scroller](ts-container-scroll.md#scroller) | 是 | - | 可滚动组件的控制器。用于与可滚动组件进行绑定。 |
## 属性 ## 属性
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
## 接口 ## 接口
Refresh\(value: \{refreshing: boolean, offset?: Length, friction?: number\}\) Refresh\(value: \{refreshing: boolean, offset?: Length, friction?: number | string\}\)
- 参数 - 参数
...@@ -23,7 +23,7 @@ Refresh\(value: \{refreshing: boolean, offset?: Length, friction?: number\}\) ...@@ -23,7 +23,7 @@ Refresh\(value: \{refreshing: boolean, offset?: Length, friction?: number\}\)
| -------- | -------- | -------- | -------- | -------- | | -------- | -------- | -------- | -------- | -------- |
| refreshing | boolean | 是 | - | 当前组件是否正在刷新。 | | refreshing | boolean | 是 | - | 当前组件是否正在刷新。 |
| offset | Length | 否 | 16 | 刷新组件静止时距离父组件顶部的距离。| | offset | Length | 否 | 16 | 刷新组件静止时距离父组件顶部的距离。|
| friction | number | 否 | 62 | 下拉摩擦系数,取值范围为0到100。<br/>-&nbsp;0表示下拉刷新容器不跟随手势下拉而下拉。<br/>-&nbsp;100表示下拉刷新容器紧紧跟随手势下拉而下拉。<br/>-&nbsp;数值越大,下拉刷新容器跟随手势下拉的反应越灵敏。 | | friction | number&nbsp;\|&nbsp;string | 否 | 62 | 下拉摩擦系数,取值范围为0到100。<br/>-&nbsp;0表示下拉刷新容器不跟随手势下拉而下拉。<br/>-&nbsp;100表示下拉刷新容器紧紧跟随手势下拉而下拉。<br/>-&nbsp;数值越大,下拉刷新容器跟随手势下拉的反应越灵敏。 |
......
...@@ -28,8 +28,8 @@ ...@@ -28,8 +28,8 @@
- paramObject2参数 - paramObject2参数
| 参数名 | 参数类型 | 必填 | 默认值 | 参数描述 | | 参数名 | 参数类型 | 必填 | 默认值 | 参数描述 |
| -------- | -------- | -------- | -------- | -------- | | -------- | -------- | -------- | -------- | -------- |
| title | string&nbsp;\|&&nbsp;[Resource](../../ui/ts-types.md#resource类型) | 否 | - | 弹窗标题。 | | title | string&nbsp;\|&nbsp;[Resource](../../ui/ts-types.md#resource类型) | 否 | - | 弹窗标题。 |
| message | string&nbsp;\|&&nbsp;[Resource](../../ui/ts-types.md#resource类型) | 是 | - | 弹窗内容。 | | message | string&nbsp;\|&nbsp;[Resource](../../ui/ts-types.md#resource类型) | 是 | - | 弹窗内容。 |
| autoCancel | boolean | 否 | true | 点击遮障层时,是否关闭弹窗。 | | autoCancel | boolean | 否 | true | 点击遮障层时,是否关闭弹窗。 |
| primaryButton | {<br/>value:&nbsp;string&nbsp;\|&nbsp;[Resource](../../ui/ts-types.md#resource类型),<br/>fontColor?:&nbsp;Color&nbsp;\|&nbsp;number&nbsp;\|&nbsp;string&nbsp;\|&nbsp;[Resource](../../ui/ts-types.md#resource类型),<br/>backgroundColor?:&nbsp;Color&nbsp;\|&nbsp;number&nbsp;\|&nbsp;string&nbsp;\|&nbsp;[Resource](../../ui/ts-types.md#resource类型),<br/>action:&nbsp;()&nbsp;=&gt;&nbsp;void;<br/>} | 否 | - | 按钮的文本内容、文本色、按钮背景色和点击回调。 | | primaryButton | {<br/>value:&nbsp;string&nbsp;\|&nbsp;[Resource](../../ui/ts-types.md#resource类型),<br/>fontColor?:&nbsp;Color&nbsp;\|&nbsp;number&nbsp;\|&nbsp;string&nbsp;\|&nbsp;[Resource](../../ui/ts-types.md#resource类型),<br/>backgroundColor?:&nbsp;Color&nbsp;\|&nbsp;number&nbsp;\|&nbsp;string&nbsp;\|&nbsp;[Resource](../../ui/ts-types.md#resource类型),<br/>action:&nbsp;()&nbsp;=&gt;&nbsp;void;<br/>} | 否 | - | 按钮的文本内容、文本色、按钮背景色和点击回调。 |
| secondaryButton | {<br/>value:&nbsp;string&nbsp;\|&nbsp;[Resource](../../ui/ts-types.md#resource类型),<br/>fontColor?:&nbsp;Color&nbsp;\|&nbsp;number&nbsp;\|&nbsp;string&nbsp;\|&nbsp;[Resource](../../ui/ts-types.md#resource类型),<br/>backgroundColor?:&nbsp;Color&nbsp;\|&nbsp;number&nbsp;\|&nbsp;string&nbsp;\|&nbsp;[Resource](../../ui/ts-types.md#resource类型),<br/>action:&nbsp;()&nbsp;=&gt;&nbsp;void;<br/>} | 否 | - | 按钮的文本内容、文本色、按钮背景色和点击回调。 | | secondaryButton | {<br/>value:&nbsp;string&nbsp;\|&nbsp;[Resource](../../ui/ts-types.md#resource类型),<br/>fontColor?:&nbsp;Color&nbsp;\|&nbsp;number&nbsp;\|&nbsp;string&nbsp;\|&nbsp;[Resource](../../ui/ts-types.md#resource类型),<br/>backgroundColor?:&nbsp;Color&nbsp;\|&nbsp;number&nbsp;\|&nbsp;string&nbsp;\|&nbsp;[Resource](../../ui/ts-types.md#resource类型),<br/>action:&nbsp;()&nbsp;=&gt;&nbsp;void;<br/>} | 否 | - | 按钮的文本内容、文本色、按钮背景色和点击回调。 |
......
...@@ -21,8 +21,6 @@ ...@@ -21,8 +21,6 @@
@Entry @Entry
@Component @Component
struct MotionPathExample { struct MotionPathExample {
@State offsetX: number = 0
@State offsetY: number = 0
@State toggle: boolean = true @State toggle: boolean = true
build() { build() {
......
...@@ -30,8 +30,6 @@ ...@@ -30,8 +30,6 @@
@Entry @Entry
@Component @Component
struct SharedTransitionExample { struct SharedTransitionExample {
@State scale: number = 1
@State opacity: number = 1
@State active: boolean = false @State active: boolean = false
build() { build() {
......
...@@ -171,17 +171,17 @@ struct IdExample { ...@@ -171,17 +171,17 @@ struct IdExample {
console.info(getInspectorTree()) console.info(getInspectorTree())
this.text = "Button 'click to start' is clicked" this.text = "Button 'click to start' is clicked"
setTimeout(() => { setTimeout(() => {
sendEventByKey("longclick", 11, "") sendEventByKey("longClick", 11, "")
}, 2000) }, 2000)
}).id('click') }).id('click')
Button() { Button() {
Text('longclick').fontSize(25).fontWeight(FontWeight.Bold) Text('longClick').fontSize(25).fontWeight(FontWeight.Bold)
}.margin({ top: 20 }).backgroundColor('#0D9FFB') }.margin({ top: 20 }).backgroundColor('#0D9FFB')
.gesture( .gesture(
LongPressGesture().onActionEnd(() => { LongPressGesture().onActionEnd(() => {
console.info('long clicked') console.info('long clicked')
this.text = "Button 'longclick' is longclicked" this.text = "Button 'longClick' is longclicked"
setTimeout(() => { setTimeout(() => {
let rect = Utils.getComponentRect('onTouch') let rect = Utils.getComponentRect('onTouch')
let touchPoint: TouchObject = { let touchPoint: TouchObject = {
...@@ -196,7 +196,7 @@ struct IdExample { ...@@ -196,7 +196,7 @@ struct IdExample {
touchPoint.type = TouchType.Up touchPoint.type = TouchType.Up
sendTouchEvent(touchPoint) sendTouchEvent(touchPoint)
}, 2000) }, 2000)
})).id('longclick') })).id('longClick')
Button() { Button() {
Text('onTouch').fontSize(25).fontWeight(FontWeight.Bold) Text('onTouch').fontSize(25).fontWeight(FontWeight.Bold)
......
...@@ -669,7 +669,7 @@ WebGL主要帮助开发者在前端开发中完成图形图像的相关处理, ...@@ -669,7 +669,7 @@ WebGL主要帮助开发者在前端开发中完成图形图像的相关处理,
// 初始化着色器 // 初始化着色器
if (!initShaders(gl, VSHADER_SOURCE, FSHADER_SOURCE)) { if (!initShaders(gl, VSHADER_SOURCE, FSHADER_SOURCE)) {
console.log('Failed to intialize shaders.'); console.log('Failed to initialize shaders.');
return; return;
} }
......
# 概述
## 基本概念
*【 **写作要求**】*
*必选,描述本开发任务相关的基本概念,帮助开发者更好的理解开发任务。* *写作要求见下,完成写作后,请逐项自检*
| 内容要求 | 是否满足 |
| -------- | -------- |
| 业界通用的概念不用赘述。 | |
| 注意使用业界通用术语来表达,不用开发者无法理解的内部语言。 | |
【写作样例】
XX系统音频模块支持音频业务的开发,提供音频相关的功能,主要包括音频播放、音频采集、音量管理和短音播放等。
在进行应用的开发前,开发者应了解以下基本概念:
- 采样
采样就是把模拟信号数字化的过程,所有的模拟信号都需要通过采样转换为可以用0101来表示的数字信号。
- 采样率
采样率为每秒从连续信号中提取并组成离散信号的采样次数,单位用赫兹(Hz)来表示。通常人耳能听到频率范围大约在20Hz~20kHz之间的声音。常用的音频采样频率有:8kHz、11.025kHz、22.05kHz、16kHz、37.8kHz、44.1kHz、48kHz、96kHz、192kHz等。
- 声道
声道是指声音在录制或播放时在不同空间位置采集或回放的相互独立的音频信号,所以声道数也就是声音录制时的音源数量或回放时相应的扬声器数量。
- 音频帧
音频数据是流式的,本身没有明确的一帧帧的概念,在实际的应用中,为了音频算法处理/传输的方便,一般约定俗成取2.5ms~60ms为单位的数据量为一帧音频。这个时间被称之为“采样时间”,其长度没有特别的标准,它是根据编解码器和具体应用的需求来决定的。
## 运作机制
*【 **写作要求**】*
*可选。如果机制比较简单,通过前面基本概念就可以说清楚,此章节可以不用提供,删除标题即可*
*描述实现原理介绍机制,如关键步骤相关接口调用时机和触发时机,帮助开发者了解该功能的基本运作原理,以便更好的理解开发任务和定位问题*
*写作要求见下,完成写作后,请逐项自检*
| 内容要求 | 是否满足 |
| -------- | -------- |
| 仅描述开发任务相关的原理。 | |
| 尽量图文配合,一般使用时序图、流程图等形式。文字描述与图形描述匹配。 | |
【写作样例-1】
- 信号量初始化,为配置的N个信号量申请内存(N值可以由用户自行配置,受内存限制),并把所有的信号量初始化成未使用,并加入到未使用链表中供系统使用。
- 信号量创建,从未使用的信号量链表中获取一个信号量资源,并设定初值。
- 信号量申请,若其计数器值大于0,则直接减1返回成功。否则任务阻塞,等待其它任务释放该信号量,等待的超时时间可设定。当任务被一个信号量阻塞时,将该任务挂到信号量等待任务队列的队尾。
- 信号量释放,若没有任务等待该信号量,则直接将计数器加1返回。否则唤醒该信号量等待任务队列上的第一个任务。
- 信号量删除,将正在使用的信号量置为未使用信号量,并挂回到未使用链表。
- 信号量允许多个任务在同一时刻访问同一资源,但会限制同一时刻访问此资源的最大任务数目。访问同一资源的任务数达到该资源的最大数量时,会阻塞其他试图获取该资源的任务,直到有任务释放该信号量。
【写作样例-2】
**互斥锁运作原理**
多任务环境下会存在多个任务访问同一公共资源的场景,而有些公共资源是非共享的,需要任务进行独占式处理。互斥锁怎样来避免这种冲突呢?
用互斥锁处理非共享资源的同步访问时,如果有任务访问该资源,则互斥锁为加锁状态。此时其他任务如果想访问这个公共资源则会被阻塞,直到互斥锁被持有该锁的任务释放后,其他任务才能重新访问该公共资源,此时互斥锁再次上锁,如此确保同一时刻只有一个任务正在访问这个公共资源,保证了公共资源操作的完整性。
## 约束与限制
【写作要求】
*必选**描述本开发任务过程中* *的约束条件,以及此操作约束带来相应的负面影响,包括但不限于如下几方面*
- **功能限制**
- 功能使用范围(明确不支持的场景)。
- 规格限制。
* **操作限制**
* 已知问题的操作。
* 潜在风险的操作(如引起性能降低)。
* 引起性能降低的操作。
写作要求见下,完成写作后,请逐项自检。
| 内容要求 | 是否满足 |
| -------- | -------- |
| 明确功能限制或操作限制。 | |
| 约束对指导任务开发有影响或体验有感知,否则不用体现。 | |
| 容易出错的操作在步骤里描述,不在此体现。 | |
**写作样例**
**互斥锁的约束与限制**
- 两个任务不能对同一把互斥锁加锁。如果某任务对已被持有的互斥锁加锁,则该任务会被挂起,直到持有该锁的任务对互斥锁解锁,才能执行对这把互斥锁的加锁操作。
- 互斥锁不能在中断服务程序中使用。
- XXX作为实时操作系统需要保证任务调度的实时性,尽量避免任务的长时间阻塞,因此在获得互斥锁之后,应该尽快释放互斥锁。
- 持有互斥锁的过程中,不得再调用LOS_TaskPriSet等接口更改持有互斥锁任务的优先级。
# 开发指 # 开发指南写作模板
***【写作要求】***
> **注意:**
> _1、本模板提供推荐的开发指南文档框架、典型知识点写作要求及写作指导。实际写作中,应视具体__方案/特性/功能/模块__情况,先完成开发者任务场景分析与开发指南大纲设计,然后参照本模板写作具体内容。_
>
> _2、文档写作时,两级标题之间的位置不允许添加内容。_
>
> _3、所有斜体为写作指导,正式文档中注意全部删除。_
*必选**描述各个场景下,开发者如何完成开发任务**可根据多场景任务增加章节。写作要求见下,完成写作后,请逐项自检*
## xxx概述
| 内容要求 | 是否满足 | _必选。根据具体__方案/特性/功能/模块__的场景划分情况,此处的“xxx概述”与具体任务场景下的“任务场景n概述”按需提供一处或共存,具体的:_
| -------- | -------- |
| 如果有多个场景,请写起多个“开发指导”章节,如音频播放开发指导、音量管理开发指导、短音播放开发指导。 | |
| 标题尽量使用“动词+名词”的句式表述任务操作。 | |
_1、此处的“xxx概述”":用于承载开发者需要了解的、本特性各任务场景通用的概述内容。如无,则删除。_
## 场景介绍 _2、“任务场景n概述”:用于承载任务场景n直接相关的概述内容,知识点构成及写作要点与“xxx概述”相同,包括任务场景n简介、任务场景n直接相关的基本概念、任务场景n直接相关的实现原理、任务场景n直接相关的约束与限制、任务场景n直接相关的相关实例。如无,则删除。_
***【写作要求】*** **_【开发指南总体写作要求】_**
*必选**描述在什么情景下解决什么问题,最终达到什么样的效果*。应用SCQA描述方法: **_1、目标对象:_**_面向内、外部开发者(含产品经理、开发人员)。面向UX设计师的指导文档通常由专门的UX设计规范承载,不在开发指南范畴。本文如需提及,以超链接方式指向对应UX规范即可。_
- S:situation(情景),由大家都熟悉的的情景,事实引入。 _**2、内容定位:**介绍__方案/特性/功能/模块__是什么(What)、能做什么(Why),以及如何进行相关应用程序/设备的设计、开发、发布上架(How)。支撑开发者学习必要知识,最终在实际开发活动中完成既定任务目标。_
- C:complication(冲突),但是实际情况往往和我们的要求有冲突。 _**3、用户视角:**变身开发者,始终以开发者视角,提供开发者关注的、可感知和使用的内容。_
- Q:question(疑问),怎么办? _**4、面向任务:**聚焦开发者实际任务,完整、正确、易用,具备权威指导性。_
- A:answer(回答),我们的解决方案是 … _5、不要受限:模板只是基础框架,不要僵化。_
*写作要求见下,完成写作后,请逐项自检*
| 内容要求 | 是否满足 | ### xxx简介
| -------- | -------- |
| 背景原因、什么时候在哪、做了什么操作、最终解决什么问题或操作效果都明确。 | |
**写作样例** _必选。_
音频播放的主要工作是将音频数据转码为可听见的音频模拟信号并通过输出设备进行播放,同时对播放任务进行管理。 _**【开发者关注点】**_
_这个方案/特性/功能/模块是什么(定义-what)?我为什么要用它?它能解决哪些问题或带来哪些收益?(目的/客户价值-why)_
## 接口说明 _**【写作要点】**_
*【**写作要求**】* - _提供易理解的场景化描述。__可参考如下SCQA方式介绍方案/特性/功能/模块客户面的功能场景、特点。_
- _S:situation(情景),由大家都熟悉的的情景、事实引入。_
- _C:complication(冲突),但是实际情况往往和我们的要求有冲突。_
- _Q:question(疑问),怎么办?_
- _A:answer(回答),我们的解决方案是 …_
*必选**描述本开发指导相关的接口有哪些,旨在要开发者在开发前有大体了解,提升开发效率**写作要求见下,完成写作后,请逐项自检* - _抽象的概念要具象化,可以适当引入2C视角(如UX中的场景效果)的内容,帮助理解。_
| 内容要求 | 是否满足 | **_【写作要求】_**
| -------- | -------- |
| 不在本开发任务的接口无需提供。 | |
| 如果接口太多,超过10个,可以提供主要的接口 | |
**写作样例** - _清晰易懂,避免模糊、晦涩、有歧义的表述。_
音频播放开放能力如下:AudioRenderer类,具体的API详见接口文档。 - _仅使用必要的术语、缩略语或专有名词,并给出解释(提供到术语表链接也可以)。_
**表1** 音频播放API接口功能介绍 - _文中使用的术语、缩略语或专有名词应全文保持一致。_
| 接口名 | 描述 |
| -------- | -------- |
| AudioRenderer(AudioRendererInfo audioRendererInfo, PlayMode pm) throws IllegalArgumentException | 构造函数,设置播放相关音频参数和播放模式,使用默认播放设备 |
| AudioRenderer(AudioRendererInfo audioRendererInfo, PlayMode pm, AudioDeviceDescriptor outputDevice) throws IllegalArgumentException | 构造函数,设置播放相关音频参数、播放模式和播放设备 |
| boolean play() | 播放音频流 |
| boolean write(byte[] data, int offset, int size) | 将音频数据以byte流写入音频接收器以进行播放 |
### xxx基本概念
## 开发步骤 _可选。此处放置以下各任务场景通用的基本概念。_
*【**写作要求**】* _**【开发者关注点】**_
*必选。描述* *开发的整体过程,便于开发者快速完成开发**具体写作要求见下,完成写作后,请逐项自检下* _要使用该方案/特性/功能/模块,有哪些独有概念是我需要了解的?_
| 内容要求 | 是否满足 | **_【写作要点】_**
| -------- | -------- |
| **如何写好步骤** | |
| 步骤完整:提供必需的步骤,顺利指导完成操作,无缺失。 | |
| 脉络清楚:文档逻辑清晰、合理。文档前面的概述、准备、操作围绕一条线描述,不能章节断裂或前后矛盾的现象。 | |
| 任务句式:标题或句子尽量使用“动词+名词”的句式表述动作。 | |
| 预防提前:操作过程中的限制、易错的、有潜在风险的,要提前描述,使用DOCS平台的“插入&gt;&nbsp;说明&nbsp;&gt;&nbsp;须知”描述。 | |
| 步骤清晰-1:无论步骤简单或复杂,都需要写步骤目的,即为什么做。 | |
| 步骤清晰-2:明确在什么环境下,使用什么工具,做什么操作,怎么做该操作。 | |
| 步骤具体:如果操作可选,要明确可选条件。 | |
| 在开发步骤执行完成后,及时明确操作正确的标准。 | |
| **如何写好代码段** | |
| 代码涉及开发者拷贝的命令,必须用可编辑的报文呈现,避免截图,使用代码片段包裹。 | |
| 代码中关键段用蓝色(RGB:0.0.255)突出显示,关键步骤要有注释说明。 | |
| 代码显示符合代码缩进要求。 | |
| 步骤涉及接口调用,清晰给出接口及其使用说明或示例代码,代码来源于具体实例。 | |
**写作样例** - _仅提供开发者任务中必须的概念。_
1. 构造音频流参数的数据结构AudioStreamInfo,推荐使用AudioStreamInfo.Builder类来构造,模板如下,模板中设置的均为AudioStreamInfo.Builder类的默认值,根据音频流的具体规格来设置具体参数。 - _运作机制、约束限制、开发过程等多个章节相关的概念在此介绍,仅某个章节用到的概念在对应章节中介绍。_
- _业界通用的概念不用在此赘述。__注意使用业界通用术语来表达,不用华为研发内部语言。_
- _概念之间如有逻辑关系,推荐使用图形描述。_
**_【写作要求】_**
- _清晰易懂,避免模糊、晦涩、有歧义的表述。_
- _仅使用必要的术语、缩略语或专有名词,并给出解释(提供到术语表链接也可以)。_
- _文中使用的术语、缩略语或专有名词应全文保持一致。_
**【写作样例】**
在进行关系型数据库开发前,开发者应了解以下基本概念:
- **关系型数据库**
基于关系模型来管理数据的数据库,以行和列的形式存储数据。
- **谓词**
数据库中用来代表数据实体的性质、特征或者数据实体之间关系的词项,主要用来定义数据库的操作条件。
- **结果集**
指用户查询之后的结果集合,可以对数据进行访问。结果集提供了灵活的数据访问方式,可以更方便的拿到用户想要的数据。
### 实现原理
_可选。此处放置以下各任务场景通用的实现原理。_
_**【开发者关注点】**_
_该方案/特性/功能/模块是如何工作的?关键步骤相关接口调用和触发时机?我要了解其原理,以更好的使用、调试它。_
**_【写作要点】_**
- _如果原理简单,通过前面基本概念就可以说清楚,此章节可以不提供,删除即可。_
- _仅描述开发者任务(使用或接入)过程中可见的机制原理,不要提供开发者不可见的内部实现。_
- _尽量图文结合,一般使用时序图、流程图等形式。文字描述与图形描述匹配。_
- _注意不要泄密。_
**_【写作要求】_**
- _清晰易懂,避免模糊、晦涩、有歧义的表述。_
- _仅使用必要的术语、缩略语或专有名词,并给出解释(提供到术语表链接也可以)。_
- _文中使用的术语、缩略语或专有名词应全文保持一致。_
**【写作样例】**
分布式数据对象生长在分布式内存数据库之上,在分布式内存数据库上进行了JS对象型的封装,能像操作本地变量一样操作分布式数据对象,数据的跨设备同步由系统自动完成。
**图1** 分布式数据对象运行机制
![how-distributedobject-works](figures/how-distributedobject-works.png)
### 约束与限制
_可选。此处放置以下各任务场景通用的约束与限制。_
_**【开发者关注点】**_
_我要__使用该方案/特性/功能/模块,有什么约束条件吗?__该方案/特性/功能/模块__实现的程度如何,能满足我的需求吗?_
**_【写作要点】_**
- _描述对开发活动有影响、可感知的约束限制,及其带来的影响,包括但不限于如下几方面:_
- **_功能限制_**
- _功能使用范围(明确不支持的场景)。_
- _规格限制。_
- **_操作限制_**
- _已知问题的操作。_
- _潜在风险的操作(如引起性能降低)。_
- _容易出错的操作在步骤里描述,不在此体现。_
**【写作样例】**
- 不同设备间只有相同bundleName的应用才能直接同步。
- 不建议创建过多分布式数据对象,每个分布式数据对象将占用100-150KB内存。
- 每个分布式数据对象大小不超过500KB。
### 相关实例
_可选。此处放置以下各任务场景通用的相关实例。_
**_【开发者关注点】_**
_有哪些Sample code、Codelabs、Demo工程可供学习、参考。_
**_【写作要点】_**
_已发布的Sample code、Codelabs、Demo工程包,请在此处提供链接(一般为Gitee链接)。__注意:不允许将工程包等作为附件插入到文档中。_
**【写作样例】**
针对Ability开发,有以下相关实例可供参考:
- [Page内和Page间导航跳转](https://gitee.com/openharmony/codelabs/tree/master/Ability/PageAbility)
## 环境准备
_可选。_
_根据具体的开发场景分析分解情况,本节内容可按需放入“开发指导”下,作为“前提条件”或“开发准备”与具体场景的“开发步骤”就近放置。_
_明确如何准备开发环境(如软硬件配置要求、工具要求、设备要求等)__。_
_如果不涉及上述特殊要求,此章节删除。_
### 环境要求
**_【写作要求】_**
_明确开发环境所需要的软硬件配置,旨在要用户提前准备环境。如果软硬件内容比较多,可以再增加子标题。_
**【写作样例】**
Hi3861开发板对环境配置的特有要求如下表所示。
**表1** Hi3861开发板对环境配置的特有要求
| 平台类型 | 开发工具 | 用途 | 获取途径 |
| -------- | -------- | -------- | -------- |
| Linux服务器 | SCons3.0.4+ | 编译构建工具 | 通过互联网获取 |
| Linux服务器 | build-essential | 编译依赖的基础软件包 | 通过互联网获取 |
### 搭建环境
**_【写作要求】_**
_描述搭建开发环境的具体步骤,如果内容比较多,可以再区分章节,如:搭建编译基础环境、搭建编译工具环境等。_
**【写作样例】**
1. 打开Linux编译服务器终端。
2. 运行如下命令,安装工具安装包。
``` ```
AudioStreamInfo audioStreamInfo = new AudioStreamInfo.Builder() xxxxx
.sampleRate( AudioStreamInfo.SAMPLE_RATE_UNSPECIFIED)
.audioStreamFlag(AudioStreamInfo.AudioStreamFlag.AUDIO_STREAM_FLAG_NONE)
.encodingFormat(AudioStreamInfo.EncodingFormat.ENCODING_INVALID)
.channelMask(AudioStreamInfo.ChannelMask.CHANNEL_INVALID)
.streamUsage(AudioStreamInfo.StreamUsage.STREAM_USAGE_UNKNOWN)
.build();
``` ```
以真实的播放pcm流为例: 3. 运行如下命令,查看是否安装成功。
```
AudioStreamInfo audioStreamInfo = new AudioStreamInfo.Builder().sampleRate(44100)//44.1kHz
.audioStreamFlag(AudioStreamInfo.AudioStreamFlag.AUDIO_STREAM_FLAG_MAY_DUCK)//混音
.encodingFormat(AudioStreamInfo.EncodingFormat.ENCODING_PCM_16BIT)//16-bit PCM
.channelMask(AudioStreamInfo.ChannelMask.CHANNEL_OUT_STEREO)//双声道
.streamUsage(AudioStreamInfo.StreamUsage.STREAM_USAGE_MEDIA)//媒体类音频
.build();
```
2. 使用步骤1创建的音频流构建音频播放的参数结构AudioRendererInfo,推荐使用AudioRendererInfo.Builder类来构造,模板如下,模板中设置的均为AudioRendererInfo.Builder类的默认值,根据音频播放的具体规格来设置具体参数。
``` ```
AudioRendererInfo audioRendererInfo = new AudioRendererInfo.Builder() xxxxx
.audioStreamInfo(audioStreamInfo)
.audioStreamOutputFlag(AudioRendererInfo.AudioStreamOutputFlag.AUDIO_STREAM_OUTPUT_FLAG_NONE)
.bufferSizeInBytes(0)
.distributedDeviceId("")
.isOffload(false)
.sessionID(AudioRendererInfo.SESSION_ID_UNSPECIFIED)
.build();
``` ```
以真实的播放pcm流为例:
``` ### 检验环境是否搭建成功
AudioRendererInfo audioRendererInfo = new AudioRendererInfo.Builder()
.audioStreamInfo(audioStreamInfo) **_【写作要求】_**
.audioStreamOutputFlag(AudioRendererInfo.AudioStreamOutputFlag.AUDIO_STREAM_OUTPUT_FLAG_DIRECT_PCM)//pcm格式的输出流
.bufferSizeInBytes(100) _可选。环境搭建完成后,需要明确给出环境搭建是否成功的检验标准,也可以与搭建步骤合一。如上述写作样例。_
.distributedDeviceId("E54***5E8")//使用分布式设备E54***5E8播放
.isOffload(false)//false表示分段传输buffer并播放,true表示整个音频流一次性传输到HAL层播放
.build(); ## 任务场景n(使用具体任务/场景名称替代,只有1个场景时使用特性名称xxx)开发指导
```
_必选。_
3. 根据要播放音频流指定PlayMode,不同的PlayMode在写数据时存在差异,详情见步骤7,其余播放流程是无区别的。并通过构造函数获取AudioRenderer类的实例化对象。
_**【开发者关注点】**_
_我要使用/接入这个方案/特性/功能/模块,需要怎么做(how)?_
_**【写作要点】**_
_贴近开发者实际开发场景:_
- _开发者需要通过哪些任务来达成开发目标,这就是任务场景。_
- _任务场景可以有1个或多个,__可按需添加多个“开发指导”章节。__同时要遵循分层分级逻辑,即大场景(任务场景n)-&gt;小场景(子任务场景n-x)-&gt;任务逻辑(对应“开发流程”)-&gt;操作步骤(一个个step)。_
### 任务场景n概述
_根据具体特性的场景划分情况,“任务场景n概述”与开篇的“xxx概述”按需提供一处或共存,具体的:_
_1、开篇的“xxx概述”":用于承载开发者需要了解的、本特性各任务场景通用的概述内容。如无,则删除。_
_2、“任务场景n概述”:用于承载任务场景n直接相关的概述内容,知识点构成及写作要点与开篇的“xxx概述”相同,包括任务场景n简介、任务场景n直接相关的基本概念、任务场景n直接相关的实现原理、任务场景n直接相关的约束与限制、任务场景n直接相关的相关实例。如无,则删除。_
### 开发流程
**_【写作要点】_**
- _可选。当开发步骤较多(达到5步及以上核心操作)或步骤间存在复杂的逻辑关系时,请提供开发流程,让开发者对他要执行的操作有一个全景认知。_
- _一般使用流程图、表。_
### 接口说明
**_【写作要求】_**
- _可选。描述以下开发步骤中有哪些关键接口,并提供接口简介。旨在要开发者在开发前有大体了解,提升开发效率。_
- _如果相关接口超过10个,只提供主要接口即可_。
- _接口及其涉及的功能必须在文档发布时的对应版本已支持。_
**【写作样例】**
部分接口仅系统应用才可以调用,且需要具备权限:SystemCapability.Notification.Notification ,接口返回值有两种返回形式:callback和promise,下表中为callback形式接口,promise和callback只是返回值方式不一样,功能相同。具体API说明详见[接口文档](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-notification.md)
**表1** 通知使能开关接口功能介绍
| 接口名 | 描述 |
| ------------------------------------------------------------ | ---------------- |
| isNotificationEnabled(bundle: BundleOption, callback: AsyncCallback\<boolean>): void | 查询通知使能开关 |
| enableNotification(bundle: BundleOption, enable: boolean, callback: AsyncCallback\<void>): void | 设置使能开关 |
### 开发步骤
**_【写作要求】_**
_必选。_
- _完整性、正确性要求_
- _描述开发的完整过程,使开发者能够完整(如HAP中代码、资源、第三方库及应用配置文件都涉及哪些相关步骤)、正确的完成开发,不可遗漏关键配置操作。_
- _文档中的片段示例代码直接拷贝进DevEco Studio中,放入上下文可以正常编译。_
- _文档中的完整示例代码直接拷贝进DevEco Studio中能够运行,并和文档中描述的执行结果一致。_
- _清晰性要求_
- _每个步骤有清晰的执行主体(who),明确操作目的(why)、操作内容(what/how)、场景(when/where)。使用祈使句描述步骤。_
- _步骤中如果涉及接口调用,需要清晰给出使用的接口及其使用说明、示例代码。_
- _关键步骤和示例代码中有开发建议或注意事项的位置,需要提供相关描述(示例代码中采用注释)。_
变身开发者,假想自己在操作,可能会提出什么问题?这些问题就是开发者的障碍。需要在文档中提供支撑信息,来帮助开发者处理及应对这些障碍。例如:
- 分支选取原则:步骤分支选取原则、参数选取原则或建议。
- 必要的随操作步骤就近放置的补充说明:可能存在的特殊操作、操作权限要求、效率提升技巧、几句话即可说清的背景知识等。
- 需要事先告知用户并提醒注意的信息:对其他功能可能造成影响的操作;对系统性能、可靠性可能造成影响的操作;可能导致数据丢失或各类安全问题的操作。这些信息需要在“操作步骤”开始前,以区别于正文的样式加以提示强调。
- 防错/纠错信息:针对开发全流程中可能遇到的典型问题,提供预防、定位或恢复指导,以提高开发效率。防错/纠错信息可酌情在“开发步骤”或下文的“常见问题”中承载。
- _规范性要求_
- _保证示例代码的逻辑/语法正确性、书写规范性。涉及用户手机号码、身份证、帐号名等敏感信息均需要打码处理,如186\*\*\*\*\*\*\*\*;涉及IP地址、域名等,需要使用私网IP或相应格式代替,如xx.xx.xx.xx、www.example.com,禁止使用真实IP地址、域名。_
- _代码显示符合代码缩进要求。缩进不要用tab键,改为4个空格,否则上网格式错乱。_
**【写作样例-节选】**
1. 导入相关模块。
```javascript
import formBindingData from '@ohos.application.formBindingData'
import formInfo from '@ohos.application.formInfo'
import formProvider from '@ohos.application.formProvider'
```
4. 播放任务结束后,调用AudioRenderer实例化对象的release()释放资源。 2. 实现LifecycleForm生命周期接口。
```javascript
export default {
onCreate(want) {
console.log('FormAbility onCreate');
// 由开发人员自行实现,将创建的卡片信息持久化,以便在下次获取/更新该卡片实例时进行使用
let obj = {
"title": "titleOnCreate",
"detail": "detailOnCreate"
};
let formData = formBindingData.createFormBindingData(obj);
return formData;
},
onCastToNormal(formId) {
// 使用方将临时卡片转换为常态卡片触发,提供方需要做相应的处理
console.log('FormAbility onCastToNormal');
},
}
```
### 调测验证
**_【写作要求】_**
- _可选。开发完成后,如有独立的调测验证操作,需提供指导,以确认操作是否成功。操作步骤要求同“开发步骤”。_
- _此处仅提供最后的业务调测,每个小任务的操作结果,推荐在开发步骤执行完成后及时验证。_
## 常见问题
_可选。_
**_【开发者关注点】_**
_该方案/特性/功能/模块开发全流程中可能遇到哪些典型问题?如何定位、解决?_
**_【写作要点】_**
_描述开发过程遇到的各类问题以及解决方案,以提高开发效率。_
- _如果无常见问题,删除此章节。_
- _如果有常见问题,建议单独章节,后续具备扩展性。_
- _如果有常见问题,问题少于1屏且未来扩充可能性不大,可放在“开发指导”。_
### 1.XX问题(简单问题)
## 调测验证(可选) XXX
*【**写作要求**】*
*可选*。 *描述开发完成后,进行调测验证,确保最终操作成功*。*操作步骤要求同“开发指导”,其他具体写作要求见下,完成写作后,请逐项自检下*。 ### 2.XX问题(复杂问题)
| 内容要求 | 是否满足 | **现象描述**
| -------- | -------- |
| 仅进行最后的业务调测,每个小任务的操作结果,在开发步骤执行完成后,及时验证操作结果。 | |
| 明确开发成功标准。 | |
## 开发实例 XXX
*【**写作要求**】*
*提供完整的sample示例,同时简要描述示例原理和实现,并链接到源码仓*。 **可能原因**
针对xxx开发,有以下示例工程可供参考: XXX
- xxx(此处请提供源码超链接) **解决办法**
本示例xxxx。 XXX
...@@ -318,7 +318,7 @@ MMC模块适配的三个环节是配置属性文件,实例化驱动入口, ...@@ -318,7 +318,7 @@ MMC模块适配的三个环节是配置属性文件,实例化驱动入口,
... ...
ret = HimciHostInit(host, cntlr);// 厂商自定义的初始化,失败就 goto _ERR; ret = HimciHostInit(host, cntlr);// 厂商自定义的初始化,失败就 goto _ERR;
... ...
ret = MmcCntlrAdd(cntlr); // 调用核心层函数 失败就goto _ERR; ret = MmcCntlrAdd(cntlr); // 调用核心层函数 失败就goto _ERR;
... ...
(void)MmcCntlrAddDetectMsgToQueue(cntlr);// 将卡检测消息添加到队列中。 (void)MmcCntlrAddDetectMsgToQueue(cntlr);// 将卡检测消息添加到队列中。
HDF_LOGD("HimciMmcBind: success."); HDF_LOGD("HimciMmcBind: success.");
......
...@@ -129,12 +129,12 @@ Regulator模块适配包含以下四个步骤: ...@@ -129,12 +129,12 @@ Regulator模块适配包含以下四个步骤:
device_regulator :: device { device_regulator :: device {
device0 :: deviceNode { // 为每一个Regulator控制器配置一个HDF设备节点,存在多个时添加,否则不用 device0 :: deviceNode { // 为每一个Regulator控制器配置一个HDF设备节点,存在多个时添加,否则不用
policy = 1; // 2:用户态可见;1:内核态可见;0:不需要发布服务 policy = 1; // 2:用户态可见;1:内核态可见;0:不需要发布服务
priority = 50; // 驱动启动优先级 priority = 50; // 驱动启动优先级
permission = 0644; // 驱动创建设备节点权限 permission = 0644; // 驱动创建设备节点权限
/* 【必要】用于指定驱动名称,需要与期望的驱动Entry中的moduleName一致 */ /* 【必要】用于指定驱动名称,需要与期望的驱动Entry中的moduleName一致 */
moduleName = "HDF_PLATFORM_REGULATOR_MANAGER"; moduleName = "HDF_PLATFORM_REGULATOR_MANAGER";
serviceName = "HDF_PLATFORM_REGULATOR_MANAGER"; //【必要且唯一】驱动对外发布服务的名称 serviceName = "HDF_PLATFORM_REGULATOR_MANAGER"; //【必要且唯一】驱动对外发布服务的名称
/* 【必要】用于配置控制器私有数据,要与regulator_config.hcs中对应控制器保持一致,具体的控制器信息在regulator_config.hcs中 */ /* 【必要】用于配置控制器私有数据,要与regulator_config.hcs中对应控制器保持一致,具体的控制器信息在regulator_config.hcs中 */
deviceMatchAttr = "hdf_platform_regulator_manager"; deviceMatchAttr = "hdf_platform_regulator_manager";
} }
device1 :: deviceNode { device1 :: deviceNode {
...@@ -215,8 +215,8 @@ Regulator模块适配包含以下四个步骤: ...@@ -215,8 +215,8 @@ Regulator模块适配包含以下四个步骤:
}; };
struct RegulatorDesc { struct RegulatorDesc {
const char *name; /* regulator名称 */ const char *name; /* regulator名称 */
const char *parentName; /* regulator父节点名称 */ const char *parentName; /* regulator父节点名称 */
struct RegulatorConstraints constraints; /* regulator约束信息 */ struct RegulatorConstraints constraints; /* regulator约束信息 */
uint32_t minUv; /* 最小输出电压值 */ uint32_t minUv; /* 最小输出电压值 */
uint32_t maxUv; /* 最大输出电压值 */ uint32_t maxUv; /* 最大输出电压值 */
......
...@@ -91,7 +91,7 @@ DevHandle SpiOpen(const struct SpiDevInfo *info); ...@@ -91,7 +91,7 @@ DevHandle SpiOpen(const struct SpiDevInfo *info);
``` ```
struct SpiDevInfo spiDevinfo; /* SPI设备描述符 */ struct SpiDevInfo spiDevinfo; /* SPI设备描述符 */
DevHandle spiHandle = NULL; /* SPI设备句柄 */ DevHandle spiHandle = NULL; /* SPI设备句柄 */
spiDevinfo.busNum = 0; /* SPI设备总线号 */ spiDevinfo.busNum = 0; /* SPI设备总线号 */
spiDevinfo.csNum = 0; /* SPI设备片选号 */ spiDevinfo.csNum = 0; /* SPI设备片选号 */
......
...@@ -90,7 +90,7 @@ SPI模块适配HDF框架的三个环节是配置属性文件,实例化驱动 ...@@ -90,7 +90,7 @@ SPI模块适配HDF框架的三个环节是配置属性文件,实例化驱动
platform :: host { platform :: host {
hostName = "platform_host"; hostName = "platform_host";
priority = 50; priority = 50;
device_spi :: device { //为每一个 SPI 控制器配置一个HDF设备节点 device_spi :: device { //为每一个 SPI 控制器配置一个HDF设备节点
device0 :: deviceNode { device0 :: deviceNode {
policy = 1; policy = 1;
priority = 60; priority = 60;
...@@ -104,8 +104,8 @@ SPI模块适配HDF框架的三个环节是配置属性文件,实例化驱动 ...@@ -104,8 +104,8 @@ SPI模块适配HDF框架的三个环节是配置属性文件,实例化驱动
priority = 60; priority = 60;
permission = 0644; permission = 0644;
moduleName = "HDF_PLATFORM_SPI"; // 【必要】用于指定驱动名称,该字段的值必须和驱动入口结构的moduleName值一致 moduleName = "HDF_PLATFORM_SPI"; // 【必要】用于指定驱动名称,该字段的值必须和驱动入口结构的moduleName值一致
serviceName = "HDF_PLATFORM_SPI_1"; // 【必要且唯一】驱动对外发布服务的名称 serviceName = "HDF_PLATFORM_SPI_1"; // 【必要且唯一】驱动对外发布服务的名称
deviceMatchAttr = "hisilicon_hi35xx_spi_1";// 需要与设备hcs文件中的match_attr匹配 deviceMatchAttr = "hisilicon_hi35xx_spi_1"; // 需要与设备hcs文件中的match_attr匹配
} }
... ...
} }
...@@ -294,10 +294,10 @@ SPI模块适配HDF框架的三个环节是配置属性文件,实例化驱动 ...@@ -294,10 +294,10 @@ SPI模块适配HDF框架的三个环节是配置属性文件,实例化驱动
int32_t ret; int32_t ret;
struct SpiCntlr *cntlr = NULL; struct SpiCntlr *cntlr = NULL;
... ...
cntlr = SpiCntlrFromDevice(device);// 这里有HdfDeviceObject到SpiCntlr的强制转化,通过service成员,赋值见Bind函数 cntlr = SpiCntlrFromDevice(device); // 这里有HdfDeviceObject到SpiCntlr的强制转化,通过service成员,赋值见Bind函数
// return (device == NULL) ? NULL : (struct SpiCntlr *)device->service; // return (device == NULL) ? NULL : (struct SpiCntlr *)device->service;
... ...
ret = Pl022Init(cntlr, device);// 【必要】实例化厂商自定义操作对象,示例见下 ret = Pl022Init(cntlr, device); // 【必要】实例化厂商自定义操作对象,示例见下
... ...
ret = Pl022Probe(cntlr->priv); ret = Pl022Probe(cntlr->priv);
... ...
...@@ -318,15 +318,15 @@ SPI模块适配HDF框架的三个环节是配置属性文件,实例化驱动 ...@@ -318,15 +318,15 @@ SPI模块适配HDF框架的三个环节是配置属性文件,实例化驱动
// 计算最大,最小速度对应的频率 // 计算最大,最小速度对应的频率
pl022->maxSpeedHz = (pl022->clkRate) / ((SCR_MIN + 1) * CPSDVSR_MIN); pl022->maxSpeedHz = (pl022->clkRate) / ((SCR_MIN + 1) * CPSDVSR_MIN);
pl022->minSpeedHz = (pl022->clkRate) / ((SCR_MAX + 1) * CPSDVSR_MAX); pl022->minSpeedHz = (pl022->clkRate) / ((SCR_MAX + 1) * CPSDVSR_MAX);
DListHeadInit(&pl022->deviceList);// 初始化DList链表 DListHeadInit(&pl022->deviceList); // 初始化DList链表
pl022->cntlr = cntlr; // 使Pl022与SpiCntlr可以相互转化的前提 pl022->cntlr = cntlr; // 使Pl022与SpiCntlr可以相互转化的前提
cntlr->priv = pl022; // 使Pl022与SpiCntlr可以相互转化的前提 cntlr->priv = pl022; // 使Pl022与SpiCntlr可以相互转化的前提
cntlr->busNum = pl022->busNum; // 给SpiCntlr的busNum赋值 cntlr->busNum = pl022->busNum; // 给SpiCntlr的busNum赋值
cntlr->method = &g_method; // SpiCntlrMethod的实例化对象的挂载 cntlr->method = &g_method; // SpiCntlrMethod的实例化对象的挂载
... ...
ret = Pl022CreatAndInitDevice(pl022); ret = Pl022CreatAndInitDevice(pl022);
if (ret != 0) { if (ret != 0) {
Pl022Release(pl022); // 初始化失败就释放Pl022对象 Pl022Release(pl022); // 初始化失败就释放Pl022对象
return ret; return ret;
} }
return 0; return 0;
...@@ -352,11 +352,11 @@ SPI模块适配HDF框架的三个环节是配置属性文件,实例化驱动 ...@@ -352,11 +352,11 @@ SPI模块适配HDF框架的三个环节是配置属性文件,实例化驱动
{ {
struct SpiCntlr *cntlr = NULL; struct SpiCntlr *cntlr = NULL;
... ...
cntlr = SpiCntlrFromDevice(device);// 这里有HdfDeviceObject到SpiCntlr的强制转化,通过service成员,赋值见Bind函数 cntlr = SpiCntlrFromDevice(device); // 这里有HdfDeviceObject到SpiCntlr的强制转化,通过service成员,赋值见Bind函数
// return (device==NULL) ?NULL:(struct SpiCntlr *)device->service; // return (device==NULL) ?NULL:(struct SpiCntlr *)device->service;
... ...
if (cntlr->priv != NULL) { if (cntlr->priv != NULL) {
Pl022Remove((struct Pl022 *)cntlr->priv);// 这里有SpiCntlr到Pl022的强制转化 Pl022Remove((struct Pl022 *)cntlr->priv); // 这里有SpiCntlr到Pl022的强制转化
} }
SpiCntlrDestroy(cntlr); // 释放Pl022对象 SpiCntlrDestroy(cntlr); // 释放Pl022对象
} }
......
...@@ -80,7 +80,7 @@ DevHandle UartOpen(uint32_t port); ...@@ -80,7 +80,7 @@ DevHandle UartOpen(uint32_t port);
``` ```
DevHandle handle = NULL; /* UART设备句柄 */ DevHandle handle = NULL; /* UART设备句柄 */
uint32_t port = 3; /* UART设备端口号 */ uint32_t port = 3; /* UART设备端口号 */
handle = UartOpen(port); handle = UartOpen(port);
if (handle == NULL) { if (handle == NULL) {
HDF_LOGE("UartOpen: failed!\n"); HDF_LOGE("UartOpen: failed!\n");
......
...@@ -263,14 +263,14 @@ UART模块适配HDF框架的三个环节是配置属性文件,实例化驱动 ...@@ -263,14 +263,14 @@ UART模块适配HDF框架的三个环节是配置属性文件,实例化驱动
// uart_core.c核心层UartHostCreate函数说明 // uart_core.c核心层UartHostCreate函数说明
struct UartHost *UartHostCreate(struct HdfDeviceObject *device) struct UartHost *UartHostCreate(struct HdfDeviceObject *device)
{ {
struct UartHost *host = NULL; // 新建UartHost struct UartHost *host = NULL; // 新建UartHost
... ...
host = (struct UartHost *)OsalMemCalloc(sizeof(*host));//分配内存 host = (struct UartHost *)OsalMemCalloc(sizeof(*host));//分配内存
... ...
host->device = device; // 【必要】使HdfDeviceObject与UartHost可以相互转化的前提 host->device = device; // 【必要】使HdfDeviceObject与UartHost可以相互转化的前提
device->service = &(host->service);// 【必要】使HdfDeviceObject与UartHost可以相互转化的前提 device->service = &(host->service); // 【必要】使HdfDeviceObject与UartHost可以相互转化的前提
host->device->service->Dispatch = UartIoDispatch;// 为service成员的Dispatch方法赋值 host->device->service->Dispatch = UartIoDispatch;// 为service成员的Dispatch方法赋值
OsalAtomicSet(&host->atom, 0); // 原子量初始化或者原子量设置 OsalAtomicSet(&host->atom, 0); // 原子量初始化或者原子量设置
host->priv = NULL; host->priv = NULL;
host->method = NULL; host->method = NULL;
return host; return host;
...@@ -319,7 +319,7 @@ UART模块适配HDF框架的三个环节是配置属性文件,实例化驱动 ...@@ -319,7 +319,7 @@ UART模块适配HDF框架的三个环节是配置属性文件,实例化驱动
... ...
port = (struct UartPl011Port *)OsalMemCalloc(sizeof(struct UartPl011Port));//【2】 port = (struct UartPl011Port *)OsalMemCalloc(sizeof(struct UartPl011Port));//【2】
... ...
udd->ops = Pl011GetOps();// 【3】设备开启、关闭、属性设置、发送操作等函数挂载 udd->ops = Pl011GetOps(); // 【3】设备开启、关闭、属性设置、发送操作等函数挂载
udd->recv = PL011UartRecvNotify;// 【4】数据接收通知函数(条件锁机制)挂载 udd->recv = PL011UartRecvNotify;// 【4】数据接收通知函数(条件锁机制)挂载
udd->count = 0; // 【5】 udd->count = 0; // 【5】
port->udd = udd; // 【6】使UartPl011Port与UartDriverData可以相互转化的前提 port->udd = udd; // 【6】使UartPl011Port与UartDriverData可以相互转化的前提
...@@ -328,9 +328,9 @@ UART模块适配HDF框架的三个环节是配置属性文件,实例化驱动 ...@@ -328,9 +328,9 @@ UART模块适配HDF框架的三个环节是配置属性文件,实例化驱动
... ...
udd->private = port; //【7】 udd->private = port; //【7】
host->priv = udd; // 【必要】使UartHost与UartDriverData可以相互转化的前提 host->priv = udd; // 【必要】使UartHost与UartDriverData可以相互转化的前提
host->num = udd->num;// 【必要】UART设备号 host->num = udd->num; // 【必要】UART设备号
UartAddDev(host); // 【必要】核心层uart_dev.c 中的函数,作用:注册一个字符设备节点到vfs,这样从用户态可以通过这个虚拟文件节点访问UART UartAddDev(host); // 【必要】核心层uart_dev.c 中的函数,作用:注册一个字符设备节点到vfs,这样从用户态可以通过这个虚拟文件节点访问UART
return HDF_SUCCESS; return HDF_SUCCESS;
} }
......
...@@ -211,7 +211,7 @@ Watchdog模块适配HDF框架的三个环节是配置属性文件,实例化驱 ...@@ -211,7 +211,7 @@ Watchdog模块适配HDF框架的三个环节是配置属性文件,实例化驱
hwdt->regBase = OsalIoRemap(hwdt->phyBase, hwdt->regStep); //地址映射 hwdt->regBase = OsalIoRemap(hwdt->phyBase, hwdt->regStep); //地址映射
... ...
hwdt->wdt.priv = (void *)device->property;// 【可选】此处是将设备属性的内容赋值给priv成员,但后续没有调用 priv 成员, hwdt->wdt.priv = (void *)device->property;// 【可选】此处是将设备属性的内容赋值给priv成员,但后续没有调用 priv 成员,
// 如果需要用到priv成员,需要额外实例化WatchdogMethod的getPriv和releasePriv成员函数 // 如果需要用到priv成员,需要额外实例化WatchdogMethod的getPriv和releasePriv成员函数
hwdt->wdt.ops = &g_method; // 【必要】将实例化后的对象赋值给ops成员,就可以实现顶层调用WatchdogMethod成员函数 hwdt->wdt.ops = &g_method; // 【必要】将实例化后的对象赋值给ops成员,就可以实现顶层调用WatchdogMethod成员函数
hwdt->wdt.device = device; // 【必要】这是为了方便HdfDeviceObject与WatchdogcCntlr相互转化 hwdt->wdt.device = device; // 【必要】这是为了方便HdfDeviceObject与WatchdogcCntlr相互转化
ret = WatchdogCntlrAdd(&hwdt->wdt); // 【必要】调用此函数初始化核心层结构体,返回成功信号后驱动才完全接入平台核心层 ret = WatchdogCntlrAdd(&hwdt->wdt); // 【必要】调用此函数初始化核心层结构体,返回成功信号后驱动才完全接入平台核心层
...@@ -244,17 +244,17 @@ Watchdog模块适配HDF框架的三个环节是配置属性文件,实例化驱 ...@@ -244,17 +244,17 @@ Watchdog模块适配HDF框架的三个环节是配置属性文件,实例化驱
struct WatchdogCntlr *wdt = NULL; struct WatchdogCntlr *wdt = NULL;
struct Hi35xxWatchdog *hwdt = NULL; struct Hi35xxWatchdog *hwdt = NULL;
... ...
wdt = WatchdogCntlrFromDevice(device);// 这里会通过service成员将HdfDeviceObject转化为WatchdogCntlr wdt = WatchdogCntlrFromDevice(device); // 这里会通过service成员将HdfDeviceObject转化为WatchdogCntlr
// return (device == NULL) ? NULL : (struct WatchdogCntlr *)device->service; // return (device == NULL) ? NULL : (struct WatchdogCntlr *)device->service;
if (wdt == NULL) { if (wdt == NULL) {
return; return;
} }
WatchdogCntlrRemove(wdt); // 核心层函数,实际执行wdt->device->service = NULL以及cntlr->lock的释放 WatchdogCntlrRemove(wdt); // 核心层函数,实际执行wdt->device->service = NULL以及cntlr->lock的释放
hwdt = (struct Hi35xxWatchdog *)wdt; // 这里将WatchdogCntlr转化为HimciHost hwdt = (struct Hi35xxWatchdog *)wdt; // 这里将WatchdogCntlr转化为HimciHost
if (hwdt->regBase != NULL) { // 解除地址映射 if (hwdt->regBase != NULL) { // 解除地址映射
OsalIoUnmap((void *)hwdt->regBase); OsalIoUnmap((void *)hwdt->regBase);
hwdt->regBase = NULL; hwdt->regBase = NULL;
} }
OsalMemFree(hwdt); // 释放厂商自定义对象占用的内存 OsalMemFree(hwdt); // 释放厂商自定义对象占用的内存
} }
``` ```
...@@ -174,8 +174,8 @@ LOSCFG_SOC_ASR5822S=y ...@@ -174,8 +174,8 @@ LOSCFG_SOC_ASR5822S=y
module_name = get_path_info(rebase_path("."), "name") module_name = get_path_info(rebase_path("."), "name")
module_group(module_name) { module_group(module_name) {
modules = [ modules = [
"dev_wifi_a", --- 单板模块 "dev_wifi_a", # 单板模块
"hcs", --- hcs文件的对应模块 "hcs", # hcs文件的对应模块
] ]
} }
} }
...@@ -203,17 +203,17 @@ LOSCFG_SOC_ASR5822S=y ...@@ -203,17 +203,17 @@ LOSCFG_SOC_ASR5822S=y
import("//kernel/liteos_m/liteos.gni") import("//kernel/liteos_m/liteos.gni")
config("public") { config("public") {
include_dirs = [ "." ] --- 公共头文件 include_dirs = [ "." ] # 公共头文件
} }
kernel_module("asr_startup") { --- 编译的模块 kernel_module("asr_startup") { # 编译的模块
sources = [ --- 编译的源文件 sources = [ # 编译的源文件
"startup.c", "startup.c",
"board.c", "board.c",
"startup_cm4.S", "startup_cm4.S",
] ]
include_dirs = [ --- 模块内使用到的头文件 include_dirs = [ # 模块内使用到的头文件
"...", "...",
] ]
} }
...@@ -223,10 +223,10 @@ LOSCFG_SOC_ASR5822S=y ...@@ -223,10 +223,10 @@ LOSCFG_SOC_ASR5822S=y
``` ```
config("public") { config("public") {
include_dirs = [] --- 公共头文件 include_dirs = [] # 公共头文件
ldflags = [] --- 链接参数,包括ld文件 ldflags = [] # 链接参数,包括ld文件
libs = [] --- 链接库 libs = [] # 链接库
defines = [] --- 定义 defines = [] # 定义
``` ```
![](../public_sys-resources/icon-note.gif) **说明:** ![](../public_sys-resources/icon-note.gif) **说明:**
...@@ -306,8 +306,8 @@ if (ret != LOS_OK) { ...@@ -306,8 +306,8 @@ if (ret != LOS_OK) {
在初始化之后,每个shell命令需要进行注册,例如:`vendor/asrmicro/wifi_demo/tests/wifi/wifi_app.c` 在初始化之后,每个shell命令需要进行注册,例如:`vendor/asrmicro/wifi_demo/tests/wifi/wifi_app.c`
``` ```
osCmdReg(CMD_TYPE_STD, "wifi_open", 0, (CMD_CBK_FUNC)ap_conn_func); --- 连接AP的指令,这里可以带参 osCmdReg(CMD_TYPE_STD, "wifi_open", 0, (CMD_CBK_FUNC)ap_conn_func); // 连接AP的指令,这里可以带参
osCmdReg(CMD_TYPE_EX, "wifi_close", 0, (CMD_CBK_FUNC)ap_close_func); --- 断开指令 osCmdReg(CMD_TYPE_EX, "wifi_close", 0, (CMD_CBK_FUNC)ap_close_func); // 断开指令
``` ```
### 内核启动适配 ### 内核启动适配
...@@ -316,21 +316,21 @@ osCmdReg(CMD_TYPE_EX, "wifi_close", 0, (CMD_CBK_FUNC)ap_close_func); --- 断 ...@@ -316,21 +316,21 @@ osCmdReg(CMD_TYPE_EX, "wifi_close", 0, (CMD_CBK_FUNC)ap_close_func); --- 断
注册中断,可参考`//device/soc/asrmicro/asr582x/liteos_m/sdk/startup/board.c`: 注册中断,可参考`//device/soc/asrmicro/asr582x/liteos_m/sdk/startup/board.c`:
``` ```
ArchHwiCreate(UART1_IRQn,configLIBRARY_NORMAL_INTERRUPT_PRIORITY,0,UART1_IRQHandler,0); --- UART中断 ArchHwiCreate(UART1_IRQn,configLIBRARY_NORMAL_INTERRUPT_PRIORITY,0,UART1_IRQHandler,0); // UART中断
ArchHwiCreate(GPIO_IRQn,configLIBRARY_NORMAL_INTERRUPT_PRIORITY,0,GPIO_IRQHandler,0); --- GPIO中断 ArchHwiCreate(GPIO_IRQn,configLIBRARY_NORMAL_INTERRUPT_PRIORITY,0,GPIO_IRQHandler,0); // GPIO中断
``` ```
内核初始化示例如下: 内核初始化示例如下:
``` ```
osStatus_t ret = osKernelInitialize(); --- 内核初始化 osStatus_t ret = osKernelInitialize(); // 内核初始化
if(ret == osOK) if(ret == osOK)
{ {
threadId = osThreadNew((osThreadFunc_t)sys_init,NULL,&g_main_task); --- 创建init线程 threadId = osThreadNew((osThreadFunc_t)sys_init,NULL,&g_main_task); // 创建init线程
if(threadId!=NULL) if(threadId!=NULL)
{ {
osKernelStart(); --- 线程调度 osKernelStart(); // 线程调度
} }
} }
``` ```
...@@ -339,9 +339,9 @@ if(ret == osOK) ...@@ -339,9 +339,9 @@ if(ret == osOK)
``` ```
... ...
DeviceManagerStart(); --- HDF初始化 DeviceManagerStart(); // HDF初始化
OHOS_SystemInit(); --- OpenHarmony系统组件初始化 OHOS_SystemInit(); // OpenHarmony系统组件初始化
.... ....
``` ```
...@@ -439,14 +439,14 @@ LOSCFG_DRIVERS_HDF_PLATFORM=y ...@@ -439,14 +439,14 @@ LOSCFG_DRIVERS_HDF_PLATFORM=y
``` ```
controller_uart0 :: uart_controller { controller_uart0 :: uart_controller {
match_attr = "asr582x_uart_0"; match_attr = "asr582x_uart_0";
port = 0; /* UART_ID_0 */ port = 0; /* UART_ID_0 */
pin_tx_pin = 0; /* IO_PIN_10 */ pin_tx_pin = 0; /* IO_PIN_10 */
pin_tx_mux = 25; /* IO_MUX_2 */ pin_tx_mux = 25; /* IO_MUX_2 */
pin_rx_pin = 1; /* IO_PIN_11 */ pin_rx_pin = 1; /* IO_PIN_11 */
pin_rx_mux = 25; /* IO_MUX_2 */ pin_rx_mux = 25; /* IO_MUX_2 */
tx_rx = 3; /* TX_RX MODE */ tx_rx = 3; /* TX_RX MODE */
} }
``` ```
...@@ -598,7 +598,7 @@ dsoftbus组件的选项配置如下: ...@@ -598,7 +598,7 @@ dsoftbus组件的选项配置如下:
``` ```
declare_args() { declare_args() {
asr_dsoftbus_test = true --- 打开dsoftbus demo编译 asr_dsoftbus_test = true # 打开dsoftbus demo编译
} }
``` ```
...@@ -610,7 +610,7 @@ declare_args() { ...@@ -610,7 +610,7 @@ declare_args() {
"enable": "true", "enable": "true",
"test_modules": [ "test_modules": [
"wifi_test", "wifi_test",
"dsoftbus_test" --- 打开dsoftbus_test模块 "dsoftbus_test" # 打开dsoftbus_test模块
] ]
} }
] ]
...@@ -626,7 +626,7 @@ dsoftbus组件的运行需至少预留80KB RAM。如资源不够,可对其它 ...@@ -626,7 +626,7 @@ dsoftbus组件的运行需至少预留80KB RAM。如资源不够,可对其它
`//kernel_liteos_m/blob/master/components/net/lwip-2.1/porting/include/lwip/lwipopts.h` `//kernel_liteos_m/blob/master/components/net/lwip-2.1/porting/include/lwip/lwipopts.h`
``` ```
#define TCPIP_THREAD_STACKSIZE 0x2000 --- 缩小TCPIP任务栈大小 #define TCPIP_THREAD_STACKSIZE 0x2000 // 缩小TCPIP任务栈大小
``` ```
在communication_dsoftbus仓中,加入了-fPIC编译选项,这样会让编译器产生与位置无关代码,并使用相对地址,但是在LiteOS-M核中使用的是静态库,不推荐使用。 在communication_dsoftbus仓中,加入了-fPIC编译选项,这样会让编译器产生与位置无关代码,并使用相对地址,但是在LiteOS-M核中使用的是静态库,不推荐使用。
......
...@@ -43,7 +43,7 @@ vendor目录规则:vendor/{产品解决方案厂商}/{产品名称}。以华 ...@@ -43,7 +43,7 @@ vendor目录规则:vendor/{产品解决方案厂商}/{产品名称}。以华
``` ```
vendor # 产品解决方案厂商 vendor # 产品解决方案厂商
└── example # 产品解决方案厂商名称 └── example # 产品解决方案厂商名称
└── wifiiot # 产品名称 └── wifiiot # 产品名称
├── hals # 产品解决方案厂商OS适配 ├── hals # 产品解决方案厂商OS适配
├── BUILD.gn # 产品编译脚本 ├── BUILD.gn # 产品编译脚本
......
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
设置Makefile的交叉编译工具链,修改并编译该库,生成OpenHarmony平台的可执行文件,步骤如下: 设置Makefile的交叉编译工具链,修改并编译该库,生成OpenHarmony平台的可执行文件,步骤如下:
1. 设置工具链 1. 设置工具链
将下列clang工具链配置替换掉yxml库根目录的MakeFile(即表1中的文件)中的原有配置。 将下列clang工具链配置替换掉yxml库根目录的Makefile(即表1中的文件)中的原有配置。
clang工具链配置: clang工具链配置:
......
...@@ -354,10 +354,10 @@ OHOS Which product do you need? neptune_iotlink_demo ...@@ -354,10 +354,10 @@ OHOS Which product do you need? neptune_iotlink_demo
5. 为了组织一些产品侧的应用,需要强制链接到产品工程中来,本方案在vendor相应的`config.json`加入了相应的list来组织,在`vendor/hihope/neptune_iotlink_demo/config.json`增加对应的list: 5. 为了组织一些产品侧的应用,需要强制链接到产品工程中来,本方案在vendor相应的`config.json`加入了相应的list来组织,在`vendor/hihope/neptune_iotlink_demo/config.json`增加对应的list:
``` ```
"bin_list": [ --- demo list "bin_list": [ --- demo list
{ {
"elf_name": "hihope", "elf_name": "hihope",
"enable": "false", --- list开关 "enable": "false", --- list开关
"force_link_libs": [ "force_link_libs": [
"bootstrap", "bootstrap",
"broadcast", "broadcast",
......
...@@ -8,26 +8,15 @@ ...@@ -8,26 +8,15 @@
![zh-cn_image_0000001278358765](figures/zh-cn_image_0000001278358765.png) ![zh-cn_image_0000001278358765](figures/zh-cn_image_0000001278358765.png)
2. 选择要导入的源码目录,点击**Import**打开。 2. 选择OpenHarmony源码根目录路径,然后再选择**Import OpenHarmony Source**选项,点击**Import**进行导入。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 工程存储路径不能包含中文字符、空格。如果工程存储路径包含中文字符或空格,可能导致编译失败。
![zh-cn_image_0000001271477045](figures/zh-cn_image_0000001271477045.png)
3. 首次导入时,会出现如下提示框,点击**Import**
![zh-cn_image_0000001314157517](figures/zh-cn_image_0000001314157517.png)
4. 在Select Project type界面,选择**Import from OpenHarmony Source**
![zh-cn_image_0000001215743910](figures/zh-cn_image_0000001215743910.png)
5. 在Import Project界面,选择**Product**后,会自动填充对应的MCU、Board、company和kernel信息,然后**ohosVersion**选择对应的OpenHarmony源码版本。下图以导入wifiiot_hispark_pegasus为例进行说明。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> - Hi3861开发板Product选择“wifiiot_hispark_pegasus”。 > 工程存储路径不能包含中文字符、空格。如果工程存储路径包含中文字符或空格,可能导致编译失败。
>
> - Hi3516DV300开发板Product选择“ipcamera_hispark_taurus”。
![zh-cn_image_0000001271237241](figures/zh-cn_image_0000001271237241.png)
6. 点击**Open**打开工程或源码。 ![zh-cn_image_0000001271477045](figures/zh-cn_image_0000001271477045.png)
3. 在Import Project界面,选择**Product**后,会自动填充对应的SOC、Board、Company和Kernel信息,然后Ohos Ver选择对应的OpenHarmony源码版本。
![zh-cn_image_0000001271237242](figures/zh-cn_image_0000001271237242.png)
4. 点击**Open**打开工程或源码。
\ No newline at end of file
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
- Windows系统要求:Windows10 64位系统。 - Windows系统要求:Windows10 64位系统。
- Ubuntu系统要求:Ubuntu20.04及以上版本,内存推荐16 GB及以上。 - Ubuntu系统要求:Ubuntu18.04~21.10版本,内存推荐16 GB及以上。
- Ubuntu系统的用户名不能包含中文字符。 - Ubuntu系统的用户名不能包含中文字符。
...@@ -54,18 +54,15 @@ ...@@ -54,18 +54,15 @@
``` ```
4. 执行如下命令,安装DevEco Device Tool,其中devicetool-linux-tool-3.0.0.401.sh请根据实际进行修改。 4. 执行如下命令,安装DevEco Device Tool,其中devicetool-linux-tool-3.0.0.401.sh请根据实际进行修改。
``` ```
sudo ./devicetool-linux-tool-3.0.0.401.sh sudo ./devicetool-linux-tool-3.0.0.401.sh
``` ```
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** 5. 在用户协议和隐私声明签署界面,请详细阅读用户协议和隐私声明,需签署同意用户协议和隐私声明才能进行下一步的安装。
> 安装过程中,会自动检查Python是否安装,且要求Python为3.8~3.9版本。如果不满足,则安装过程中会自动安装,提示“Do you want to continue?”,请输入“Y”后继续安装。
>
> 安装过程中,会弹出用户协议和隐私声明签署的页面,请详细阅读用户协议和隐私声明,需签署同意用户协议和隐私声明才能进行下一步的安装。
>
> 如果未弹出用户协议和隐私声明签署的页面,而直接退出了安装,请先执行apt-get install whiptail,然后再执行安装命令。
![zh-cn_image_0000001322167645.png](figures/zh-cn_image_0000001322167645.png)
安装完成后,当界面输出“Deveco Device Tool successfully installed.”时,表示DevEco Device Tool安装成功。 安装完成后,当界面输出“Deveco Device Tool successfully installed.”时,表示DevEco Device Tool安装成功。
![zh-cn_image_0000001198722374](figures/zh-cn_image_0000001198722374.png) ![zh-cn_image_0000001198722374](figures/zh-cn_image_0000001198722374.png)
......
# 编译 # 编译
1.Projects中,点击**Settings**按钮,进入Hi3516DV300配置界面。 1.菜单栏中点击**Project Settings**按钮,进入Hi3516DV300工程配置界面。
![zh-cn_image_0000001265492885](figures/zh-cn_image_0000001265492885.png) ![zh-cn_image_0000001265492885](figures/zh-cn_image_0000001265492885.png)
2. 在toolchain页签中,DevEco Device Tool会自动检测依赖的编译工具链是否完备,如果提示部分工具缺失,可点击**SetUp**按钮,自动安装所需工具链。 2. 在Tool Chain页签中,DevEco Device Tool会自动检测依赖的编译工具链是否完备,如果提示部分工具缺失,可点击**Install**按钮,自动安装所需工具链。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 如果出现安装pip组件失败,可参考[修改Python源的方法](https://device.harmonyos.com/cn/docs/documentation/guide/ide-set-python-source-0000001227639986)进行修改,完成尝试重新安装。
![zh-cn_image_0000001265652869](figures/zh-cn_image_0000001265652869.png) ![zh-cn_image_0000001265652869](figures/zh-cn_image_0000001265652869.png)
3. 安装Hi3516DV300相关工具链,部分工具安装需要使用root权限,请在“TERMINAL”窗口输入用户密码进行安装。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 如果出现安装pip组件失败,可参考[修改Python源的方法](https://device.harmonyos.com/cn/docs/documentation/guide/ide-set-python-source-0000001227639986)进行修改,完成尝试重新安装。
![zh-cn_image_0000001220852753](figures/zh-cn_image_0000001220852753.png)
工具链自动安装完成后如下图所示。 工具链自动安装完成后如下图所示。
![zh-cn_image_0000001220852754](figures/zh-cn_image_0000001220852754.png) ![zh-cn_image_0000001220852754](figures/zh-cn_image_0000001220852754.png)
3. 在“hi3516dv300”配置页签中,设置源码的编译类型**build_type**,默认为“debug“类型,请根据需要进行修改。然后点击**Save**按钮进行保存。 4. 在“ipcamera_hispark_taurus”配置页签中,设置源码的编译类型**build_type**,默认为“debug“类型,请根据需要进行修改。然后点击**Save**按钮进行保存。
![zh-cn_image_0000001221172710](figures/zh-cn_image_0000001221172710.png) ![zh-cn_image_0000001221172710](figures/zh-cn_image_0000001221172710.png)
4. 在“PROJECT TASKS”中,点击对应开发板下的**Build**按钮,执行编译。 5. 在“PROJECT TASKS”中,点击对应开发板下的**Build**按钮,执行编译。
![zh-cn_image_0000001265772913](figures/zh-cn_image_0000001265772913.png) ![zh-cn_image_0000001265772913](figures/zh-cn_image_0000001265772913.png)
5. 等待编译完成,在**TERMINAL**窗口输出“SUCCESS”,编译完成。 6. 等待编译完成,在**TERMINAL**窗口输出“SUCCESS”,编译完成。
![zh-cn_image_0000001221012766](figures/zh-cn_image_0000001221012766.png) ![zh-cn_image_0000001221012766](figures/zh-cn_image_0000001221012766.png)
......
...@@ -3,66 +3,61 @@ ...@@ -3,66 +3,61 @@
烧录是指将编译后的程序文件下载到芯片开发板上的动作,为后续的程序调试提供基础。DevEco Device Tool提供一键烧录功能,操作简单,能快捷、高效的完成程序烧录,提升烧录的效率。 烧录是指将编译后的程序文件下载到芯片开发板上的动作,为后续的程序调试提供基础。DevEco Device Tool提供一键烧录功能,操作简单,能快捷、高效的完成程序烧录,提升烧录的效率。
Hi3516DV300的镜像烧录通过Winodow环境进行烧录,开发者启动烧录操作后,DevEco Device Tool通过Remote远程模式,将Ubuntu环境下编译生成的待烧录程序文件拷贝至Windows目录下,然后通过Windows的烧录工具将程序文件烧录至开发板中。
Hi3516DV300支持USB烧录、网口烧录和串口烧录三种方式,本文采用USB方式进行烧录。相关操作在Windows环境下进行 Hi3516DV300开发板小型系统的烧录方式包括USB烧录、网口烧录两种方式,本文采用USB方式进行烧录
1. 请连接好电脑和待烧录开发板,需要连接USB口和串口,具体可参考[Hi3516DV300开发板介绍](https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/quick-start/quickstart-lite-introduction-hi3516.md) 1. 请连接好电脑和待烧录开发板,需要连接USB口和串口,具体可参考[Hi3516DV300开发板介绍](https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/quick-start/quickstart-lite-introduction-hi3516.md)
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 如果采用远程开发模式(windows+本地虚拟机Ubuntu),为确保开发板连接的是主机的USB口,请先禁用虚拟机的usb控制。
>
> - VMware:在首选项的USB选项中设置将设备连接到主机,在虚拟机设置中移除USB控制器。
>
> - VirtualBox:在Ubuntu设置的USB设备选项中将启动USB控制器的勾去掉。
2. 根据[Hi3516DV300开发板串口驱动安装指导](https://gitee.com/link?target=https%3A%2F%2Fdevice.harmonyos.com%2Fcn%2Fdocs%2Fdocumentation%2Fguide%2Fhi3516_hi3518-drivers-0000001050743695)[Hi3516DV300开发板USB驱动安装指导](https://device.harmonyos.com/cn/docs/documentation/guide/usb_driver-0000001058690393)安装USB驱动及USB转串口的驱动。若您的设备中已安装此驱动,请忽略该步骤。 2. 根据[Hi3516DV300开发板串口驱动安装指导](https://gitee.com/link?target=https%3A%2F%2Fdevice.harmonyos.com%2Fcn%2Fdocs%2Fdocumentation%2Fguide%2Fhi3516_hi3518-drivers-0000001050743695)[Hi3516DV300开发板USB驱动安装指导](https://device.harmonyos.com/cn/docs/documentation/guide/usb_driver-0000001058690393)安装USB驱动及USB转串口的驱动。若您的设备中已安装此驱动,请忽略该步骤。
3. 在DevEco Device Tool中,选择REMOTE DEVELOPMENT &gt; Local PC,查看远程计算机(Ubuntu开发环境)与本地计算机(Windows开发环境)的连接状态。 3. 在DevEco Device Tool中,选择REMOTE DEVELOPMENT &gt; Local PC,查看远程计算机(Ubuntu开发环境)与本地计算机(Windows开发环境)的连接状态。
- 如果Local PC右边连接按钮为![zh-cn_image_0000001261315939](figures/zh-cn_image_0000001261315939.png),则远程计算机与本地计算机为已连接状态,不需要执行其他操作。 - 如果Local PC右边连接按钮为![zh-cn_image_0000001261315939](figures/zh-cn_image_0000001261315939.png),则远程计算机与本地计算机为已连接状态,不需要执行其他操作。
- 如果Local PC右边连接按钮为![zh-cn_image_0000001261515989](figures/zh-cn_image_0000001261515989.png),则点击绿色按钮进行连接。 - 如果Local PC右边连接按钮为![zh-cn_image_0000001261515989](figures/zh-cn_image_0000001261515989.png),则点击绿色按钮进行连接。连接时DevEco Device Tool会重启服务,因此请不要在下载源码或源码编译过程中进行连接,否则会中断任务。
![zh-cn_image_0000001261395999](figures/zh-cn_image_0000001261395999.png) ![zh-cn_image_0000001261395999](figures/zh-cn_image_0000001261395999.png)
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 该操作仅在远程模式(Windows+Ubuntu混合开发环境)中需要设置,如果采用本地模式(Windows开发环境或Ubuntu开发环境),则请跳过该步骤。
4. 在DevEco Device Tool中,点击QUICK ACCESS &gt; DevEco Home &gt; Device,查看并记录对应的串口号。 4. 在菜单栏中点击**Project Settings**按钮,进入Hi3516DV300工程配置界面。
![zh-cn_image_0000001267527124](figures/zh-cn_image_0000001267527124.png)
5. 在QUICK ACCESS &gt; DevEco Home &gt; Projects中,点击**Settings**打开工程配置界面。
![zh-cn_image_0000001198566364](figures/zh-cn_image_0000001198566364.png) ![zh-cn_image_0000001198566364](figures/zh-cn_image_0000001198566364.png)
5. 在“Tool Chain”页签,设置Uploader烧录器工具,可以通过Tool Chain页签中的Install按钮在线安装。
![zh-cn_image_0000001198566365](figures/zh-cn_image_0000001198566365.png)
6. 在“hi3516dv300”页签,设置烧录选项,包括upload_partitions、upload_port和upload_protocol。 6. 在“hi3516dv300”页签,设置烧录选项,包括upload_partitions、upload_port和upload_protocol。
- upload_partitions:选择待烧录的文件,默认情况下会同时烧录fastboot、kernel、rootfs和userfs。
- upload_port:选择已查询到的串口号。 - upload_partitions:选择待烧录的文件,默认情况下会同时烧录fastboot、kernel、rootfs和userfs。DevEco Device Tool已预置默认的烧录文件信息,包括起始地址、分区大小、待烧录文件地址等,开发者可根据实际情况进行调整,点击每个待烧录文件后的![zh-cn_image_0000001275592884.png](figures/zh-cn_image_0000001275592884.png)按钮进行修改。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 在设置烧录分区起始地址和分区长度时,应根据实际待烧录文件的大小进行设置,要求设置的烧录分区大小,要大于待烧录文件的大小;同时,各烧录文件的分区地址设置不能出现重叠。
![zh-cn_image_0000001312778829](figures/zh-cn_image_0000001312778829.png)
- upload_protocol:选择烧录协议,固定选择“hiburn-usb”。 - upload_protocol:选择烧录协议,固定选择“hiburn-usb”。
- upload_port:选择已查询到的串口号。
![zh-cn_image_0000001223190441](figures/zh-cn_image_0000001223190441.png)
7. 所有的配置都修改完成后,在工程配置页签的顶部,点击**Save**进行保存。
![zh-cn_image_0000001223190441](figures/zh-cn_image_0000001223190441.png) 8. 点击hi3516dv300下的**Upload**按钮。
7. 在Partitions中,分别检查待烧录文件的烧录信息,包括起始地址、分区大小、待烧录文件地址等。DevEco Device Tool已预置默认的烧录文件信息,可根据实际情况进行调整。
![zh-cn_image_0000001312778829](figures/zh-cn_image_0000001312778829.png)
如需修改,请点击每个待烧录文件后的![zh-cn_image_0000001312898917](figures/zh-cn_image_0000001312898917.png)按钮进行修改。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 在设置烧录分区起始地址和分区长度时,应根据实际待烧录文件的大小进行设置,要求设置的烧录分区大小,要大于待烧录文件的大小;同时,各烧录文件的分区地址设置不能出现重叠。
![zh-cn_image_0000001312780249](figures/zh-cn_image_0000001312780249.png)
8. 所有的配置都修改完成后,在工程配置页签的顶部,点击**Save**进行保存。 ![zh-cn_image_0000001266887264](figures/zh-cn_image_0000001266887264.png)
9. 点击hi3516dv300下的**Upload**按钮,此时待烧录文件会从Ubuntu系统传输到Windows下,传输完成后界面显示“Operation paused, Please press Enter key to continue”时,请点击**Enter**键启动烧录。 此时待烧录文件会从Ubuntu系统传输到Windows下,传输完成后界面显示“Operation paused, Please press Enter key to continue”时,请点击**Enter**键启动烧录。
![zh-cn_image_0000001266887264](figures/zh-cn_image_0000001266887264.png) ![zh-cn_image_0000001114129426](figures/zh-cn_image_0000001114129426.png)
10. 在终端窗口显示如下提示信息时,请在15秒内,按住复位键,插拔USB线,最后松开复位键启动烧录。 9. 在终端窗口显示如下提示信息时,请在15秒内,按住Update键,插拔USB线,最后松开Update键启动烧录。
![zh-cn_image_0000001114129426](figures/zh-cn_image_0000001114129426.png) ![zh-cn_image_0000001326412233.png](figures/zh-cn_image_0000001326412233.png)
启动烧录后,界面提示如下信息时,表示烧录成功。 启动烧录后,界面提示**SUCCESS**信息时,表示烧录成功。
![zh-cn_image_0000001160649343](figures/zh-cn_image_0000001160649343.png) ![zh-cn_image_0000001160649343](figures/zh-cn_image_0000001160649343.png)
11. 烧录成功后,请根据运行章节进行操作,启动系统。 10. 烧录成功后,请根据运行章节进行操作,启动系统。
\ No newline at end of file
# 编译 # 编译
1.Projects中,点击**Settings**按钮,进入Hi3861配置界面。 1.菜单栏中点击**Project Settings**按钮,进入Hi3861工程配置界面。
![zh-cn_image_0000001265785209](figures/zh-cn_image_0000001265785209.png) ![zh-cn_image_0000001265785209](figures/zh-cn_image_0000001265785209.png)
2. 在toolchain页签中,DevEco Device Tool会自动检测依赖的编译工具链是否完备,如果提示部分工具缺失,可点击**SetUp**按钮,自动安装所需工具链。 2. 在Tool Chain页签中,DevEco Device Tool会自动检测依赖的编译工具链是否完备,如果提示部分工具缺失,可点击**Install**按钮,自动安装所需工具链。
![zh-cn_image_0000001221025048](figures/zh-cn_image_0000001221025048.png)
3. 安装Hi3861V100相关工具链,部分工具安装需要使用root权限,请在“TERMINAL”窗口输入用户密码进行安装。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 如果出现安装pip组件失败,可参考[修改Python源的方法](https://device.harmonyos.com/cn/docs/documentation/guide/ide-set-python-source-0000001227639986)进行修改,完成尝试重新安装。 > 如果出现安装pip组件失败,可参考[修改Python源的方法](https://device.harmonyos.com/cn/docs/documentation/guide/ide-set-python-source-0000001227639986)进行修改,完成尝试重新安装。
![zh-cn_image_0000001221025048](figures/zh-cn_image_0000001221025048.png) ![zh-cn_image_0000001280938208.png](figures/zh-cn_image_0000001280938208.png)
工具链自动安装完成后如下图所示。 工具链自动安装完成后如下图所示。
![zh-cn_image_0000001221344980](figures/zh-cn_image_0000001221344980.png) ![zh-cn_image_0000001221344980](figures/zh-cn_image_0000001221344980.png)
3. 在“hi3861”配置页签中,设置源码的编译类型**build_type**,默认为"debug"类型,请根据需要进行修改。然后点击**Save**按钮进行保存。 4. 在“hi3861”配置页签中,设置源码的编译类型**build_type**,默认为"debug"类型,请根据需要进行修改。然后点击**Save**按钮进行保存。
![zh-cn_image_0000001265945173](figures/zh-cn_image_0000001265945173.png) ![zh-cn_image_0000001265945173](figures/zh-cn_image_0000001265945173.png)
4. 在DevEco Device Tool界面的“PROJECT TASKS”中,点击对应开发板下的**Build**按钮,执行编译。 5. 在DevEco Device Tool界面的“PROJECT TASKS”中,点击对应开发板下的**Build**按钮,执行编译。
![zh-cn_image_0000001265505181](figures/zh-cn_image_0000001265505181.png) ![zh-cn_image_0000001265505181](figures/zh-cn_image_0000001265505181.png)
5. 等待编译完成,在**TERMINAL**窗口输出“SUCCESS”,编译完成。 6. 等待编译完成,在**TERMINAL**窗口输出“SUCCESS”,编译完成。
![zh-cn_image_0000001265665157](figures/zh-cn_image_0000001265665157.png) ![zh-cn_image_0000001265665157](figures/zh-cn_image_0000001265665157.png)
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
烧录是指将编译后的程序文件下载到芯片开发板上的动作,为后续的程序调试提供基础。DevEco Device Tool提供一键烧录功能,操作简单,能快捷、高效的完成程序烧录,提升烧录的效率。 烧录是指将编译后的程序文件下载到芯片开发板上的动作,为后续的程序调试提供基础。DevEco Device Tool提供一键烧录功能,操作简单,能快捷、高效的完成程序烧录,提升烧录的效率。
Hi3861V100的镜像烧录通过Winodow环境进行烧录,开发者启动烧录操作后,DevEco Device Tool通过Remote远程模式,将Ubuntu环境下编译生成的带烧录程序文件拷贝至Windows目录下,然后通过Windows的烧录工具将程序文件烧录至开发板中。
Hi3861V100开发板支持串口烧录方式,在Windows下通过以下步骤进行烧录: Hi3861V100开发板支持串口烧录方式,在Windows下通过以下步骤进行烧录:
...@@ -13,47 +14,35 @@ Hi3861V100开发板支持串口烧录方式,在Windows下通过以下步骤进 ...@@ -13,47 +14,35 @@ Hi3861V100开发板支持串口烧录方式,在Windows下通过以下步骤进
3. 在DevEco Device Tool中,选择REMOTE DEVELOPMENT &gt; Local PC,查看远程计算机(Ubuntu开发环境)与本地计算机(Windows开发环境)的连接状态。 3. 在DevEco Device Tool中,选择REMOTE DEVELOPMENT &gt; Local PC,查看远程计算机(Ubuntu开发环境)与本地计算机(Windows开发环境)的连接状态。
- 如果Local PC右边连接按钮为![zh-cn_image_0000001261315939](figures/zh-cn_image_0000001261315939.png),则远程计算机与本地计算机为已连接状态,不需要执行其他操作。 - 如果Local PC右边连接按钮为![zh-cn_image_0000001261315939](figures/zh-cn_image_0000001261315939.png),则远程计算机与本地计算机为已连接状态,不需要执行其他操作。
- 如果Local PC右边连接按钮为![zh-cn_image_0000001261515989](figures/zh-cn_image_0000001261515989.png),则点击绿色按钮进行连接。 - 如果Local PC右边连接按钮为![zh-cn_image_0000001261515989](figures/zh-cn_image_0000001261515989.png),则点击绿色按钮进行连接。连接时DevEco Device Tool会重启服务,因此请不要在下载源码或源码编译过程中进行连接,否则会中断任务。
![zh-cn_image_0000001261395999](figures/zh-cn_image_0000001261395999.png) ![zh-cn_image_0000001261395999](figures/zh-cn_image_0000001261395999.png)
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** 4. 在菜单栏中点击**Project Settings**按钮,进入Hi3861V100工程配置界面。
> 该操作仅在远程模式(Windows+Ubuntu混合开发环境)中需要设置,如果采用本地模式(Windows开发环境或Ubuntu开发环境),则请跳过该步骤。
4. 在DevEco Device Tool中,点击QUICK ACCESS &gt; DevEco Home &gt; Device,查看并记录对应的串口号。 ![zh-cn_image_0000001333802045.png](figures/zh-cn_image_0000001333802045.png)
![zh-cn_image_0000001315810857](figures/zh-cn_image_0000001315810857.png) 5. 在“Tool Chain”页签,设置Uploader烧录器工具,可以通过Tool Chain页签中的Install按钮在线安装。
5. 在QUICK ACCESS &gt; DevEco Home &gt; Projects中,点击**Settings**打开工程配置界面。
![zh-cn_image_0000001198943768](figures/zh-cn_image_0000001198943768.png) ![zh-cn_image_0000001198943768](figures/zh-cn_image_0000001198943768.png)
6. 在“hi3861”页签,设置烧录选项,包括upload_port、upload_protocol和upload_partitions。 6. 在“hi3861”页签,设置烧录选项,包括upload_port、upload_protocol和upload_partitions。
- upload_port:选择已查询的串口号。 - upload_port:选择已查询的串口号。
- upload_protocol:选择烧录协议,选择“hiburn-serial”。 - upload_protocol:选择烧录协议,选择“hiburn-serial”。
- upload_partitions:选择待烧录的文件,默认选择hi3861_app - upload_partitions:选择待烧录的文件名称。DevEco Device Tool已预置默认的烧录文件信息,如果需要修改待烧录文件地址,可点击每个待烧录文件后的![zh-cn_image_0000001333642545.png](figures/zh-cn_image_0000001333642545.png)按钮进行修改
![zh-cn_image_0000001243704061](figures/zh-cn_image_0000001243704061.png) ![zh-cn_image_0000001243704061](figures/zh-cn_image_0000001243704061.png)
7. 在Partitions中,检查待烧录文件的烧录信息,DevEco Device Tool已预置默认的烧录文件信息,可根据实际情况进行调整。 7. 所有的配置都修改完成后,在工程配置页签的顶部,点击**Save**进行保存。
![zh-cn_image_0000001312993353](figures/zh-cn_image_0000001312993353.png)
如需修改,请点击待烧录文件后的![zh-cn_image_0000001312793665](figures/zh-cn_image_0000001312793665.png)按钮进行修改。
![zh-cn_image_0000001312912509](figures/zh-cn_image_0000001312912509.png)
8. 所有的配置都修改完成后,在工程配置页签的顶部,点击**Save**进行保存。 8. 点击**Open**打开工程文件,然后在“PROJECT TASKS”中,点击hi3861下的**Upload**按钮,启动烧录。
9. 点击**Open**打开工程文件,然后在“PROJECT TASKS”中,点击hi3861下的**Upload**按钮,启动烧录。
![zh-cn_image_0000001216440138](figures/zh-cn_image_0000001216440138.png) ![zh-cn_image_0000001216440138](figures/zh-cn_image_0000001216440138.png)
9. 启动烧录后,显示如下提示信息时,请在15秒内,按下开发板上的RST按钮重启开发板。
1. 启动烧录后,显示如下提示信息时,请在15秒内,按下开发板上的RST按钮重启开发板。 ![zh-cn_image_0000001198466090](figures/zh-cn_image_0000001198466090.png)
![zh-cn_image_0000001198466090](figures/zh-cn_image_0000001198466090.png)
重新上电后,界面提示如下信息时,表示烧录成功。 重新上电后,界面提示如下信息时,表示烧录成功。
![zh-cn_image_0000001216761476](figures/zh-cn_image_0000001216761476.png) ![zh-cn_image_0000001216761476](figures/zh-cn_image_0000001216761476.png)
...@@ -8,28 +8,16 @@ ...@@ -8,28 +8,16 @@
![zh-cn_image_0000001278358765](figures/zh-cn_image_0000001278358765.png) ![zh-cn_image_0000001278358765](figures/zh-cn_image_0000001278358765.png)
2. 选择要导入的源码目录,点击**Import**打开 2. 选择OpenHarmony源码根目录路径,然后再选择**Import OpenHarmony Source**选项,点击**Import**进行导入
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 工程存储路径不能包含中文字符、空格。如果工程存储路径包含中文字符或空格,可能导致编译失败。 > 工程存储路径不能包含中文字符、空格。如果工程存储路径包含中文字符或空格,可能导致编译失败。
![zh-cn_image_0000001271562277](figures/zh-cn_image_0000001271562277.png) ![zh-cn_image_0000001271477045](figures/zh-cn_image_0000001271477045.png)
3. 首次导入时,会出现如下提示框,点击**Import** 3. 在Import Project界面,选择**Product**后,会自动填充对应的SOC、Board、Company和Kernel信息,然后Ohos Ver选择对应的OpenHarmony源码版本。
![zh-cn_image_0000001314277321](figures/zh-cn_image_0000001314277321.png)
4. 在Select Project type界面,选择**Import from OpenHarmony Source**
![zh-cn_image_0000001215743910](figures/zh-cn_image_0000001215743910.png)
5. 在Import Project界面,选择**Product**后,会自动填充对应的MCU、Board、company和kernel信息,然后**ohosVersion**选择对应的OpenHarmony源码版本。下图以导入Hi3516DV300为例进行展示 。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> - Hi3516DV300开发板Product选择“Hi3516DV300”。
>
> - RK3568开发板Product选择“rk3568”。
![zh-cn_image_0000001271448821](figures/zh-cn_image_0000001271448821.png) ![zh-cn_image_0000001271448821](figures/zh-cn_image_0000001271448821.png)
6. 点击**Open**打开工程或源码。 4. 点击**Open**打开工程或源码。
# 搭建Windows+Ubuntu混合开发环境 # 搭建Windows+Ubuntu混合开发环境
通常在嵌入式开发中,很多开发者习惯于使用Windows进行代码的编辑,比如使用Windows的Visual Studio Code进行OpenHarmony代码的开发。但当前阶段,大部分的开发板源码还不支持在Windows环境下进行编译,如Hi3861、Hi3516系列开发板。因此,需要使用Ubuntu的编译环境对源码进行编译。 通常在嵌入式开发中,很多开发者习惯于使用Windows进行代码的编辑,比如使用Windows的Visual Studio Code进行OpenHarmony代码的开发。但当前阶段,大部分的开发板源码还不支持在Windows环境下进行编译,如Hi3861、Hi3516系列开发板。因此,建议使用Ubuntu的编译环境对源码进行编译。
在以上的设备开发场景中,可以搭建一套Windows+Ubuntu混合开发的环境,其中使用Windows平台的DevEco Device Tool可视化界面进行相关操作,通过远程连接的方式对接Ubuntu下的DevEco Device Tool(可以不安装Visual Studio Code),然后对Ubuntu下的源码进行开发、编译、烧录等操作。 在以上的设备开发场景中,可以搭建一套Windows+Ubuntu混合开发的环境,其中使用Windows平台的DevEco Device Tool可视化界面进行相关操作,通过远程连接的方式对接Ubuntu下的DevEco Device Tool(可以不安装Visual Studio Code),然后对Ubuntu下的源码进行开发、编译、烧录等操作。
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
- Windows系统要求:Windows10 64位系统。 - Windows系统要求:Windows10 64位系统。
- Ubuntu系统要求:Ubuntu20.04及以上版本,内存推荐16 GB及以上。 - Ubuntu系统要求:Ubuntu18.04~21.10版本,内存推荐16 GB及以上。
- Ubuntu系统的用户名不能包含中文字符。 - Ubuntu系统的用户名不能包含中文字符。
...@@ -61,22 +61,19 @@ ...@@ -61,22 +61,19 @@
sudo ./devicetool-linux-tool-3.0.0.401.sh sudo ./devicetool-linux-tool-3.0.0.401.sh
``` ```
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** 5. 在用户协议和隐私声明签署界面,请详细阅读用户协议和隐私声明,需签署同意用户协议和隐私声明才能进行下一步的安装。
>
> 安装过程中,会自动检查Python是否安装,且要求Python为3.8~3.9版本。如果不满足,则安装过程中会自动安装,提示“Do you want to continue?”,请输入“Y”后继续安装。
>
> 安装过程中,会弹出用户协议和隐私声明签署的页面,请详细阅读用户协议和隐私声明,需签署同意用户协议和隐私声明才能进行下一步的安装。
>
> 如果未弹出用户协议和隐私声明签署的页面,而直接退出了安装,请先执行apt-get install whiptail,然后再执行安装命令。
![zh-cn_image_0000001322167645.png](figures/zh-cn_image_0000001322167645.png)
安装完成后,当界面输出“Deveco Device Tool successfully installed.”时,表示DevEco Device Tool安装成功。 安装完成后,当界面输出“Deveco Device Tool successfully installed.”时,表示DevEco Device Tool安装成功。
![zh-cn_image_0000001198722374](figures/zh-cn_image_0000001198722374.png) ![zh-cn_image_0000001198722374](figures/zh-cn_image_0000001198722374.png)
## 搭建Windows开发环境 ## 搭建Windows开发环境
1. 下载[DevEco Device Tool 3.0 Release](https://device.harmonyos.com/cn/ide#download)Windows版。 1. 下载[DevEco Device Tool 3.0 Release](https://device.harmonyos.com/cn/ide#download) Windows版。
2. 解压DevEco Device Tool压缩包,双击安装包程序,点击Next进行安装。 2. 解压DevEco Device Tool压缩包,双击安装包程序,点击Next进行安装。
......
...@@ -5,28 +5,31 @@ ...@@ -5,28 +5,31 @@
![zh-cn_image_0000001265492885](figures/zh-cn_image_0000001265492885.png) ![zh-cn_image_0000001265492885](figures/zh-cn_image_0000001265492885.png)
2. 在toolchain页签中,DevEco Device Tool会自动检测依赖的编译工具链是否完备,如果提示部分工具缺失,可点击**SetUp**按钮,自动安装所需工具链。 2. 在Tool Chain页签中,DevEco Device Tool会自动检测依赖的编译工具链是否完备,如果提示部分工具缺失,可点击**Install**按钮,自动安装所需工具链。
![zh-cn_image_0000001227277128](figures/zh-cn_image_0000001227277128.png)
3. 安装Hi3516DV300相关工具链,部分工具安装需要使用root权限,请在“TERMINAL”窗口输入用户密码进行安装。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
>
> 如果出现安装pip组件失败,可参考[修改Python源的方法](https://device.harmonyos.com/cn/docs/documentation/guide/ide-set-python-source-0000001227639986)进行修改,完成尝试重新安装。 > 如果出现安装pip组件失败,可参考[修改Python源的方法](https://device.harmonyos.com/cn/docs/documentation/guide/ide-set-python-source-0000001227639986)进行修改,完成尝试重新安装。
![zh-cn_image_0000001227277128](figures/zh-cn_image_0000001227277128.png) ![zh-cn_image_0000001220852755](figures/zh-cn_image_0000001220852755.png)
工具链自动安装完成后如下图所示。 工具链自动安装完成后如下图所示。
![zh-cn_image_0000001227757036](figures/zh-cn_image_0000001227757036.png) ![zh-cn_image_0000001227757036](figures/zh-cn_image_0000001227757036.png)
3. 在“hi3516dv300”配置页签中,设置源码的编译类型**build_type**,默认为“debug“类型,请根据需要进行修改。然后点击**Save**按钮进行保存。 4. 在“hi3516dv300”配置页签中,设置源码的编译类型**build_type**,默认为“debug“类型,请根据需要进行修改。然后点击**Save**按钮进行保存。
![zh-cn_image_0000001221172710](figures/zh-cn_image_0000001221172710.png) ![zh-cn_image_0000001221172711](figures/zh-cn_image_0000001221172711.png)
4. 在“PROJECT TASKS”中,点击对应开发板下的**Build**按钮,执行编译。 5. 在“PROJECT TASKS”中,点击对应开发板下的**Build**按钮,执行编译。
![zh-cn_image_0000001265772913](figures/zh-cn_image_0000001265772913.png) ![zh-cn_image_0000001265772913](figures/zh-cn_image_0000001265772913.png)
5. 等待编译完成,在**TERMINAL**窗口输出“SUCCESS”,编译完成。 6. 等待编译完成,在**TERMINAL**窗口输出“SUCCESS”,编译完成。
![zh-cn_image_0000001221012766](figures/zh-cn_image_0000001221012766.png) ![zh-cn_image_0000001221012768](figures/zh-cn_image_0000001221012768.png)
编译完成后,可以在工程的**out**目录下,查看编译生成的文件,用于后续的[Hi3516DV300开发板烧录](quickstart-ide-standard-running-hi3516-burning.md) 编译完成后,可以在工程的**out**目录下,查看编译生成的文件,用于后续的[Hi3516DV300开发板烧录](quickstart-ide-standard-running-hi3516-burning.md)
...@@ -3,14 +3,7 @@ ...@@ -3,14 +3,7 @@
烧录是指将编译后的程序文件下载到芯片开发板上的动作,为后续的程序调试提供基础。DevEco Device Tool提供一键烧录功能,操作简单,能快捷、高效的完成程序烧录,提升烧录的效率。 烧录是指将编译后的程序文件下载到芯片开发板上的动作,为后续的程序调试提供基础。DevEco Device Tool提供一键烧录功能,操作简单,能快捷、高效的完成程序烧录,提升烧录的效率。
Hi3516DV300开发板小型系统的烧录方式包括USB烧录、网口烧录两种方式,本文采用USB方式进行烧录。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> - 如您使用的是master分支2022年5月9日及之后的源码,请使用HiTool工具进行烧录。
>
> - 当前版本的DevEco Device Tool暂不支持上述日期后的源码烧录,将在下个版本中适配。
在Windows下采用USB烧录方式进行Hi3516DV300的烧录。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
...@@ -19,66 +12,55 @@ ...@@ -19,66 +12,55 @@
1. 请连接好电脑和待烧录开发板,需要连接USB口和串口,具体可参考[Hi3516DV300开发板介绍](https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/quick-start/quickstart-lite-introduction-hi3516.md) 1. 请连接好电脑和待烧录开发板,需要连接USB口和串口,具体可参考[Hi3516DV300开发板介绍](https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/quick-start/quickstart-lite-introduction-hi3516.md)
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
>
> 如果采用远程开发模式(windows+本地虚拟机Ubuntu),为确保开发板连接的是主机的USB口,请先禁用虚拟机的usb控制。
>
> - VMware:在首选项的USB选项中设置将设备连接到主机,在虚拟机设置中移除USB控制器。
>
> - VirtualBox:在Ubuntu设置的USB设备选项中将启动USB控制器的勾去掉。
2. 根据[Hi3516DV300开发板串口驱动安装指导](https://gitee.com/link?target=https%3A%2F%2Fdevice.harmonyos.com%2Fcn%2Fdocs%2Fdocumentation%2Fguide%2Fhi3516_hi3518-drivers-0000001050743695)[Hi3516DV300开发板USB驱动安装指导](https://device.harmonyos.com/cn/docs/documentation/guide/usb_driver-0000001058690393)安装USB驱动及USB转串口的驱动。若您的设备中已安装此驱动,请忽略该步骤。 2. 根据[Hi3516DV300开发板串口驱动安装指导](https://gitee.com/link?target=https%3A%2F%2Fdevice.harmonyos.com%2Fcn%2Fdocs%2Fdocumentation%2Fguide%2Fhi3516_hi3518-drivers-0000001050743695)[Hi3516DV300开发板USB驱动安装指导](https://device.harmonyos.com/cn/docs/documentation/guide/usb_driver-0000001058690393)安装USB驱动及USB转串口的驱动。若您的设备中已安装此驱动,请忽略该步骤。
3. 在DevEco Device Tool中,选择REMOTE DEVELOPMENT &gt; Local PC,查看远程计算机(Ubuntu开发环境)与本地计算机(Windows开发环境)的连接状态。 3. 在DevEco Device Tool中,选择REMOTE DEVELOPMENT &gt; Local PC,查看远程计算机(Ubuntu开发环境)与本地计算机(Windows开发环境)的连接状态。
- 如果Local PC右边连接按钮为![zh-cn_image_0000001261315939](figures/zh-cn_image_0000001261315939.png),则远程计算机与本地计算机为已连接状态,不需要执行其他操作。 - 如果Local PC右边连接按钮为![zh-cn_image_0000001261315939](figures/zh-cn_image_0000001261315939.png),则远程计算机与本地计算机为已连接状态,不需要执行其他操作。
- 如果Local PC右边连接按钮为![zh-cn_image_0000001261515989](figures/zh-cn_image_0000001261515989.png),则点击绿色按钮进行连接。 - 如果Local PC右边连接按钮为![zh-cn_image_0000001261515989](figures/zh-cn_image_0000001261515989.png),则点击绿色按钮进行连接。连接时DevEco Device Tool会重启服务,因此请不要在下载源码或源码编译过程中进行连接,否则会中断任务。
![zh-cn_image_0000001261395999](figures/zh-cn_image_0000001261395999.png) ![zh-cn_image_0000001261395999](figures/zh-cn_image_0000001261395999.png)
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** 4. 在菜单栏中点击**Project Settings**按钮,进入Hi3516DV300工程配置界面。
> 该操作仅在远程模式(Windows+Ubuntu混合开发环境)中需要设置,如果采用本地模式(Windows开发环境或Ubuntu开发环境),则请跳过该步骤。
4. 在DevEco Device Tool中,点击QUICK ACCESS &gt; DevEco Home &gt; Device,查看并记录对应的串口号。
![zh-cn_image_0000001267932252](figures/zh-cn_image_0000001267932252.png)
5. 在QUICK ACCESS &gt; DevEco Home &gt; Projects中,点击**Settings**打开工程配置界面。
![zh-cn_image_0000001198566364](figures/zh-cn_image_0000001198566364.png) ![zh-cn_image_0000001198566364](figures/zh-cn_image_0000001198566364.png)
5. 在“Tool Chain”页签,设置Uploader烧录器工具,可以通过Tool Chain页签中的Install按钮在线安装。
![zh-cn_image_0000001198566365](figures/zh-cn_image_0000001198566365.png)
6. 在“hi3516dv300”页签,设置烧录选项,包括upload_partitions、upload_port和upload_protocol。 6. 在“hi3516dv300”页签,设置烧录选项,包括upload_partitions、upload_port和upload_protocol。
- upload_partitions:选择待烧录的文件,默认情况下会同时烧录fastboot、boot、updater、misc、system、vendor和userdata。 - upload_partitions:选择待烧录程序的配置文件(已预置默认的配置文件),该配置文件会指定烧录文件名称、起始烧录地址、地址长度等信息;同时请勾选**Enable to use upload_partitions_profile for upload**选项。
- upload_port:选择已查询的串口号。
- upload_protocol:选择烧录协议,固定选择“hiburn-usb”。
![zh-cn_image_0000001177478136](figures/zh-cn_image_0000001177478136.png) > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
>
> 如需修改烧录profile文件,在设置烧录分区起始地址和分区长度时,应根据实际待烧录文件的大小进行设置,要求设置的烧录分区大小,要大于待烧录文件的大小;同时,各烧录文件的分区地址设置不能出现重叠。
>
> 首次烧录,请勾选**Enable to use upload_partitions_profile for upload**选项,会自动生成upload_partitions文件。再次烧录时,可根据实际情况选择生成upload_partitions文件进行自定义烧录,也可以再勾选**Enable to use upload_partitions_profile for upload**选项,使用upload_partitions_profile重新生成upload_partitions文件用于烧录。
7. 在Partitions中,分别检查待烧录文件的烧录信息,包括起始地址、分区大小、待烧录文件地址等。DevEco Device Tool已预置默认的烧录文件信息,可根据实际情况进行调整 - upload_protocol:选择烧录协议,固定选择“hiburn-usb”
![zh-cn_image_0000001312541849](figures/zh-cn_image_0000001312541849.png) - upload_port:选择已查询的串口号。
如需修改,请点击每个待烧录文件后的![zh-cn_image_0000001265302382](figures/zh-cn_image_0000001265302382.png)按钮进行修改。 ![zh-cn_image_0000001177478136](figures/zh-cn_image_0000001177478136.png)
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** 7. 所有的配置都修改完成后,在工程配置页签的顶部,点击**Save**进行保存。
>
> 在设置烧录分区起始地址和分区长度时,应根据实际待烧录文件的大小进行设置,要求设置的烧录分区大小,要大于待烧录文件的大小;同时,各烧录文件的分区地址设置不能出现重叠。
![zh-cn_image_0000001264982466](figures/zh-cn_image_0000001264982466.png) 8. 点击hi3516dv300下的**Upload**按钮。
8. 所有的配置都修改完成后,在工程配置页签的顶部,点击**Save**进行保存。 ![zh-cn_image_0000001267532292](figures/zh-cn_image_0000001267532292.png)
9. 点击hi3516dv300下的**Upload**按钮,此时待烧录文件会从Ubuntu系统传输到Windows下,传输完成后界面显示“Operation paused, Please press Enter key to continue”时,请点击**Enter**键启动烧录。 此时待烧录文件会从Ubuntu系统传输到Windows下,传输完成后界面显示“Operation paused, Please press Enter key to continue”时,请点击**Enter**键启动烧录。
![zh-cn_image_0000001267532292](figures/zh-cn_image_0000001267532292.png) ![zh-cn_image_0000001114129427](figures/zh-cn_image_0000001114129427.png)
10. 在终端窗口显示如下提示信息时,请在15秒内,按住复位键,插拔USB线,最后松开复位键启动烧录。 9. 在终端窗口显示如下提示信息时,请在15秒内,按住Update键,插拔USB线,最后松开Update键启动烧录。
![zh-cn_image_0000001114129426](figures/zh-cn_image_0000001114129426.png) ![zh-cn_image_0000001326412233.png](figures/zh-cn_image_0000001326412233.png)
启动烧录后,界面提示如下信息时,表示烧录成功。 启动烧录后,界面提示**SUCCESS**信息时,表示烧录成功。
![zh-cn_image_0000001160649343](figures/zh-cn_image_0000001160649343.png) ![zh-cn_image_0000001160649344](figures/zh-cn_image_0000001160649344.png)
11. 烧录成功后,请根据运行章节进行操作,启动系统。 11. 烧录成功后,请根据运行章节进行操作,启动系统。
\ No newline at end of file
# 编译 # 编译
1.Projects中,点击**Settings**按钮,进入HH-SCDY200配置界面。 1.菜单栏中点击**Project Settings**按钮,进入RK3568工程配置界面。
![zh-cn_image_0000001221036768](figures/zh-cn_image_0000001221036768.png) ![zh-cn_image_0000001265492885](figures/zh-cn_image_0000001265492885.png)
2.toolchain页签中,DevEco Device Tool会自动检测依赖的编译工具链是否完备,如果提示部分工具缺失,可点击**SetUp**按钮,自动安装所需工具链。 2.Toolchain页签中,DevEco Device Tool会自动检测依赖的编译工具链是否完备,如果提示部分工具缺失,可点击**Install**按钮,自动安装所需工具链。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 如果出现安装pip组件失败,可参考[修改Python源的方法](https://device.harmonyos.com/cn/docs/documentation/guide/ide-set-python-source-0000001227639986)进行修改,完成尝试重新安装。 > 如果出现安装pip组件失败,可参考[修改Python源的方法](https://device.harmonyos.com/cn/docs/documentation/guide/ide-set-python-source-0000001227639986)进行修改,完成尝试重新安装。
![zh-cn_image_0000001221356692](figures/zh-cn_image_0000001221356692.png) ![zh-cn_image_0000001221356692](figures/zh-cn_image_0000001221356692.png)
安装RK3568相关工具链,部分工具的安装需要使用root权限,请在“TERMINAL”窗口输入用户密码进行安装。
![zh-cn_image_0000001327429541.png](figures/zh-cn_image_0000001327429541.png)
工具链自动安装完成后如下图所示。 工具链自动安装完成后如下图所示。
![zh-cn_image_0000001265676877](figures/zh-cn_image_0000001265676877.png) ![zh-cn_image_0000001265676877](figures/zh-cn_image_0000001265676877.png)
3. 在“hh_scdy200”配置页签中,设置源码的编译类型**build_type**,默认为"debug类型,请根据需要进行修改。然后点击**Save**按钮进行保存。 3. 在“hh_scdy200”配置页签中,设置源码的编译类型**build_type**,默认为"debug类型,请根据需要进行修改。然后点击**Save**按钮进行保存。
![zh-cn_image_0000001265956897](figures/zh-cn_image_0000001265956897.png) ![zh-cn_image_0000001276354454.png](figures/zh-cn_image_0000001276354454.png)
4. 在DevEco Device Tool界面的“PROJECT TASKS”中,点击对应开发板下的**Build**按钮,执行编译。 4. 在DevEco Device Tool界面的“PROJECT TASKS”中,点击对应开发板下的**Build**按钮,执行编译。
...@@ -28,4 +32,4 @@ ...@@ -28,4 +32,4 @@
![zh-cn_image_0000001222361042](figures/zh-cn_image_0000001222361042.png) ![zh-cn_image_0000001222361042](figures/zh-cn_image_0000001222361042.png)
编译完成后,可以在工程的**out**目录下,查看编译生成的文件,用于后续的[RK3568开发板烧录](quickstart-standard-running-rk3568-burning.md) 编译完成后,可以在工程的**out**目录下,查看编译生成的文件,用于后续的[RK3568开发板烧录](quickstart-standard-running-rk3568-burning.md)
\ No newline at end of file
...@@ -3,59 +3,46 @@ ...@@ -3,59 +3,46 @@
烧录是指将编译后的程序文件下载到芯片开发板上的动作,为后续的程序调试提供基础。DevEco Device Tool提供一键烧录功能,操作简单,能快捷、高效的完成程序烧录,提升烧录的效率。 烧录是指将编译后的程序文件下载到芯片开发板上的动作,为后续的程序调试提供基础。DevEco Device Tool提供一键烧录功能,操作简单,能快捷、高效的完成程序烧录,提升烧录的效率。
RK3568的镜像烧录通过Winodow环境进行烧录,开发者启动烧录操作后,DevEco Device Tool通过Remote远程模式,将Ubuntu环境下编译生成的带烧录程序文件拷贝至Windows目录下,然后通过Windows的烧录工具将程序文件烧录至开发板中。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> - 如您使用的是master分支2022年5月9日及之后的源码,请使用RKDevTool工具进行烧录,请参考《[HiHope-DAYU200烧录指导](https://gitee.com/hihope_iot/docs/tree/master/HiHope_DAYU200/%E7%83%A7%E5%86%99%E5%B7%A5%E5%85%B7%E5%8F%8A%E6%8C%87%E5%8D%97)》进行操作。
>
> - 当前版本的DevEco Device Tool暂不支持上述日期后的源码烧录,将在下个版本中适配。
1. [下载](https://gitee.com/hihope_iot/docs/blob/master/HiHope_DAYU200/%E7%83%A7%E5%86%99%E5%B7%A5%E5%85%B7%E5%8F%8A%E6%8C%87%E5%8D%97/windows/DriverAssitant_v5.1.1.zip)并安装驱动DriverInstall.exe。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
>
> 如果已经安装旧版本的烧写工具,请先点击"驱动卸载"按钮卸载驱动,然后再点击"驱动安装"按钮安装驱动。
1. [下载](https://gitee.com/hihope_iot/docs/blob/master/HiHope_DAYU200/%E7%83%A7%E5%86%99%E5%B7%A5%E5%85%B7%E5%8F%8A%E6%8C%87%E5%8D%97/windows/DriverAssitant_v5.1.1.zip)并安装驱动DriverInstall.exe,双击DriverInstall.exe打开安装程序,点击“驱动安装”按钮,按提示安装USB驱动。 2. 请连接好电脑和待烧录开发板,连接USB接口,具体可参考[RK3568开发板介绍](quickstart-standard-board-introduction-rk3568.md)
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 如果已经安装旧版本的烧写工具,请先点击"驱动卸载"按钮卸载驱动,然后再点击"驱动安装"按钮安装驱动。
2. 请连接好电脑和待烧录开发板,连接USB接口。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
>
> 如果采用远程开发模式(windows+本地虚拟机Ubuntu),为确保开发板连接的是主机的USB口,请先禁用虚拟机的usb控制。
>
> - VMware:在首选项的USB选项中设置将设备连接到主机,在虚拟机设置中移除USB控制器。
>
> - VirtualBox:在Ubuntu设置的USB设备选项中将启动USB控制器的勾去掉。
3. 在DevEco Device Tool中,选择REMOTE DEVELOPMENT &gt; Local PC,查看远程计算机(Ubuntu开发环境)与本地计算机(Windows开发环境)的连接状态。 3. 在DevEco Device Tool中,选择REMOTE DEVELOPMENT &gt; Local PC,查看远程计算机(Ubuntu开发环境)与本地计算机(Windows开发环境)的连接状态。
- 如果Local PC右边连接按钮为![zh-cn_image_0000001261315939](figures/zh-cn_image_0000001261315939.png),则远程计算机与本地计算机为已连接状态,不需要执行其他操作。 - 如果Local PC右边连接按钮为![zh-cn_image_0000001261315939](figures/zh-cn_image_0000001261315939.png),则远程计算机与本地计算机为已连接状态,不需要执行其他操作。
- 如果Local PC右边连接按钮为![zh-cn_image_0000001261515989](figures/zh-cn_image_0000001261515989.png),则点击绿色按钮进行连接。 - 如果Local PC右边连接按钮为![zh-cn_image_0000001261515989](figures/zh-cn_image_0000001261515989.png),则点击绿色按钮进行连接。连接时DevEco Device Tool会重启服务,因此请不要在下载源码或源码编译过程中进行连接,否则会中断任务。
![zh-cn_image_0000001261395999](figures/zh-cn_image_0000001261395999.png) ![zh-cn_image_0000001261395999](figures/zh-cn_image_0000001261395999.png)
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 该操作仅在远程模式(Windows+Ubuntu混合开发环境)中需要设置,如果采用本地模式(Windows开发环境或Ubuntu开发环境),则请跳过该步骤。
4. 打开DevEco Device Tool,在QUICK ACCESS &gt; DevEco Home &gt; Projects中,点击**Settings**打开工程配置界面。 4. 在菜单栏中点击**Project Settings**按钮,进入RK3568工程配置界面。
![zh-cn_image_0000001239661509](figures/zh-cn_image_0000001239661509.png) ![zh-cn_image_0000001198566364](figures/zh-cn_image_0000001198566364.png)
5. 在“hh_scdy200”页签,设置烧录选项,包括upload_partitions和upload_protocol 5. 在“Tool Chain”页签,设置Uploader烧录器工具,可以通过Tool Chain页签中的Install按钮在线安装
- upload_partitions:选择待烧录的文件。 ![zh-cn_image_0000001239661509](figures/zh-cn_image_0000001239661509.png)
- upload_protocol:选择烧录协议,固定选择“upgrade”。
![zh-cn_image_0000001194504874](figures/zh-cn_image_0000001194504874.png)
6.Partitions中,分别检查待烧录文件的烧录信息,包括起始地址、分区大小、待烧录文件地址等。DevEco Device Tool已预置默认的烧录文件信息,可根据实际情况进行调整 6.“hh_scdy200”页签,设置烧录选项,包括upload_partitions和upload_protocol
![zh-cn_image_0000001265041892](figures/zh-cn_image_0000001265041892.png) - upload_partitions_profile:选择待烧录程序的配置文件,该配置文件会指定烧录文件名称、起始烧录地址、地址长度等信息;同时请勾选**Enable to use upload_partitions_profile for upload**选项。
如需修改,请点击每个待烧录文件后的![zh-cn_image_0000001265361888](figures/zh-cn_image_0000001265361888.png)按钮进行修改。 > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** >
> > 如需修改烧录profile文件,在设置烧录分区起始地址和分区长度时,应根据实际待烧录文件的大小进行设置,要求设置的烧录分区大小,要大于待烧录文件的大小;同时,各烧录文件的分区地址设置不能出现重叠。
> 在设置烧录分区起始地址和分区长度时,应根据实际待烧录文件的大小进行设置,要求设置的烧录分区大小,要大于待烧录文件的大小;同时,各烧录文件的分区地址设置不能出现重叠。 >
> 首次烧录,请勾选**Enable to use upload_partitions_profile for upload**选项,会自动生成upload_partitions文件。再次烧录时,可根据实际情况选择生成upload_partitions文件进行自定义烧录,也可以再勾选**Enable to use upload_partitions_profile for upload**选项,使用upload_partitions_profile重新生成upload_partitions文件用于烧录。
- upload_protocol:选择烧录协议,固定选择“upgrade”。
![zh-cn_image_0000001265201928](figures/zh-cn_image_0000001265201928.png) ![zh-cn_image_0000001194504874](figures/zh-cn_image_0000001194504874.png)
7. 所有的配置都修改完成后,在工程配置页签的顶部,点击**Save**进行保存。 7. 所有的配置都修改完成后,在工程配置页签的顶部,点击**Save**进行保存。
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
- Windows系统要求:Windows10 64位系统。 - Windows系统要求:Windows10 64位系统。
- Ubuntu系统要求:Ubuntu18.04及以上版本,内存推荐16 GB及以上。 - Ubuntu系统要求:Ubuntu18.04~21.10版本,内存推荐16 GB及以上。
- Windows系统和Ubuntu系统的用户名不能包含中文字符。 - Windows系统和Ubuntu系统的用户名不能包含中文字符。
...@@ -58,7 +58,7 @@ ...@@ -58,7 +58,7 @@
### 安装Window版本DevEco Device Tool ### 安装Window版本DevEco Device Tool
1. 下载[DevEco Device Tool 3.0 Release](https://device.harmonyos.com/cn/ide#download)Windows版。 1. 下载[DevEco Device Tool 3.0 Release](https://device.harmonyos.com/cn/ide#download) Windows版。
2. 解压DevEco Device Tool压缩包,双击安装包程序,点击Next进行安装。 2. 解压DevEco Device Tool压缩包,双击安装包程序,点击Next进行安装。
...@@ -107,6 +107,9 @@ ...@@ -107,6 +107,9 @@
### 安装Ubuntu版本DevEco Device Tool ### 安装Ubuntu版本DevEco Device Tool
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 如果没有Ubuntu系统,可在Windows系统中通过虚拟机方式搭建Ubuntu系统,具体请参考[Ubuntu系统安装指导](https://developer.huawei.com/consumer/cn/training/course/video/C101639987816176315)。Ubuntu系统安装完成后,请根据指导完成[Ubuntu基础环境配置](https://developer.huawei.com/consumer/cn/training/course/video/C101639988048536240),然后再根据本章节进行DevEco Device Tool工具的安装。
1. 将Ubuntu Shell环境修改为bash。 1. 将Ubuntu Shell环境修改为bash。
1. 执行如下命令,确认输出结果为bash。如果输出结果不是bash,请根据步骤2,将Ubuntu shell修改为bash。 1. 执行如下命令,确认输出结果为bash。如果输出结果不是bash,请根据步骤2,将Ubuntu shell修改为bash。
...@@ -141,18 +144,16 @@ ...@@ -141,18 +144,16 @@
``` ```
4. 执行如下命令,安装DevEco Device Tool,其中devicetool-linux-tool-3.0.0.401.sh请根据实际进行修改。 4. 执行如下命令,安装DevEco Device Tool,其中devicetool-linux-tool-3.0.0.401.sh请根据实际进行修改。
``` ```
sudo ./devicetool-linux-tool-3.0.0.401.sh sudo ./devicetool-linux-tool-3.0.0.401.sh
``` ```
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** 5. 在用户协议和隐私声明签署界面,请详细阅读用户协议和隐私声明,需签署同意用户协议和隐私声明才能进行下一步的安装。
>
> 安装过程中,会自动检查Python是否安装,且要求Python为3.8~3.9版本。如果不满足,则安装过程中会自动安装,提示“Do you want to continue?”,请输入“Y”后继续安装。
>
> 安装过程中,会弹出用户协议和隐私声明签署的页面,请详细阅读用户协议和隐私声明,需签署同意用户协议和隐私声明才能进行下一步的安装。 ![zh-cn_image_0000001322167645.png](figures/zh-cn_image_0000001322167645.png)
>
> 如果未弹出用户协议和隐私声明签署的页面,而直接退出了安装,请先执行apt-get install whiptail,然后再执行安装命令。
安装完成后,当界面输出“Deveco Device Tool successfully installed.”时,表示DevEco Device Tool安装成功。 安装完成后,当界面输出“Deveco Device Tool successfully installed.”时,表示DevEco Device Tool安装成功。
......
# 编译 # 编译
OpenHarmony支持hb和build.sh两种编译方式。此处介绍hb方式,build.sh脚本编译方式请参考[使用build.sh脚本编译源码](../quick-start/quickstart-lite-reference.md#使用buildsh脚本编译源码) OpenHarmony支持hb和build.sh两种编译方式。此处介绍hb方式,build.sh脚本编译方式请参考[使用build.sh脚本编译源码](quickstart-lite-reference.md)
请进入源码根目录,执行如下命令进行编译: 请进入源码根目录,执行如下命令进行编译:
......
...@@ -9,33 +9,24 @@ Hi3516DV300支持USB烧录、网口烧录和串口烧录三种方式,本文采 ...@@ -9,33 +9,24 @@ Hi3516DV300支持USB烧录、网口烧录和串口烧录三种方式,本文采
## 导入源码 ## 导入源码
在编译完成后,[保证Windows系统可以远程访问Ubuntu环境](../quick-start/quickstart-lite-env-setup.md#安装deveco-device-tool)的情况下,您还需要通过以下步骤导入源码后,方可进行烧录。 在编译完成后,[保证Windows系统可以远程访问Ubuntu环境](quickstart-lite-env-setup.md)的情况下,您还需要通过以下步骤将编译好的源码导入Windows下,方可进行烧录。
1. 打开DevEco Device Tool,进入Home页,点击**Import Project**打开工程。 1. 打开DevEco Device Tool,进入Home页,点击**Import Project**打开工程。
![zh-cn_image_0000001278358765](figures/zh-cn_image_0000001278358765.png) ![zh-cn_image_0000001278358765](figures/zh-cn_image_0000001278358765.png)
2. 选择要导入的源码目录(需要访问Ubuntu下的源码目录),点击**Import**打开 2. 选择OpenHarmony源码根目录路径(需要访问Ubuntu下的源码目录),然后再选择**Import OpenHarmony Source**选项,点击**Import**进行导入
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 工程存储路径不能包含中文字符、空格。 > 工程存储路径不能包含中文字符、空格。
![zh-cn_image_0000001279745617](figures/zh-cn_image_0000001279745617.png) ![zh-cn_image_0000001271477045](figures/zh-cn_image_0000001271477045.png)
3. 首次导入时,会出现如下提示框,点击**Import** 3. 在Import Project界面,选择**Product**后,会自动填充对应的SOC、Board、Company和Kernel信息,然后**Ohos Ver**选择对应的OpenHarmony源码版本。
![zh-cn_image_0000001266758578](figures/zh-cn_image_0000001266758578.png)
4. 在Select Project type界面,选择**Import from OpenHarmony Source**
![zh-cn_image_0000001215743910](figures/zh-cn_image_0000001215743910.png)
5. 在Import Project界面,选择**Product**后,会自动填充对应的MCU、Board、company和kernel信息,然后**ohosVersion**选择对应的OpenHarmony源码版本。此处选择ipcamera_hispark_taurus。
![zh-cn_image_0000001279586409](figures/zh-cn_image_0000001279586409.png) ![zh-cn_image_0000001279586409](figures/zh-cn_image_0000001279586409.png)
6. 点击**Open**打开工程或源码。 4. 点击**Open**打开工程或源码。
## 烧录 ## 烧录
...@@ -43,64 +34,55 @@ Hi3516DV300支持USB烧录、网口烧录和串口烧录三种方式,本文采 ...@@ -43,64 +34,55 @@ Hi3516DV300支持USB烧录、网口烧录和串口烧录三种方式,本文采
1. 请连接好电脑和待烧录开发板,需要连接USB口和串口,具体可参考[Hi3516DV300开发板介绍](https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/quick-start/quickstart-lite-introduction-hi3516.md) 1. 请连接好电脑和待烧录开发板,需要连接USB口和串口,具体可参考[Hi3516DV300开发板介绍](https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/quick-start/quickstart-lite-introduction-hi3516.md)
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 如果采用远程开发模式(windows+本地虚拟机Ubuntu),为确保开发板连接的是主机的USB口,请先禁用虚拟机的usb控制。
>
> - VMware:在首选项的USB选项中设置将设备连接到主机,在虚拟机设置中移除USB控制器。
>
> - VirtualBox:在Ubuntu设置的USB设备选项中将启动USB控制器的勾去掉。
2. 根据[Hi3516DV300开发板串口驱动安装指导](https://gitee.com/link?target=https%3A%2F%2Fdevice.harmonyos.com%2Fcn%2Fdocs%2Fdocumentation%2Fguide%2Fhi3516_hi3518-drivers-0000001050743695)[Hi3516DV300开发板USB驱动安装指导](https://device.harmonyos.com/cn/docs/documentation/guide/usb_driver-0000001058690393)安装USB驱动及USB转串口的驱动。若您的设备中已安装此驱动,请忽略该步骤。 2. 根据[Hi3516DV300开发板串口驱动安装指导](https://gitee.com/link?target=https%3A%2F%2Fdevice.harmonyos.com%2Fcn%2Fdocs%2Fdocumentation%2Fguide%2Fhi3516_hi3518-drivers-0000001050743695)[Hi3516DV300开发板USB驱动安装指导](https://device.harmonyos.com/cn/docs/documentation/guide/usb_driver-0000001058690393)安装USB驱动及USB转串口的驱动。若您的设备中已安装此驱动,请忽略该步骤。
3. 在DevEco Device Tool中,选择REMOTE DEVELOPMENT &gt; Local PC,查看远程计算机(Ubuntu开发环境)与本地计算机(Windows开发环境)的连接状态。 3. 在DevEco Device Tool中,选择REMOTE DEVELOPMENT &gt; Local PC,查看远程计算机(Ubuntu开发环境)与本地计算机(Windows开发环境)的连接状态。
- 如果Local PC右边连接按钮为![zh-cn_image_0000001261315939](figures/zh-cn_image_0000001261315939.png),则远程计算机与本地计算机为已连接状态,不需要执行其他操作。 - 如果Local PC右边连接按钮为![zh-cn_image_0000001261315939](figures/zh-cn_image_0000001261315939.png),则远程计算机与本地计算机为已连接状态,不需要执行其他操作。
- 如果Local PC右边连接按钮为![zh-cn_image_0000001261515989](figures/zh-cn_image_0000001261515989.png),则点击绿色按钮进行连接。 - 如果Local PC右边连接按钮为![zh-cn_image_0000001261515989](figures/zh-cn_image_0000001261515989.png),则点击绿色按钮进行连接。连接时DevEco Device Tool会重启服务,因此请不要在下载源码或源码编译过程中进行连接,否则会中断任务。
![zh-cn_image_0000001261395999](figures/zh-cn_image_0000001261395999.png) ![zh-cn_image_0000001261395999](figures/zh-cn_image_0000001261395999.png)
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** 4. 在菜单栏中点击**Project Settings**按钮,进入Hi3516DV300工程配置界面。
> 该操作仅在远程模式(Windows+Ubuntu混合开发环境)中需要设置,如果采用本地模式(Windows开发环境或Ubuntu开发环境),则请跳过该步骤。
4. 在DevEco Device Tool中,点击QUICK ACCESS &gt; DevEco Home &gt; Device,查看并记录对应的串口号。
![zh-cn_image_0000001315729481](figures/zh-cn_image_0000001315729481.png) ![zh-cn_image_0000001198566364](figures/zh-cn_image_0000001198566364.png)
5.QUICK ACCESS &gt; DevEco Home &gt; Projects中,点击**Settings**打开工程配置界面 5.“Tool Chain”页签,设置Uploader烧录器工具,可以通过Tool Chain页签中的Install按钮在线安装
![zh-cn_image_0000001198566364](figures/zh-cn_image_0000001198566364.png) ![zh-cn_image_0000001198566365](figures/zh-cn_image_0000001198566365.png)
6. 在“hi3516dv300”页签,设置烧录选项,包括upload_partitions、upload_port和upload_protocol。 6. 在“hi3516dv300”页签,设置烧录选项,包括upload_partitions、upload_port和upload_protocol。
- upload_partitions:选择待烧录的文件,默认情况下会同时烧录fastboot、kernel、rootfs和userfs。 - upload_partitions:选择待烧录的文件,默认情况下会同时烧录fastboot、kernel、rootfs和userfs。DevEco Device Tool已预置默认的烧录文件信息,包括起始地址、分区大小、待烧录文件地址等,开发者可根据实际情况进行调整,点击每个待烧录文件后的![zh-cn_image_0000001275592884.png](figures/zh-cn_image_0000001275592884.png)按钮进行修改。
- upload_port:选择已查询到的串口号。
- upload_protocol:选择烧录协议,固定选择“hiburn-usb”。
![zh-cn_image_0000001223190441](figures/zh-cn_image_0000001223190441.png) > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 在设置烧录分区起始地址和分区长度时,应根据实际待烧录文件的大小进行设置,要求设置的烧录分区大小,要大于待烧录文件的大小;同时,各烧录文件的分区地址设置不能出现重叠。
7. 在Partitions中,分别检查待烧录文件的烧录信息,包括起始地址、分区大小、待烧录文件地址等。DevEco Device Tool已预置默认的烧录文件信息,可根据实际情况进行调整。 ![zh-cn_image_0000001312778829](figures/zh-cn_image_0000001312778829.png)
![zh-cn_image_0000001312778829](figures/zh-cn_image_0000001312778829.png) - upload_protocol:选择烧录协议,固定选择“hiburn-usb”。
如需修改,请点击每个待烧录文件后的![zh-cn_image_0000001312898917](figures/zh-cn_image_0000001312898917.png)按钮进行修改 - upload_port:选择已查询到的串口号
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** ![zh-cn_image_0000001223190441](figures/zh-cn_image_0000001223190441.png)
> 在设置烧录分区起始地址和分区长度时,应根据实际待烧录文件的大小进行设置,要求设置的烧录分区大小,要大于待烧录文件的大小;同时,各烧录文件的分区地址设置不能出现重叠。
7. 所有的配置都修改完成后,在工程配置页签的顶部,点击**Save**进行保存。
8. 点击hi3516dv300下的**Upload**按钮。
![zh-cn_image_0000001312780249](figures/zh-cn_image_0000001312780249.png) ![zh-cn_image_0000001266887264](figures/zh-cn_image_0000001266887264.png)
8. 所有的配置都修改完成后,在工程配置页签的顶部,点击**Save**进行保存 此时待烧录文件会从Ubuntu系统传输到Windows下,传输完成后界面显示“Operation paused, Please press Enter key to continue”时,请点击**Enter**键启动烧录
9. 点击hi3516dv300下的**Upload**按钮,此时待烧录文件会从Ubuntu系统传输到Windows下,传输完成后界面显示“Operation paused, Please press Enter key to continue”时,请点击**Enter**键启动烧录。 ![zh-cn_image_0000001114129426](figures/zh-cn_image_0000001114129426.png)
![zh-cn_image_0000001316929453](figures/zh-cn_image_0000001316929453.png) 9. 在终端窗口显示如下提示信息时,请在15秒内,按住Update键,插拔USB线,最后松开Update键启动烧录。
10. 在终端窗口显示如下提示信息时,请在15秒内,按住复位键,插拔USB线,最后松开复位键启动烧录。 ![zh-cn_image_0000001326412233.png](figures/zh-cn_image_0000001326412233.png)
![zh-cn_image_0000001114129426](figures/zh-cn_image_0000001114129426.png) 启动烧录后,界面提示**SUCCESS**信息时,表示烧录成功。
启动烧录后,界面提示如下信息时,表示烧录成功。 ![zh-cn_image_0000001160649343](figures/zh-cn_image_0000001160649343.png)
![zh-cn_image_0000001160649343](figures/zh-cn_image_0000001160649343.png) 10. 烧录成功后,请根据运行章节进行操作,启动系统。
11. 烧录成功后,请根据运行章节进行操作,启动系统。
# 编译 # 编译
OpenHarmony支持hb和build.sh两种编译方式。此处介绍hb方式,build.sh脚本编译方式请参考[使用build.sh脚本编译源码](../quick-start/quickstart-lite-reference.md#使用buildsh脚本编译源码) OpenHarmony支持hb和build.sh两种编译方式。此处介绍hb方式,build.sh脚本编译方式请参考[使用build.sh脚本编译源码](quickstart-lite-reference.md)
在Ubuntu环境下进入源码根目录,执行如下命令进行编译: 在Ubuntu环境下进入源码根目录,执行如下命令进行编译:
......
...@@ -4,37 +4,29 @@ ...@@ -4,37 +4,29 @@
烧录是指将编译后的程序文件下载到芯片开发板上的动作,为后续的程序调试提供基础。DevEco Device Tool提供一键烧录功能,操作简单,能快捷、高效的完成程序烧录,提升烧录的效率。 烧录是指将编译后的程序文件下载到芯片开发板上的动作,为后续的程序调试提供基础。DevEco Device Tool提供一键烧录功能,操作简单,能快捷、高效的完成程序烧录,提升烧录的效率。
在Windows下通过串口烧录Hi3861 WLAN模组。 Hi3861V100开发板支持串口烧录方式,在Windows下通过以下步骤进行烧录:
## 导入源码 ## 导入源码
在编译完成后,[保证Windows系统可以远程访问Ubuntu环境](../quick-start/quickstart-lite-env-setup.md#安装deveco-device-tool)的情况下,您还需要通过以下步骤导入源码后,方可进行烧录。 在编译完成后,[保证Windows系统可以远程访问Ubuntu环境](quickstart-lite-env-setup.md)的情况下,您还需要通过以下步骤将编译好的源码导入Windows下,方可进行烧录。
1. 打开DevEco Device Tool,进入Home页,点击**Import Project**打开工程。 1. 打开DevEco Device Tool,进入Home页,点击**Import Project**打开工程。
![zh-cn_image_0000001278358765](figures/zh-cn_image_0000001278358765.png) ![zh-cn_image_0000001278358765](figures/zh-cn_image_0000001278358765.png)
2. 选择要导入的源码目录(需要访问Ubuntu下的源码目录),点击**Import**打开 2. 选择OpenHarmony源码根目录路径(需要访问Ubuntu下的源码目录),然后再选择**Import OpenHarmony Source**选项,点击**Import**进行导入
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 工程存储路径不能包含中文字符、空格。 > 工程存储路径不能包含中文字符、空格。
![zh-cn_image_0000001235265380](figures/zh-cn_image_0000001235265380.png) ![zh-cn_image_0000001271477045](figures/zh-cn_image_0000001271477045.png)
3. 首次导入时,会出现如下提示框,点击**Import** 3. 在Import Project界面,选择**Product**后,会自动填充对应的SOC、Board、Company和Kernel信息,然后**Ohos Ver**选择对应的OpenHarmony源码版本
![zh-cn_image_0000001314159661](figures/zh-cn_image_0000001314159661.png) ![zh-cn_image_0000001279425450](figures/zh-cn_image_0000001279425450.png)
4. 在Select Project type界面,选择**Import from OpenHarmony Source** 4. 点击**Open**打开工程或源码。
![zh-cn_image_0000001215743910](figures/zh-cn_image_0000001215743910.png)
5. 在Import Project界面,选择**Product**后,会自动填充对应的MCU、Board、company和kernel信息,然后**ohosVersion**选择对应的OpenHarmony源码版本。此处选择wifiiot_hispark_pegasus。
![zh-cn_image_0000001279425449](figures/zh-cn_image_0000001279425449.png)
6. 点击**Open**打开工程或源码。
## 烧录 ## 烧录
...@@ -48,18 +40,16 @@ ...@@ -48,18 +40,16 @@
3. 在DevEco Device Tool中,选择REMOTE DEVELOPMENT &gt; Local PC,查看远程计算机(Ubuntu开发环境)与本地计算机(Windows开发环境)的连接状态。 3. 在DevEco Device Tool中,选择REMOTE DEVELOPMENT &gt; Local PC,查看远程计算机(Ubuntu开发环境)与本地计算机(Windows开发环境)的连接状态。
- 如果Local PC右边连接按钮为![zh-cn_image_0000001261315939](figures/zh-cn_image_0000001261315939.png),则远程计算机与本地计算机为已连接状态,不需要执行其他操作。 - 如果Local PC右边连接按钮为![zh-cn_image_0000001261315939](figures/zh-cn_image_0000001261315939.png),则远程计算机与本地计算机为已连接状态,不需要执行其他操作。
- 如果Local PC右边连接按钮为![zh-cn_image_0000001261515989](figures/zh-cn_image_0000001261515989.png),则点击绿色按钮进行连接。 - 如果Local PC右边连接按钮为![zh-cn_image_0000001261515989](figures/zh-cn_image_0000001261515989.png),则点击绿色按钮进行连接。连接时DevEco Device Tool会重启服务,因此请不要在下载源码或源码编译过程中进行连接,否则会中断任务。
![zh-cn_image_0000001261395999](figures/zh-cn_image_0000001261395999.png) ![zh-cn_image_0000001261395999](figures/zh-cn_image_0000001261395999.png)
4. 在菜单栏中点击**Project Settings**按钮,进入Hi3861V100工程配置界面。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** ![zh-cn_image_0000001333802045.png](figures/zh-cn_image_0000001333802045.png)
> 该操作仅在远程模式(Windows+Ubuntu混合开发环境)中需要设置,如果采用本地模式(Windows开发环境或Ubuntu开发环境),则请跳过该步骤。
4. 在DevEco Device Tool中,点击QUICK ACCESS &gt; DevEco Home &gt; Device,查看并记录对应的串口号。
![zh-cn_image_0000001316011485](figures/zh-cn_image_0000001316011485.png)
5.QUICK ACCESS &gt; DevEco Home &gt; Projects中,点击**Settings**打开工程配置界面 5.“Tool Chain”页签,设置Uploader烧录器工具,可以通过Tool Chain页签中的Install按钮在线安装
![zh-cn_image_0000001198943768](figures/zh-cn_image_0000001198943768.png) ![zh-cn_image_0000001198943768](figures/zh-cn_image_0000001198943768.png)
...@@ -67,20 +57,20 @@ ...@@ -67,20 +57,20 @@
- upload_port:选择已查询的串口号。 - upload_port:选择已查询的串口号。
- upload_protocol:选择烧录协议,选择“hiburn-serial”。 - upload_protocol:选择烧录协议,选择“hiburn-serial”。
- upload_partitions:选择待烧录的文件,默认选择hi3861_app - upload_partitions:选择待烧录的文件名称。DevEco Device Tool已预置默认的烧录文件信息,如果需要修改待烧录文件地址,可点击每个待烧录文件后的![zh-cn_image_0000001333642545.png](figures/zh-cn_image_0000001333642545.png)按钮进行修改
![zh-cn_image_0000001243704061](figures/zh-cn_image_0000001243704061.png) ![zh-cn_image_0000001243704061](figures/zh-cn_image_0000001243704061.png)
7. 在Partitions中,检查待烧录文件的烧录信息,DevEco Device Tool已预置默认的烧录文件信息,可根据实际情况进行调整。 7. 所有的配置都修改完成后,在工程配置页签的顶部,点击**Save**进行保存。
![zh-cn_image_0000001312993353](figures/zh-cn_image_0000001312993353.png)
如需修改,请点击待烧录文件后的![zh-cn_image_0000001312793665](figures/zh-cn_image_0000001312793665.png)按钮进行修改 8. 点击**Open**打开工程文件,然后在“PROJECT TASKS”中,点击hi3861下的**Upload**按钮,启动烧录
![zh-cn_image_0000001312912509](figures/zh-cn_image_0000001312912509.png) ![zh-cn_image_0000001216440138](figures/zh-cn_image_0000001216440138.png)
8. 所有的配置都修改完成后,在工程配置页签的顶部,点击**Save**进行保存 9. 启动烧录后,显示如下提示信息时,请在15秒内,按下开发板上的RST按钮重启开发板
9. 点击**Open**打开工程文件,然后在“PROJECT TASKS”中,点击hi3861下的**Upload**按钮,启动烧录。 ![zh-cn_image_0000001198466090](figures/zh-cn_image_0000001198466090.png)
![zh-cn_image_0000001216440138](figures/zh-cn_image_0000001216440138.png) 重新上电后,界面提示如下信息时,表示烧录成功。
![zh-cn_image_0000001216761476](figures/zh-cn_image_0000001216761476.png)
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
- Windows系统要求:Windows10 64位系统。 - Windows系统要求:Windows10 64位系统。
- Ubuntu系统要求:Ubuntu18.04及以上版本,内存推荐16 GB及以上。 - Ubuntu系统要求:Ubuntu18.04~21.10版本,内存推荐16 GB及以上。
- Windows系统和Ubuntu系统的用户名不能包含中文字符。 - Windows系统和Ubuntu系统的用户名不能包含中文字符。
...@@ -58,7 +58,7 @@ ...@@ -58,7 +58,7 @@
### 安装Window版本DevEco Device Tool ### 安装Window版本DevEco Device Tool
1. 下载[DevEco Device Tool 3.0 Release](https://device.harmonyos.com/cn/ide#download)Windows版。 1. 下载[DevEco Device Tool 3.0 Release](https://device.harmonyos.com/cn/ide#download) Windows版。
2. 解压DevEco Device Tool压缩包,双击安装包程序,点击Next进行安装。 2. 解压DevEco Device Tool压缩包,双击安装包程序,点击Next进行安装。
...@@ -107,6 +107,11 @@ ...@@ -107,6 +107,11 @@
### 安装Ubuntu版本DevEco Device Tool ### 安装Ubuntu版本DevEco Device Tool
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 如果没有Ubuntu系统,可在Windows系统中通过虚拟机方式搭建Ubuntu系统,具体请参考[Ubuntu系统安装指导](https://developer.huawei.com/consumer/cn/training/course/video/C101639987816176315)。Ubuntu系统安装完成后,请根据指导完成[Ubuntu基础环境配置](https://developer.huawei.com/consumer/cn/training/course/video/C101639988048536240),然后再根据本章节进行DevEco Device Tool工具的安装。
1. 将Ubuntu Shell环境修改为bash。 1. 将Ubuntu Shell环境修改为bash。
1. 执行如下命令,确认输出结果为bash。如果输出结果不是bash,请根据步骤2,将Ubuntu shell修改为bash。 1. 执行如下命令,确认输出结果为bash。如果输出结果不是bash,请根据步骤2,将Ubuntu shell修改为bash。
...@@ -146,13 +151,9 @@ ...@@ -146,13 +151,9 @@
sudo ./devicetool-linux-tool-3.0.0.401.sh sudo ./devicetool-linux-tool-3.0.0.401.sh
``` ```
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** 5. 在用户协议和隐私声明签署界面,请详细阅读用户协议和隐私声明,需签署同意用户协议和隐私声明才能进行下一步的安装。
>
> 安装过程中,会自动检查Python是否安装,且要求Python为3.8~3.9版本。如果不满足,则安装过程中会自动安装,提示“Do you want to continue?”,请输入“Y”后继续安装。 ![zh-cn_image_0000001322167645.png](figures/zh-cn_image_0000001322167645.png)
>
> 安装过程中,会弹出用户协议和隐私声明签署的页面,请详细阅读用户协议和隐私声明,需签署同意用户协议和隐私声明才能进行下一步的安装。
>
> 如果未弹出用户协议和隐私声明签署的页面,而直接退出了安装,请先执行apt-get install whiptail,然后再执行安装命令。
安装完成后,当界面输出“Deveco Device Tool successfully installed.”时,表示DevEco Device Tool安装成功。 安装完成后,当界面输出“Deveco Device Tool successfully installed.”时,表示DevEco Device Tool安装成功。
......
# 编译 # 编译
OpenHarmony支持hb和build.sh两种编译方式。此处介绍hb方式,build.sh脚本编译方式请参考[使用build.sh脚本编译源码](../quick-start/quickstart-standard-reference.md#使用buildsh脚本编译源码) OpenHarmony支持hb和build.sh两种编译方式。此处介绍hb方式,build.sh脚本编译方式请参考[使用build.sh脚本编译源码](quickstart-standard-reference.md)
在Ubuntu环境下进入源码根目录,执行如下命令进行编译: 在Ubuntu环境下进入源码根目录,执行如下命令进行编译:
...@@ -19,7 +19,7 @@ OpenHarmony支持hb和build.sh两种编译方式。此处介绍hb方式,build. ...@@ -19,7 +19,7 @@ OpenHarmony支持hb和build.sh两种编译方式。此处介绍hb方式,build.
. .
``` ```
3.built-in下选择hispark_taurus_standard并回车。 3.hisilicon下选择hispark_taurus_standard并回车。
**图1** Hi3516编译设置图例   **图1** Hi3516编译设置图例  
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
## 导入源码 ## 导入源码
在编译完成后,[保证Windows系统可以远程访问Ubuntu环境](../quick-start/quickstart-standard-env-setup.md#安装deveco-device-tool)的情况下,您还需要通过以下步骤导入源码后,方可进行烧录。 在编译完成后,[保证Windows系统可以远程访问Ubuntu环境](quickstart-standard-env-setup.md)的情况下,您还需要通过以下步骤导入源码后,方可进行烧录。
1. 打开DevEco Device Tool,进入Home页,点击**Import Project**打开工程。 1. 打开DevEco Device Tool,进入Home页,点击**Import Project**打开工程。
......
# 编译 # 编译
OpenHarmony支持hb和build.sh两种编译方式。此处介绍hb方式,build.sh脚本编译方式请参考[使用build.sh脚本编译源码](../quick-start/quickstart-standard-reference.md#使用buildsh脚本编译源码) OpenHarmony支持hb和build.sh两种编译方式。此处介绍hb方式,build.sh脚本编译方式请参考[使用build.sh脚本编译源码](quickstart-standard-reference.md)
在Ubuntu环境下进入源码根目录,执行如下命令进行编译: 在Ubuntu环境下进入源码根目录,执行如下命令进行编译:
......
...@@ -3,96 +3,71 @@ ...@@ -3,96 +3,71 @@
烧录是指将编译后的程序文件下载到芯片开发板上的动作,为后续的程序调试提供基础。DevEco Device Tool提供一键烧录功能,操作简单,能快捷、高效的完成程序烧录,提升烧录的效率。 烧录是指将编译后的程序文件下载到芯片开发板上的动作,为后续的程序调试提供基础。DevEco Device Tool提供一键烧录功能,操作简单,能快捷、高效的完成程序烧录,提升烧录的效率。
RK3568的镜像烧录通过Winodow环境进行烧录。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> - 如您使用的是master分支2022年5月9日及之后的源码,请使用RKDevTool工具进行烧录,请参考《[HiHope-DAYU200烧录指导](https://gitee.com/hihope_iot/docs/tree/master/HiHope_DAYU200/%E7%83%A7%E5%86%99%E5%B7%A5%E5%85%B7%E5%8F%8A%E6%8C%87%E5%8D%97)》进行操作。
>
> - 当前版本的DevEco Device Tool暂不支持上述日期后的源码烧录,将在下个版本中适配。
在Windows环境下通过以下步骤进行RK3568的烧录:
## 导入源码 ## 导入源码
在编译完成后,[保证Windows系统可以远程访问Ubuntu环境](../quick-start/quickstart-standard-env-setup.md#安装deveco-device-tool)的情况下,您还需要通过以下步骤导入源码后,方可进行烧录。 在编译完成后,[保证Windows系统可以远程访问Ubuntu环境](quickstart-standard-env-setup.md)的情况下,您还需要通过以下步骤将编译好的源码导入Windows下,方可进行烧录。
1. 打开DevEco Device Tool,进入Home页,点击**Import Project**打开工程。 1. 打开DevEco Device Tool,进入Home页,点击**Import Project**打开工程。
![zh-cn_image_0000001278358765](figures/zh-cn_image_0000001278358765.png) ![zh-cn_image_0000001278358765](figures/zh-cn_image_0000001278358765.png)
2. 选择要导入的源码目录(需要访问Ubuntu下的源码目录),点击**Import**打开 2. 选择OpenHarmony源码根目录路径(需要访问Ubuntu下的源码目录),然后再选择**Import OpenHarmony Source**选项,点击**Import**进行导入
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 工程存储路径不能包含中文字符、空格。 > 工程存储路径不能包含中文字符、空格。
![zh-cn_image_0000001279746305](figures/zh-cn_image_0000001279746305.png) ![zh-cn_image_0000001271477045](figures/zh-cn_image_0000001271477045.png)
3. 首次导入时,会出现如下提示框,点击**Import**
![zh-cn_image_0000001313959369](figures/zh-cn_image_0000001313959369.png)
4. 在Select Project type界面,选择**Import from OpenHarmony Source** 3. 在Import Project界面,选择**Product**后,会自动填充对应的SOC、Board、Company和Kernel信息,然后**Ohos Ver**选择对应的OpenHarmony源码版本。
![zh-cn_image_0000001215743910](figures/zh-cn_image_0000001215743910.png)
5. 在Import Project界面,选择**Product**后,会自动填充对应的MCU、Board、company和kernel信息,然后**ohosVersion**选择对应的OpenHarmony源码版本。此处选择rk3568。
![zh-cn_image_0000001279587085](figures/zh-cn_image_0000001279587085.png) ![zh-cn_image_0000001279587085](figures/zh-cn_image_0000001279587085.png)
6. 点击**Open**打开工程或源码。 4. 点击**Open**打开工程或源码。
## 烧录 ## 烧录
完成源码导入后,通过以下步骤进行烧录: 完成源码导入后,通过以下步骤进行烧录:
1. [下载](https://gitee.com/hihope_iot/docs/blob/master/HiHope_DAYU200/%E7%83%A7%E5%86%99%E5%B7%A5%E5%85%B7%E5%8F%8A%E6%8C%87%E5%8D%97/windows/DriverAssitant_v5.1.1.zip)并安装驱动DriverInstall.exe,双击DriverInstall.exe打开安装程序,点击“驱动安装”按钮,按提示安装USB驱动 1. [下载](https://gitee.com/hihope_iot/docs/blob/master/HiHope_DAYU200/%E7%83%A7%E5%86%99%E5%B7%A5%E5%85%B7%E5%8F%8A%E6%8C%87%E5%8D%97/windows/DriverAssitant_v5.1.1.zip)并安装驱动DriverInstall.exe。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
>
> 如果已经安装旧版本的烧写工具,请先点击"驱动卸载"按钮卸载驱动,然后再点击"驱动安装"按钮安装驱动。 > 如果已经安装旧版本的烧写工具,请先点击"驱动卸载"按钮卸载驱动,然后再点击"驱动安装"按钮安装驱动。
2. 请连接好电脑和待烧录开发板,连接USB接口。 2. 请连接好电脑和待烧录开发板,连接USB接口,具体可参考[RK3568开发板介绍](quickstart-standard-board-introduction-rk3568.md)
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
>
> 如果采用远程开发模式(windows+本地虚拟机Ubuntu),为确保开发板连接的是主机的USB口,请先禁用虚拟机的usb控制。
>
> - VMware:在首选项的USB选项中设置将设备连接到主机,在虚拟机设置中移除USB控制器。
>
> - VirtualBox:在Ubuntu设置的USB设备选项中将启动USB控制器的勾去掉。
3. 在DevEco Device Tool中,选择REMOTE DEVELOPMENT &gt; Local PC,查看远程计算机(Ubuntu开发环境)与本地计算机(Windows开发环境)的连接状态。 3. 在DevEco Device Tool中,选择REMOTE DEVELOPMENT &gt; Local PC,查看远程计算机(Ubuntu开发环境)与本地计算机(Windows开发环境)的连接状态。
- 如果Local PC右边连接按钮为![zh-cn_image_0000001261315939](figures/zh-cn_image_0000001261315939.png),则远程计算机与本地计算机为已连接状态,不需要执行其他操作。 - 如果Local PC右边连接按钮为![zh-cn_image_0000001261315939](figures/zh-cn_image_0000001261315939.png),则远程计算机与本地计算机为已连接状态,不需要执行其他操作。
- 如果Local PC右边连接按钮为![zh-cn_image_0000001261515989](figures/zh-cn_image_0000001261515989.png),则点击绿色按钮进行连接。 - 如果Local PC右边连接按钮为![zh-cn_image_0000001261515989](figures/zh-cn_image_0000001261515989.png),则点击绿色按钮进行连接。连接时DevEco Device Tool会重启服务,因此请不要在下载源码或源码编译过程中进行连接,否则会中断任务。
![zh-cn_image_0000001261395999](figures/zh-cn_image_0000001261395999.png) ![zh-cn_image_0000001261395999](figures/zh-cn_image_0000001261395999.png)
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** 4. 在菜单栏中点击**Project Settings**按钮,进入RK3568工程配置界面。
> 该操作仅在远程模式(Windows+Ubuntu混合开发环境)中需要设置,如果采用本地模式(Windows开发环境或Ubuntu开发环境),则请跳过该步骤。
4. 打开DevEco Device Tool,在QUICK ACCESS &gt; DevEco Home &gt; Projects中,点击**Settings**打开工程配置界面。 ![zh-cn_image_0000001198566364](figures/zh-cn_image_0000001198566364.png)
![zh-cn_image_0000001239661509](figures/zh-cn_image_0000001239661509.png) 5. 在“Tool Chain”页签,设置Uploader烧录器工具,可以通过Tool Chain页签中的Install按钮在线安装。
5. 在“hh_scdy200”页签,设置烧录选项,包括upload_partitions和upload_protocol。 ![zh-cn_image_0000001239661509](figures/zh-cn_image_0000001239661509.png)
- upload_partitions:选择待烧录的文件。
- upload_protocol:选择烧录协议,固定选择“upgrade”。
![zh-cn_image_0000001194504874](figures/zh-cn_image_0000001194504874.png)
6.Partitions中,分别检查待烧录文件的烧录信息,包括起始地址、分区大小、待烧录文件地址等。DevEco Device Tool已预置默认的烧录文件信息,可根据实际情况进行调整 6.“hh_scdy200”页签,设置烧录选项,包括upload_partitions和upload_protocol
![zh-cn_image_0000001265041892](figures/zh-cn_image_0000001265041892.png) - upload_partitions_profile:选择待烧录程序的配置文件,该配置文件会指定烧录文件名称、起始烧录地址、地址长度等信息;同时请勾选**Enable to use upload_partitions_profile for upload**选项。
如需修改,请点击每个待烧录文件后的![zh-cn_image_0000001265361888](figures/zh-cn_image_0000001265361888.png)按钮进行修改。 > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
>
> 如需修改烧录profile文件,在设置烧录分区起始地址和分区长度时,应根据实际待烧录文件的大小进行设置,要求设置的烧录分区大小,要大于待烧录文件的大小;同时,各烧录文件的分区地址设置不能出现重叠。
>
> 首次烧录,请勾选**Enable to use upload_partitions_profile for upload**选项,会自动生成upload_partitions文件。再次烧录时,可根据实际情况选择生成upload_partitions文件进行自定义烧录,也可以再勾选**Enable to use upload_partitions_profile for upload**选项,使用upload_partitions_profile重新生成upload_partitions文件用于烧录。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** - upload_protocol:选择烧录协议,固定选择“upgrade”。
> 在设置烧录分区起始地址和分区长度时,应根据实际待烧录文件的大小进行设置,要求设置的烧录分区大小,要大于待烧录文件的大小;同时,各烧录文件的分区地址设置不能出现重叠。
![zh-cn_image_0000001265201928](figures/zh-cn_image_0000001265201928.png) ![zh-cn_image_0000001194504874](figures/zh-cn_image_0000001194504874.png)
7. 所有的配置都修改完成后,在工程配置页签的顶部,点击**Save**进行保存。 7. 所有的配置都修改完成后,在工程配置页签的顶部,点击**Save**进行保存。
......
...@@ -19,66 +19,6 @@ HiSysEvent提供OpenHarmony打点接口,通过在关键路径打点记录系 ...@@ -19,66 +19,6 @@ HiSysEvent提供OpenHarmony打点接口,通过在关键路径打点记录系
### 接口说明 ### 接口说明
JAVA打点接口如下:
HiSysEvent类,具体的API详见接口文档 。
**表1** HiSysEvent接口介绍
| 接口名 | 描述 |
| -------- | -------- |
| public&nbsp;static&nbsp;int&nbsp;write(String&nbsp;domain,&nbsp;String&nbsp;eventName,&nbsp;EventType&nbsp;type,&nbsp;Object...&nbsp;keyValues) | 接口功能:记录系统事件。<br/>输入参数:<br/>-&nbsp;domain:事件的相关领域,需要使用预置领域请参考Domain,可自定义领域。自定义领域长度在16个字符以内,有效的字符是0-9、A-Z,以字母开头。<br/>-&nbsp;eventName:事件名,长度在32个字符以内,有效的字符是0-9、a-z、A-Z、_,以字母开头,不能以_结尾。<br/>-&nbsp;type:事件类型,参考EventType。<br/>-&nbsp;keyValues:事件参数键值对,支持基本的数据类型、std::string,以及std::vector&lt;基本类型&gt;、std:vector&lt;std::string&gt;。参数名长度在48个字符以内,有效的字符是0-9、a-z、A-Z、_,以字母开头,不能以_结尾。参数名的个数在32个以内。<br/>返回值:成功返回0,错误返回小于0的值。 |
| public&nbsp;static&nbsp;int&nbsp;write(String&nbsp;domain,&nbsp;String&nbsp;eventName,&nbsp;EventType&nbsp;type,&nbsp;Map&lt;String,&nbsp;Object&gt;&nbsp;keyValues) | 接口功能:记录系统事件。<br/>输入参数:<br/>-&nbsp;domain:事件的相关领域,需要使用预置领域请参考Domain,可自定义领域。自定义领域长度在16个字符以内,有效的字符是0-9、A-Z,以字母开头。<br/>-&nbsp;eventName:事件名,长度在32个字符以内,有效的字符是0-9、a-z、A-Z、_,以字母开头,不能以_结尾。<br/>-&nbsp;type:事件类型,参考EventType。<br/>-&nbsp;keyValues:事件参数键值对,支持基本的数据类型、std::string,以及std::vector&lt;基本类型&gt;、std:vector&lt;std::string&gt;。参数名长度在48个字符以内,有效的字符是0-9、a-z、A-Z、_,以字母开头,不能以_结尾。参数名的个数在32个以内。<br/>返回值:成功返回0,错误返回小于0的值。 |
**表2** HiSysEvent.Domain接口介绍
| 成员 | 描述 |
| -------- | -------- |
| public&nbsp;static&nbsp;final&nbsp;String&nbsp;AAFWK&nbsp;=&nbsp;"AAFWK" | 元能力子系统 |
| public&nbsp;static&nbsp;final&nbsp;String&nbsp;APPEXECFWK&nbsp;=&nbsp;"APPEXECFWK" | 用户程序框架子系统 |
| public&nbsp;static&nbsp;final&nbsp;String&nbsp;ACCOUNT&nbsp;=&nbsp;"ACCOUNT" | 账号子系统 |
| public&nbsp;static&nbsp;final&nbsp;String&nbsp;AI&nbsp;=&nbsp;"AI" | AI子系统 |
| public&nbsp;static&nbsp;final&nbsp;String&nbsp;BARRIER_FREE&nbsp;=&nbsp;"BARRIERFREE" | 无障碍软件服务子系统 |
| public&nbsp;static&nbsp;final&nbsp;String&nbsp;BIOMETRICS&nbsp;=&nbsp;"BIOMETRICS" | 生物特征识别服务子系统 |
| public&nbsp;static&nbsp;final&nbsp;String&nbsp;CCRUNTIME&nbsp;=&nbsp;"CCRUNTIME" | C/C++运行环境子系统 |
| public&nbsp;static&nbsp;final&nbsp;String&nbsp;COMMUNICATION&nbsp;=&nbsp;"COMMUNICATION" | 公共通信子系统 |
| public&nbsp;static&nbsp;final&nbsp;String&nbsp;DEVELOPTOOLS&nbsp;=&nbsp;"DEVELOPTOOLS" | 研发工具链子系统 |
| public&nbsp;static&nbsp;final&nbsp;String&nbsp;DISTRIBUTED_DATAMGR&nbsp;=&nbsp;"DISTDATAMGR" | 分布式数据管理子系统 |
| public&nbsp;static&nbsp;final&nbsp;String&nbsp;DISTRIBUTED_SCHEDULE&nbsp;=&nbsp;"DISTSCHEDULE" | 分布式任务调度子系统 |
| public&nbsp;static&nbsp;final&nbsp;String&nbsp;GLOBAL&nbsp;=&nbsp;"GLOBAL" | 全球化子系统 |
| public&nbsp;static&nbsp;final&nbsp;String&nbsp;GRAPHIC&nbsp;=&nbsp;"GRAPHIC" | 图形子系统 |
| public&nbsp;static&nbsp;final&nbsp;String&nbsp;HIVIEWDFX&nbsp;=&nbsp;"HIVIEWDFX" | DFX子系统 |
| public&nbsp;static&nbsp;final&nbsp;String&nbsp;IAWARE&nbsp;=&nbsp;"IAWARE" | 本地资源调度管控子系统 |
| public&nbsp;static&nbsp;final&nbsp;String&nbsp;INTELLI_ACCESSORIES&nbsp;=&nbsp;"INTELLIACC" | 智能配件业务子系统 |
| public&nbsp;static&nbsp;final&nbsp;String&nbsp;INTELLI_TV&nbsp;=&nbsp;"INTELLITV" | 智能电视业务子系统 |
| public&nbsp;static&nbsp;final&nbsp;String&nbsp;IVI_HARDWARE&nbsp;=&nbsp;"IVIHARDWARE" | 车机专有硬件服务子系统 |
| public&nbsp;static&nbsp;final&nbsp;String&nbsp;LOCATION&nbsp;=&nbsp;"LOCATION" | 位置服务子系统 |
| public&nbsp;static&nbsp;final&nbsp;String&nbsp;MSDP&nbsp;=&nbsp;"MSDP" | 综合传感处理平台子系统 |
| public&nbsp;static&nbsp;final&nbsp;String&nbsp;MULTI_MEDIA&nbsp;=&nbsp;"MULTIMEDIA" | 媒体子系统 |
| public&nbsp;static&nbsp;final&nbsp;String&nbsp;MULTI_MODAL_INPUT&nbsp;=&nbsp;"MULTIMODALINPUT" | 多模输入子系统 |
| public&nbsp;static&nbsp;final&nbsp;String&nbsp;NOTIFICATION&nbsp;=&nbsp;"NOTIFICATION" | 事件通知子系统 |
| public&nbsp;static&nbsp;final&nbsp;String&nbsp;POWERMGR&nbsp;=&nbsp;"POWERMGR" | 电源服务子系统 |
| public&nbsp;static&nbsp;final&nbsp;String&nbsp;ROUTER&nbsp;=&nbsp;"ROUTER" | 路由器业务子系统 |
| public&nbsp;static&nbsp;final&nbsp;String&nbsp;SECURITY&nbsp;=&nbsp;"SECURITY" | 安全子系统 |
| public&nbsp;static&nbsp;final&nbsp;String&nbsp;SENSORS&nbsp;=&nbsp;"SENSORS" | 泛Sensor服务子系统 |
| public&nbsp;static&nbsp;final&nbsp;String&nbsp;SOURCE_CODE_TRANSFORMER&nbsp;=&nbsp;"SRCTRANSFORMER" | 应用移植子系统 |
| public&nbsp;static&nbsp;final&nbsp;String&nbsp;STARTUP&nbsp;=&nbsp;"STARTUP" | 启动恢复子系统 |
| public&nbsp;static&nbsp;final&nbsp;String&nbsp;TELEPHONY&nbsp;=&nbsp;"TELEPHONY" | 电话服务子系统 |
| public&nbsp;static&nbsp;final&nbsp;String&nbsp;UPDATE&nbsp;=&nbsp;"UPDATE" | 升级服务子系统 |
| public&nbsp;static&nbsp;final&nbsp;String&nbsp;USB&nbsp;=&nbsp;"USB" | USB服务子系统 |
| public&nbsp;static&nbsp;final&nbsp;String&nbsp;WEARABLE_HARDWARE&nbsp;=&nbsp;"WEARABLEHW" | 穿戴专有硬件服务子系统 |
| public&nbsp;static&nbsp;final&nbsp;String&nbsp;WEARABLE&nbsp;=&nbsp;"WEARABLE" | 穿戴业务子系统 |
| public&nbsp;static&nbsp;final&nbsp;String&nbsp;OTHERS&nbsp;=&nbsp;"OTHERS" | 其它 |
**表3** HiSysEvent.EventType接口介绍
| 接口名 | 描述 |
| -------- | -------- |
| FAULT | 故障类型事件 |
| STATISTIC | 统计类型事件 |
| SECURITY | 安全类型事件 |
| BEHAVIOR | 系统行为事件 |
C++打点接口如下: C++打点接口如下:
HiSysEvent类,具体的API详见接口文档 。 HiSysEvent类,具体的API详见接口文档 。
...@@ -87,7 +27,7 @@ HiSysEvent类,具体的API详见接口文档 。 ...@@ -87,7 +27,7 @@ HiSysEvent类,具体的API详见接口文档 。
| 接口名 | 描述 | | 接口名 | 描述 |
| -------- | -------- | | -------- | -------- |
| template&lt;typename...&nbsp;Types&gt;&nbsp;static&nbsp;int&nbsp;Write(const&nbsp;std::string&nbsp;&amp;domain,&nbsp;const&nbsp;std::string&nbsp;&amp;eventName,&nbsp;EventType&nbsp;type,&nbsp;Types...&nbsp;keyValues) | 接口功能:记录系统事件。<br/>输入参数:<br/>-&nbsp;domain:事件的相关领域,需要使用预置领域请参考Domain,可自定义领域。自定义领域长度在16个字符以内,有效的字符是0-9、A-Z,以字母开头。<br/>-&nbsp;eventName:事件名,长度在32个字符以内,有效的字符是0-9、A-Z、下划线,以字母开头,不能以下划线结尾。<br/>-&nbsp;type:事件类型,参考EventType。<br/>-&nbsp;keyValues:事件参数键值对,支持基本的数据类型、std::string,以及std::vector&lt;基本类型&gt;、std:vector&lt;std::string&gt;。参数名长度在48个字符以内,有效的字符是0-9、A-Z、下划线,以字母开头,不能以下划线结尾。参数名的个数在32个以内。<br/>返回值:<br/>-&nbsp;0:系统事件记录成功。<br/>-&nbsp;负值:系统事件记录失败。 | | template&lt;typename...&nbsp;Types&gt;&nbsp;static&nbsp;int&nbsp;Write(const&nbsp;std::string&nbsp;&amp;domain,<br/>&nbsp;const&nbsp;std::string&nbsp;&amp;eventName,<br/>&nbsp;EventType&nbsp;type,&nbsp;Types...&nbsp;keyValues) | 接口功能:记录系统事件。<br/>输入参数:<br/>-&nbsp;domain:事件的相关领域,需要使用预置领域请参考Domain,可自定义领域。自定义领域长度在16个字符以内,有效的字符是0-9、A-Z,以字母开头。<br/>-&nbsp;eventName:事件名,长度在32个字符以内,有效的字符是0-9、A-Z、下划线,以字母开头,不能以下划线结尾。<br/>-&nbsp;type:事件类型,参考EventType。<br/>-&nbsp;keyValues:事件参数键值对,支持基本的数据类型、std::string,以及std::vector&lt;基本类型&gt;、std:vector&lt;std::string&gt;。参数名长度在48个字符以内,有效的字符是0-9、A-Z、下划线,以字母开头,不能以下划线结尾。参数名的个数在32个以内。<br/>返回值:<br/>-&nbsp;0:系统事件记录成功。<br/>-&nbsp;负值:系统事件记录失败。 |
**表5** HiSysEvent::Domain接口介绍 **表5** HiSysEvent::Domain接口介绍
...@@ -142,29 +82,6 @@ HiSysEvent类,具体的API详见接口文档 。 ...@@ -142,29 +82,6 @@ HiSysEvent类,具体的API详见接口文档 。
### 开发实例 ### 开发实例
Java接口实例
1. 源代码开发
引入类名:
```
import ohos.hiviewdfx.HiSysEvent;
```
假设业务关注应用启动时间start_app,在相关代码中使用(调用接口打点):
```
HiSysEvent.write(HiSysEvent.Domain.AAFWK, "start_app", HiSysEvent.EventType.FAULT, "app_name", "com.demo");
```
2. 编译设置,在BUILD.gn里增加子系统SDK依赖:
```
external_deps = [ "hisysevent:hisysevent_java" ]
```
C++接口实例 C++接口实例
1. 源代码开发 1. 源代码开发
......
...@@ -179,15 +179,13 @@ subscribeInfos.emplace_back(info2); ...@@ -179,15 +179,13 @@ subscribeInfos.emplace_back(info2);
std::list<ProfileEvent> failedEvents; std::list<ProfileEvent> failedEvents;
// 执行订阅接口 // 执行订阅接口
DistributedDeviceProfileClient::GetInstance().SubscribeProfileEvents(subscribeInfos, DistributedDeviceProfileClient::GetInstance().SubscribeProfileEvents(subscribeInfos, callback, failedEvents);
callback, failedEvents);
sleep(SUBSCRIBE_SLEEP_TIME); sleep(SUBSCRIBE_SLEEP_TIME);
std::list<ProfileEvent> profileEvents; std::list<ProfileEvent> profileEvents;
profileEvents.emplace_back(ProfileEvent::EVENT_PROFILE_CHANGED); profileEvents.emplace_back(ProfileEvent::EVENT_PROFILE_CHANGED);
failedEvents.clear(); failedEvents.clear();
// 解除订阅 // 解除订阅
DistributedDeviceProfileClient::GetInstance().UnsubscribeProfileEvents(profileEvents, DistributedDeviceProfileClient::GetInstance().UnsubscribeProfileEvents(profileEvents, callback, failedEvents);
callback, failedEvents);
``` ```
## 相关仓<a name="section176111311166"></a> ## 相关仓<a name="section176111311166"></a>
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
- **用户身份凭据管理:** 向上提供系统内统一的用户身份凭据信息管理接口,向下通过认证执行器管理模块,调用系统内的认证资源,完成用户身份凭据的生命周期管理和安全存储。 - **用户身份凭据管理:** 向上提供系统内统一的用户身份凭据信息管理接口,向下通过认证执行器管理模块,调用系统内的认证资源,完成用户身份凭据的生命周期管理和安全存储。
- **认证执行器管理:** 提供认证资源管理和认证会话管理功能,支持系统内身份认证相关**执行器**<sup></sup>统一管理和协同调度,支持不同类型的身份认证执行器灵活对接。 - **认证执行器管理:** 提供认证资源管理和认证会话管理功能,支持系统内身份认证相关**执行器**<sup></sup>统一管理和协同调度,支持不同类型的身份认证执行器灵活对接。
基于统一用户认证框架,系统可以扩展支持多种认证能力。OpenHarmony框架当前已经支持的**认证执行器**包含口令认证和人脸认证,开发者如果想实现新的认证执行器,只需要在新的部件内实现认证相关功能,并且按照执行器管理模块定义的接口与统一用户认证框架对接即可。 基于统一用户认证框架,系统可以扩展支持多种认证能力。OpenHarmony框架当前已经支持的**认证执行器**包含口令认证和人脸认证,开发者如果想实现新的认证执行器,只需要在新的部件内实现认证相关功能,并且按照执行器管理模块定义的接口与统一用户认证框架对接即可。
*注:在用户IAM子系统内,将一个用户身份认证操作的最小执行单元称为**执行器**,如一个口令认证模块,处理口令采集、口令处理和比对、口令安全存储的全过程,因此可以抽象为一个口令认证的全功能执行器。* *注:在用户IAM子系统内,将一个用户身份认证操作的最小执行单元称为**执行器**,如一个口令认证模块,处理口令采集、口令处理和比对、口令安全存储的全过程,因此可以抽象为一个口令认证的全功能执行器。*
...@@ -31,34 +31,32 @@ ...@@ -31,34 +31,32 @@
```undefined ```undefined
//base/user_iam //base/user_iam
├── auth_executor_mgr # 认证执行器管理部件,支持系统内统一的认证资源管理和调度 ├── user_auth_framework # 用户认证框架,包括用户认证、凭据管理和执行器管理
├── face_auth # 人脸认证部件,与认证执行器管理对接,支持人脸录入、删除和人脸认证功能 ├── face_auth # 人脸认证部件,与认证执行器管理对接,支持人脸录入、删除和人脸认证功能
├── pin_auth # 口令认证部件,与认证执行器管理对接,支持口令录入、删除和口令认证功能 ├── pin_auth # 口令认证部件,与认证执行器管理对接,支持口令录入、删除和口令认证功能
├── user_auth # 统一用户认证部件,提供统一用户身份认证功能
└── user_idm # 用户身份凭据管理部件,提供系统内统一的用户身份凭据信息管理功能
``` ```
## 约束 ## 约束
1. 用户身份凭据信息管理类操作,是系统内的关键操作,相关接口只支持系统基础应用调用。 1. 用户身份凭据信息管理类操作,是系统内的关键操作,相关接口只支持系统基础应用调用。
2. 用户身份认证执行器内真正完成用户身份认证凭据信息的处理,因此只支持系统服务实现执行器的功能,与认证执行器管理模块对接。 2. 执行器内部真正完成用户凭据信息的处理,因此只支持系统服务实现执行器的功能,与认证执行器管理模块对接。
## 说明 ## 说明
### 使用说明 ### 使用说明
1. 统一用户认证框架必须配合一个认证执行器才可以使用。 1. 统一用户认证框架必须配合一个认证执行器才可以使用。
2. 系统内默认存在的第一个认证执行器应该是口令认证 2. 系统内默认存在的第一个认证执行器应该是口令执行器
## 相关仓 ## 相关仓
[useriam_auth_executor_mgr](https://gitee.com/openharmony/useriam_auth_executor_mgr) [useriam_user_auth_framework](https://gitee.com/openharmony/useriam_user_auth_framework)
[useriam_user_idm](https://gitee.com/openharmony/useriam_user_idm) [useriam_pin_auth](https://gitee.com/openharmony/useriam_pin_auth)
[useriam_user_auth](https://gitee.com/openharmony/useriam_user_auth) [useriam_face_auth](https://gitee.com/openharmony/useriam_face_auth)
[useriam_pin_auth](https://gitee.com/openharmony/useriam_pin_auth) [drivers_interface](https://gitee.com/openharmony/drivers_interface)
[useriam_faceauth](https://gitee.com/openharmony/useriam_faceauth) [drivers_peripheral](https://gitee.com/openharmony/drivers_peripheral)
\ No newline at end of file
...@@ -32,12 +32,13 @@ ...@@ -32,12 +32,13 @@
**表1** 版本软件和工具配套关系 **表1** 版本软件和工具配套关系
| 软件 | 版本 | 备注 | | 软件 | 版本 | 备注 |
| -------- | -------- | -------- | | -------- | -------- | -------- |
| OpenHarmony | 3.1.1&nbsp;Release | NA | | OpenHarmony | 3.1.1&nbsp;Release | NA |
| SDK | Ohos_sdk_full&nbsp;3.1.6.5 (API&nbsp;Version&nbsp;8&nbsp;Release) | NA | | Public SDK | Ohos_sdk_public&nbsp;3.1.6.6 (API&nbsp;Version&nbsp;8&nbsp;Release) | 面向应用开发者提供,不包含需要使用系统权限的系统接口。<br/>DevEco Studio 3.0 Beta4版本起,通过DevEco Studio获取的SDK默认为Public SDK。<br/>该版本Public SDK于7月6日单独更新发布。 |
| HUAWEI&nbsp;DevEco&nbsp;Studio(可选) | 3.0&nbsp;Beta3&nbsp;for&nbsp;OpenHarmony | OpenHarmony应用开发推荐使用 | | Full SDK | Ohos_sdk_full&nbsp;3.1.6.5 (API&nbsp;Version&nbsp;8&nbsp;Release) | 面向OEM厂商提供,包含了需要使用系统权限的系统接口。<br/>使用Full SDK时需要手动从镜像站点获取,并在DevEco Studio中替换,具体操作可参考[替换指南](../application-dev/quick-start/full-sdk-switch-guide.md)。 |
| HUAWEI&nbsp;DevEco&nbsp;Device&nbsp;Tool(可选) | 3.0&nbsp;Release | OpenHarmony智能设备集成开发环境推荐使用 | | HUAWEI&nbsp;DevEco&nbsp;Studio(可选) | 3.0&nbsp;Beta3&nbsp;for&nbsp;OpenHarmony | OpenHarmony应用开发推荐使用。 |
| HUAWEI&nbsp;DevEco&nbsp;Device&nbsp;Tool(可选) | 3.0&nbsp;Release | OpenHarmony智能设备集成开发环境推荐使用。 |
## 源码获取 ## 源码获取
...@@ -101,8 +102,10 @@ repo forall -c 'git lfs pull' ...@@ -101,8 +102,10 @@ repo forall -c 'git lfs pull'
| Hi3861轻量系统解决方案(二进制) | 3.1.1 Release | [站点](https://repo.huaweicloud.com/openharmony/os/3.1.1/hispark_pegasus.tar.gz) | [SHA256校验码](https://repo.huaweicloud.com/openharmony/os/3.1.1/hispark_pegasus.tar.gz.sha256) | | Hi3861轻量系统解决方案(二进制) | 3.1.1 Release | [站点](https://repo.huaweicloud.com/openharmony/os/3.1.1/hispark_pegasus.tar.gz) | [SHA256校验码](https://repo.huaweicloud.com/openharmony/os/3.1.1/hispark_pegasus.tar.gz.sha256) |
| Hi3516轻量系统解决方案-LiteOS(二进制) | 3.1.1 Release | [站点](https://repo.huaweicloud.com/openharmony/os/3.1.1/hispark_taurus.tar.gz) | [SHA256校验码](https://repo.huaweicloud.com/openharmony/os/3.1.1/hispark_taurus.tar.gz.sha256) | | Hi3516轻量系统解决方案-LiteOS(二进制) | 3.1.1 Release | [站点](https://repo.huaweicloud.com/openharmony/os/3.1.1/hispark_taurus.tar.gz) | [SHA256校验码](https://repo.huaweicloud.com/openharmony/os/3.1.1/hispark_taurus.tar.gz.sha256) |
| Hi3516轻量系统解决方案-Linux(二进制) | 3.1.1 Release | [站点](https://repo.huaweicloud.com/openharmony/os/3.1.1/hispark_taurus_linux.tar.gz) | [SHA256校验码](https://repo.huaweicloud.com/openharmony/os/3.1.1/hispark_taurus_linux.tar.gz.sha256) | | Hi3516轻量系统解决方案-Linux(二进制) | 3.1.1 Release | [站点](https://repo.huaweicloud.com/openharmony/os/3.1.1/hispark_taurus_linux.tar.gz) | [SHA256校验码](https://repo.huaweicloud.com/openharmony/os/3.1.1/hispark_taurus_linux.tar.gz.sha256) |
| 标准系统SDK包(Mac) | 3.1.1 Release | [站点](https://repo.huaweicloud.com/openharmony/os/3.1.1/ohos-sdk-mac-full.tar.gz) | [SHA256校验码](https://repo.huaweicloud.com/openharmony/os/3.1.1/ohos-sdk-mac-full.tar.gz.sha256) | | 标准系统Full SDK包(Mac) | 3.1.1 Release | [站点](https://repo.huaweicloud.com/openharmony/os/3.1.1/ohos-sdk-mac-full.tar.gz) | [SHA256校验码](https://repo.huaweicloud.com/openharmony/os/3.1.1/ohos-sdk-mac-full.tar.gz.sha256) |
| 标准系统SDK包(Windows\Linux) | 3.1.1 Release | [站点](https://repo.huaweicloud.com/openharmony/os/3.1.1/ohos-sdk-full.tar.gz) | [SHA256校验码](https://repo.huaweicloud.com/openharmony/os/3.1.1/ohos-sdk-full.tar.gz.sha256) | | 标准系统Full SDK包(Windows\Linux) | 3.1.1 Release | [站点](https://repo.huaweicloud.com/openharmony/os/3.1.1/ohos-sdk-full.tar.gz) | [SHA256校验码](https://repo.huaweicloud.com/openharmony/os/3.1.1/ohos-sdk-full.tar.gz.sha256) |
| 标准系统Public SDK包(Mac) | 3.1.1 Release | [站点](https://repo.huaweicloud.com/openharmony/os/3.1.1/ohos-sdk-mac-public.tar.gz) | [SHA256校验码](https://repo.huaweicloud.com/openharmony/os/3.1.1/ohos-sdk-mac-public.tar.gz.sha256) |
| 标准系统Public SDK包(Windows\Linux) | 3.1.1 Release | [站点](https://repo.huaweicloud.com/openharmony/os/3.1.1/ohos-sdk-public.tar.gz) | [SHA256校验码](https://repo.huaweicloud.com/openharmony/os/3.1.1/ohos-sdk-public.tar.gz.sha256) |
## 更新说明 ## 更新说明
...@@ -114,21 +117,22 @@ repo forall -c 'git lfs pull' ...@@ -114,21 +117,22 @@ repo forall -c 'git lfs pull'
**表3** 版本新增特性表 **表3** 版本新增特性表
| 子系统名称 | 标准系统 | 轻量、小型系统 | | 子系统名称 | 标准系统 | 轻量、小型系统 |
| -------- | -------- | -------- | | -------- | -------- | -------- |
| 系统服务管理 | 新增添加群组校验机制。<br/>主要涉及如下需求:<br/>I52G5Q&nbsp;添加群组校验机制 | NA | | SDK | SDK区分Full SDK和Public SDK进行发布。<br/>*说明:API Version 8的Public SDK首次于7月6日单独更新发布。* | NA |
| 电源管理 | 实现兼容亮度调节和电池信息查询API接口能力。<br/>主要涉及如下需求:<br/>I526UP&nbsp;支持\@system.brightness亮度调节接口<br/>I526UP&nbsp;支持\@system.battery电池信息查询接口 | NA | | 系统服务管理 | 新增添加群组校验机制。<br/>主要涉及如下需求:<br/>I52G5Q&nbsp;添加群组校验机制 | NA |
| 包管理 | 实现查询指定应用是否安装接口能力。<br/>主要涉及如下需求:<br/>I56EWD&nbsp;支持对测试框架的配置<br/>I55RZJ&nbsp;查询指定应用是否安装 | NA | | 电源管理 | 实现兼容亮度调节和电池信息查询API接口能力。<br/>主要涉及如下需求:<br/>I526UP&nbsp;支持\@system.brightness亮度调节接口<br/>I526UP&nbsp;支持\@system.battery电池信息查询接口 | NA |
| 位置服务 | 实现兼容基本定位API接口能力。<br/>主要涉及如下需求:<br/>I53WFP&nbsp;支持基本定位能力,兼容system&nbsp;API | NA | | 包管理 | 实现查询指定应用是否安装接口能力。<br/>主要涉及如下需求:<br/>I56EWD&nbsp;支持对测试框架的配置<br/>I55RZJ&nbsp;查询指定应用是否安装 | NA |
| 元能力 | 实现FA模型支持查询/设置组件横竖屏状态、组件锁屏显示和组件启动亮屏。<br/>主要涉及如下需求:<br/>I56EH7&nbsp;FA模型支持查询/设置组件横竖屏状态<br/>I50D5Y&nbsp;FA模型支持组件锁屏显示<br/>I56EH7&nbsp;FA模型支持组件启动亮屏<br/>I55WB0&nbsp;卡片数据支持携带图片<br/>I55WB0&nbsp;FA卡片能力补齐-formManager重构<br/>I55WB0&nbsp;FA卡片能力补齐-支持卡片状态查询<br/>I55WB0&nbsp;FA卡片能力补齐-支持删除无效卡片<br/>I55WB0&nbsp;FA卡片能力补齐-支持卡片可见状态与更新状态单独设置<br/>I50D8H&nbsp;支持拦截uncatchedexception<br/>I50D91&nbsp;支持ANR(Application&nbsp;Not&nbsp;Response)处理 | NA | | 位置服务 | 实现兼容基本定位API接口能力。<br/>主要涉及如下需求:<br/>I53WFP&nbsp;支持基本定位能力,兼容system&nbsp;API | NA |
| 媒体 | 实现音频焦点、音频解码能力相关API接口能力。<br/>主要涉及如下需求:<br/>I56REO&nbsp;音频部件焦点/设备接口OH补齐<br/>I522W0&nbsp;支持amr格式音频编码枚举类型 | NA | | 元能力 | 实现FA模型支持查询/设置组件横竖屏状态、组件锁屏显示和组件启动亮屏。<br/>主要涉及如下需求:<br/>I56EH7&nbsp;FA模型支持查询/设置组件横竖屏状态<br/>I50D5Y&nbsp;FA模型支持组件锁屏显示<br/>I56EH7&nbsp;FA模型支持组件启动亮屏<br/>I55WB0&nbsp;卡片数据支持携带图片<br/>I55WB0&nbsp;FA卡片能力补齐-formManager重构<br/>I55WB0&nbsp;FA卡片能力补齐-支持卡片状态查询<br/>I55WB0&nbsp;FA卡片能力补齐-支持删除无效卡片<br/>I55WB0&nbsp;FA卡片能力补齐-支持卡片可见状态与更新状态单独设置<br/>I50D8H&nbsp;支持拦截uncatchedexception<br/>I50D91&nbsp;支持ANR(Application&nbsp;Not&nbsp;Response)处理 | NA |
| 窗口 | 支持对窗口属性进行设置。<br/>主要涉及如下需求:<br/>I56EH7&nbsp;支持窗口属性设置 | NA | | 媒体 | 实现音频焦点、音频解码能力相关API接口能力。<br/>主要涉及如下需求:<br/>I56REO&nbsp;音频部件焦点/设备接口OH补齐<br/>I522W0&nbsp;支持amr格式音频编码枚举类型 | NA |
| 网络管理 | 实现兼容WebSocket、fetch等API接口能力,支持以太网连接。<br/>主要涉及如下需求:<br/>I53CKH&nbsp;支持兼容\@system.fetch<br/>I53CJX&nbsp;支持兼容\@system.network<br/>I53CKT&nbsp;支持WebSocket<br/>I580PC&nbsp;支持以太网连接 | NA | | 窗口 | 支持对窗口属性进行设置。<br/>主要涉及如下需求:<br/>I56EH7&nbsp;支持窗口属性设置 | NA |
| Misc软件服务 | 实现兼容http文件下载API接口能力。<br/>主要涉及如下需求:<br/>I56Q4X&nbsp;支持文件下载接口 | NA | | 网络管理 | 实现兼容WebSocket、fetch等API接口能力,支持以太网连接。<br/>主要涉及如下需求:<br/>I53CKH&nbsp;支持兼容\@system.fetch<br/>I53CJX&nbsp;支持兼容\@system.network<br/>I53CKT&nbsp;支持WebSocket<br/>I580PC&nbsp;支持以太网连接 | NA |
| 事件通知 | 实现通知发送和取消的API接口能力。<br/>主要涉及如下需求:<br/>I50EEW&nbsp;通知发送和取消功能的接口能力补齐 | NA | | Misc软件服务 | 实现兼容http文件下载API接口能力。<br/>主要涉及如下需求:<br/>I56Q4X&nbsp;支持文件下载接口 | NA |
| 分布式数据管理 | 实现兼容\@system.storage&nbsp;API接口能力。<br/>主要涉及如下需求:<br/>I56RF3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;支持\@system.storage接口 | NA | | 事件通知 | 实现通知发送和取消的API接口能力。<br/>主要涉及如下需求:<br/>I50EEW&nbsp;通知发送和取消功能的接口能力补齐 | NA |
| 启动恢复 | 实现兼容\@system.device&nbsp;API接口能力。<br/>主要涉及如下需求:<br/>I56GBS&nbsp;支持\@system.device相关API | NA | | 分布式数据管理 | 实现兼容\@system.storage&nbsp;API接口能力。<br/>主要涉及如下需求:<br/>I56RF3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;支持\@system.storage接口 | NA |
| 应用 | 联系人支持第三方应用调用系统通话能力,提供用户基础通信能力。<br/>主要涉及如下需求:<br/>I58ZQ4&nbsp;联系人支持第三方应用调用系统通话能力 | NA | | 启动恢复 | 实现兼容\@system.device&nbsp;API接口能力。<br/>主要涉及如下需求:<br/>I56GBS&nbsp;支持\@system.device相关API | NA |
| 应用 | 联系人支持第三方应用调用系统通话能力,提供用户基础通信能力。<br/>主要涉及如下需求:<br/>I58ZQ4&nbsp;联系人支持第三方应用调用系统通话能力 | NA |
### API变更 ### API变更
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册