diff --git a/en/application-dev/quick-start/typescript-to-arkts-migration-guide.md b/en/application-dev/quick-start/typescript-to-arkts-migration-guide.md index a6f0789a3bba83341f15c97e40b6d911a453bb08..d6122e6991a3e6ebadc58158b3eab2ceda985482 100644 --- a/en/application-dev/quick-start/typescript-to-arkts-migration-guide.md +++ b/en/application-dev/quick-start/typescript-to-arkts-migration-guide.md @@ -281,7 +281,7 @@ data by numeric indices. **TypeScript** ```typescript -var x = {'name': 1, 2: 3} +var x = { 'name': 'x', 2: '3' } console.log(x['name']) console.log(x[2]) @@ -291,18 +291,18 @@ console.log(x[2]) ```typescript class X { - public name: number = 0 + public name: string = '' } -let x: X = {name: 1} +let x: X = { name: 'x' } console.log(x.name) -let y = [1, 2, 3] +let y = ['a', 'b', 'c'] console.log(y[2]) // If you still need a container to store keys of different types, use Map. -let z = new Map() -z.set('name', 1) -z.set(2, 2) +let z = new Map() +z.set('name', '1') +z.set(2, '2') console.log(z.get('name')) console.log(z.get(2)) ``` diff --git a/en/application-dev/reference/apis/js-apis-inputmonitor.md b/en/application-dev/reference/apis/js-apis-inputmonitor.md index 7c4571fea229b1aa88547d6c439ae4633713c356..f8bbe103e2d9ff0f8a9e8105aef45453ccf3a461 100644 --- a/en/application-dev/reference/apis/js-apis-inputmonitor.md +++ b/en/application-dev/reference/apis/js-apis-inputmonitor.md @@ -79,6 +79,64 @@ try { } ``` +## inputMonitor.on('mouse')11+ + +on(type: 'mouse', rect: display.Rect[], receiver: Callback<MouseEvent>): void + +Enables listening for mouse events and trigger a callback task when the mouse moves within the specified rectangular area. + +**Required permissions**: ohos.permission.INPUT_MONITORING + +**System capability**: SystemCapability.MultimodalInput.Input.InputMonitor + +**Parameters** + +| Name | Type | Mandatory | Description | +| -------- | -------------------------- | ---- | ------------------- | +| type | string | Yes | Event type. This field has a fixed value of **mouse**. | +| rect | display.Rect[] | Yes | The rectangular area that can trigger the callback task, the number of rectangles can be 1 or 2. | +| receiver | Callback<[MouseEvent](./js-apis-mouseevent.md)> | Yes | Callback used to return the mouse event | + + **Example** + +```js +import { MouseEvent } from '@ohos.multimodalInput.mouseEvent'; +import promptAction from '@ohos.promptAction' +import display from '@ohos.display'; + +/** + * A callback task triggered when the mouse is within the rectangular area. + */ +function callback(mouseEvent : MouseEvent) { + promptAction.showToast({ + message: `Monitoring successful:${JSON.stringify(mouseEvent)}` + }) + console.log(`Monitor on success ${JSON.stringify(mouseEvent)}`); + return false; +}; + +/** + * The rectangular area that triggers the callback event. + */ +let rect: display.Rect[] = [{ + left: 100, + top: 100, + width: 100, + height: 100 +}, { + left: 600, + top: 100, + width: 100, + height: 100 +}]; + +try { + inputMonitor.on('mouse', rect, callback); +} catch (error) { + console.log(`Monitor on failed, error: ${JSON.stringify(error, [`code`, `message`])}`); +} +``` + ## inputMonitor.off('touch') off(type: 'touch', receiver?: TouchEventReceiver): void diff --git a/zh-cn/application-dev/account/login-and-bind-distributed-account.md b/zh-cn/application-dev/account/login-and-bind-distributed-account.md new file mode 100644 index 0000000000000000000000000000000000000000..0452765525f61fcda2eb786a196ab51e2ccef5ff --- /dev/null +++ b/zh-cn/application-dev/account/login-and-bind-distributed-account.md @@ -0,0 +1,167 @@ +# 登录绑定分布式帐号 + +分布式帐号在登陆时就与当前系统帐号进行一对一绑定,在多用户的设备中,分布式帐号在登陆时还能与指定的系统帐号进行绑定。 + +## 前置要求 + +在开发过程中,需要配置ohos.permission.MANAGE_DISTRIBUTED_ACCOUNTS权限。在DevEco Studio工程的module.json5文件中增加下列字段: + +```json +"requestPermissions": [ + { + "name": "ohos.permission.MANAGE_DISTRIBUTED_ACCOUNTS" + } +] +``` + +在使用分布式帐号的接口之前,首先需要完成: + +1.导入[分布式帐号(distributedAccount)](../reference/apis/js-apis-distributed-account.md)模块。 +```ts +import account_distributedAccount from '@ohos.account.distributedAccount'; +``` + +2.获取分布式帐号的单实例对象。 +```ts +const distributedAccountAbility = account_distributedAccount.getDistributedAccountAbility(); +``` + +## 场景1:在当前的系统帐号上登录绑定分布式帐号 + +### 场景描述 + +用户在使用应用时,如果需要有分布式帐号(如华为帐号)的支持,开发者可以通过下列步骤实现分布式帐号的登陆,并与当前的系统帐号绑定。 + +### 操作步骤 + +1.准备需要的参数。DistributedInfo类型存储的是分布式帐号信息,其中在设置帐号信息时必填的属性有name, id, name和id属性由开发者决定,event属性需填入字符串"Ohos.account.event.LOGIN"。 +```ts +let distributedInfo: account_distributedAccount.DistributedInfo = { + name: 'ZhangSan', + id: '12345', + event: 'Ohos.account.event.LOGIN', +}; +``` + +2.调用distributedAccount模块的setOsAccountDistributedInfo接口,将当前系统帐号与指定分布式帐号绑定到一起。 +```ts +distributedAccountAbility.setOsAccountDistributedInfo(distributedInfo).then(() => { + console.log('setOsAccountDistributedInfo successfully'); +}).catch((err: BusinessError) => { + console.log('setOsAccountDistributedInfo exception: ' + JSON.stringify(err)); +}); +``` + +3.在帐号绑定之后,可以调用getOsAccountDistributedInfo接口查看分布式帐号的登陆信息。 +```ts +distributedAccountAbility.getOsAccountDistributedInfo().then((data: account_distributedAccount.DistributedInfo) => { + console.log('distributed information: ' + JSON.stringify(data)); +}).catch((err: BusinessError) => { + console.log('getOsAccountDistributedInfo exception: ' + JSON.stringify(err)); +}); +``` + +### 完整代码 + +```ts +import account_distributedAccount from '@ohos.account.distributedAccount'; +import { BusinessError } from '@ohos.base'; + +const distributedAccountAbility = account_distributedAccount.getDistributedAccountAbility(); +let distributedInfo: account_distributedAccount.DistributedInfo = { + name: 'ZhangSan', + id: '12345', + event: 'Ohos.account.event.LOGIN', +}; + +try { + distributedAccountAbility.setOsAccountDistributedInfo(distributedInfo).then(() => { + console.log('setOsAccountDistributedInfo successfully'); + }).catch((err: BusinessError) => { + console.log('setOsAccountDistributedInfo exception: ' + JSON.stringify(err)); + }); +} catch (err) { + console.log('setOsAccountDistributedInfo exception: ' + JSON.stringify(err)); +} + +try { + distributedAccountAbility.getOsAccountDistributedInfo().then((data: account_distributedAccount.DistributedInfo) => { + console.log('distributed information: ' + JSON.stringify(data)); + }).catch((err: BusinessError) => { + console.log('getOsAccountDistributedInfo exception: ' + JSON.stringify(err)); + }); +} catch (err) { + console.log('getOsAccountDistributedInfo fail: ' + JSON.stringify(err)); +} +``` + +## 场景2:在指定的系统帐号上登录绑定分布式帐号 + +### 场景描述 + +在多用户的设备上,如果需要有分布式帐号(如华为帐号)的支持,开发者可以通过下列步骤实现分布式帐号的登陆,并与指定的系统帐号绑定。 + +### 操作步骤 + +1.准备需要的参数。localId可以通过调用[系统帐号](../reference/apis/js-apis-osAccount.md)的相应接口得到。distributedInfo的name和id属性由开发者决定,event属性需填入字符串"Ohos.account.event.LOGIN"。 +```ts +let localId: number = 100; +let distributedInfo: account_distributedAccount.DistributedInfo = { + name: 'ZhangSan', + id: '12345', + event: 'Ohos.account.event.LOGIN', +}; +``` + +2.调用distributedAccount模块的setOsAccountDistributedInfoByLocalId接口,将当前系统帐号与指定分布式帐号绑定到一起。 +```ts +distributedAccountAbility.setOsAccountDistributedInfoByLocalId(localId, distributedInfo).then(() => { + console.log('setOsAccountDistributedInfoByLocalId successfully'); +}).catch((err: BusinessError) => { + console.log('setOsAccountDistributedInfoByLocalId exception: ' + JSON.stringify(err)); +}); +``` + +3.在帐号绑定之后,可以调用getOsAccountDistributedInfoByLocalId接口查看分布式帐号的登陆信息。 +```ts +distributedAccountAbility.getOsAccountDistributedInfoByLocalId(localId).then((data: account_distributedAccount.DistributedInfo) => { + console.log('distributed information: ' + JSON.stringify(data)); +}).catch((err: BusinessError) => { + console.log('getOsAccountDistributedInfoByLocalId exception: ' + JSON.stringify(err)); +}); +``` + +### 完整代码 + +```ts +import account_distributedAccount from '@ohos.account.distributedAccount'; +import { BusinessError } from '@ohos.base'; + +const distributedAccountAbility = account_distributedAccount.getDistributedAccountAbility(); +let localId: number = 100; +let distributedInfo: account_distributedAccount.DistributedInfo = { + name: 'ZhangSan', + id: '12345', + event: 'Ohos.account.event.LOGIN', +}; + +try { + distributedAccountAbility.setOsAccountDistributedInfoByLocalId(localId, distributedInfo).then(() => { + console.log('setOsAccosetOsAccountDistributedInfoByLocalIduntDistributedInfo successfully'); + }).catch((err: BusinessError) => { + console.log('setOsAccountDistributedInfoByLocalId exception: ' + JSON.stringify(err)); + }); +} catch (err) { + console.log('setOsAccountDistributedInfoByLocalId exception: ' + JSON.stringify(err)); +} + +try { + distributedAccountAbility.getOsAccountDistributedInfoByLocalId(localId).then((data: account_distributedAccount.DistributedInfo) => { + console.log('distributed information: ' + JSON.stringify(data)); + }).catch((err: BusinessError) => { + console.log('getOsAccountDistributedInfoByLocalId exception: ' + JSON.stringify(err)); + }); +} catch (err) { + console.log('getOsAccountDistributedInfoByLocalId fail: ' + JSON.stringify(err)); +} +``` diff --git a/zh-cn/application-dev/account/logout-and-unbound-distributed-account.md b/zh-cn/application-dev/account/logout-and-unbound-distributed-account.md new file mode 100644 index 0000000000000000000000000000000000000000..40542e1838dda269ddda4c1336abc2d330fcefb6 --- /dev/null +++ b/zh-cn/application-dev/account/logout-and-unbound-distributed-account.md @@ -0,0 +1,129 @@ +# 登出解绑分布式帐号 + +分布式帐号在提供登陆与绑定系统帐号的功能的同时,也提供了登出与解绑系统帐号的功能。 + +## 前置要求 + +在开发过程中,需要配置ohos.permission.MANAGE_DISTRIBUTED_ACCOUNTS权限。在DevEco Studio工程的module.json5文件中增加下列字段: + +```json +"requestPermissions": [ + { + "name": "ohos.permission.MANAGE_DISTRIBUTED_ACCOUNTS" + } +] +``` + +在使用分布式帐号的接口之前,首先需要完成: + +1.导入[分布式帐号(distributedAccount)](../reference/apis/js-apis-distributed-account.md)模块。 +```ts +import account_distributedAccount from '@ohos.account.distributedAccount'; +``` + +2.获取分布式帐号的单实例对象。 +```ts +const distributedAccountAbility = account_distributedAccount.getDistributedAccountAbility(); +``` + +## 场景1:在当前的系统帐号上登出解绑分布式帐号 + +### 场景描述 + +在使用分布式帐号的应用中,开发者需要提供登出解绑分布式帐号的功能。 + +### 操作步骤 + +1.准备需要的参数,DistributedInfo类型存储的是分布式帐号信息,其中在设置帐号信息时必填的属性有name, id, name和id属性由开发者决定,event属性需填入字符串"Ohos.account.event.LOGOUT"。 +```ts +let distributedInfo: account_distributedAccount.DistributedInfo = { + name: 'ZhangSan', + id: '12345', + event: 'Ohos.account.event.LOGOUT', +}; +``` + +2.调用distributedAccount模块的setOsAccountDistributedInfo接口,将当前系统帐号与指定分布式帐号解绑。 +```ts +distributedAccountAbility.setOsAccountDistributedInfo(distributedInfo).then(() => { + console.log('setOsAccountDistributedInfo successfully'); +}).catch((err: BusinessError) => { + console.log('setOsAccountDistributedInfo exception: ' + JSON.stringify(err)); +}); +``` + +### 完整代码 + +```ts +import account_distributedAccount from '@ohos.account.distributedAccount'; +import { BusinessError } from '@ohos.base'; + +const distributedAccountAbility = account_distributedAccount.getDistributedAccountAbility(); +let distributedInfo: account_distributedAccount.DistributedInfo = { + name: 'ZhangSan', + id: '12345', + event: 'Ohos.account.event.LOGOUT', +}; + +try { + distributedAccountAbility.setOsAccountDistributedInfo(distributedInfo).then(() => { + console.log('setOsAccountDistributedInfo successfully'); + }).catch((err: BusinessError) => { + console.log('setOsAccountDistributedInfo exception: ' + JSON.stringify(err)); + }); +} catch (err) { + console.log('setOsAccountDistributedInfo exception: ' + JSON.stringify(err)); +} +``` + +## 场景2:在指定的系统帐号上登出解绑分布式帐号 + +### 场景描述 + +在多用户的设备上,开发者需要为使用分布式帐号的应用提供登出分布式帐号并与指定系统帐号解绑的功能。 + +### 操作步骤 + +1.准备需要的参数。localId可以通过调用[系统帐号](../reference/apis/js-apis-osAccount.md)的相应接口得到。distributedInfo的name和id属性由开发者决定,event属性需填入字符串"Ohos.account.event.LOGOUT"。 +```ts +let localId: number = 100; +let distributedInfo: account_distributedAccount.DistributedInfo = { + name: 'ZhangSan', + id: '12345', + event: 'Ohos.account.event.LOGOUT', +}; +``` + +2.调用distributedAccount模块的setOsAccountDistributedInfoByLocalId接口,将当前系统帐号与指定分布式帐号解绑。 +```ts +distributedAccountAbility.setOsAccountDistributedInfoByLocalId(localId, distributedInfo).then(() => { + console.log('setOsAccountDistributedInfoByLocalId successfully'); +}).catch((err: BusinessError) => { + console.log('setOsAccountDistributedInfoByLocalId exception: ' + JSON.stringify(err)); +}); +``` + +### 完整代码 + +```ts +import account_distributedAccount from '@ohos.account.distributedAccount'; +import { BusinessError } from '@ohos.base'; + +const distributedAccountAbility = account_distributedAccount.getDistributedAccountAbility(); +let localId: number = 100; +let distributedInfo: account_distributedAccount.DistributedInfo = { + name: 'ZhangSan', + id: '12345', + event: 'Ohos.account.event.LOGOUT', +}; + +try { + distributedAccountAbility.setOsAccountDistributedInfoByLocalId(localId, distributedInfo).then(() => { + console.log('setOsAccosetOsAccountDistributedInfoByLocalIduntDistributedInfo successfully'); + }).catch((err: BusinessError) => { + console.log('setOsAccountDistributedInfoByLocalId exception: ' + JSON.stringify(err)); + }); +} catch (err) { + console.log('setOsAccountDistributedInfoByLocalId exception: ' + JSON.stringify(err)); +} +``` diff --git a/zh-cn/application-dev/account/manage-application-account.md b/zh-cn/application-dev/account/manage-application-account.md new file mode 100644 index 0000000000000000000000000000000000000000..20a09073d1dd1098a63796d627fb14168e14d2a2 --- /dev/null +++ b/zh-cn/application-dev/account/manage-application-account.md @@ -0,0 +1,183 @@ +# 管理应用帐号 + +应用帐号是应用自定义的帐号,在使用中开发者可以添加、删除、查询应用帐号。 + +## 前置要求 + +在使用应用帐号的接口之前,首先需要完成: + +1.导入[应用帐号(appAccount)](../reference/apis/js-apis-appAccount.md)模块。 +```ts +import account_appAccount from '@ohos.account.appAccount'; +``` + +2.获取分布式帐号的单实例对象。 +```ts +const appAccountManager = account_appAccount.createAppAccountManager(); +``` + +## 场景1:添加应用帐号 + +### 场景描述 + +用户在使用第三方应用时,往往需要注册应用的帐号,此时开发者需要使用应用帐号模块创建应用帐号。 + +### 操作步骤 + +1.准备需要的参数。name参数由开发者指定,options是CreateAccountOptions类型的参数,其中只有customData属性,为键值对类型。 + +```ts +let name: string = "ZhangSan"; +let options: account_appAccount.CreateAccountOptions = { + customData: { + age: '10' + }, +}; +``` + +2.调用createAccount接口创建应用帐号。 + +```ts +appAccountManager.createAccount(name, options).then(() => { + console.log('createAccount successfully'); +}).catch((err: BusinessError) => { + console.log('createAccount failed, error: ' + JSON.stringify(err)); +}); +``` + +### 完整代码 + +```ts +import account_appAccount from '@ohos.account.appAccount'; +import { BusinessError } from '@ohos.base'; + +const appAccountManager = account_appAccount.createAppAccountManager(); +let name: string = "ZhangSan"; +let options: account_appAccount.CreateAccountOptions = { + customData: { + age: '10' + }, +}; + +try { + appAccountManager.createAccount(name, options).then(() => { + console.log('createAccount successfully'); + }).catch((err: BusinessError) => { + console.log('createAccount failed, error: ' + JSON.stringify(err)); + }); +} catch(err) { + console.log('createAccount exception: ' + JSON.stringify(err)); +} +``` + +## 场景2:删除应用帐号 + +### 场景描述 + +用户在退出第三方应用帐号或停止使用应用时,需要开发者提供删除应用帐号的功能。 + +### 操作步骤 + +1.准备需要的参数。name参数必须是已有的应用帐号的名称。 + +```ts +let name: string = "ZhangSan"; +``` + +2.调用removeAccount接口删除应用帐号。 + +```ts +appAccountManager.removeAccount(name).then(() => { + console.log('removeAccount successfully'); +}).catch((err: BusinessError) => { + console.log('removeAccount failed, error: ' + JSON.stringify(err)); +}); +``` + +### 完整代码 + +```ts +import account_appAccount from '@ohos.account.appAccount'; +import { BusinessError } from '@ohos.base'; + +const appAccountManager = account_appAccount.createAppAccountManager(); +let name: string = "ZhangSan"; + +try { + appAccountManager.removeAccount(name, options).then(() => { + console.log('removeAccount successfully'); + }).catch((err: BusinessError) => { + console.log('removeAccount failed, error: ' + JSON.stringify(err)); + }); +} catch(err) { + console.log('removeAccount exception: ' + JSON.stringify(err)); +} +``` + +## 场景3:查询应用帐号 + +### 场景描述 + +在第三方应用的使用中,需要显示帐号的信息。为此开发者需要提供应用帐号的查询功能。 + +### 操作步骤 + +1.准备参数。owner参数是应用的包名。 + +```ts +let owner: string = 'com.example.accountjsdemo2'; +``` + +2.调用接口。appAccount模块有两个接口可以获取到应用帐号,分别为: + +(1)getAllAccounts + +```ts +appAccountManager.getAllAccounts().then((data: account_appAccount.AppAccountInfo[]) => { + console.debug('getAllAccounts successfully, data: ' + JSON.stringify(data)); +}).catch((err: BusinessError) => { + console.debug('getAllAccounts failed, error: ' + JSON.stringify(err)); +}); +``` + +(2)getAccountsByOwner + +```ts +appAccountManager.getAccountsByOwner(owner).then((data: account_appAccount.AppAccountInfo[]) => { + console.debug('getAccountsByOwner successfully, data: ' + JSON.stringify(data)); +}).catch((err: BusinessError) => { + console.debug('getAccountsByOwner failed, error: ' + JSON.stringify(err)); +}); +``` + +## 完整代码 + +```ts +import account_appAccount from '@ohos.account.appAccount'; +import { BusinessError } from '@ohos.base'; + +const appAccountManager = account_appAccount.createAppAccountManager(); +let owner: string = 'com.example.accountjsdemo2'; + +if (owner.length != 0) { + try { + appAccountManager.getAllAccounts().then((data: account_appAccount.AppAccountInfo[]) => { + console.debug('getAllAccounts successfully, data: ' + JSON.stringify(data)); + }).catch((err: BusinessError) => { + console.debug('getAllAccounts failed, error: ' + JSON.stringify(err)); + }); + } catch (err) { + console.debug('getAllAccounts exception: ' + JSON.stringify(err)); + } +} else { + try { + appAccountManager.getAccountsByOwner(owner).then((data: account_appAccount.AppAccountInfo[]) => { + console.debug('getAccountsByOwner successfully, data: ' + JSON.stringify(data)); + }).catch((err: BusinessError) => { + console.debug('getAccountsByOwner failed, error: ' + JSON.stringify(err)); + }); + } catch (err) { + console.debug('getAccountsByOwner exception: ' + JSON.stringify(err)); + } +} +``` diff --git a/zh-cn/application-dev/account/save-and-retrive-account-data.md b/zh-cn/application-dev/account/save-and-retrive-account-data.md new file mode 100644 index 0000000000000000000000000000000000000000..3c14af41a91806c07b6b46ed6a84fbc686016c3e --- /dev/null +++ b/zh-cn/application-dev/account/save-and-retrive-account-data.md @@ -0,0 +1,493 @@ +# 存取帐号数据 + +开发者在获取到应用帐号的信息后,会对帐号数据进行存取 + +## 前置要求 + +在使用应用帐号的接口之前,首先需要完成: + +1.导入[应用帐号(appAccount)](../reference/apis/js-apis-appAccount.md)模块。 +```ts +import account_appAccount from '@ohos.account.appAccount'; +``` + +2.获取分布式帐号的单实例对象。 +```ts +const appAccountManager = account_appAccount.createAppAccountManager(); +``` + + +## 场景1:存取帐号的数据访问权限 + +### 场景描述 + +开发者需要变更应用帐号的数据访问权限。 + +### 操作步骤 + +1.准备参数。name和bundleName参数由开发者指定。 + +```ts +let name: string = 'ZhangSan'; +let bundleName: string = 'com.example.accountjsdemo'; +let isAccessible: boolean = false; +``` + +2.调用checkAppAccess接口,获取帐号的数据访问权限。 + +```ts +appAccountManager.checkAppAccess(name, bundleName).then((data: boolean) => { + console.log('checkAppAccess successfully, isAccessible: ' + data); +}).catch((err: BusinessError) => { + console.log('checkAppAccess failed, error: ' + JSON.stringify(err)); +}); +``` + +3.调用setAppAccess接口,设置帐号的数据访问权限。 + +```ts +appAccountManager.setAppAccess(name, bundleName, isAccessible).then(() => { + console.log('setAppAccess successfully'); +}).catch((err: BusinessError) => { + console.log('setAppAccess failed: ' + JSON.stringify(err)); +}); +``` + +### 完整代码 + +```ts +import account_appAccount from '@ohos.account.appAccount'; +import { BusinessError } from '@ohos.base'; + +const appAccountManager = account_appAccount.createAppAccountManager(); +let name: string = "ZhangSan"; +let bundleName: string = 'com.example.accountjsdemo'; +let isAccessible: boolean = false; + +try { + appAccountManager.checkAppAccess(name, bundleName).then((data: boolean) => { + console.log('checkAppAccess successfully, isAccessible: ' + data); + }).catch((err: BusinessError) => { + console.log('checkAppAccess failed, error: ' + JSON.stringify(err)); + }); +} catch (err) { + console.log('checkAppAccess exception: ' + JSON.stringify(err)); +} + +try { + appAccountManager.setAppAccess(name, bundleName, isAccessible).then(() => { + console.log('setAppAccess successfully'); + }).catch((err: BusinessError) => { + console.log('setAppAccess failed: ' + JSON.stringify(err)); + }); +} catch (err) { + console.log('setAppAccess exception: ' + JSON.stringify(err)); +} +``` + +## 场景2:存取帐号的数据同步功能标志 + +### 场景描述 + +开发者需要变更应用帐号的数据同步功能标志。 + +### 操作步骤 + +1.准备参数。name参数由开发者指定。 + +```ts +let name: string = 'ZhangSan'; +let isEnabled: boolean = false; +``` + +2.调用checkDataSyncEnabled接口,获取帐号的数据同步功能标志。 + +```ts +appAccountManager.checkDataSyncEnabled(name).then((data: boolean) => { + console.log('checkDataSyncEnabled successfully, data: ' + data); +}).catch((err: BusinessError) => { + console.log('checkDataSyncEnabled failed, error: ' + JSON.stringify(err)); +}); +``` + +3.调用setDataSyncEnabled接口,设置帐号的数据同步功能标志。 + +```ts +appAccountManager.setDataSyncEnabled(name, data).then(() => { + console.log('setDataSyncEnabled successfully'); +}).catch((err: BusinessError) => { + console.log('setDataSyncEnabled failed: ' + JSON.stringify(err)); +}); +``` + +4.checkDataSyncEnabled接口和setDataSyncEnabled接口需要配置ohos.permission.DISTRIBUTED_DATASYNC权限。在DevEco Studio工程的module.json5文件中增加下列字段: + +```json +"requestPermissions": [ + { + "name": "ohos.permission.DISTRIBUTED_DATASYNC" + } +] +``` + +### 完整代码 + +```ts +import account_appAccount from '@ohos.account.appAccount'; +import { BusinessError } from '@ohos.base'; + +const appAccountManager = account_appAccount.createAppAccountManager(); +let name: string = "ZhangSan"; +let isEnabled: boolean = false; + +try { + appAccountManager.checkDataSyncEnabled(name).then((data: boolean) => { + console.log('checkDataSyncEnabled successfully, data: ' + data); + }).catch((err: BusinessError) => { + console.log('checkDataSyncEnabled failed, error: ' + JSON.stringify(err)); + }); +} catch (err) { + console.log('checkDataSyncEnabled exception: ' + JSON.stringify(err)); +} + +try { + appAccountManager.setDataSyncEnabled(name, isEnabled).then(() => { + console.log('setDataSyncEnabled successfully'); + }).catch((err: BusinessError) => { + console.log('setDataSyncEnabled failed: ' + JSON.stringify(err)); + }); +} catch (err) { + console.log('setDataSyncEnabled exception: ' + JSON.stringify(err)); +} +``` + +## 场景3:存取帐号的凭据 + +### 场景描述 + +开发者需要变更应用帐号的凭据。 + +### 操作步骤 + +1.准备参数。name, credentialType, credential参数由开发者指定。 + +```ts +let name: string = 'ZhangSan'; +let credentialType: string = 'PIN_SIX'; +let credential: string = 'xxxxxx'; +``` + +2.调用getCredential接口,获取帐号的凭据。 + +```ts +appAccountManager.getCredential(name, credentialType).then((data: string) => { + console.log('getCredential successfully, data: ' + data); +}).catch((err: BusinessError) => { + console.log('getCredential failed, error: ' + JSON.stringify(err)); +}); +``` + +3.调用setCredential接口,设置帐号的凭据。 + +```ts +appAccountManager.setCredential(name, credentialType, credential).then(() => { + console.log('setCredential successfully'); +}).catch((err: BusinessError) => { + console.log('setCredential failed: ' + JSON.stringify(err)); +}); +``` + +### 完整代码 + +```ts +import account_appAccount from '@ohos.account.appAccount'; +import { BusinessError } from '@ohos.base'; + +const appAccountManager = account_appAccount.createAppAccountManager(); +let name: string = 'ZhangSan'; +let credentialType: string = 'PIN_SIX'; +let credential: string = 'xxxxxx'; + +try { + appAccountManager.getCredential(name, credentialType).then((data: string) => { + console.log('getCredential successfully, data: ' + data); + }).catch((err: BusinessError) => { + console.log('getCredential failed, error: ' + JSON.stringify(err)); + }); +} catch (err) { + console.log('getCredential exception: ' + JSON.stringify(err)); +} + +try { + appAccountManager.setCredential(name, credentialType, credential).then(() => { + console.log('setCredential successfully'); + }).catch((err: BusinessError) => { + console.log('setCredential failed: ' + JSON.stringify(err)); + }); +} catch (err) { + console.log('setCredential exception: ' + JSON.stringify(err)); +} +``` + +## 场景4:存取帐号的自定义数据 + +### 场景描述 + +开发者需要变更应用帐号的自定义数据。 + +### 操作步骤 + +1.准备参数。name, key, value参数由开发者指定。 + +```ts +let name: string = 'ZhangSan'; +let key: string = 'age'; +let value: string = '12'; +``` + +2.调用getCustomData接口,获取帐号的自定义数据。 + +```ts +appAccountManager.getCustomData(name, key).then((data: string) => { + console.log('getCustomData successfully, data: ' + data); +}).catch((err: BusinessError) => { + console.log('getCustomData failed, error: ' + JSON.stringify(err)); +}); +``` + +3.调用setCustomData接口,设置帐号的自定义数据。 + +```ts +appAccountManager.setCustomData(name, key, value).then(() => { + console.log('setCustomData successfully'); +}).catch((err: BusinessError) => { + console.log('setCustomData failed: ' + JSON.stringify(err)); +}); +``` + +### 完整代码 + +```ts +import account_appAccount from '@ohos.account.appAccount'; +import { BusinessError } from '@ohos.base'; + +const appAccountManager = account_appAccount.createAppAccountManager(); +let name: string = 'ZhangSan'; +let key: string = 'age'; +let value: string = '12'; + +try { + appAccountManager.getCustomData(name, key).then((data: string) => { + console.log('getCustomData successfully, data: ' + data); + }).catch((err: BusinessError) => { + console.log('getCustomData failed, error: ' + JSON.stringify(err)); + }); +} catch (err) { + console.log('getCustomData exception: ' + JSON.stringify(err)); +} + +try { + appAccountManager.setCustomData(name, key, value).then(() => { + console.log('setCustomData successfully'); + }).catch((err: BusinessError) => { + console.log('setCustomData failed: ' + JSON.stringify(err)); + }); +} catch (err) { + console.log('setCustomData exception: ' + JSON.stringify(err)); +} +``` + +## 场景5:存取帐号的特定鉴权类型的授权令牌 + +### 场景描述 + +开发者需要变更应用帐号的特定鉴权类型的授权令牌。 + +### 操作步骤 + +1.准备参数。name, owner, authType, token参数由开发者指定。 + +```ts +let name: string = 'ZhangSan'; +let owner: string = 'com.example.accountjsdemo'; +let authType: string = 'getSocialData'; +let token: string = 'xxxxxx'; +``` + +2.调用getAuthToken接口或getAllAuthTokens接口,获取帐号的特定鉴权类型的授权令牌。getAllAuthTokens接口返回的数据是[AuthTokenInfo](../reference/apis/js-apis-appAccount.md#authtokeninfo9)类型的数组 + +```ts +appAccountManager.getAuthToken(name, owner, authType).then((data: string) => { + console.log('getAuthToken successfully, data: ' + data); +}).catch((err: BusinessError) => { + console.log('getAuthToken failed, error: ' + JSON.stringify(err)); +}); +``` + +```ts +appAccountManager.getAllAuthTokens(name, owner).then((data: account_appAccount.AuthTokenInfo[]) => { + console.log('getAllAuthTokens successfully, data: ' + JSON.stringify(data)); +}).catch((err: BusinessError) => { + console.log('getAllAuthTokens failed, error: ' + JSON.stringify(err)); +}); +``` + +3.调用setAuthToken接口,设置帐号的特定鉴权类型的授权令牌。 + +```ts +appAccountManager.setAuthToken(name, authType, token).then(() => { + console.log('setAuthToken successfully'); +}).catch((err: BusinessError) => { + console.log('setAuthToken failed: ' + JSON.stringify(err)); +}); +``` + +### 完整代码 + +```ts +import account_appAccount from '@ohos.account.appAccount'; +import { BusinessError } from '@ohos.base'; + +const appAccountManager = account_appAccount.createAppAccountManager(); +let name: string = 'ZhangSan'; +let owner: string = 'com.example.accountjsdemo'; +let authType: string = 'getSocialData'; +let token: string = 'xxxxxx'; + +try { + appAccountManager.getAuthToken(name, owner, authType).then((data: string) => { + console.log('getAuthToken successfully, data: ' + data); + }).catch((err: BusinessError) => { + console.log('getAuthToken failed, error: ' + JSON.stringify(err)); + }); +} catch (err) { + console.log('getAuthToken exception: ' + JSON.stringify(err)); +} + +try { + appAccountManager.setAuthToken(name, authType, token).then(() => { + console.log('setAuthToken successfully'); + }).catch((err: BusinessError) => { + console.log('setAuthToken failed: ' + JSON.stringify(err)); + }); +} catch (err) { + console.log('setAuthToken exception: ' + JSON.stringify(err)); +} +``` + +## 场景6:存取帐号的授权令牌的可见性 + +### 场景描述 + +开发者需要变更应用帐号的授权令牌的可见性。 + +### 操作步骤 + +1.准备参数。name, authType, bundleName, isVisible参数由开发者指定。 + +```ts +let name: string = 'ZhangSan'; +let authType: string = 'getSocialData'; +let bundleName: string = 'com.example.accountjsdemo'; +let isVisible: boolean = false; +``` + +2.调用checkAuthTokenVisibility接口,获取帐号的授权令牌的可见性。 + +```ts +appAccountManager.checkAuthTokenVisibility(name, authType, bundleName).then((data: boolean) => { + console.log('checkAuthTokenVisibility successfully, isAccessible: ' + data); +}).catch((err: BusinessError) => { + console.log('checkAuthTokenVisibility failed, error: ' + JSON.stringify(err)); +}); +``` + +3.调用setAuthTokenVisibility接口,设置帐号的授权令牌的可见性。 + +```ts +appAccountManager.setAuthTokenVisibility(name, authType, bundleName, isVisible).then(() => { + console.log('setAuthTokenVisibility successfully'); +}).catch((err: BusinessError) => { + console.log('setAuthTokenVisibility failed: ' + JSON.stringify(err)); +}); +``` + +### 完整代码 + +```ts +import account_appAccount from '@ohos.account.appAccount'; +import { BusinessError } from '@ohos.base'; + +const appAccountManager = account_appAccount.createAppAccountManager(); +let name: string = 'ZhangSan'; +let authType: string = 'getSocialData'; +let bundleName: string = 'com.example.accountjsdemo'; +let isVisible: boolean = false; + +try { + appAccountManager.checkAuthTokenVisibility(name, authType, bundleName).then((data: boolean) => { + console.log('checkAuthTokenVisibility successfully, isAccessible: ' + data); + }).catch((err: BusinessError) => { + console.log('checkAuthTokenVisibility failed, error: ' + JSON.stringify(err)); + }); +} catch (err) { + console.log('checkAuthTokenVisibility exception: ' + JSON.stringify(err)); +} + +try { + appAccountManager.setAuthTokenVisibility(name, authType, bundleName, isVisible).then(() => { + console.log('setAuthTokenVisibility successfully'); + }).catch((err: BusinessError) => { + console.log('setAuthTokenVisibility failed: ' + JSON.stringify(err)); + }); +} catch (err) { + console.log('setAuthTokenVisibility exception: ' + JSON.stringify(err)); +} +``` + +## 场景6:获取应用的被授权的包名数组 + +### 场景描述 + +开发者需要获取应用的被授权的包名数组。 + +### 操作步骤 + +1.准备参数。name, authType参数由开发者指定。 + +```ts +let name: string = 'ZhangSan'; +let authType: string = 'getSocialData'; +``` + +2.调用getAuthList接口,获取指定应用的认证器信息。 + +```ts +appAccountManager.getAuthList(name, authType).then((data: string[]) => { + console.log('getAuthList successfully, data: ' + JSON.stringify(data)); +}).catch((err: BusinessError) => { + console.log('getAuthList failed, error: ' + JSON.stringify(err)); +}); +``` + +### 完整代码 + +```ts +import account_appAccount from '@ohos.account.appAccount'; +import { BusinessError } from '@ohos.base'; + +const appAccountManager = account_appAccount.createAppAccountManager(); +let name: string = 'ZhangSan'; +let authType: string = 'getSocialData'; + +try { + appAccountManager.getAuthList(name, authType).then((data: string[]) => { + console.log('getAuthList successfully, data: ' + JSON.stringify(data)); + }).catch((err: BusinessError) => { + console.log('getAuthList failed, error: ' + JSON.stringify(err)); + }); +} catch (err) { + console.log('getAuthList exception: ' + JSON.stringify(err)); +} +``` + diff --git a/zh-cn/application-dev/application-models/application-component-configuration-fa.md b/zh-cn/application-dev/application-models/application-component-configuration-fa.md index a0278c1c74170d8db20aab4a70dfb919a8a2c5f8..583ea3f4350fd5de5471ea826aed21349eb44e31 100644 --- a/zh-cn/application-dev/application-models/application-component-configuration-fa.md +++ b/zh-cn/application-dev/application-models/application-component-configuration-fa.md @@ -79,12 +79,12 @@ PageAbility的图标和标签配置请参见[PageAbility组件配置](pageabilit ## 应用版本声明配置 -应用版本声明配置需在config.json中的app标签下配置version字段,以说明应用当前的版本号和版本名称以及应用能够兼容的最低历史版本号。应用版本配置说明可以参考[version标签说明](../quick-start/module-structure.md)。 +应用版本声明配置需在config.json中的app标签下配置version字段,以说明应用当前的版本号和版本名称以及应用能够兼容的最低历史版本号。应用版本配置说明可以参考[version对象内部结构](../quick-start/app-structure.md#version对象内部结构)。 ## Module支持的设备类型配置 -Module支持的设备类型需要在config.json文件中配置deviceType字段,如果deviceType标签中添加了某种设备,则表明当前的module支持在该设备上运行。具体的deviceType配置规则可以参考[deviceType标签说明](../quick-start/module-structure.md)。 +Module支持的设备类型需要在config.json文件中配置deviceType字段,如果deviceType标签中添加了某种设备,则表明当前的module支持在该设备上运行。具体的deviceType配置规则可以参考[deviceType标签](../quick-start/module-structure.md#devicetype标签)。 ## 组件权限申请配置 -组件权限申请配置需在config.json中的module标签下配置reqPermissions字段。来声明需要申请权限的名称,申请权限的原因以及权限使用的场景。组件权限申请可以参考[reqPermissions标签说明](../quick-start/module-structure.md)。 \ No newline at end of file +组件权限申请配置需在config.json中的module标签下配置reqPermissions字段。来声明需要申请权限的名称,申请权限的原因以及权限使用的场景。组件权限申请可以参考[reqPermissions权限申请](../quick-start/module-structure.md#reqpermissions权限申请)。 \ No newline at end of file diff --git a/zh-cn/application-dev/application-models/inter-device-interaction-hop-overview.md b/zh-cn/application-dev/application-models/inter-device-interaction-hop-overview.md index ba8ee47e29cad81ef8f3e49141ec432edc8003d1..d60687aa29a0ca1172b3ba65bb83f23f1b2447ec 100644 --- a/zh-cn/application-dev/application-models/inter-device-interaction-hop-overview.md +++ b/zh-cn/application-dev/application-models/inter-device-interaction-hop-overview.md @@ -5,7 +5,7 @@ 随着全场景多设备的生活方式不断深入,用户拥有的设备越来越多,不同设备都能在适合的场景下提供良好的体验,例如手表可以提供及时的信息查看能力,电视可以带来沉浸的观影体验。但是,每个设备也有使用场景的局限,例如在电视上输入文本相对移动设备来说是非常糟糕的体验。当多个设备通过分布式操作系统能够相互感知、进而整合成一个超级终端时,设备与设备之间就可以取长补短、相互帮助,为用户提供更加自然流畅的分布式体验。 -跨多设备的分布式操作可以统称为**流转**;根据使用场景的不同,流转又分为[跨端迁移](hop-cross-device-migration.md)和[多端协同](hop-multi-device-collaboration.md)两种具体场景。要实现应用跨设备流转,需使用应用组件的跨设备交互相关能力,这些能力目前仅对系统应用开放。 +跨多设备的分布式操作可以统称为**流转**;根据使用场景的不同,流转又分为[跨端迁移](hop-cross-device-migration.md)和[多端协同](hop-multi-device-collaboration.md)两种具体场景。 ## 基本概念 diff --git a/zh-cn/application-dev/application-models/start-page.md b/zh-cn/application-dev/application-models/start-page.md index 971b380e00cf86bada4baef82b0f3bad2480fe07..9e070788b79c0a9e63dedc1857565657264e95b6 100644 --- a/zh-cn/application-dev/application-models/start-page.md +++ b/zh-cn/application-dev/application-models/start-page.md @@ -163,14 +163,17 @@ struct Index { ```ts import featureAbility from '@ohos.ability.featureAbility'; import router from '@ohos.router'; +import { BusinessError } from '@ohos.base'; class EntryAbility { onCreate() { featureAbility.getWant().then((want) => { if (want.parameters) { if (want.parameters.page) { - router.push({ + router.pushUrl({ url: want.parameters.page as string + }, (error: BusinessError)=>{ + console.error(`error: ${JSON.stringify(error)}`); }) } } diff --git a/zh-cn/application-dev/application-test/arkxtest-guidelines.md b/zh-cn/application-dev/application-test/arkxtest-guidelines.md index b8b78c3ced4a3e4376fabeba0ff9f662cf592de1..32622aa06b26034ac443cdd54e429613f0353f2d 100644 --- a/zh-cn/application-dev/application-test/arkxtest-guidelines.md +++ b/zh-cn/application-dev/application-test/arkxtest-guidelines.md @@ -281,37 +281,37 @@ export default function abilityTest() { 示例代码6:用例执行超时时长配置。 ```shell - hdc shell aa test -b xxx -p xxx -s unittest OpenHarmonyTestRunner -s timeout 15000 + hdc shell aa test -b xxx -p xxx -s unittest OpenHarmonyTestRunner -s timeout 15000 ``` 示例代码7:用例以breakOnError模式执行用例。 ```shell - hdc shell aa test -b xxx -p xxx -s unittest OpenHarmonyTestRunner -s breakOnError true + hdc shell aa test -b xxx -p xxx -s unittest OpenHarmonyTestRunner -s breakOnError true ``` 示例代码8:执行测试类型匹配的测试用例。 ```shell - hdc shell aa test -b xxx -p xxx -s unittest OpenHarmonyTestRunner -s testType function + hdc shell aa test -b xxx -p xxx -s unittest OpenHarmonyTestRunner -s testType function ``` 示例代码9:执行测试级别匹配的测试用例。 ```shell - hdc shell aa test -b xxx -p xxx -s unittest OpenHarmonyTestRunner -s level 0 + hdc shell aa test -b xxx -p xxx -s unittest OpenHarmonyTestRunner -s level 0 ``` 示例代码10:执行测试规模匹配的测试用例。 ```shell - hdc shell aa test -b xxx -p xxx -s unittest OpenHarmonyTestRunner -s size small + hdc shell aa test -b xxx -p xxx -s unittest OpenHarmonyTestRunner -s size small ``` 示例代码11:执行测试用例指定次数。 ```shell - hdc shell aa test -b xxx -p xxx -s unittest OpenHarmonyTestRunner -s stress 1000 + hdc shell aa test -b xxx -p xxx -s unittest OpenHarmonyTestRunner -s stress 1000 ``` **查看测试结果** diff --git a/zh-cn/application-dev/arkts-utils/arkts-concurrent.md b/zh-cn/application-dev/arkts-utils/arkts-concurrent.md index 4537a0813e52f56885ee9e3b6a36451498962ca9..c0a81e02bdad518bb6995bbda4ee0c1b244dca86 100644 --- a/zh-cn/application-dev/arkts-utils/arkts-concurrent.md +++ b/zh-cn/application-dev/arkts-utils/arkts-concurrent.md @@ -20,16 +20,39 @@ ## 装饰器使用示例 ```ts import taskpool from '@ohos.taskpool'; - - async function concurrentFunc() { - @Concurrent - function printLog(): void { - console.log("This is printLog"); + + @Concurrent + function add(num1: number, num2: number): number { + return num1 + num2; + } + + async function ConcurrentFunc(): Promise { + try { + let task: taskpool.Task = new taskpool.Task(add, 1, 2); + console.info("taskpool res is: " + await taskpool.execute(task)); + } catch (e) { + console.error("taskpool execute error is: " + e); } - - let task: taskpool.Task = new taskpool.Task(printLog); - await taskpool.execute(task); } - - concurrentFunc(); - ``` + + @Entry + @Component + struct Index { + @State message: string = 'Hello World' + + build() { + Row() { + Column() { + Text(this.message) + .fontSize(50) + .fontWeight(FontWeight.Bold) + .onClick(() => { + ConcurrentFunc(); + }) + } + .width('100%') + } + .height('100%') + } + } + ``` \ No newline at end of file diff --git a/zh-cn/application-dev/connectivity/http-request.md b/zh-cn/application-dev/connectivity/http-request.md index 39acccc007c8f9e8fd3eb0c1f62ec6a8ea606e68..a2eff68c3b551abfa402617aabde082fe45458c0 100644 --- a/zh-cn/application-dev/connectivity/http-request.md +++ b/zh-cn/application-dev/connectivity/http-request.md @@ -14,7 +14,7 @@ HTTP数据请求功能主要由http模块提供。 涉及的接口如下表,具体的接口说明请参考[API文档](../reference/apis/js-apis-http.md)。 -| 接口名 | 功能描述 | +| 接口名 | 描述 | | ----------------------------------------- | ----------------------------------- | | createHttp() | 创建一个http请求。 | | request() | 根据URL地址,发起HTTP网络请求。 | diff --git a/zh-cn/application-dev/connectivity/ipc-rpc-development-guideline.md b/zh-cn/application-dev/connectivity/ipc-rpc-development-guideline.md index 598b47198c78ee8c9d8988764422d30f3820c81c..0f6daf4b8d206c73167f7baa5e9a76ac1f46e571 100755 --- a/zh-cn/application-dev/connectivity/ipc-rpc-development-guideline.md +++ b/zh-cn/application-dev/connectivity/ipc-rpc-development-guideline.md @@ -9,11 +9,11 @@ IPC/RPC的主要工作是让运行在不同进程的Proxy和Stub互相通信, **表1** Native侧IPC接口 -| 类/接口 | 方法 | 功能说明 | -| -------- | -------- | -------- | -| IRemoteBroker | sptr<IRemoteObject> AsObject() | 返回通信对象。Stub端返回RemoteObject对象本身,Proxy端返回代理对象。 | -| IRemoteStub | virtual int OnRemoteRequest(uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) | 请求处理方法,派生类需要重写该方法用来处理Proxy的请求并返回结果。 | -| IRemoteProxy | Remote()->SendRequest(code, data, reply, option) | 消息发送方法,业务的Proxy类需要从IRemoteProxy类派生,该方法用来向对端发送消息。 | +| 接口名 | 描述 | +| ------------------------------------ | ---------------------------------------------------------------- | +| sptr<IRemoteObject> AsObject() | 返回通信对象。Stub端返回RemoteObject对象本身,Proxy端返回代理对象。 | +| virtual int OnRemoteRequest(uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) | 请求处理方法,派生类需要重写该方法用来处理Proxy的请求并返回结果。 | +| IRemoteProxy | Remote()->SendRequest(code, data, reply, option) | 消息发送方法,业务的Proxy类需要从IRemoteProxy类派生,该方法用来向对端发送消息。 | ## 开发步骤 diff --git a/zh-cn/application-dev/connectivity/net-connection-manager.md b/zh-cn/application-dev/connectivity/net-connection-manager.md index 77752ef37394f744b34d3aa0353b0d23a807e690..8ae6c15dd9523b09511f58b14d05b6a57d9b859c 100644 --- a/zh-cn/application-dev/connectivity/net-connection-manager.md +++ b/zh-cn/application-dev/connectivity/net-connection-manager.md @@ -35,50 +35,53 @@ 完整的JS API说明以及实例代码请参考:[网络连接管理](../reference/apis/js-apis-net-connection.md)。 -| 类型 | 接口 | 功能说明 | -| ---- | ---- | ---- | -| ohos.net.connection | function getDefaultNet(callback: AsyncCallback\): void; |获取一个含有默认网络的netId的NetHandle对象,使用callback回调 | -| ohos.net.connection | function getGlobalHttpProxy10+(callback: AsyncCallback\): void;| 获取网络的全局代理设置,使用callback回调 | -| ohos.net.connection | function setGlobalHttpProxy10+(httpProxy: HttpProxy, callback: AsyncCallback\): void;| 设置网络全局Http代理配置信息,使用callback回调 | -| ohos.net.connection | function getAppNet9+(callback: AsyncCallback\): void;| 获取一个App绑定的包含了网络netId的NetHandle对象,使用callback回调 | -| ohos.net.connection | function setAppNet9+(netHandle: NetHandle, callback: AsyncCallback\): void;| 绑定App到指定网络,绑定后的App只能通过指定网络访问外网。使用callback回调 | -| ohos.net.connection | function getDefaultNetSync9+(): NetHandle; |使用同步方法获取默认激活的数据网络。可以使用getNetCapabilities去获取网络的类型、拥有的能力等信息。| -| ohos.net.connection | function hasDefaultNet(callback: AsyncCallback\): void; |查询是否有默认网络,使用callback回调 | -| ohos.net.connection | function getAllNets(callback: AsyncCallback\>): void;| 获取所处于连接状态的网络的MetHandle对象列表,使用callback回调 | -| ohos.net.connection | function getConnectionProperties(netHandle: NetHandle, callback: AsyncCallback\): void; |查询默认网络的链路信息,使用callback回调 | -| ohos.net.connection | function getNetCapabilities(netHandle: NetHandle, callback: AsyncCallback\): void; |查询默认网络的能力集信息,使用callback回调 | -| ohos.net.connection | function isDefaultNetMetered9+(callback: AsyncCallback\): void; |检查当前网络上的数据流量使用是否被计量,使用callback方式作为异步方法 | -| ohos.net.connection | function reportNetConnected(netHandle: NetHandle, callback: AsyncCallback\): void;| 向网络管理报告网络处于可用状态,调用此接口说明应用程序认为网络的可用性(ohos.net.connection.NetCap.NET_CAPABILITY_VAILDATED)与网络管理不一致。使用callback回调 | -| ohos.net.connection | function reportNetDisconnected(netHandle: NetHandle, callback: AsyncCallback\): void;| 向网络管理报告网络处于不可用状态,调用此接口说明应用程序认为网络的可用性(ohos.net.connection.NetCap.NET_CAPABILITY_VAILDATED)与网络管理不一致。使用callback回调 | -| ohos.net.connection | function getAddressesByName(host: string, callback: AsyncCallback\>): void; |使用对应网络解析域名,获取所有IP,使用callback回调 | -| ohos.net.connection | function enableAirplaneMode(callback: AsyncCallback\): void; | 设置网络为飞行模式,使用callback回调 | -| ohos.net.connection | function disableAirplaneMode(callback: AsyncCallback\): void;| 关闭网络飞行模式,使用callback回调 | -| ohos.net.connection | function createNetConnection(netSpecifier?: NetSpecifier, timeout?: number): NetConnection; | 返回一个NetConnection对象,netSpecifier指定关注的网络的各项特征,timeout是超时时间(单位是毫秒),netSpecifier是timeout的必要条件,两者都没有则表示关注默认网络 | -| ohos.net.connection.NetHandle | bindSocket(socketParam: TCPSocket \| UDPSocket, callback: AsyncCallback\): void; | 将TCPSocket或UDPSockett绑定到当前网络,使用callback回调 | -| ohos.net.connection.NetHandle | getAddressesByName(host: string, callback: AsyncCallback\>): void; |使用默认网络解析域名,获取所有IP,使用callback回调 | -| ohos.net.connection.NetHandle | getAddressByName(host: string, callback: AsyncCallback\): void; |使用对应网络解析域名,获取一个IP,调用callbac | -| ohos.net.connection.NetConnection | on(type: 'netAvailable', callback: Callback\): void; |监听收到网络可用的事件 | -| ohos.net.connection.NetConnection | on(type: 'netCapabilitiesChange', callback: Callback\<{ netHandle: NetHandle, netCap: NetCapabilities }>): void; |监听网络能力变化的事件 | -| ohos.net.connection.NetConnection | on(type: 'netConnectionPropertiesChange', callback: Callback\<{ netHandle: NetHandle, connectionProperties: ConnectionProperties }>): void; |监听网络连接信息变化的事件 | -| ohos.net.connection.NetConnection | on(type: 'netBlockStatusChange', callback: Callback<{ netHandle: NetHandle, blocked: boolean }>): void; |订阅网络阻塞状态事件,使用callback方式作为异步方法 | -| ohos.net.connection.NetConnection | on(type: 'netLost', callback: Callback\): void; |监听网络丢失的事件 | -| ohos.net.connection.NetConnection | on(type: 'netUnavailable', callback: Callback\): void; |监听网络不可用的事件 | -| ohos.net.connection.NetConnection | register(callback: AsyncCallback\): void; |注册默认网络或者createNetConnection中指定的网络的监听 | -| ohos.net.connection.NetConnection | unregister(callback: AsyncCallback\): void; |注销默认网络或者createNetConnection中指定的网络的监听 | +| 接口名 | 描述 | +| ---- | ---- | +| getDefaultNet(callback: AsyncCallback\): void; |获取一个含有默认网络的netId的NetHandle对象,使用callback回调 | +| getGlobalHttpProxy(callback: AsyncCallback\): void;| 获取网络的全局代理设置,使用callback回调 | +| setGlobalHttpProxy(httpProxy: HttpProxy, callback: AsyncCallback\): void;| 设置网络全局Http代理配置信息,使用callback回调 | +| getAppNet(callback: AsyncCallback\): void;| 获取一个App绑定的包含了网络netId的NetHandle对象,使用callback回调 | +| setAppNet(netHandle: NetHandle, callback: AsyncCallback\): void;| 绑定App到指定网络,绑定后的App只能通过指定网络访问外网。使用callback回调 | +| getDefaultNetSync(): NetHandle; |使用同步方法获取默认激活的数据网络。可以使用getNetCapabilities去获取网络的类型、拥有的能力等信息。| +| hasDefaultNet(callback: AsyncCallback\): void; |查询是否有默认网络,使用callback回调 | +| getAllNets(callback: AsyncCallback\>): void;| 获取所处于连接状态的网络的MetHandle对象列表,使用callback回调 | +| getConnectionProperties(netHandle: NetHandle, callback: AsyncCallback\): void; |查询默认网络的链路信息,使用callback回调 | +| getNetCapabilities(netHandle: NetHandle, callback: AsyncCallback\): void; |查询默认网络的能力集信息,使用callback回调 | +| isDefaultNetMetered(callback: AsyncCallback\): void; |检查当前网络上的数据流量使用是否被计量,使用callback方式作为异步方法 | +| reportNetConnected(netHandle: NetHandle, callback: AsyncCallback\): void;| 向网络管理报告网络处于可用状态,调用此接口说明应用程序认为网络的可用性(ohos.net.connection.NetCap.NET_CAPABILITY_VAILDATED)与网络管理不一致。使用callback回调 | +| reportNetDisconnected(netHandle: NetHandle, callback: AsyncCallback\): void;| 向网络管理报告网络处于不可用状态,调用此接口说明应用程序认为网络的可用性(ohos.net.connection.NetCap.NET_CAPABILITY_VAILDATED)与网络管理不一致。使用callback回调 | +| getAddressesByName(host: string, callback: AsyncCallback\>): void; |使用对应网络解析域名,获取所有IP,使用callback回调 | +| enableAirplaneMode(callback: AsyncCallback\): void; | 设置网络为飞行模式,使用callback回调 | +| disableAirplaneMode(callback: AsyncCallback\): void;| 关闭网络飞行模式,使用callback回调 | +| createNetConnection(netSpecifier?: NetSpecifier, timeout?: number): NetConnection; | 返回一个NetConnection对象,netSpecifier指定关注的网络的各项特征,timeout是超时时间(单位是毫秒),netSpecifier是timeout的必要条件,两者都没有则表示关注默认网络 | +| bindSocket(socketParam: TCPSocket \| UDPSocket, callback: AsyncCallback\): void; | 将TCPSocket或UDPSockett绑定到当前网络,使用callback回调 | +| getAddressesByName(host: string, callback: AsyncCallback\>): void; |使用默认网络解析域名,获取所有IP,使用callback回调 | +| getAddressByName(host: string, callback: AsyncCallback\): void; |使用对应网络解析域名,获取一个IP,调用callbac | +| on(type: 'netAvailable', callback: Callback\): void; |监听收到网络可用的事件 | +| on(type: 'netCapabilitiesChange', callback: Callback\<{ netHandle: NetHandle, netCap: NetCapabilities }>): void; |监听网络能力变化的事件 | +| on(type: 'netConnectionPropertiesChange', callback: Callback\<{ netHandle: NetHandle, connectionProperties: ConnectionProperties }>): void; |监听网络连接信息变化的事件 | +| on(type: 'netBlockStatusChange', callback: Callback<{ netHandle: NetHandle, blocked: boolean }>): void; |订阅网络阻塞状态事件,使用callback方式作为异步方法 | +| on(type: 'netLost', callback: Callback\): void; |监听网络丢失的事件 | +| on(type: 'netUnavailable', callback: Callback\): void; |监听网络不可用的事件 | +| register(callback: AsyncCallback\): void; |注册默认网络或者createNetConnection中指定的网络的监听 | +| unregister(callback: AsyncCallback\): void; |注销默认网络或者createNetConnection中指定的网络的监听 | ## 接收指定网络的状态变化通知 -1. 从@ohos.net.connection.d.ts中导入connection命名空间。 +1. 声明接口调用所需要的权限:ohos.permission.GET_NETWORK_INFO。 +此权限级别为system_basic,在申请权限前,请保证符合[权限使用的基本原则](../security/accesstoken-overview.md#权限使用的基本原则)。然后参考[配置文件权限声明指导文档](../security/accesstoken-guidelines.md#配置文件权限声明)声明对应权限。 -2. 调用createNetConnection方法,指定网络能力、网络类型和超时时间(可选,如不传入代表默认网络;创建不同于默认网络时可通过指定这些参数完成),创建一个NetConnection对象。 +2. 从@ohos.net.connection.d.ts中导入connection命名空间。 -3. 调用该对象的on()方法,传入type和callback,订阅关心的事件。 +3. 调用createNetConnection方法,指定网络能力、网络类型和超时时间(可选,如不传入代表默认网络;创建不同于默认网络时可通过指定这些参数完成),创建一个NetConnection对象。 -4. 调用该对象的register()方法,订阅指定网络状态变化的通知。 +4. 调用该对象的on()方法,传入type和callback,订阅关心的事件。 -5. 当网络可用时,会收到netAvailable事件的回调;当网络不可用时,会收到netUnavailable事件的回调。 +5. 调用该对象的register()方法,订阅指定网络状态变化的通知。 -6. 当不使用该网络时,可以调用该对象的unregister()方法,取消订阅。 +6. 当网络可用时,会收到netAvailable事件的回调;当网络不可用时,会收到netUnavailable事件的回调。 + +7. 当不使用该网络时,可以调用该对象的unregister()方法,取消订阅。 ```ts // 引入包名 @@ -123,9 +126,12 @@ conn.unregister((err: BusinessError, data: void) => { ### 开发步骤 -1. 从@ohos.net.connection.d.ts中导入connection命名空间。 +1. 声明接口调用所需要的权限:ohos.permission.GET_NETWORK_INFO。 +此权限级别为system_basic,在申请权限前,请保证符合[权限使用的基本原则](../security/accesstoken-overview.md#权限使用的基本原则)。然后参考[配置文件权限声明指导文档](../security/accesstoken-guidelines.md#配置文件权限声明)声明对应权限。 + +2. 从@ohos.net.connection.d.ts中导入connection命名空间。 -2. 调用getAllNets方法,获取所有处于连接状态的网络列表。 +3. 调用getAllNets方法,获取所有处于连接状态的网络列表。 ```ts // 引入包名 @@ -169,13 +175,16 @@ connection.getAllNets((err: BusinessError, data: connection.NetHandle[]) => { ### 开发步骤 -1. 从@ohos.net.connection.d.ts中导入connection命名空间。 +1. 声明接口调用所需要的权限:ohos.permission.GET_NETWORK_INFO。 +此权限级别为system_basic,在申请权限前,请保证符合[权限使用的基本原则](../security/accesstoken-overview.md#权限使用的基本原则)。然后参考[配置文件权限声明指导文档](../security/accesstoken-guidelines.md#配置文件权限声明)声明对应权限。 -2. 通过调用getDefaultNet方法,获取默认的数据网络(NetHandle);或者通过调用getAllNets方法,获取所有处于连接状态的网络列表(Array\)。 +2. 从@ohos.net.connection.d.ts中导入connection命名空间。 -3. 调用getNetCapabilities方法,获取NetHandle对应网络的能力信息。能力信息包含了网络类型(蜂窝网络、Wi-Fi网络、以太网网络等)、网络具体能力等网络信息。 +3. 通过调用getDefaultNet方法,获取默认的数据网络(NetHandle);或者通过调用getAllNets方法,获取所有处于连接状态的网络列表(Array\)。 -4. 调用getConnectionProperties方法,获取NetHandle对应网络的连接信息。 +4. 调用getNetCapabilities方法,获取NetHandle对应网络的能力信息。能力信息包含了网络类型(蜂窝网络、Wi-Fi网络、以太网网络等)、网络具体能力等网络信息。 + +5. 调用getConnectionProperties方法,获取NetHandle对应网络的连接信息。 ```ts import connection from '@ohos.net.connection'; @@ -293,9 +302,12 @@ for (let item of dataNumber) { ### 开发步骤 -1. 从@ohos.net.connection.d.ts中导入connection命名空间。 +1. 声明接口调用所需要的权限:ohos.permission.INTERNET +此权限级别为system_basic,在申请权限前,请保证符合[权限使用的基本原则](../security/accesstoken-overview.md#权限使用的基本原则)。然后参考[配置文件权限声明指导文档](../security/accesstoken-guidelines.md#配置文件权限声明)声明对应权限。 + +2. 从@ohos.net.connection.d.ts中导入connection命名空间。 -2. 调用getAddressesByName方法,使用默认网络解析主机名以获取所有IP地址。 +3. 调用getAddressesByName方法,使用默认网络解析主机名以获取所有IP地址。 ```ts // 引入包名 diff --git a/zh-cn/application-dev/connectivity/net-ethernet.md b/zh-cn/application-dev/connectivity/net-ethernet.md index e6ece90aae71bdcc0295dff1326a3653d6f13a67..7f467ce7d53865d96d14138561624fc22caeba0a 100644 --- a/zh-cn/application-dev/connectivity/net-ethernet.md +++ b/zh-cn/application-dev/connectivity/net-ethernet.md @@ -28,12 +28,12 @@ | 类型 | 接口 | 功能说明 | | ---- | ---- | ---- | -| ohos.net.ethernet | function setIfaceConfig(iface: string, ic: InterfaceConfiguration, callback: AsyncCallback\): void | 配置指定以太网的网络属性,iface为网口名称,ic为配置信息,调用callback | -| ohos.net.ethernet | function getIfaceConfig(iface: string, callback: AsyncCallback\): void | 获取指定以太网的网络属性,iface为网口名称,调用callback | -| ohos.net.ethernet | function isIfaceActive(iface: string, callback: AsyncCallback\): void | 判断指定网口是否已激活,iface为网卡名称(无参为是否有激活网口),调用callback | -| ohos.net.ethernet | function getAllActiveIfaces(callback: AsyncCallback\>): void; | 获取所有活动的网络接口,调用callback | -| ohos.net.ethernet | function on(type: 'interfaceStateChange', callback: Callback\<{ iface: string, active: boolean }\>): void; | 注册网络接口监听函数 | -| ohos.net.ethernet | function off(type: 'interfaceStateChange', callback?: Callback\<{ iface: string, active: boolean }\>): void; | 解除注册网络接口监听函数 | +| setIfaceConfig(iface: string, ic: InterfaceConfiguration, callback: AsyncCallback\): void | 配置指定以太网的网络属性,iface为网口名称,ic为配置信息,调用callback | +| getIfaceConfig(iface: string, callback: AsyncCallback\): void | 获取指定以太网的网络属性,iface为网口名称,调用callback | +| isIfaceActive(iface: string, callback: AsyncCallback\): void | 判断指定网口是否已激活,iface为网卡名称(无参为是否有激活网口),调用callback | +| getAllActiveIfaces(callback: AsyncCallback\>): void; | 获取所有活动的网络接口,调用callback | +| on(type: 'interfaceStateChange', callback: Callback\<{ iface: string, active: boolean }\>): void; | 注册网络接口监听函数 | +| off(type: 'interfaceStateChange', callback?: Callback\<{ iface: string, active: boolean }\>): void; | 解除注册网络接口监听函数 | ## 以太网连接-DHCP模式 diff --git a/zh-cn/application-dev/connectivity/net-mdns.md b/zh-cn/application-dev/connectivity/net-mdns.md index 4a248d42f2a9d7c065a10bea0c18841c30d411a9..6507eb616cfb808c2c95337c4b04945377865e4f 100644 --- a/zh-cn/application-dev/connectivity/net-mdns.md +++ b/zh-cn/application-dev/connectivity/net-mdns.md @@ -11,30 +11,30 @@ MDNS管理的典型场景有: - 发现本地服务,通过DiscoveryService对象,对指定类型的本地服务状态变化进行监听。 > **说明:** -> 为了保证应用的运行效率,大部分API调用都是异步的,对于异步调用的API均提供了callback和Promise两种方式,以下示例均采用callback函数,更多方式可以查阅[API参考](../reference/apis/js-apis-net-mdns.md)。 +> 为了保证应用的运行效率,大部分API调用都是异步的,对于异步调用的API均提供了callback和Promise两种方式,以下示例均采用callback函数,更多方式可以查阅[MDNS管理-API参考](../reference/apis/js-apis-net-mdns.md)。 以下分别介绍具体开发方式。 ## 接口说明 -完整的JS API说明以及实例代码请参考:[mDNS链接](../reference/apis/js-apis-net-mdns.md)。 - -| 类型 | 接口 | 功能说明 | -| ---- | ---- | ---- | -| ohos.net.mdns | addLocalService(context: Context, serviceInfo: LocalServiceInfo, callback: AsyncCallback\): void | 添加一个mDNS服务,使用callback方式作为异步方法。 | -| ohos.net.mdns | removeLocalService(context: Context, serviceInfo: LocalServiceInfo, callback: AsyncCallback\): void | 移除一个mDNS服务,使用callback方式作为异步方法。 | -| ohos.net.mdns | createDiscoveryService(context: Context, serviceType: string): DiscoveryService | 返回一个DiscoveryService对象,该对象用于发现指定服务类型的mDNS服务。 | -| ohos.net.mdns | resolveLocalService(context: Context, serviceInfo: LocalServiceInfo, callback: AsyncCallback\): void | 解析一个mDNS服务,使用callback方式作为异步方法。 | -| ohos.net.mdns.DiscoveryService | startSearchingMDNS(): void | 开始搜索局域网内的mDNS服务。 | -| ohos.net.mdns.DiscoveryService | stopSearchingMDNS(): void | 停止搜索局域网内的mDNS服务。 | -| ohos.net.mdns.DiscoveryService | on(type: 'discoveryStart', callback: Callback<{serviceInfo: LocalServiceInfo, errorCode?: MdnsError}>): void | 订阅开启监听mDNS服务的通知。 | -| ohos.net.mdns.DiscoveryService | off(type: 'discoveryStart', callback?: Callback<{ serviceInfo: LocalServiceInfo, errorCode?: MdnsError }>): void | 取消开启监听mDNS服务的通知。 | -| ohos.net.mdns.DiscoveryService | on(type: 'discoveryStop', callback: Callback<{serviceInfo: LocalServiceInfo, errorCode?: MdnsError}>): void | 订阅停止监听mDNS服务的通知。 | -| ohos.net.mdns.DiscoveryService | off(type: 'discoveryStop', callback?: Callback<{ serviceInfo: LocalServiceInfo, errorCode?: MdnsError }>): void | 取消停止监听mDNS服务的通知。 | -| ohos.net.mdns.DiscoveryService | on(type: 'serviceFound', callback: Callback\): void | 订阅发现mDNS服务的通知。 | -| ohos.net.mdns.DiscoveryService | off(type: 'serviceFound', callback?: Callback\): void | 取消发现mDNS服务的通知。 | -| ohos.net.mdns.DiscoveryService | on(type: 'serviceLost', callback: Callback\): void | 订阅移除mDNS服务的通知。 | -| ohos.net.mdns.DiscoveryService | off(type: 'serviceLost', callback?: Callback\): void | 取消移除mDNS服务的通知。 | +完整的JS API说明以及实例代码请参考:[MDNS管理-API参考](../reference/apis/js-apis-net-mdns.md)。 + +| 接口名 | 描述 | +| ----------------------- | ---- | +| addLocalService(context: Context, serviceInfo: LocalServiceInfo, callback: AsyncCallback\): void | 添加一个MDNS服务,使用callback方式作为异步方法。 | +| removeLocalService(context: Context, serviceInfo: LocalServiceInfo, callback: AsyncCallback\): void | 移除一个MDNS服务,使用callback方式作为异步方法。 | +| createDiscoveryService(context: Context, serviceType: string): DiscoveryService | 返回一个DiscoveryService对象,该对象用于发现指定服务类型的MDNS服务。 | +| resolveLocalService(context: Context, serviceInfo: LocalServiceInfo, callback: AsyncCallback\): void | 解析一个MDNS服务,使用callback方式作为异步方法。| +| startSearchingMDNS(): void | 开始搜索局域网内的MDNS服务。 | +| stopSearchingMDNS(): void | 停止搜索局域网内的MDNS服务。 | +| on(type: 'discoveryStart', callback: Callback<{serviceInfo: LocalServiceInfo, errorCode?: MdnsError}>): void | 订阅开启监听MDNS服务的通知。 | +| off(type: 'discoveryStart', callback?: Callback<{ serviceInfo: LocalServiceInfo, errorCode?: MdnsError }>): void | 取消开启监听MDNS服务的通知。 | +| on(type: 'discoveryStop', callback: Callback<{serviceInfo: LocalServiceInfo, errorCode?: MdnsError}>): void | 订阅停止监听MDNS服务的通知。 | +| off(type: 'discoveryStop', callback?: Callback<{ serviceInfo: LocalServiceInfo, errorCode?: MdnsError }>): void | 取消停止监听MDNS服务的通知。 | +| on(type: 'serviceFound', callback: Callback\): void | 订阅发现MDNS服务的通知。 | +| off(type: 'serviceFound', callback?: Callback\): void | 取消发现MDNS服务的通知。 | +| on(type: 'serviceLost', callback: Callback\): void | 订阅移除MDNS服务的通知。 | +| off(type: 'serviceLost', callback?: Callback\): void | 取消移除MDNS服务的通知。 | ## 管理本地服务 @@ -122,10 +122,10 @@ mdns.removeLocalService(context as Context, localServiceInfo, (error: BusinessEr 1. 设备连接WiFi。 2. 从@ohos.net.mdns里导入mdns的命名空间。 -3. 创建DiscoveryService对象,用于发现指定服务类型的mDNS服务。 -4. 订阅mDNS服务发现相关状态变化。 -5. 启动搜索局域网内的mDNS服务。 -6. 停止搜索局域网内的mDNS服务。 +3. 创建DiscoveryService对象,用于发现指定服务类型的MDNS服务。 +4. 订阅MDNS服务发现相关状态变化。 +5. 启动搜索局域网内的MDNS服务。 +6. 停止搜索局域网内的MDNS服务。 7. 取消订阅的mdns服务。 ```ts @@ -168,7 +168,7 @@ class EntryAbility extends UIAbility { let context = GlobalContext.getContext().getObject("value"); -// 创建DiscoveryService对象,用于发现指定服务类型的mDNS服务 +// 创建DiscoveryService对象,用于发现指定服务类型的MDNS服务 let serviceType = "_print._tcp"; let discoveryService = mdns.createDiscoveryService(context as Context, serviceType); @@ -176,7 +176,7 @@ class DataServiceInfo{ serviceInfo: mdns.LocalServiceInfo|null = null errorCode?: mdns.MdnsError = mdns.MdnsError.INTERNAL_ERROR } -// 订阅mDNS服务发现相关状态变化 +// 订阅MDNS服务发现相关状态变化 discoveryService.on('discoveryStart', (data: DataServiceInfo) => { console.log(JSON.stringify(data)); }); @@ -190,13 +190,13 @@ discoveryService.on('serviceLost', (data: mdns.LocalServiceInfo) => { console.log(JSON.stringify(data)); }); -// 启动搜索局域网内的mDNS服务 +// 启动搜索局域网内的MDNS服务 discoveryService.startSearchingMDNS(); -// 停止搜索局域网内的mDNS服务 +// 停止搜索局域网内的MDNS服务 discoveryService.stopSearchingMDNS(); -// 取消订阅的mdns服务 +// 取消订阅的MDNS服务 discoveryService.off('discoveryStart', (data: DataServiceInfo) => { console.log(JSON.stringify(data)); }); diff --git a/zh-cn/application-dev/connectivity/net-mgmt-overview.md b/zh-cn/application-dev/connectivity/net-mgmt-overview.md index a1ead6d0aedc604d97bde5db4321b71d8d8a3d42..3541bbffcd0c543d06bbbf6d8d8722461c5a400e 100644 --- a/zh-cn/application-dev/connectivity/net-mgmt-overview.md +++ b/zh-cn/application-dev/connectivity/net-mgmt-overview.md @@ -13,6 +13,7 @@ ## 约束与限制 使用网络管理模块的相关功能时,需要请求相应的权限。 +在申请权限前,请保证符合[权限使用的基本原则](../security/accesstoken-overview.md#权限使用的基本原则)。然后参考[配置文件权限声明指导文档](../security/accesstoken-guidelines.md#配置文件权限声明)声明对应权限。 | 权限名 | 说明 | | -------------------------------- | -------------------------------------- | diff --git a/zh-cn/application-dev/connectivity/net-sharing.md b/zh-cn/application-dev/connectivity/net-sharing.md index 3bffce44028caf1bb2485ee98c6c30d2afd5ca65..6b90cef051eff9b83439d77c88fa8ed4e90d6ed2 100644 --- a/zh-cn/application-dev/connectivity/net-sharing.md +++ b/zh-cn/application-dev/connectivity/net-sharing.md @@ -33,24 +33,24 @@ 完整的 JS API 说明以及实例代码请参考:[网络共享](../reference/apis/js-apis-net-sharing.md)。 -| 类型 | 接口 | 功能说明 | -| ---------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ | -| ohos.net.sharing | function isSharingSupported(callback: AsyncCallback\): void; | 获取当前系统是否支持网络共享,使用 callback 方式作为异步方法 | -| ohos.net.sharing | function isSharing(callback: AsyncCallback\): void; | 获取当前共享状态,使用 callback 方式作为异步方法 | -| ohos.net.sharing | function startSharing(type: SharingIfaceType, callback: AsyncCallback\): void; | 开启共享,type 为共享类型,目前支持 Wifi 热点、蓝牙、USB,使用 callback 方式作为异步方法 | -| ohos.net.sharing | function stopSharing(type: SharingIfaceType, callback: AsyncCallback\): void; | 停止指定类型共享,type 为共享类型,包括 Wifi 热点、蓝牙、USB,使用 callback 方式作为异步方法 | -| ohos.net.sharing | function getStatsRxBytes(callback: AsyncCallback\): void; | 获取共享接收数据量,单位 KB,使用 callback 方式作为异步方法 | -| ohos.net.sharing | function getStatsTxBytes(callback: AsyncCallback\): void; | 获取共享发送数据量,单位 KB,使用 callback 方式作为异步方法 | -| ohos.net.sharing | function getStatsTotalBytes(callback: AsyncCallback\): void; | 获取共享总数据流量,单位 KB,使用 callback 方式作为异步方法 | -| ohos.net.sharing | function getSharingIfaces(state: SharingIfaceState, callback: AsyncCallback\>): void; | 获取指定状态的网卡名称,state 为状态,包括正在共享、可共享、共享错误,使用 callback 方式作为异步方法 | -| ohos.net.sharing | function getSharingState(type: SharingIfaceType, callback: AsyncCallback\): void; | 获取指定类型共享状态,type 为类型,目前支持 Wifi 热点、蓝牙、USB,使用 callback 方式作为异步方法 | -| ohos.net.sharing | function getSharableRegexes(type: SharingIfaceType, callback: AsyncCallback\>): void; | 获取与指定类型匹配的网卡正则表达式列表,type 为类型,目前支持 Wifi 热点、蓝牙、USB,使用 callback 方式作为异步方法 | -| ohos.net.sharing | function on(type: 'sharingStateChange', callback: Callback\): void; | 注册共享状态改变监听,返回网络共享的状态。 | -| ohos.net.sharing | function off(type: 'sharingStateChange', callback?: Callback\): void; | 注销共享状态改变监听,返回网络共享的状态。 | -| ohos.net.sharing | unction on(type: 'interfaceSharingStateChange', callback: Callback\<{ type: SharingIfaceType, iface: string, state: SharingIfaceState }>): void; | 注册指定网卡共享状态改变监听 | -| ohos.net.sharing | function off(type: 'interfaceSharingStateChange', callback?: Callback\<{ type: SharingIfaceType, iface: string, state: SharingIfaceState }>): void; | 注销指定网卡共享状态改变监听 | -| ohos.net.sharing | function on(type: 'sharingUpstreamChange', callback: Callback\): void; | 注册上行网卡改变监听 | -| ohos.net.sharing | function off(type: 'sharingUpstreamChange', callback?: Callback\): void; | 注销上行网卡改变监听 | +| 接口名 | 描述 | +| --------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | +| isSharingSupported(callback: AsyncCallback\): void; | 获取当前系统是否支持网络共享,使用 callback 方式作为异步方法 | +| isSharing(callback: AsyncCallback\): void; | 获取当前共享状态,使用 callback 方式作为异步方法 | +| startSharing(type: SharingIfaceType, callback: AsyncCallback\): void; | 开启共享,type 为共享类型,目前支持 Wifi 热点、蓝牙、USB,使用 callback 方式作为异步方法 | +| stopSharing(type: SharingIfaceType, callback: AsyncCallback\): void; | 停止指定类型共享,type 为共享类型,包括 Wifi 热点、蓝牙、USB,使用 callback 方式作为异步方法 | +| getStatsRxBytes(callback: AsyncCallback\): void; | 获取共享接收数据量,单位 KB,使用 callback 方式作为异步方法 | +| getStatsTxBytes(callback: AsyncCallback\): void; | 获取共享发送数据量,单位 KB,使用 callback 方式作为异步方法 | +| getStatsTotalBytes(callback: AsyncCallback\): void; | 获取共享总数据流量,单位 KB,使用 callback 方式作为异步方法 | +| getSharingIfaces(state: SharingIfaceState, callback: AsyncCallback\>): void; | 获取指定状态的网卡名称,state 为状态,包括正在共享、可共享、共享错误,使用 callback 方式作为异步方法 | +| getSharingState(type: SharingIfaceType, callback: AsyncCallback\): void; | 获取指定类型共享状态,type 为类型,目前支持 Wifi 热点、蓝牙、USB,使用 callback 方式作为异步方法 | +| getSharableRegexes(type: SharingIfaceType, callback: AsyncCallback\>): void; | 获取与指定类型匹配的网卡正则表达式列表,type 为类型,目前支持 Wifi 热点、蓝牙、USB,使用 callback 方式作为异步方法 | +| on(type: 'sharingStateChange', callback: Callback\): void; | 注册共享状态改变监听,返回网络共享的状态。 | +| off(type: 'sharingStateChange', callback?: Callback\): void; | 注销共享状态改变监听,返回网络共享的状态。 | +| unction on(type: 'interfaceSharingStateChange', callback: Callback\<{ type: SharingIfaceType, iface: string, state: SharingIfaceState }>): void; | 注册指定网卡共享状态改变监听 | +| off(type: 'interfaceSharingStateChange', callback?: Callback\<{ type: SharingIfaceType, iface: string, state: SharingIfaceState }>): void; | 注销指定网卡共享状态改变监听 | +| on(type: 'sharingUpstreamChange', callback: Callback\): void; | 注册上行网卡改变监听 | +| off(type: 'sharingUpstreamChange', callback?: Callback\): void; | 注销上行网卡改变监听 | ## 开启网络共享 diff --git a/zh-cn/application-dev/connectivity/net-statistics.md b/zh-cn/application-dev/connectivity/net-statistics.md index d5723ffc2f9f49841498422c181d7a8163589229..7ecb103b9445f2b5a762dca7db1d80da6f5e5cb3 100644 --- a/zh-cn/application-dev/connectivity/net-statistics.md +++ b/zh-cn/application-dev/connectivity/net-statistics.md @@ -19,20 +19,20 @@ 完整的 JS API 说明以及实例代码请参考:[statistics 链接](../reference/apis/js-apis-net-statistics.md)。 -| 类型 | 接口 | 功能说明 | -| ------------------- | ------------------------------------------------------------------------------------------- | ------------------------------ | -| ohos.net.statistics | getIfaceRxBytes(nic: string, callback: AsyncCallback\): void; | 获取指定网卡实时下行流量数据。 | -| ohos.net.statistics | getIfaceTxBytes(nic: string, callback: AsyncCallback\): void; | 获取指定网卡实时上行流量数据。 | -| ohos.net.statistics | getCellularRxBytes(callback: AsyncCallback\): void; | 获取蜂窝实时下行流量数据。 | -| ohos.net.statistics | getCellularTxBytes(callback: AsyncCallback\): void; | 获取蜂窝实时上行流量数据。 | -| ohos.net.statistics | getAllRxBytes(callback: AsyncCallback\): void; | 获取所有网卡实时下行流量数据。 | -| ohos.net.statistics | getAllTxBytes(callback: AsyncCallback\): void; | 获取所有网卡实时上行流量数据。 | -| ohos.net.statistics | getUidRxBytes(uid: number, callback: AsyncCallback\): void; | 获取指定应用实时下行流量数据。 | -| ohos.net.statistics | getUidTxBytes(uid: number, callback: AsyncCallback\): void; | 获取指定应用实时上行流量数据。 | -| ohos.net.statistics | getTrafficStatsByIface(ifaceInfo: IfaceInfo, callback: AsyncCallback\): void; | 获取指定网卡历史流量信息。 | -| ohos.net.statistics | getTrafficStatsByUid(uidInfo: UidInfo, callback: AsyncCallback\): void; | 获取指定应用历史流量信息。 | -| ohos.net.statistics | on(type: 'netStatsChange', callback: Callback\<{ iface: string, uid?: number }>): void | 订阅流量改变事件通知。 | -| ohos.net.statistics | off(type: 'netStatsChange', callback?: Callback\<{ iface: string, uid?: number }>): void; | 取消订阅流量改变事件通知。 | +| 接口名 | 描述 | +| ------------------------------------------------------------------------------------------- | ---------------------------- | +| getIfaceRxBytes(nic: string, callback: AsyncCallback\): void; | 获取指定网卡实时下行流量数据。 | +| getIfaceTxBytes(nic: string, callback: AsyncCallback\): void; | 获取指定网卡实时上行流量数据。 | +| getCellularRxBytes(callback: AsyncCallback\): void; | 获取蜂窝实时下行流量数据。 | +| getCellularTxBytes(callback: AsyncCallback\): void; | 获取蜂窝实时上行流量数据。 | +| getAllRxBytes(callback: AsyncCallback\): void; | 获取所有网卡实时下行流量数据。 | +| getAllTxBytes(callback: AsyncCallback\): void; | 获取所有网卡实时上行流量数据。 | +| getUidRxBytes(uid: number, callback: AsyncCallback\): void; | 获取指定应用实时下行流量数据。 | +| getUidTxBytes(uid: number, callback: AsyncCallback\): void; | 获取指定应用实时上行流量数据。 | +| getTrafficStatsByIface(ifaceInfo: IfaceInfo, callback: AsyncCallback\): void; | 获取指定网卡历史流量信息。 | +| getTrafficStatsByUid(uidInfo: UidInfo, callback: AsyncCallback\): void; | 获取指定应用历史流量信息。 | +| on(type: 'netStatsChange', callback: Callback\<{ iface: string, uid?: number }>): void | 订阅流量改变事件通知。 | +| off(type: 'netStatsChange', callback?: Callback\<{ iface: string, uid?: number }>): void; | 取消订阅流量改变事件通知。 | ## 获取网卡/UID 的实时流量统计数据 diff --git a/zh-cn/application-dev/connectivity/net-vpn.md b/zh-cn/application-dev/connectivity/net-vpn.md index 990d0da983757098e7d5a4af6983f694d0df1be0..4dca4a53a7d838fdd1a37f8f8ea425694f11d83f 100644 --- a/zh-cn/application-dev/connectivity/net-vpn.md +++ b/zh-cn/application-dev/connectivity/net-vpn.md @@ -13,11 +13,11 @@ VPN 即虚拟专网(VPN-Virtual Private Network)在公用网络上建立专 完整的 JS API 说明以及实例代码请参考:[VPN API 参考](../reference/apis/js-apis-net-vpn.md)。 -| 类型 | 接口 | 功能说明 | -| ------------ | ----------------------------------------------------------------- | --------------------------------------------------- | -| ohos.net.vpn | setUp(config: VpnConfig, callback: AsyncCallback\): void | 建立一个 VPN 网络,使用 callback 方式作为异步方法。 | -| ohos.net.vpn | protect(socketFd: number, callback: AsyncCallback\): void | 保护 VPN 的隧道,使用 callback 方式作为异步方法。 | -| ohos.net.vpn | destroy(callback: AsyncCallback\): void | 销毁一个 VPN 网络,使用 callback 方式作为异步方法。 | +| 接口名 | 描述 | +| ----------------------------------------------------------------- | --------------------------------------------------- | +| setUp(config: VpnConfig, callback: AsyncCallback\): void | 建立一个 VPN 网络,使用 callback 方式作为异步方法。 | +| protect(socketFd: number, callback: AsyncCallback\): void | 保护 VPN 的隧道,使用 callback 方式作为异步方法。 | +| destroy(callback: AsyncCallback\): void | 销毁一个 VPN 网络,使用 callback 方式作为异步方法。 | ## 启动 VPN 的流程 diff --git a/zh-cn/application-dev/connectivity/socket-connection.md b/zh-cn/application-dev/connectivity/socket-connection.md index abd7ddb619a86832da461ae0bacd613995f4d6d5..f4a75d9c928dbbb0cbe176d1dda64d690e796483 100644 --- a/zh-cn/application-dev/connectivity/socket-connection.md +++ b/zh-cn/application-dev/connectivity/socket-connection.md @@ -25,12 +25,12 @@ Socket 连接主要是通过 Socket 进行数据传输,支持 TCP/UDP/TLS 协 Socket 连接主要由 socket 模块提供。具体接口说明如下表。 -| 接口名 | 功能描述 | +| 接口名 | 描述 | | ---------------------------------- | ------------------------------------------------------------------------------ | | constructUDPSocketInstance() | 创建一个 UDPSocket 对象。 | | constructTCPSocketInstance() | 创建一个 TCPSocket 对象。 | | constructTCPSocketServerInstance() | 创建一个 TCPSocketServer 对象。 | -| listen() | 绑定 IP 地址和端口,监听并接受与此套接字建立的 TCPSocket 连接。(仅 TCP 支持) | +| listen() | 绑定 IP 地址和端口,监听并接受与此套接字建立的 TCPSocket 连接。(仅 TCP 支持) | | bind() | 绑定 IP 地址和端口。 | | send() | 发送数据。 | | close() | 关闭连接。 | diff --git a/zh-cn/application-dev/connectivity/subscribe-remote-state.md b/zh-cn/application-dev/connectivity/subscribe-remote-state.md index 21970d91f975306e4a1e45712e45edb7f7c4872e..3f35dbebd4f789c6621e2aee1d27fdb8a72db29a 100755 --- a/zh-cn/application-dev/connectivity/subscribe-remote-state.md +++ b/zh-cn/application-dev/connectivity/subscribe-remote-state.md @@ -9,11 +9,11 @@ IPC/RPC提供对远端Stub对象状态的订阅机制,在远端Stub对象消 ## Native侧接口 -| 接口名 | 返回值类型 | 功能描述 | -| -------- | -------- | -------- | -| AddDeathRecipient(const sptr\ &recipient); | bool | 订阅远端Stub对象状态。 | -| RemoveDeathRecipient(const sptr\ &recipient); | bool | 取消订阅远端Stub对象状态。 | -| OnRemoteDied(const wptr\ &object); | void | 当远端Stub对象死亡时回调。 | +| 接口名 | 描述 | +| ------------------------------------------------------------------- | ------------------------- | +| bool AddDeathRecipient(const sptr\ &recipient); | 订阅远端Stub对象状态。 | +| bool RemoveDeathRecipient(const sptr\ &recipient); | 取消订阅远端Stub对象状态。 | +| void OnRemoteDied(const wptr\ &object); | 当远端Stub对象死亡时回调。 | ### 参考代码 diff --git a/zh-cn/application-dev/connectivity/websocket-connection.md b/zh-cn/application-dev/connectivity/websocket-connection.md index 78b49032956588d7d40e7c689e98337a5b4ebd10..c0da7993ce7cbe872bcd785d0cd7f30651a56eed 100644 --- a/zh-cn/application-dev/connectivity/websocket-connection.md +++ b/zh-cn/application-dev/connectivity/websocket-connection.md @@ -10,20 +10,20 @@ WebSocket连接功能主要由webSocket模块提供。使用该功能需要申请ohos.permission.INTERNET权限。具体接口说明如下表。 -| 接口名 | 功能描述 | -| -------- | -------- | -| createWebSocket() | 创建一个WebSocket连接。 | -| connect() | 根据URL地址,建立一个WebSocket连接。 | -| send() | 通过WebSocket连接发送数据。 | -| close() | 关闭WebSocket连接。 | -| on(type: 'open') | 订阅WebSocket的打开事件。 | -| off(type: 'open') | 取消订阅WebSocket的打开事件。 | -| on(type: 'message') | 订阅WebSocket的接收到服务器消息事件。 | +| 接口名 | 描述 | +| ------------------ | ----------------------------------------- | +| createWebSocket() | 创建一个WebSocket连接。 | +| connect() | 根据URL地址,建立一个WebSocket连接。 | +| send() | 通过WebSocket连接发送数据。 | +| close() | 关闭WebSocket连接。 | +| on(type: 'open') | 订阅WebSocket的打开事件。 | +| off(type: 'open') | 取消订阅WebSocket的打开事件。 | +| on(type: 'message') | 订阅WebSocket的接收到服务器消息事件。 | | off(type: 'message') | 取消订阅WebSocket的接收到服务器消息事件。 | -| on(type: 'close') | 订阅WebSocket的关闭事件。 | -| off(type: 'close') | 取消订阅WebSocket的关闭事件 | -| on(type: 'error') | 订阅WebSocket的Error事件。 | -| off(type: 'error') | 取消订阅WebSocket的Error事件。 | +| on(type: 'close') | 订阅WebSocket的关闭事件。 | +| off(type: 'close') | 取消订阅WebSocket的关闭事件 | +| on(type: 'error') | 订阅WebSocket的Error事件。 | +| off(type: 'error') | 取消订阅WebSocket的Error事件。 | ## 开发步骤 diff --git a/zh-cn/application-dev/device-usage-statistics/Readme-CN.md b/zh-cn/application-dev/device-usage-statistics/Readme-CN.md index a339fe53c23d36c7d9dfce9fc982feb8e2e22c4a..213d22cb4234664d6dbd26e7afa013a5ce23dd42 100644 --- a/zh-cn/application-dev/device-usage-statistics/Readme-CN.md +++ b/zh-cn/application-dev/device-usage-statistics/Readme-CN.md @@ -1,4 +1,4 @@ -# 设备使用信息统计 +# 设备使用信息统计(仅对系统应用开放) - [设备使用信息统计概述](device-usage-statistics-overview.md) - [设备使用信息统计开发指导](device-usage-statistics-use-guide.md) \ No newline at end of file diff --git a/zh-cn/application-dev/device-usage-statistics/device-usage-statistics-overview.md b/zh-cn/application-dev/device-usage-statistics/device-usage-statistics-overview.md index ae2026a593a8d6fe32793e008890babbd6434519..b55ed0e34b7d677993ed59f954d054c9d4dc2bad 100644 --- a/zh-cn/application-dev/device-usage-statistics/device-usage-statistics-overview.md +++ b/zh-cn/application-dev/device-usage-statistics/device-usage-statistics-overview.md @@ -36,5 +36,4 @@ 解除注册应用分组变化回调监听。 ## 设备使用信息统计使用权限 -- 设备使用信息统计的isIdleState、queryBundleEvents、queryBundleStatsInfos、queryBundleStatsInfoByInterval、queryDeviceEventStats、queryNotificationEventStats、queryAppGroup(bundleName)、setAppGroup、registerAppGroupCallBack、unregisterAppGroupCallBack、queryModuleUsageRecords和queryModuleUsageRecords(maxnum)接口为系统api,调用前需要申请ohos.permission.BUNDLE_ACTIVE_INFO权限。 -- 设备使用信息统计的queryCurrentBundleEvents、queryAppGroup()接口为三方api,调用时不需要申请权限。 \ No newline at end of file +- 设备使用信息统计的接口为系统api,调用前需要申请ohos.permission.BUNDLE_ACTIVE_INFO权限。 \ No newline at end of file diff --git a/zh-cn/application-dev/dfx/hiappevent-guidelines.md b/zh-cn/application-dev/dfx/hiappevent-guidelines.md index 133245b286f22daef935adc852cd4ea83ab0a77f..c633d7f2cdd90f0f9647d3c206b4d5bc503331a1 100644 --- a/zh-cn/application-dev/dfx/hiappevent-guidelines.md +++ b/zh-cn/application-dev/dfx/hiappevent-guidelines.md @@ -41,7 +41,28 @@ HiAppEvent是在系统层面为应用开发者提供的一种事件打点机制 | addWatcher(watcher: Watcher): AppEventPackageHolder | 添加应用事件观察者,以添加对应用事件的订阅。 | | removeWatcher(watcher: Watcher): void | 移除应用事件观察者,以移除对应用事件的订阅。 | -## 开发步骤 +**数据处理者接口功能介绍:** + +| 接口名 | 描述 | +| ----------------------------------------- | ------------------------------------------------ | +| addProcessor(processor: Processor): number | 添加数据处理者,以通过预置的处理者进行事件上报。 | +| removeProcessor(id: number): void | 移除数据处理者,以移除预置的处理者。 | + +**用户ID接口功能介绍:** + +| 接口名 | 描述 | +| ------------------------------------------ | -------------------------------------------- | +| setUserId(name: string, value: string): void | 设置用户ID,数据处理者上报事件时可携带用户ID。 | +| getUserId(name: string): void | 获取已设置的用户ID。 | + +**用户属性接口功能介绍:** + +| 接口名 | 描述 | +| ------------------------------------------------ | ------------------------------------------------ | +| setUserProperty(name: string, value: string): void | 设置用户属性,数据处理者上报事件时可携带用户属性。 | +| getUserProperty(name: string): void | 获取已设置的用户属性。 | + +## 事件订阅开发步骤 以实现对用户点击按钮行为的事件打点及订阅为例,说明开发步骤。 @@ -93,6 +114,46 @@ HiAppEvent是在系统层面为应用开发者提供的一种事件打点机制 2. 编辑工程中的“entry > src > main > ets > pages > Index.ets” 文件,添加一个按钮并在其onClick函数中进行事件打点,以记录按钮点击事件,完整示例代码如下: + ```ts + Button("writeTest").onClick(()=>{ + // 在按钮点击函数中进行事件打点,以记录按钮点击事件 + let eventParams: Record = { 'click_time': 100 }; + let eventInfo: hiAppEvent.AppEventInfo = { + // 事件领域定义 + domain: "button", + // 事件名称定义 + name: "click", + // 事件类型定义 + eventType: hiAppEvent.EventType.BEHAVIOR, + // 事件参数定义 + params: eventParams, + }; + hiAppEvent.write(eventInfo).then(() => { + hilog.info(0x0000, 'testTag', `HiAppEvent success to write event`) + }).catch((err: BusinessError) => { + hilog.error(0x0000, 'testTag', `HiAppEvent err.code: ${err.code}, err.message: ${err.message}`) + }); + }) + ``` + +3. 点击IDE界面中的运行按钮,运行应用工程,然后在应用界面中点击按钮“writeTest”,触发一次按钮点击事件打点。 + +4. 最终,可以在Log窗口看到按钮点击事件打点成功的日志,以及触发订阅回调后对打点事件数据的处理日志: + +```text +HiAppEvent success to write event +HiAppEvent eventPkg.packageId=0 +HiAppEvent eventPkg.row=1 +HiAppEvent eventPkg.size=124 +HiAppEvent eventPkg.info={"domain\_":"button","name\_":"click","type\_":4,"time\_":1670268234523,"tz\_":"+0800","pid\_":3295,"tid\_":3309,"click_time":100} +``` + +## 事件上报开发步骤 + +以实现对用户点击按钮行为的事件打点并由处理者进行事件上报为例,说明开发步骤。 + +1. 编辑工程中的“entry > src > main > ets > pages > Index.ets” 文件,添加一个按钮并在其onClick函数中添加数据处理者。analytics_demo为预置在设备里面的数据处理者lib库,具体实现可以参考[《HiAppEvent数据处理者lib库概述》](../../device-dev/subsystems/subsys-dfx-hiappevent-extend-so.md)。完整示例代码如下: + ```ts import { BusinessError } from '@ohos.base' import hiAppEvent from '@ohos.hiviewdfx.hiAppEvent' @@ -102,6 +163,8 @@ HiAppEvent是在系统层面为应用开发者提供的一种事件打点机制 @Component struct Index { @State message: string = 'Hello World' + + processorId: number = -1 build() { Row() { @@ -110,24 +173,26 @@ HiAppEvent是在系统层面为应用开发者提供的一种事件打点机制 .fontSize(50) .fontWeight(FontWeight.Bold) - Button("writeTest").onClick(()=>{ - // 在按钮点击函数中进行事件打点,以记录按钮点击事件 - let eventParams: Record = { 'click_time': 100 }; - let eventInfo: hiAppEvent.AppEventInfo = { - // 事件领域定义 - domain: "button", - // 事件名称定义 - name: "click", - // 事件类型定义 - eventType: hiAppEvent.EventType.BEHAVIOR, - // 事件参数定义 - params: eventParams, + Button("addProcessorTest").onClick(()=>{ + // 在按钮点击函数中进行数据处理者添加 + let eventConfig: hiAppEvent.AppEventReportConfig = { + domain: 'button', + name: 'click', + isRealTime: true + }; + let processor: hiAppEvent.Processor = { + name: 'analytics_demo', + debugMode: true, + routeInfo: 'CN', + onStartReport: true, + onBackgroundReport: true, + periodReport: 10, + batchReport: 5, + userIds: ['testUserIdName'], + userProperties: ['testUserPropertyName'], + eventConfigs: [eventConfig] }; - hiAppEvent.write(eventInfo).then(() => { - hilog.info(0x0000, 'testTag', `HiAppEvent success to write event`) - }).catch((err: BusinessError) => { - hilog.error(0x0000, 'testTag', `HiAppEvent err.code: ${err.code}, err.message: ${err.message}`) - }); + this.processorId = hiAppEvent.addProcessor(processor); }) } .width('100%') @@ -136,15 +201,73 @@ HiAppEvent是在系统层面为应用开发者提供的一种事件打点机制 } } ``` - -3. 点击IDE界面中的运行按钮,运行应用工程,然后在应用界面中点击按钮“writeTest”,触发一次按钮点击事件打点。 -4. 最终,可以在Log窗口看到按钮点击事件打点成功的日志,以及触发订阅回调后对打点事件数据的处理日志: -> HiAppEvent success to write event -> HiAppEvent eventPkg.packageId=0 -> HiAppEvent eventPkg.row=1 -> HiAppEvent eventPkg.size=124 -> HiAppEvent eventPkg.info={"domain\_":"button","name\_":"click","type\_":4,"time\_":1670268234523,"tz\_":"+0800","pid\_":3295,"tid\_":3309,"click_time":100} +2. 编辑工程中的“entry > src > main > ets > pages > Index.ets” 文件,添加一个按钮并在其onClick函数中添加并查看用户ID,完整示例代码如下: + + ```ts + Button("userIdTest").onClick(()=>{ + // 在按钮点击函数中设置用户ID + hiAppEvent.setUserId('testUserIdName', '123456'); + + // 在按钮点击函数中获取刚设置的用户ID + let userId = hiAppEvent.getUserId('testUserIdName'); + hilog.info(0x0000, 'testTag', `userId: ${userId}`) + }) + ``` + +3. 编辑工程中的“entry > src > main > ets > pages > Index.ets” 文件,添加一个按钮并在其onClick函数中添加并查看用户属性,完整示例代码如下: + + ```ts + Button("userPropertyTest").onClick(()=>{ + // 在按钮点击函数中设置用户ID + hiAppEvent.setUserProperty('testUserPropertyName', '123456'); + + // 在按钮点击函数中获取刚设置的用户ID + let userProperty = hiAppEvent.getUserProperty('testUserPropertyName'); + hilog.info(0x0000, 'testTag', `userProperty: ${userProperty}`) + }) + ``` + +4. 编辑工程中的“entry > src > main > ets > pages > Index.ets” 文件,添加一个按钮并在其onClick函数中进行事件打点,以记录按钮点击事件,完整示例代码如下: + + ```ts + Button("writeTest").onClick(()=>{ + // 在按钮点击函数中进行事件打点,以记录按钮点击事件 + let eventParams: Record = { 'click_time': 100 }; + let eventInfo: hiAppEvent.AppEventInfo = { + // 事件领域定义 + domain: "button", + // 事件名称定义 + name: "click", + // 事件类型定义 + eventType: hiAppEvent.EventType.BEHAVIOR, + // 事件参数定义 + params: eventParams, + }; + hiAppEvent.write(eventInfo).then(() => { + hilog.info(0x0000, 'testTag', `HiAppEvent success to write event`) + }).catch((err: BusinessError) => { + hilog.error(0x0000, 'testTag', `HiAppEvent err.code: ${err.code}, err.message: ${err.message}`) + }); + }) + ``` + +5. 编辑工程中的“entry > src > main > ets > pages > Index.ets” 文件,添加一个按钮并在其onClick函数中进行数据处理者移除(第二步已完成数据处理者添加),完整示例代码如下: + + ```ts + Button("removeProcessorTest").onClick(()=>{ + // 在按钮点击函数中进行数据处理者移除 + hiAppEvent.removeProcessor(this.processorId); + }) + ``` + +6. 点击IDE界面中的运行按钮,运行应用工程,然后在应用界面中依次点击按钮“addProcessorTest”、“userIdTest”、“userPropertyTest”、“writeTest”、“removeProcessorTest”,则成功通过数据处理者进行一次事件上报。 + + 最终,事件处理者成功接收到事件数据,并在Log窗口看到按钮点击事件打点成功的日志: + + ```text + HiAppEvent success to write event + ``` ## 相关实例 diff --git a/zh-cn/application-dev/file-management/send-file-to-app-sandbox.md b/zh-cn/application-dev/file-management/send-file-to-app-sandbox.md index bdcbb33e3c9c04341e14ca39a0e5ff31194a203f..a76998237b26a308cac9a545ffa78023de1646c2 100644 --- a/zh-cn/application-dev/file-management/send-file-to-app-sandbox.md +++ b/zh-cn/application-dev/file-management/send-file-to-app-sandbox.md @@ -39,7 +39,7 @@ hdc file send ${待推送文件的本地路径} /data/app/el1/bundle/public/com. hdc shell ps -ef | grep com.ohos.example ``` -设置文件user_id、group_id命令如下: +使用应用进程的user_id设置文件的user_id和group_id,命令如下: ``` hdc shell chown ${user_id}:${user_id} ${文件路径} ``` diff --git a/zh-cn/application-dev/key-features/multi-device-app-dev/development-intro.md b/zh-cn/application-dev/key-features/multi-device-app-dev/development-intro.md index 5aaca2c08dfeecc97fdfdc8fad207b703abf8c8f..b05ee1825e1993be6c6bef5b8c388019c9656d44 100644 --- a/zh-cn/application-dev/key-features/multi-device-app-dev/development-intro.md +++ b/zh-cn/application-dev/key-features/multi-device-app-dev/development-intro.md @@ -16,8 +16,8 @@ > **说明:** > > - 只有当应用要求能力集是设备支持能力集的子集的时候,应用才可以在该设备上分发、安装和运行。 -> - 可以访问[系统能力列表](../../reference/syscap-list.md)了解OpenHarmony全量的系统能力。 -> - OpenHarmony支持的设备类型分为两大类: 典型设备和厂商自定义设备。默认设备、平板等常用的设备类型属于典型设备,其它的属于厂商自定义设备。对于典型设备,系统已经预定义了相应的系统能力集合;对于厂商自定义设备,需要厂商给出其系统能力集合的定义。 +> - 可以访问[系统能力列表](../../reference/syscap-list.md)了解全量的系统能力。 +> - 支持的设备类型分为两大类: 典型设备和厂商自定义设备。默认设备、平板等常用的设备类型属于典型设备,其它的属于厂商自定义设备。对于典型设备,系统已经预定义了相应的系统能力集合;对于厂商自定义设备,需要厂商给出其系统能力集合的定义。 ## 开发指导 ### 设备要求能力集的获取及导入 @@ -38,7 +38,7 @@ 如果某个系统能力没有写入应用的要求能力集中,那么在使用前需要判断设备是否支持该系统能力。 -- 方法1:OpenHarmony定义了API canIUse帮助开发者来判断该设备是否支持某个特定的syscap。 +- 方法1:canIUse接口帮助开发者来判断该设备是否支持某个特定的syscap。 ```ts if (canIUse("SystemCapability.Communication.NFC.Core")) { diff --git a/zh-cn/application-dev/key-features/multi-device-app-dev/foreword.md b/zh-cn/application-dev/key-features/multi-device-app-dev/foreword.md index 36ec9c56bdc51e84efc51d85c584d7a107fded0b..64c48751ebdaed7b1a8a9e55b20a057605a2c46d 100644 --- a/zh-cn/application-dev/key-features/multi-device-app-dev/foreword.md +++ b/zh-cn/application-dev/key-features/multi-device-app-dev/foreword.md @@ -6,7 +6,7 @@ ## 本文面向的读者 -本文适合开发OpenHarmony应用的UX设计师及开发人员。当然,也欢迎任何对“一多”感兴趣的读者阅读本文,相信读者们都可以从中获益。 +本文适合开发应用的UX设计师及开发人员。当然,也欢迎任何对“一多”感兴趣的读者阅读本文,相信读者们都可以从中获益。 推荐尽量按照章节顺序阅读本文。如果时间有限,按照角色区分,建议至少阅读如下章节: @@ -32,7 +32,7 @@ - 第5章[工程管理](ide-using.md)介绍了从工程角度如何开始开发应用,让读者可以直接上手创建多设备应用的工程,是后面学习“一多”能力的上手基础。 -- 第6章[页面开发的一多能力介绍](page-development-intro.md)和第7章[功能开发的一多能力介绍](development-intro.md)介绍了OpenHarmony提供的“一多”能力,其中每个能力都提供了代码示例和UX效果,让读者可以快速学习“一多”能力。 +- 第6章[页面开发的一多能力介绍](page-development-intro.md)和第7章[功能开发的一多能力介绍](development-intro.md)介绍了“一多”能力,其中每个能力都提供了代码示例和UX效果,让读者可以快速学习“一多”能力。 - 第8章[案例应用](case.md)阐述了从应用设计到开发这一过程中如何实践前面章节介绍的设计思路或“一多”能力,让读者可以整体掌握“一多”在应用开发过程中的知识。 diff --git a/zh-cn/application-dev/key-features/multi-device-app-dev/introduction.md b/zh-cn/application-dev/key-features/multi-device-app-dev/introduction.md index a74ff899a7e8cf8416bd99e10b46fbb5a7655451..f4b5d0458f40e1d8cd33b250973bfcd963106e1a 100644 --- a/zh-cn/application-dev/key-features/multi-device-app-dev/introduction.md +++ b/zh-cn/application-dev/key-features/multi-device-app-dev/introduction.md @@ -3,7 +3,7 @@ ## 背景 -随着终端设备形态日益多样化,分布式技术逐渐打破单一硬件边界,一个应用或服务,可以在不同的硬件设备之间随意调用、互助共享,让用户享受无缝的全场景体验。而作为应用开发者,广泛的设备类型也能为应用带来广大的潜在用户群体。但是如果一个应用需要在多个设备上提供同样的内容,则需要适配不同的屏幕尺寸和硬件,开发成本较高。OpenHarmony 系统面向多终端提供了“一次开发,多端部署”(后文中简称为“一多”)的能力,让开发者可以基于一种设计,高效构建多端可运行的应用。 +随着终端设备形态日益多样化,分布式技术逐渐打破单一硬件边界,一个应用或服务,可以在不同的硬件设备之间随意调用、互助共享,让用户享受无缝的全场景体验。而作为应用开发者,广泛的设备类型也能为应用带来广大的潜在用户群体。但是如果一个应用需要在多个设备上提供同样的内容,则需要适配不同的屏幕尺寸和硬件,开发成本较高。OpenHarmony系统面向多终端提供了“一次开发,多端部署”(后文中简称为“一多”)的能力,让开发者可以基于一种设计,高效构建多端可运行的应用。 ![zh-cn_image_0000001267340890](figures/zh-cn_image_0000001267340890.jpg) @@ -28,7 +28,7 @@ > > - 应用开发不仅包含应用页面开发,还包括应用后端功能开发以及服务器端开发等。 > -> - 本文旨在指导开发者如何在OpenHarmony系统中开发“一多”应用,服务器端开发不在本文探讨范围内。 +> - 本文旨在指导开发者如何开发“一多”应用,服务器端开发不在本文探讨范围内。 ## 基础知识 @@ -37,7 +37,7 @@ ### 方舟开发框架 -OpenHarmony提供了[方舟开发框架](../../ui/arkui-overview.md)(简称:ArkUI),提供开发者进行应用UI开发时所必须的能力。 +[方舟开发框架](../../ui/arkui-overview.md)(简称:ArkUI)提供开发者进行应用UI开发时所必须的能力。 方舟开发框架提供了两种开发范式,分别是基于JS扩展的类Web开发范式(后文中简称为“类Web开发范式”)和基于ArkTS的声明式开发范式(后文中简称为“声明式开发范式”)。 @@ -57,7 +57,7 @@ OpenHarmony提供了[方舟开发框架](../../ui/arkui-overview.md)(简称: ### 应用程序包结构 -在进行应用开发时,一个应用通常包含一个或多个Module。Module是OpenHarmony应用/服务的基本功能单元,包含了源代码、资源文件、第三方库及应用/服务配置文件,每一个Module都可以独立进行编译和运行。 +在进行应用开发时,一个应用通常包含一个或多个Module。Module是应用/服务的基本功能单元,包含了源代码、资源文件、第三方库及应用/服务配置文件,每一个Module都可以独立进行编译和运行。 Module分为“Ability”和“Library”两种类型: @@ -65,7 +65,7 @@ Module分为“Ability”和“Library”两种类型: * “Library”类型的Module编译后生成HAR包或[HSP包](../../quick-start/shared-guide.md)。 -OpenHarmony的应用以APP Pack形式发布,其包含一个或多个HAP包。HAP是OpenHarmony应用安装的基本单位,HAP可以分为Entry和Feature两种类型: +应用以APP Pack形式发布,其包含一个或多个HAP包。HAP是应用安装的基本单位,HAP可以分为Entry和Feature两种类型: * Entry类型的HAP:应用的主模块。在同一个应用中,同一设备类型只支持一个Entry类型的HAP,通常用于实现应用的入口界面、入口图标、主特性功能等。 diff --git a/zh-cn/application-dev/key-features/multi-device-app-dev/polymorphic-controls.md b/zh-cn/application-dev/key-features/multi-device-app-dev/polymorphic-controls.md index df85095968ece3cafa6eb5e76f3e756e8214b999..ec51f22bdd7f4c5a5a77f91edaab4f9362b5fed8 100644 --- a/zh-cn/application-dev/key-features/multi-device-app-dev/polymorphic-controls.md +++ b/zh-cn/application-dev/key-features/multi-device-app-dev/polymorphic-controls.md @@ -5,4 +5,5 @@ > **说明:** -> OpenHarmony上的多态组件能力正在逐步补齐中。 +> +> 多态组件能力正在逐步补齐中。 diff --git a/zh-cn/application-dev/key-features/multi-device-app-dev/start-with-a-example.md b/zh-cn/application-dev/key-features/multi-device-app-dev/start-with-a-example.md index 1ef98e350380d6009d5f297ee3498826a8d76f72..98277892c7da546c0a6951262418bd7b07d7bdad 100644 --- a/zh-cn/application-dev/key-features/multi-device-app-dev/start-with-a-example.md +++ b/zh-cn/application-dev/key-features/multi-device-app-dev/start-with-a-example.md @@ -20,11 +20,11 @@ | 大设备 | [840, +∞) | > **说明:** -> - vp是virtual pixel(虚拟像素)的缩写,是OpenHarmony中常用的长度单位,详见[视觉基础](../../../design/ux-design/visual-basis.md)小节中的介绍。 +> - vp是virtual pixel(虚拟像素)的缩写,是常用的长度单位,详见[视觉基础](../../../design/ux-design/visual-basis.md)小节中的介绍。 > > - 此处基于设备屏幕宽度划分不同设备是为了读者方便理解。通常智能设备上的应用都是以全屏的形式运行,但随着移动技术的发展,当前部分智能设备支持应用以自由窗口模式运行(即用户可以通过拖拽等操作自由调整应用运行窗口的尺寸),故以应用窗口尺寸为基准进行划分更为合适,本文后续的响应式布局章节中将详细介绍相关内容。 > -> - OpenHarmony当前仅有默认设备和平板两种设备形态,IDE在创建OpenHarmony工程时也仅可以选择默认设备和平板。随着OpenHarmony的演进,其支持的设备形态会不断丰富,本文也会定期刷新相关介绍。 +> - OpenHarmony当前仅有默认设备和平板两种设备形态,IDE在创建OpenHarmony工程时也仅可以选择默认设备和平板。随着演进,其支持的设备形态会不断丰富,本文也会定期刷新相关介绍。 默认设备和平板对应于小设备、中设备及大设备,本示例以这三类设备场景为例,介绍不同设备上的UX设计。天气主页在不同设备上的设计图如下所示。 diff --git a/zh-cn/application-dev/media/Readme-CN.md b/zh-cn/application-dev/media/Readme-CN.md index d91c3197d9c2f90eef560fe8d3c1b325413415fa..80ae5fbd80cae44199039d49303ebd9025a21c49 100755 --- a/zh-cn/application-dev/media/Readme-CN.md +++ b/zh-cn/application-dev/media/Readme-CN.md @@ -6,52 +6,53 @@ - [AVPlayer和AVRecorder](avplayer-avrecorder-overview.md) - 音频播放 - [音频播放开发概述](audio-playback-overview.md) - - [使用AVPlayer开发音频播放功能](using-avplayer-for-playback.md) - - [使用AudioRenderer开发音频播放功能](using-audiorenderer-for-playback.md) - - [使用OpenSL ES开发音频播放功能](using-opensl-es-for-playback.md) - - [使用TonePlayer开发音频播放功能(仅对系统应用开放)](using-toneplayer-for-playback.md) - - [使用OHAudio开发音频播放功能](using-ohaudio-for-playback.md) - - [使用SoundPool开发音频播放功能](using-soundpool-for-playback.md) - - [多音频播放的并发策略](audio-playback-concurrency.md) - - [播放音量管理](volume-management.md) - - [音效管理](audio-effect-management.md) - - [音频播放流管理](audio-playback-stream-management.md) - - [音频输出设备管理](audio-output-device-management.md) - - [分布式音频播放(仅对系统应用开放)](distributed-audio-playback.md) + - [使用AVPlayer开发音频播放功能(ArkTS)](using-avplayer-for-playback.md) + - [使用AVPlayer开发音频播放功能(C/C++)](using-ndk-avplayer-for-playerback.md) + - [使用AudioRenderer开发音频播放功能(ArkTS)](using-audiorenderer-for-playback.md) + - [使用OpenSL ES开发音频播放功能(C/C++)](using-opensl-es-for-playback.md) + - [使用TonePlayer开发音频播放功能(仅对系统应用开放)(ArkTS)](using-toneplayer-for-playback.md) + - [使用OHAudio开发音频播放功能(C/C++)](using-ohaudio-for-playback.md) + - [使用SoundPool开发音频播放功能(ArkTS)](using-soundpool-for-playback.md) + - [多音频播放的并发策略(ArkTS)](audio-playback-concurrency.md) + - [播放音量管理(ArkTS)](volume-management.md) + - [音效管理(ArkTS)](audio-effect-management.md) + - [音频播放流管理(ArkTS)](audio-playback-stream-management.md) + - [音频输出设备管理(ArkTS)](audio-output-device-management.md) + - [分布式音频播放(仅对系统应用开放)(ArkTS)](distributed-audio-playback.md) - 音频录制 - [音频录制开发概述](audio-recording-overview.md) - - [使用AVRecorder开发音频录制功能](using-avrecorder-for-recording.md) - - [使用AudioCapturer开发音频录制功能](using-audiocapturer-for-recording.md) - - [使用OpenSL ES开发音频录制功能](using-opensl-es-for-recording.md) - - [使用OHAudio开发音频录制功能](using-ohaudio-for-recording.md) - - [管理麦克风](mic-management.md) - - [音频录制流管理](audio-recording-stream-management.md) - - [音频输入设备管理](audio-input-device-management.md) + - [使用AVRecorder开发音频录制功能(ArkTS)](using-avrecorder-for-recording.md) + - [使用AudioCapturer开发音频录制功能(ArkTS)](using-audiocapturer-for-recording.md) + - [使用OpenSL ES开发音频录制功能(C/C++)](using-opensl-es-for-recording.md) + - [使用OHAudio开发音频录制功能(C/C++)](using-ohaudio-for-recording.md) + - [管理麦克风(ArkTS)](mic-management.md) + - [音频录制流管理(ArkTS)](audio-recording-stream-management.md) + - [音频输入设备管理(ArkTS)](audio-input-device-management.md) - 音频通话 - [音频通话开发概述](audio-call-overview.md) - - [开发音频通话功能](audio-call-development.md) - - [视频播放](video-playback.md) - - [视频录制](video-recording.md) - - [屏幕录制](avscreen-capture.md) - - [获取音视频元数据](avmetadataextractor.md) - - [获取视频缩略图](avimagegenerator.md) + - [开发音频通话功能(ArkTS)](audio-call-development.md) + - [视频播放(ArkTS)](video-playback.md) + - [视频录制(ArkTS)](video-recording.md) + - [屏幕录制(C/C++)](avscreen-capture.md) + - [获取音视频元数据(ArkTS)](avmetadataextractor.md) + - [获取视频缩略图(ArkTS)](avimagegenerator.md) - 音视频编解码 - - [获取支持的编解码能力](obtain-supported-codecs.md) - - [音频编码](audio-encoding.md) - - [音频解码](audio-decoding.md) - - [视频编码](video-encoding.md) - - [视频解码](video-decoding.md) - - [音视频封装](audio-video-encapsulation.md) - - [音视频解封装](audio-video-decapsulation.md) + - [获取支持的编解码能力(C/C++)](obtain-supported-codecs.md) + - [音频编码(C/C++)](audio-encoding.md) + - [音频解码(C/C++)](audio-decoding.md) + - [视频编码(C/C++)](video-encoding.md) + - [视频解码(C/C++)](video-decoding.md) + - [音视频封装(C/C++)](audio-video-encapsulation.md) + - [音视频解封装(C/C++)](audio-video-decapsulation.md) - 媒体会话 - [媒体会话概述](avsession-overview.md) - 本地媒体会话 - [本地媒体会话概述](local-avsession-overview.md) - - [媒体会话提供方](using-avsession-developer.md) - - [媒体会话控制方](using-avsession-controller.md) + - [媒体会话提供方(ArkTS)](using-avsession-developer.md) + - [媒体会话控制方(ArkTS)](using-avsession-controller.md) - 分布式媒体会话 - [分布式媒体会话概述](distributed-avsession-overview.md) - - [使用分布式媒体会话](using-distributed-avsession.md) + - [使用分布式媒体会话(ArkTS)](using-distributed-avsession.md) - 相机 - [相机开发概述](camera-overview.md) - [开发准备](camera-preparation.md) @@ -65,9 +66,9 @@ - 相机最佳实践(ArkTS) - [拍照实现方案(ArkTS)](camera-shooting-case.md) - [录像实现方案(ArkTS)](camera-recording-case.md) - - [使用人像模式拍照](camera-mode.md) - - [双路预览](camera-dual-channel-preview.md) - - [性能提升方案(仅对系统应用开放)](camera-performance-improvement.md) + - [使用人像模式拍照(ArkTS)](camera-mode.md) + - [双路预览(ArkTS)](camera-dual-channel-preview.md) + - [性能提升方案(仅对系统应用开放)(ArkTS)](camera-performance-improvement.md) - 相机开发指导(C/C++) - [设备输入(C/C++)](native-camera-device-input.md) - [会话管理(C/C++)](native-camera-session-management.md) @@ -83,12 +84,12 @@ - [录像流二次处理的实现方案(C/C++)](native-camera-recording-case-imageReceiver.md) - 图片 - [图片开发概述](image-overview.md) - - [图片解码](image-decoding.md) + - [图片解码(ArkTS)](image-decoding.md) - 图片处理 - [图像变换(ArkTS)](image-transformation.md) - [图像变换(C/C++)](image-transformation-native.md) - [PixelMap数据处理(C/C++)](image-pixelmap-operation-native.md) - - [位图操作](image-pixelmap-operation.md) + - [位图操作(ArkTS)](image-pixelmap-operation.md) - [图片编码(ArkTS)](image-encoding.md) - [图片编码(C/C++)](image-encoding-native.md) - - [图片工具](image-tool.md) + - [图片工具(ArkTS)](image-tool.md) diff --git a/zh-cn/application-dev/media/audio-call-development.md b/zh-cn/application-dev/media/audio-call-development.md index f3040e1169e4431f9878129e240e3ff8a544fc10..754efd9d27e5f72f8b88f95b107d564f93f9aec8 100644 --- a/zh-cn/application-dev/media/audio-call-development.md +++ b/zh-cn/application-dev/media/audio-call-development.md @@ -1,4 +1,4 @@ -# 开发音频通话功能 +# 开发音频通话功能(ArkTS) 在音频通话场景下,音频输出(播放对端声音)和音频输入(录制本端声音)会同时进行,应用可以通过使用AudioRenderer来实现音频输出,通过使用AudioCapturer来实现音频输入,同时使用AudioRenderer和AudioCapturer即可实现音频通话功能。 diff --git a/zh-cn/application-dev/media/audio-decoding.md b/zh-cn/application-dev/media/audio-decoding.md index d40e59065c92b975c18ce2dc63aac0096747be6e..57dfe540b9ce1098b99903a45437a45f09b3e264 100644 --- a/zh-cn/application-dev/media/audio-decoding.md +++ b/zh-cn/application-dev/media/audio-decoding.md @@ -1,4 +1,4 @@ -# 音频解码 +# 音频解码(C/C++) 开发者可以调用本模块的Native API接口,完成音频解码,即将媒体数据解码为PCM码流。 diff --git a/zh-cn/application-dev/media/audio-effect-management.md b/zh-cn/application-dev/media/audio-effect-management.md index 713138d3ce2b9cf902f281b91b017eb1c0fcc278..5c58013c9dbaee8535c0cca1ffb2fd4197183080 100644 --- a/zh-cn/application-dev/media/audio-effect-management.md +++ b/zh-cn/application-dev/media/audio-effect-management.md @@ -1,4 +1,4 @@ -# 音效管理 +# 音效管理(ArkTS) 音效管理主要包括播放实例音效管理和全局音效查询两部分,播放实例音效管理主要包括查询和设置当前音频播放流的音效模式,全局音效查询支持查询ContentType和StreamUsage对应场景支持的音效模式。 diff --git a/zh-cn/application-dev/media/audio-encoding.md b/zh-cn/application-dev/media/audio-encoding.md index d49e4c92a6d74329227ac66fc372c0d58466c622..b885170adaa1de6652476925f7ae5b85d2356384 100644 --- a/zh-cn/application-dev/media/audio-encoding.md +++ b/zh-cn/application-dev/media/audio-encoding.md @@ -1,4 +1,4 @@ -# 音频编码 +# 音频编码(C/C++) 开发者可以调用本模块的Native API接口,完成音频编码,即将音频PCM编码压缩成不同的格式。 diff --git a/zh-cn/application-dev/media/audio-input-device-management.md b/zh-cn/application-dev/media/audio-input-device-management.md index 824949799d568a9b78866a6b9c3db6c3349da9a0..a2676a073a73414631a899854eeaa4f89b4bbbf0 100644 --- a/zh-cn/application-dev/media/audio-input-device-management.md +++ b/zh-cn/application-dev/media/audio-input-device-management.md @@ -1,4 +1,4 @@ -# 音频输入设备管理 +# 音频输入设备管理(ArkTS) 有时设备同时连接多个音频输入设备,需要指定音频输入设备进行音频录制,此时需要使用AudioRoutingManager接口进行输入设备的管理,API说明可以参考[AudioRoutingManager API文档](../reference/apis/js-apis-audio.md#audioroutingmanager9)。 diff --git a/zh-cn/application-dev/media/audio-output-device-management.md b/zh-cn/application-dev/media/audio-output-device-management.md index 274a0d97d4a35791d5d4bd1c4ad9483b7aa32db9..50c9527541f4144c75a4e4de8ebee5d48333651f 100644 --- a/zh-cn/application-dev/media/audio-output-device-management.md +++ b/zh-cn/application-dev/media/audio-output-device-management.md @@ -1,4 +1,4 @@ -# 音频输出设备管理 +# 音频输出设备管理(ArkTS) 有时设备同时连接多个音频输出设备,需要指定音频输出设备进行音频播放,此时需要使用AudioRoutingManager接口进行输出设备的管理,API说明可以参考[AudioRoutingManager API文档](../reference/apis/js-apis-audio.md#audioroutingmanager9)。 diff --git a/zh-cn/application-dev/media/audio-playback-concurrency.md b/zh-cn/application-dev/media/audio-playback-concurrency.md index 167afad85f21d9bcc393591971b9192f1f5f3c2b..8cf69c9c694ee9279839f6aa4cc560560ce361f1 100644 --- a/zh-cn/application-dev/media/audio-playback-concurrency.md +++ b/zh-cn/application-dev/media/audio-playback-concurrency.md @@ -1,4 +1,4 @@ -# 多音频播放的并发策略 +# 多音频播放的并发策略(ArkTS) ## 音频打断策略 diff --git a/zh-cn/application-dev/media/audio-playback-stream-management.md b/zh-cn/application-dev/media/audio-playback-stream-management.md index a2cf818cd1a117610b4da708021e39537bdcfb29..0e461692b9703554fbaa34af31a25d209af38501 100644 --- a/zh-cn/application-dev/media/audio-playback-stream-management.md +++ b/zh-cn/application-dev/media/audio-playback-stream-management.md @@ -1,4 +1,4 @@ -# 音频播放流管理 +# 音频播放流管理(ArkTS) 对于播放音频类的应用,开发者需要关注该应用的音频流的状态以做出相应的操作,比如监听到状态为播放中/暂停时,及时改变播放按钮的UI显示。 diff --git a/zh-cn/application-dev/media/audio-recording-stream-management.md b/zh-cn/application-dev/media/audio-recording-stream-management.md index 51b3637cbe9293850eb1decf4806b816f88e3a0d..b24c149dd0b25aedc9688617936d5e7fd02ad62b 100644 --- a/zh-cn/application-dev/media/audio-recording-stream-management.md +++ b/zh-cn/application-dev/media/audio-recording-stream-management.md @@ -1,4 +1,4 @@ -# 音频录制流管理 +# 音频录制流管理(ArkTS) 对于录制音频类的应用,开发者需要关注该应用的音频流的状态以做出相应的操作,比如监听到状态为结束时,及时提示用户录制已结束。 diff --git a/zh-cn/application-dev/media/audio-video-decapsulation.md b/zh-cn/application-dev/media/audio-video-decapsulation.md index 6a0fea1b211c5ea86896abfa0f59704070ba399d..7842e9ee4becd8f9ce966532a7bd1c23781493dd 100644 --- a/zh-cn/application-dev/media/audio-video-decapsulation.md +++ b/zh-cn/application-dev/media/audio-video-decapsulation.md @@ -1,4 +1,4 @@ -# 音视频解封装 +# 音视频解封装(C/C++) 开发者可以调用本模块的Native API接口,完成音视频解封装,即从比特流数据中取出音频、视频等媒体帧数据。 diff --git a/zh-cn/application-dev/media/audio-video-encapsulation.md b/zh-cn/application-dev/media/audio-video-encapsulation.md index 9e030223f142b6d609bd84688fbbb6824f81e165..b24432afe1b3fb186d1b79e2c1f6895996c3a1d5 100644 --- a/zh-cn/application-dev/media/audio-video-encapsulation.md +++ b/zh-cn/application-dev/media/audio-video-encapsulation.md @@ -1,4 +1,4 @@ -# 音视频封装 +# 音视频封装(C/C++) 开发者可以调用本模块的Native API接口,完成音视频封装,即将音频、视频等编码后的媒体数据,按一定的格式存储到文件里。 diff --git a/zh-cn/application-dev/media/avimagegenerator.md b/zh-cn/application-dev/media/avimagegenerator.md index d43a0d303b2b92a1cf4f93840f72f901736877b1..3b9a566457afd95d8d0c03cca9f76daa03c9a66d 100644 --- a/zh-cn/application-dev/media/avimagegenerator.md +++ b/zh-cn/application-dev/media/avimagegenerator.md @@ -1,4 +1,4 @@ -# 获取视频缩略图 +# 获取视频缩略图(ArkTS) 使用AVImageGenerator可以实现从原始媒体资源中获取视频指定时间的缩略图,本开发指导将以获取一个视频资源的缩略图作为示例,向开发者讲解AVImageGenerator相关功能。 diff --git a/zh-cn/application-dev/media/avmetadataextractor.md b/zh-cn/application-dev/media/avmetadataextractor.md index ea04d329197e46d75c70212f322e633197e3d30f..c5ebeffc811f66279c25fd5d02fbb96efd906cc9 100644 --- a/zh-cn/application-dev/media/avmetadataextractor.md +++ b/zh-cn/application-dev/media/avmetadataextractor.md @@ -1,4 +1,4 @@ -# 获取音视频元数据 +# 获取音视频元数据(ArkTS) 使用AVMetadataExtractor可以实现从原始媒体资源中获取元信息,本开发指导将以获取一个音频资源的元信息作为示例,向开发者讲解AVMetadataExtractor元信息相关功能。视频资源的元信息获取流程与音频类似,由于视频没有专辑封面,所以无法获取视频资源的专辑封面。 diff --git a/zh-cn/application-dev/media/avscreen-capture.md b/zh-cn/application-dev/media/avscreen-capture.md index 4ce4b786477d24c0f50cb970e926693913ea8adb..7e8a34e16a9a74627ba8935486b7531275c67ee0 100644 --- a/zh-cn/application-dev/media/avscreen-capture.md +++ b/zh-cn/application-dev/media/avscreen-capture.md @@ -1,4 +1,4 @@ -# 屏幕录制 +# 屏幕录制(C/C++) 屏幕录制主要为主屏幕录屏功能。 diff --git a/zh-cn/application-dev/media/camera-dual-channel-preview.md b/zh-cn/application-dev/media/camera-dual-channel-preview.md index db3cc296c838211e79edcce2ab9c94346d4319e8..a1f789ebc8bbe9203fcf5a07a0376ff655bae95e 100644 --- a/zh-cn/application-dev/media/camera-dual-channel-preview.md +++ b/zh-cn/application-dev/media/camera-dual-channel-preview.md @@ -1,4 +1,4 @@ -# 双路预览 +# 双路预览(ArkTS) 相机应用通过控制相机,实现图像显示(预览)、照片保存(拍照)、视频录制(录像)等基础操作。相机开发模型为Surface模型,即应用通过Surface进行数据传递,通过ImageReceiver的surface获取拍照流的数据、通过XComponent的surface获取预览流的数据。 diff --git a/zh-cn/application-dev/media/camera-mode.md b/zh-cn/application-dev/media/camera-mode.md index 0bc0435f803458d4a56f4edee5ccf560dfa939d6..c57bd8165e39c972fe1fec15d17dbddc0a7970af 100644 --- a/zh-cn/application-dev/media/camera-mode.md +++ b/zh-cn/application-dev/media/camera-mode.md @@ -1,4 +1,4 @@ -# 使用人像模式拍照 +# 使用人像模式拍照(ArkTS) ## 开发流程 diff --git a/zh-cn/application-dev/media/camera-performance-improvement.md b/zh-cn/application-dev/media/camera-performance-improvement.md index 68cff471b10628375a8ee6d4dcc2099e4052e18d..a3a213b2dd32bd03e9442a1d840ee202a934a308 100644 --- a/zh-cn/application-dev/media/camera-performance-improvement.md +++ b/zh-cn/application-dev/media/camera-performance-improvement.md @@ -1,4 +1,4 @@ -# 性能提升方案(仅对系统应用开放) +# 性能提升方案(仅对系统应用开放)(ArkTS) 相机启动性能受限于底层器件上电、流程Pipeline初始化等耗时操作影响,本文档将为开发者提供更进一步的指导,提升相机启动速度以及拍照返回缩略图速度。相关能力与底层器件相关,请开发者在使用前需确认是否支持相关特性。 diff --git a/zh-cn/application-dev/media/distributed-audio-playback.md b/zh-cn/application-dev/media/distributed-audio-playback.md index 9528a6789e07ceb2c2e8cca3e00eeba62f8e59ab..31ba027196ffda5516a29f995e173cfcc641ff12 100644 --- a/zh-cn/application-dev/media/distributed-audio-playback.md +++ b/zh-cn/application-dev/media/distributed-audio-playback.md @@ -1,4 +1,4 @@ -# 分布式音频播放(仅对系统应用开放) +# 分布式音频播放(仅对系统应用开放)(ArkTS) 通过分布式音频播放的能力,用户可以将音频投播远端设备播放,实现音频在组网中不同设备之间流转。 diff --git a/zh-cn/application-dev/media/figures/playback-status-change-ndk.png b/zh-cn/application-dev/media/figures/playback-status-change-ndk.png new file mode 100644 index 0000000000000000000000000000000000000000..9a0c9002fd78af4df9b2ea32bd6b3eb1a7dc39a0 Binary files /dev/null and b/zh-cn/application-dev/media/figures/playback-status-change-ndk.png differ diff --git a/zh-cn/application-dev/media/image-decoding.md b/zh-cn/application-dev/media/image-decoding.md index af45a387a7c89a85292ffa7e85a0221048eeccff..0416775cad749b94d1dc9e1bfb3c60bad02a289e 100644 --- a/zh-cn/application-dev/media/image-decoding.md +++ b/zh-cn/application-dev/media/image-decoding.md @@ -1,4 +1,4 @@ -# 图片解码 +# 图片解码(ArkTS) 图片解码指将所支持格式的存档图片解码成统一的[PixelMap](image-overview.md),以便在应用或系统中进行图片显示或[图片处理](image-transformation.md)。当前支持的存档图片格式包括JPEG、PNG、GIF、RAW、WebP、BMP、SVG。 diff --git a/zh-cn/application-dev/media/image-pixelmap-operation.md b/zh-cn/application-dev/media/image-pixelmap-operation.md index 8ace03ea655f515b60e310429b03bfb7562f7607..da930d0007bc274d95d7c32f8def6ffa04c4a241 100644 --- a/zh-cn/application-dev/media/image-pixelmap-operation.md +++ b/zh-cn/application-dev/media/image-pixelmap-operation.md @@ -1,4 +1,4 @@ -# 位图操作 +# 位图操作(ArkTS) 当需要对目标图片中的部分区域进行处理时,可以使用位图操作功能。此功能常用于图片美化等操作。 diff --git a/zh-cn/application-dev/media/image-tool.md b/zh-cn/application-dev/media/image-tool.md index addae4516511892b52b29eccb46faeb8d80e1e47..6477f387bfae95058088226597bd92b4cf80732c 100644 --- a/zh-cn/application-dev/media/image-tool.md +++ b/zh-cn/application-dev/media/image-tool.md @@ -1,4 +1,4 @@ -# 图片工具 +# 图片工具(ArkTS) 图片工具当前主要提供图片EXIF信息的读取与编辑能力。 diff --git a/zh-cn/application-dev/media/mic-management.md b/zh-cn/application-dev/media/mic-management.md index 30f0bfbccac51a639e8d632b7354eaa817c0e661..3cc007c282f37d2300873163b5f35c446186025f 100644 --- a/zh-cn/application-dev/media/mic-management.md +++ b/zh-cn/application-dev/media/mic-management.md @@ -1,4 +1,4 @@ -# 管理麦克风 +# 管理麦克风(ArkTS) 因为在录制过程中需要使用麦克风录制相关音频数据,所以建议开发者在调用录制接口前查询麦克风状态,并在录制过程中监听麦克风的状态变化,避免影响录制效果。 diff --git a/zh-cn/application-dev/media/native-camera-preview-imageReceiver.md b/zh-cn/application-dev/media/native-camera-preview-imageReceiver.md index 55377022e7ae10b9272d2896419c1fa2607ccf9e..be10319e259d775dbf972f7a467c3bae8d197cb3 100644 --- a/zh-cn/application-dev/media/native-camera-preview-imageReceiver.md +++ b/zh-cn/application-dev/media/native-camera-preview-imageReceiver.md @@ -45,7 +45,7 @@ } ``` -4. 通过OH_CameraManager_GetSupportedCameraOutputCapability方法获取当前设备支持的预览能力。通过OH_CameraManager_CreatePreviewOutput方法创建预览输出流,其中,OH_CameraManager_CreatePreviewOutput方法中的参数分别是cameraManager指针,previewProfiles数组中的第一项,步骤二中获取的surfaceId,以及返回的previewOutput指针 +4. 通过OH_CameraManager_GetSupportedCameraOutputCapability方法获取当前设备支持的预览能力。通过OH_CameraManager_CreatePreviewOutput方法创建预览输出流,其中,OH_CameraManager_CreatePreviewOutput方法中的参数分别是cameraManager指针,previewProfiles数组中的第一项,步骤三中获取的surfaceId,以及返回的previewOutput指针 ```c++ ret = OH_CameraManager_CreatePreviewOutput(cameraManager, previewProfile, previewSurfaceId, &previewOutput); diff --git a/zh-cn/application-dev/media/native-camera-preview.md b/zh-cn/application-dev/media/native-camera-preview.md index f76bf9f972244441f2c4c6b03dfc6d54d5d0a638..d85b37a2e02bdfa66d5124ee6178bb3e742582aa 100644 --- a/zh-cn/application-dev/media/native-camera-preview.md +++ b/zh-cn/application-dev/media/native-camera-preview.md @@ -60,7 +60,7 @@ } ``` -4. 通过OH_CameraManager_GetSupportedCameraOutputCapability方法获取当前设备支持的预览能力。通过OH_CameraManager_CreatePreviewOutput方法创建预览输出流,其中,OH_CameraManager_CreatePreviewOutput方法中的参数分别是cameraManager指针,previewProfiles数组中的第一项,步骤二中获取的surfaceId,以及返回的previewOutput指针 +4. 通过OH_CameraManager_GetSupportedCameraOutputCapability方法获取当前设备支持的预览能力。通过OH_CameraManager_CreatePreviewOutput方法创建预览输出流,其中,OH_CameraManager_CreatePreviewOutput方法中的参数分别是cameraManager指针,previewProfiles数组中的第一项,步骤三中获取的surfaceId,以及返回的previewOutput指针 ```c++ ret = OH_CameraManager_CreatePreviewOutput(cameraManager, previewProfile, previewSurfaceId, &previewOutput); diff --git a/zh-cn/application-dev/media/native-camera-recording-case.md b/zh-cn/application-dev/media/native-camera-recording-case.md index 33ce3ffb3edaa52e6e410fd44b2b2ec5d200d98c..201754d9e6184ea0c0e8864822055bf47506ea40 100644 --- a/zh-cn/application-dev/media/native-camera-recording-case.md +++ b/zh-cn/application-dev/media/native-camera-recording-case.md @@ -1,6 +1,6 @@ # 录像实现方案(C/C++) -当前示例提供完整的拍照流程及其接口调用顺序的介绍。对于单个流程(如设备输入、会话管理、拍照)的介绍请参考[相机开发指导(Native)](camera-preparation.md)的具体章节。 +当前示例提供完整的录像流程及其接口调用顺序的介绍。对于单个流程(如设备输入、会话管理、录像)的介绍请参考[相机开发指导(Native)](camera-preparation.md)的具体章节。 ## 开发流程 diff --git a/zh-cn/application-dev/media/obtain-supported-codecs.md b/zh-cn/application-dev/media/obtain-supported-codecs.md index b9cf26c316d0d1450e1ebc16e958d7342580002f..ef5389671aace8acd15d02d3a349e860a5d72659 100644 --- a/zh-cn/application-dev/media/obtain-supported-codecs.md +++ b/zh-cn/application-dev/media/obtain-supported-codecs.md @@ -1,4 +1,4 @@ -# 获取支持的编解码能力 +# 获取支持的编解码能力(C/C++) 不同设备支持的编解码能力存在差异,开发者在调用编解码或配置编解码器前,需要先查询当前系统支持的编解码器规格。 diff --git a/zh-cn/application-dev/media/using-audiocapturer-for-recording.md b/zh-cn/application-dev/media/using-audiocapturer-for-recording.md index 8c9c84bcd473b67c1f84881fe2b2205397659ee3..411ca6680b6d269ce54078210ff4fbd067e61b2d 100644 --- a/zh-cn/application-dev/media/using-audiocapturer-for-recording.md +++ b/zh-cn/application-dev/media/using-audiocapturer-for-recording.md @@ -1,4 +1,4 @@ -# 使用AudioCapturer开发音频录制功能 +# 使用AudioCapturer开发音频录制功能(ArkTS) AudioCapturer是音频采集器,用于录制PCM(Pulse Code Modulation)音频数据,适合有音频开发经验的开发者实现更灵活的录制功能。 diff --git a/zh-cn/application-dev/media/using-audiorenderer-for-playback.md b/zh-cn/application-dev/media/using-audiorenderer-for-playback.md index 792311376bd565b917a79ad5a52e74a57cee9a83..caf4cda4467a5b569575b14ef53250054967631f 100644 --- a/zh-cn/application-dev/media/using-audiorenderer-for-playback.md +++ b/zh-cn/application-dev/media/using-audiorenderer-for-playback.md @@ -1,4 +1,4 @@ -# 使用AudioRenderer开发音频播放功能 +# 使用AudioRenderer开发音频播放功能(ArkTS) AudioRenderer是音频渲染器,用于播放PCM(Pulse Code Modulation)音频数据,相比AVPlayer而言,可以在输入前添加数据预处理,更适合有音频开发经验的开发者,以实现更灵活的播放功能。 diff --git a/zh-cn/application-dev/media/using-avplayer-for-playback.md b/zh-cn/application-dev/media/using-avplayer-for-playback.md index cb5c8d0d98773ef4a302816c6347ea309f4c5513..c88eb7f913d526eb370e06ce636003d4c60701f6 100644 --- a/zh-cn/application-dev/media/using-avplayer-for-playback.md +++ b/zh-cn/application-dev/media/using-avplayer-for-playback.md @@ -1,4 +1,4 @@ -# 使用AVPlayer开发音频播放功能 +# 使用AVPlayer开发音频播放功能(ArkTS) 使用AVPlayer可以实现端到端播放原始媒体资源,本开发指导将以完整地播放一首音乐作为示例,向开发者讲解AVPlayer音频播放相关功能。 diff --git a/zh-cn/application-dev/media/using-avrecorder-for-recording.md b/zh-cn/application-dev/media/using-avrecorder-for-recording.md index b85d65b551e3bd3ddc6440b64c653be96b7f49dc..cf0957f5a12193105d11edc823f1000b259d5d42 100644 --- a/zh-cn/application-dev/media/using-avrecorder-for-recording.md +++ b/zh-cn/application-dev/media/using-avrecorder-for-recording.md @@ -1,4 +1,4 @@ -# 使用AVRecorder开发音频录制功能 +# 使用AVRecorder开发音频录制功能(ArkTS) 使用AVRecorder可以实现音频录制功能,本开发指导将以“开始录制-暂停录制-恢复录制-停止录制”的一次流程为示例,向开发者讲解AVRecorder音频录制相关功能。 diff --git a/zh-cn/application-dev/media/using-avsession-controller.md b/zh-cn/application-dev/media/using-avsession-controller.md index af512c5861a4ff9ee4678c80acac244d35ec3e3f..00f998505e853322b4c854935fd56cc9cb70d934 100644 --- a/zh-cn/application-dev/media/using-avsession-controller.md +++ b/zh-cn/application-dev/media/using-avsession-controller.md @@ -1,4 +1,4 @@ -# 媒体会话控制方 +# 媒体会话控制方(ArkTS) OpenHarmony系统预置的播控中心,作为媒体会话控制方与音视频应用进行交互,包括获取媒体信息进行展示以及下发播控命令等。 diff --git a/zh-cn/application-dev/media/using-avsession-developer.md b/zh-cn/application-dev/media/using-avsession-developer.md index 1edebf5575d1ed7742cbb68c3fb9461b2e0b8a50..53d3ec7d97c8dd1933a9f66c104e53dfc8b5825f 100644 --- a/zh-cn/application-dev/media/using-avsession-developer.md +++ b/zh-cn/application-dev/media/using-avsession-developer.md @@ -1,4 +1,4 @@ -# 媒体会话提供方 +# 媒体会话提供方(ArkTS) 音视频应用在实现音视频功能的同时,需要作为媒体会话提供方接入媒体会话,在媒体会话控制方(例如播控中心)中展示媒体相关信息,及响应媒体会话控制方下发的播控命令。 diff --git a/zh-cn/application-dev/media/using-distributed-avsession.md b/zh-cn/application-dev/media/using-distributed-avsession.md index 27ee2fcae1097c5e667423f166206e51a8289ec1..67addae49286fa17739b005fcfc74fb2a260bf20 100644 --- a/zh-cn/application-dev/media/using-distributed-avsession.md +++ b/zh-cn/application-dev/media/using-distributed-avsession.md @@ -1,4 +1,4 @@ -# 使用分布式媒体会话 +# 使用分布式媒体会话(ArkTS) ## 基本概念 diff --git a/zh-cn/application-dev/media/using-ndk-avplayer-for-playerback.md b/zh-cn/application-dev/media/using-ndk-avplayer-for-playerback.md new file mode 100644 index 0000000000000000000000000000000000000000..09870b29687145189aea7fd69deb1966eb81779d --- /dev/null +++ b/zh-cn/application-dev/media/using-ndk-avplayer-for-playerback.md @@ -0,0 +1,135 @@ +# 使用AVPlayer开发音频播放功能(C/C++) + +使用AVPlayer可以实现端到端播放原始媒体资源,本开发指导将以完整地播放一首音乐作为示例,向开发者讲解AVPlayer音频播放相关功能。 + + +播放的全流程包含:创建AVPlayer,设置播放资源,设置播放参数(音量/倍速/焦点模式),播放控制(播放/暂停/跳转/停止),重置,销毁资源。 + + +在进行应用开发的过程中,开发者可以通过AVPlayer的callback主动获取播放过程信息。如果应用在音频播放器处于错误状态时执行操作,系统可能会抛出异常或生成其他未定义的行为。 + + +**图1** 播放状态变化示意图   +![Playback status change](figures/playback-status-change-ndk.png) + +状态的详细说明请参考[AVPlayerState](../reference/native-apis/_a_v_player.md#avplayerstate-1)。当播放处于prepared / playing / paused / completed状态时,播放引擎处于工作状态,这需要占用系统较多的运行内存。当客户端暂时不使用播放器时,调用reset()或release()回收内存资源,做好资源利用。 + +## 开发步骤及注意事项 +在 CMake 脚本中链接动态库 +``` +target_link_libraries(sample PUBLIC libavplayer.so) +``` + +开发者通过引入[avplayer.h](../reference/native-apis/avplayer__base_8h.md)、[avpalyer_base.h](../reference/native-apis/avplayer__base_8h.md)和[native_averrors.h](../reference/native-apis/native__averrors_8h.md)头文件,使用音频录制相关API。 +详细的API说明请参考[AVPlayer API](../reference/native-apis/_a_v_player.md)。 + +1. 创建实例OH_AVPlayer_Create(),AVPlayer初始化idle状态。 + +2. 设置业务需要的监听事件OH_AVPlayer_SetPlayerCallback(),搭配全流程场景使用。支持的监听事件包括: + | 事件类型 | 说明 | + | -------- | -------- | + | OH_AVPlayerOnInfo | 必要事件,监听播放器的过程信息。 | + | OH_AVPlayerOnError | 必要事件,监听播放器的错误信息。 | + +3. 设置资源:调用OH_AVPlayer_SetURLSource(),设置属性url,AVPlayer进入initialized状态。 + +4. 准备播放:调用OH_AVPlayer_Prepare(),AVPlayer进入prepared状态,此时可以获取时长,设置音量。 + +5. 音频播控:播放OH_AVPlayer_Play(),暂停OH_AVPlayer_Pause(),跳转OH_AVPlayer_Seek(),停止OH_AVPlayer_Stop() 等操作。 + +6. (可选)更换资源:调用OH_AVPlayer_Reset()重置资源,AVPlayer重新进入idle状态,允许更换资源url。 + +7. 退出播放:调用OH_AVPlayer_Release()销毁实例,AVPlayer进入released状态,退出播放。 + +## 示例 + +```c +#include "napi/native_api.h" +#include +#include +#include +void OnInfo(OH_AVPlayer *player, AVPlayerOnInfoType type, int32_t extra) +{ + switch (type) { + case AV_INFO_TYPE_SEEKDONE: + // do something + break; + case AV_INFO_TYPE_STATE_CHANGE: + // do something + break; + case AV_INFO_TYPE_SPEEDDONE: + // do something + break; + case AV_INFO_TYPE_POSITION_UPDATE: + // do something + break; + case AV_INFO_TYPE_BITRATE_COLLECT: + // do something + break; + case AV_INFO_TYPE_INTERRUPT_EVENT: + // do something + break; + case AV_INFO_TYPE_RESOLUTION_CHANGE: + // do something + break; + case AV_INFO_TYPE_TRACKCHANGE: + // do something + break; + case AV_INFO_TYPE_SUBTITLE_UPDATE: { + // do something + break; + } + case INFO_TYPE_TRACK_INFO_UPDATE: { + // do something + break; + } + default: + break; + } +} + +void OnError(OH_AVPlayer *player, int32_t errorCode, const char *errorMsg) +{ + // do something +} + +int main() +{ + // 创建播放实例 + OH_AVPlayer *player = OH_AVPlayer_Create(); + AVPlayerCallback callback; + callback.onInfo = OnInfo; + callback.onError = OnError; + // 设置回调,监听信息 + int32_t ret = OH_AVPlayer_SetPlayerCallback(player, callback); + if (ret != AV_ERR_OK) { + // 处理异常 + } + const char *path = "/data/test/mp3_48000Hz_64kbs_mono.mp3"; + // 设置url资源 + int32_t ret = OH_AVPlayer_SetURLSource(player, path); + if (ret != AV_ERR_OK) { + // 处理异常 + } + // 准备资源 + int32_t ret = OH_AVPlayer_Prepare(player); + if (ret != AV_ERR_OK) { + // 处理异常 + } + // 播放资源 + int32_t ret = OH_AVPlayer_Play(player); + if (ret != AV_ERR_OK) { + // 处理异常 + } + // 停止播放 + int32_t ret = OH_AVPlayer_Stop(player); + if (ret != AV_ERR_OK) { + // 处理异常 + } + // 释放资源 + int32_t ret = OH_AVPlayer_Release(player); + if (ret != AV_ERR_OK) { + // 处理异常 + } +} +``` \ No newline at end of file diff --git a/zh-cn/application-dev/media/using-ohaudio-for-playback.md b/zh-cn/application-dev/media/using-ohaudio-for-playback.md index 1a99314f08c2a20ddd67de9cbb337c5bad857322..fa9cc0a1444ddfdfe4fbf522fb0759a036960331 100644 --- a/zh-cn/application-dev/media/using-ohaudio-for-playback.md +++ b/zh-cn/application-dev/media/using-ohaudio-for-playback.md @@ -1,4 +1,4 @@ -# 使用OHAudio开发音频播放功能 +# 使用OHAudio开发音频播放功能(C/C++) OHAudio是OpenHarmony在API version 10中引入的一套全新Native API,此API在设计上实现归一,同时支持普通音频通路和低时延通路。 diff --git a/zh-cn/application-dev/media/using-ohaudio-for-recording.md b/zh-cn/application-dev/media/using-ohaudio-for-recording.md index e09915993885521290ec62bd59c0beb64abce080..66a00d1a74588773a9b39480837d9ac214244879 100644 --- a/zh-cn/application-dev/media/using-ohaudio-for-recording.md +++ b/zh-cn/application-dev/media/using-ohaudio-for-recording.md @@ -1,4 +1,4 @@ -# 使用OHAudio开发音频录制功能 +# 使用OHAudio开发音频录制功能(C/C++) OHAudio是OpenHarmony在API version 10中引入的一套全新Naitve API,此API在设计上实现归一,同时支持普通音频通路和低时延通路。 diff --git a/zh-cn/application-dev/media/using-opensl-es-for-playback.md b/zh-cn/application-dev/media/using-opensl-es-for-playback.md index d9ba6fb7f9fc8c425257616ad3a81d09e9b6e54d..12e5ac41eed9398053da86b3925c12d0e896d7e3 100644 --- a/zh-cn/application-dev/media/using-opensl-es-for-playback.md +++ b/zh-cn/application-dev/media/using-opensl-es-for-playback.md @@ -1,4 +1,4 @@ -# 使用OpenSL ES开发音频播放功能 +# 使用OpenSL ES开发音频播放功能(C/C++) OpenSL ES全称为Open Sound Library for Embedded Systems,是一个嵌入式、跨平台、免费的音频处理库。为嵌入式移动多媒体设备上的应用开发者提供标准化、高性能、低延迟的API。OpenHarmony的Native API基于[Khronos Group](https://www.khronos.org/)开发的[OpenSL ES](https://www.khronos.org/opensles/) 1.0.1 API 规范实现,开发者可以通过<OpenSLES.h>和<OpenSLES_OpenHarmony.h>在OpenHarmony上使用相关API。 diff --git a/zh-cn/application-dev/media/using-opensl-es-for-recording.md b/zh-cn/application-dev/media/using-opensl-es-for-recording.md index 70e57a8fa95e23509736329dd7ccc88a8d3420c1..f1b621ebbfe6f81a25c039d9b19c2fb7513c44d2 100644 --- a/zh-cn/application-dev/media/using-opensl-es-for-recording.md +++ b/zh-cn/application-dev/media/using-opensl-es-for-recording.md @@ -1,4 +1,4 @@ -# 使用OpenSL ES开发音频录制功能 +# 使用OpenSL ES开发音频录制功能(C/C++) OpenSL ES全称为Open Sound Library for Embedded Systems,是一个嵌入式、跨平台、免费的音频处理库。为嵌入式移动多媒体设备上的应用开发者提供标准化、高性能、低延迟的API。OpenHarmony的Native API基于[Khronos Group](https://www.khronos.org/)开发的[OpenSL ES](https://www.khronos.org/opensles/) 1.0.1 API 规范实现,开发者可以通过<OpenSLES.h>和<OpenSLES_OpenHarmony.h>在OpenHarmony上使用相关API。 diff --git a/zh-cn/application-dev/media/using-soundpool-for-playback.md b/zh-cn/application-dev/media/using-soundpool-for-playback.md index 92d07c8cdb11e31d1a971464d8c3b4390e58fd58..fed73bf5dcddc6a4c59ea7c09de6c4c6cefc2438 100644 --- a/zh-cn/application-dev/media/using-soundpool-for-playback.md +++ b/zh-cn/application-dev/media/using-soundpool-for-playback.md @@ -1,4 +1,4 @@ -# 使用SoundPool开发音频播放功能 +# 使用SoundPool开发音频播放功能(ArkTS) 使用SoundPool(音频池)提供的接口,可以实现低时延短音播放。 diff --git a/zh-cn/application-dev/media/using-toneplayer-for-playback.md b/zh-cn/application-dev/media/using-toneplayer-for-playback.md index 9e6c00e9bd9ed0f26b6334f92156ab10db71899d..3e86aa6b584c12a856a521a02504181eddc52d6f 100644 --- a/zh-cn/application-dev/media/using-toneplayer-for-playback.md +++ b/zh-cn/application-dev/media/using-toneplayer-for-playback.md @@ -1,4 +1,4 @@ -# 使用TonePlayer开发音频播放功能(仅对系统应用开放) +# 使用TonePlayer开发音频播放功能(仅对系统应用开放)(ArkTS) TonePlayer9+提供播放和管理DTMF(Dual Tone Multi Frequency,双音多频)音调的方法,包括各种系统监听音调、专有音调,如拨号音、通话回铃音等。主要工作是将需要生成音调的[ToneType](../reference/apis/js-apis-audio.md#tonetype9)类型,通过自带算法生成多个不同频率的正弦波叠加形成声音数据,通过[AudioRenderer](../reference/apis/js-apis-audio.md#audiorenderer8)进行播放,同时对播放任务进行管理。包含加载DTMF音调配置、启动DTMF音调播放、停止当前正在播放的音调、释放与此TonePlayer对象关联的资源等流程。详细API说明请参考[TonePlayer API文档](../reference/apis/js-apis-audio.md#toneplayer9)。 diff --git a/zh-cn/application-dev/media/video-decoding.md b/zh-cn/application-dev/media/video-decoding.md index 4186ef3c8a06a6b00f2172195430d42ff5bee219..c4453bbbaa02d8432f6ef0f34ca9dabbcd55f4b3 100644 --- a/zh-cn/application-dev/media/video-decoding.md +++ b/zh-cn/application-dev/media/video-decoding.md @@ -1,4 +1,4 @@ -# 视频解码 +# 视频解码(C/C++) 开发者可以调用本模块的Native API接口,完成视频解码,即将媒体数据解码成YUV文件或送显。 diff --git a/zh-cn/application-dev/media/video-encoding.md b/zh-cn/application-dev/media/video-encoding.md index cb0981e09a555f8a3d5b3b30efbe89a6b73aadd8..4e47645f9bfc67250dbb606c57e975413f629671 100644 --- a/zh-cn/application-dev/media/video-encoding.md +++ b/zh-cn/application-dev/media/video-encoding.md @@ -1,4 +1,4 @@ -# 视频编码 +# 视频编码(C/C++) 开发者可以调用本模块的Native API接口,完成视频编码,即将未压缩的音视频数据压缩成音视频码流。 diff --git a/zh-cn/application-dev/media/video-playback.md b/zh-cn/application-dev/media/video-playback.md index db728a7f7491732c1205199a7c385ed0cebdce62..488609af286d58b8f5dfead50b6cbafa22516276 100644 --- a/zh-cn/application-dev/media/video-playback.md +++ b/zh-cn/application-dev/media/video-playback.md @@ -1,6 +1,6 @@ -# 视频播放 +# 视频播放(ArkTS) -在OpenHarmony系统中,提供两种视频播放开发的方案: +当前提供两种视频播放开发的方案: - AVPlayer:功能较完善的音视频播放ArkTS/JS API,集成了流媒体和本地资源解析,媒体资源解封装,视频解码和渲染功能,适用于对媒体资源进行端到端播放的场景,可直接播放mp4、mkv等格式的视频文件。 diff --git a/zh-cn/application-dev/media/video-recording.md b/zh-cn/application-dev/media/video-recording.md index 707ff23af7738aace4d0b290baee2d8814268411..ce1b86f281b3673e4fc8f3751710c95267ac9aa9 100644 --- a/zh-cn/application-dev/media/video-recording.md +++ b/zh-cn/application-dev/media/video-recording.md @@ -1,6 +1,6 @@ -# 视频录制 +# 视频录制(ArkTS) -在OpenHarmony系统中,当前仅支持AVRecorder开发视频录制,集成了音频捕获,音频编码,视频编码,音视频封装功能,适用于实现简单视频录制并直接得到视频本地文件的场景。 +当前仅支持AVRecorder开发视频录制,集成了音频捕获,音频编码,视频编码,音视频封装功能,适用于实现简单视频录制并直接得到视频本地文件的场景。 本开发指导将以“开始录制-暂停录制-恢复录制-停止录制”的一次流程为示例,向开发者讲解如何使用AVRecorder进行视频录制。 diff --git a/zh-cn/application-dev/media/volume-management.md b/zh-cn/application-dev/media/volume-management.md index 6029bd157aea7afc242233f30c9c0b28f1797351..8c6167f80623aae6c5d3415a5e6edaba9dfd5b42 100644 --- a/zh-cn/application-dev/media/volume-management.md +++ b/zh-cn/application-dev/media/volume-management.md @@ -1,4 +1,4 @@ -# 播放音量管理 +# 播放音量管理(ArkTS) 播放音量的管理主要包括对系统音量的管理和对音频流音量的管理。系统音量与音频流音量分别是指OpenHarmony系统的总音量和指定音频流的音量,其中音频流音量的大小受制于系统音量,管理两者的接口不同。 diff --git a/zh-cn/application-dev/napi/Readme-CN.md b/zh-cn/application-dev/napi/Readme-CN.md index 97ad73e1701182ea0cb563390962be599e49dab5..e614826112b390e0d79438106b54ccda49421afe 100644 --- a/zh-cn/application-dev/napi/Readme-CN.md +++ b/zh-cn/application-dev/napi/Readme-CN.md @@ -21,6 +21,7 @@ - [Purgeable memory开发指导](purgeable-memory-guidelines.md) - 设备管理 - [USB DDK开发指导](usb-ddk-guidelines.md) + - [HID DDK开发指导](hid-ddk-guidelines.md) - 数据管理 - [RelationalStore开发指导](native-relational-store-guidelines.md) diff --git a/zh-cn/application-dev/napi/hid-ddk-guidelines.md b/zh-cn/application-dev/napi/hid-ddk-guidelines.md new file mode 100644 index 0000000000000000000000000000000000000000..0fe56fc90e686987e9483806353884a76f3cfec7 --- /dev/null +++ b/zh-cn/application-dev/napi/hid-ddk-guidelines.md @@ -0,0 +1,83 @@ +# HID DDK开发指导 + +## 场景介绍 + +HID DDK(HID Driver Develop Kit)是为开发者提供的HID设备驱动程序开发套件,支持开发者基于用户态,在应用层开发HID设备驱动。提供了一系列主机侧访问设备的接口,包括创建设备、向设备发送事件、销毁设备。 + +## 接口说明 + +| 名称 | 描述 | +| -------- | -------- | +| OH_Hid_CreateDevice(Hid_Device *hidDevice, Hid_EventProperties *hidEventProperties) | 创建HID设备。请在设备使用完后使用OH_Hid_DestroyDevice销毁设备 | +| OH_Hid_EmitEvent(int32_t deviceId, const Hid_EmitItem items[], uint16_t length) | 向指定deviceId的HID设备发送事件。 | +| OH_Hid_DestroyDevice(int32_t deviceId) | 销毁指定deviceId的HID设备。 | + +详细的接口说明请参考[HID DDK](../reference/native-apis/_hid_ddk.md)。 + +## HID DDK开发步骤 + +以下步骤描述了如何使用 **HID DDK**开发HID设备驱动: + +**添加动态链接库** + +CMakeLists.txt中添加以下lib。 +```txt +libhid.z.so +``` + +**头文件** +```c++ +#include +#include +``` + +1. **创建设备**。使用 **hid_ddk_api.h** 的 **OH_Hid_CreateDevice** 接口创建HID设备,成功返回设备deviceId,失败返回错误码(**负数**)。 + + ```c++ + // 构建HID设备属性 + std::vector deviceProp = {HID_PROP_DIRECT}; + Hid_Device hidDevice = { + .deviceName = deviceName.c_str(), + .vendorId = 0x6006, + .productId = 0x6006, + .version = 1, + .bustype = 3, + .properties = deviceProp.data(), + .propLength = (uint16_t)deviceProp.size() + }; + // 构建HID设备关注的事件属性 + std::vector eventType = {HID_EV_ABS, HID_EV_KEY, HID_EV_SYN, HID_EV_MSC}; + Hid_EventTypeArray eventTypeArray = {.hidEventType = eventType.data(), .length = (uint16_t)eventType.size()}; + std::vector keyCode = {HID_BTN_TOOL_PEN, HID_BTN_TOOL_RUBBER, HID_BTN_TOUCH, HID_BTN_STYLUS, HID_BTN_RIGHT}; + Hid_KeyCodeArray keyCodeArray = {.hidKeyCode = keyCode.data(), .length = (uint16_t)keyCode.size()}; + std::vector mscEvent = {HID_MSC_SCAN}; + Hid_MscEventArray mscEventArray = {.hidMscEvent = mscEvent.data(), .length = (uint16_t)mscEvent.size()}; + std::vector absAxes = {HID_ABS_X, HID_ABS_Y, HID_ABS_PRESSURE}; + Hid_AbsAxesArray absAxesArray = {.hidAbsAxes = absAxes.data(), .length = (uint16_t)absAxes.size()}; + Hid_EventProperties hidEventProp = { + .hidEventTypes = eventTypeArray, + .hidKeys = keyCodeArray, + .hidAbs = absAxesArray, + .hidMiscellaneous=mscEventArray + }; + // 创建设备并获取到deviceId + int32_t deviceId = OH_Hid_CreateDevice(hidDevice, hidEventProperties); + ``` + +2. **向指定deviceId的HID设备发送事件**。使用 **hid_ddk_api.h** 的 **OH_Hid_EmitEvent** 向指定的deviceId的设备发送事件。 + + ```c++ + // 构建需要发送事件 + Hid_EmitItem event = {.type = HID_EV_MSC, .code = HID_MSC_SCAN, .value = 0x000d0042}; + std::vector itemVec; + itemVec.push_back(event); + // 向指定deviceId的HID设备发送事件 + int32_t ret = OH_Hid_EmitEvent(deviceId, itemVec.data(), (uint16_t)itemVec.size()); + ``` + +3. **释放资源**。在所有请求处理完毕,程序退出前,使用 **hid_ddk_api.h** 的 **OH_Hid_DestroyDevice** 接口销毁HID设备。 + + ```c++ + // 销毁HID设备 + int32_t ret = OH_Hid_DestroyDevice(deviceId); + ``` \ No newline at end of file diff --git a/zh-cn/application-dev/performance/animation_practice.md b/zh-cn/application-dev/performance/animation_practice.md index bdabf4842916774b7286abd02077dab6bae82edf..ca2e283a373764ed36538874c0504dd133139d77 100644 --- a/zh-cn/application-dev/performance/animation_practice.md +++ b/zh-cn/application-dev/performance/animation_practice.md @@ -101,29 +101,37 @@ struct MyComponent { 反例:通过设置布局属性width和height,改变组件大小。 ```typescript - @State textWidth: number = 10; - @State textHeight: number = 10; - - Text() - .backgroundColor(Color.Blue) - .fontColor(Color.White) - .fontSize(20) - .width(this.textWidth) - .height(this.textHeight) - - Button('布局属性') - .backgroundColor(Color.Blue) - .fontColor(Color.White) - .fontSize(20) - .margin({ top: 30 }) - .borderRadius(30) - .padding(10) - .onClick(() => { - animateTo({duration:1000}, () => { - this.textWidth = 100; - this.textHeight = 100; +@Entry +@Component +struct MyComponent { + @State textWidth: number = 10; + @State textHeight: number = 10; + + build() { + Column() { + Text() + .backgroundColor(Color.Blue) + .fontColor(Color.White) + .fontSize(20) + .width(this.textWidth) + .height(this.textHeight) + + Button('布局属性') + .backgroundColor(Color.Blue) + .fontColor(Color.White) + .fontSize(20) + .margin({ top: 30 }) + .borderRadius(30) + .padding(10) + .onClick(() => { + animateTo({ duration: 1000 }, () => { + this.textWidth = 100; + this.textHeight = 100; + }) }) - }) + } +} +} ``` 在对组件位置或大小变化做动画时,由于布局属性的改变会触发重新测量布局,导致性能开销大。scale属性的改变不会重新触发测量布局,性能开销小。因此,在组件位置大小持续发生变化的场景,如手指缩放的动画场景,推荐使用scale。 @@ -131,31 +139,39 @@ struct MyComponent { 正例:通过设置图形变换属性scale,改变组件大小。 ```typescript - @State textScaleX: number = 1; - @State textScaleY: number = 1; - - Text() - .backgroundColor(Color.Blue) - .fontColor(Color.White) - .fontSize(20) - .width(10) - .height(10) - .scale({ x: this.textScaleX, y: this.textScaleY }) - .margin({ top: 100 }) - - Button('图形变换属性') - .backgroundColor(Color.Blue) - .fontColor(Color.White) - .fontSize(20) - .margin({ top: 60 }) - .borderRadius(30) - .padding(10) - .onClick(() => { - animateTo({ duration: 1000 }, () => { - this.textScaleX = 10; - this.textScaleY = 10; - }) - }) +@Entry +@Component +struct MyComponent { + @State textScaleX: number = 1; + @State textScaleY: number = 1; + + build() { + Column() { + Text() + .backgroundColor(Color.Blue) + .fontColor(Color.White) + .fontSize(20) + .width(10) + .height(10) + .scale({ x: this.textScaleX, y: this.textScaleY }) + .margin({ top: 100 }) + + Button('图形变换属性') + .backgroundColor(Color.Blue) + .fontColor(Color.White) + .fontSize(20) + .margin({ top: 60 }) + .borderRadius(30) + .padding(10) + .onClick(() => { + animateTo({ duration: 1000 }, () => { + this.textScaleX = 10; + this.textScaleY = 10; + }) + }) + } +} +} ``` ### 动画参数相同时使用同一个animateTo @@ -168,12 +184,12 @@ struct MyComponent { @Entry @Component struct MyComponent { - @State width: number = 200; + @State textWidth: number = 200; @State color: Color = Color.Red; func1() { animateTo({ curve: Curve.Sharp, duration: 1000 }, () => { - this.width = (this.width === 100 ? 200 : 100); + this.textWidth = (this.textWidth === 100 ? 200 : 100); }); } @@ -186,7 +202,7 @@ struct MyComponent { build() { Column() { Row() - .width(this.width) + .width(this.textWidth) .height(10) .backgroundColor(this.color) Text('click') @@ -207,12 +223,12 @@ struct MyComponent { @Entry @Component struct MyComponent { - @State width: number = 200; + @State textWidth: number = 200; @State color: Color = Color.Red; func() { animateTo({ curve: Curve.Sharp, duration: 1000 }, () => { - this.width = (this.width === 100 ? 200 : 100); + this.textWidth = (this.textWidth === 100 ? 200 : 100); this.color = (this.color === Color.Yellow ? Color.Red : Color.Yellow); }); } @@ -220,7 +236,7 @@ struct MyComponent { build() { Column() { Row() - .width(this.width) + .width(this.textWidth) .height(10) .backgroundColor(this.color) Text('click') @@ -248,24 +264,24 @@ animateTo会将执行动画闭包前后的状态进行对比,对差异部分 @Entry @Component struct MyComponent { - @State width: number = 200; - @State height: number = 50; + @State textWidth: number = 200; + @State textHeight: number = 50; @State color: Color = Color.Red; build() { Column() { Row() - .width(this.width) + .width(this.textWidth) .height(10) .backgroundColor(this.color) Text('click') - .height(this.height) + .height(this.textHeight) .onClick(() => { - this.width = 100; - // h是非动画属性 - this.height = 100; + this.textWidth = 100; + // textHeight是非动画属性 + this.textHeight = 100; animateTo({ curve: Curve.Sharp, duration: 1000 }, () => { - this.width = 200; + this.textWidth = 200; }); this.color = Color.Yellow; animateTo({ curve: Curve.Linear, duration: 2000 }, () => { @@ -279,8 +295,8 @@ struct MyComponent { } ``` -在第一个animateTo前,重新设置了width属性,所以Row组件需要更新一次。在第一个animateTo的动画闭包中,改变了width属性,所以Row组件又需要更新一次并对比产生宽高动画。第二个animateTo前,重新设置了color属性,所以Row组件又需要更新一次。在第二个animateTo的动画闭包中,改变了color属性,所以Row组件再更新一次并产生了背景色动画。Row组件总共更新了4次属性。 -此外还更改了与动画无关的状态h,如果不需要改变无关状态,则不应改变造成冗余更新。 +在第一个animateTo前,重新设置了textWidth属性,所以Row组件需要更新一次。在第一个animateTo的动画闭包中,改变了textWidth属性,所以Row组件又需要更新一次并对比产生宽高动画。第二个animateTo前,重新设置了color属性,所以Row组件又需要更新一次。在第二个animateTo的动画闭包中,改变了color属性,所以Row组件再更新一次并产生了背景色动画。Row组件总共更新了4次属性。 +此外还更改了与动画无关的状态textHeight,如果不需要改变无关状态,则不应改变造成冗余更新。 正例:统一更新状态变量。 @@ -292,21 +308,21 @@ struct MyComponent { @Entry @Component struct MyComponent { - @State width: number = 100; - @State height: number = 50; + @State textWidth: number = 100; + @State textHeight: number = 50; @State color: Color = Color.Yellow; build() { Column() { Row() - .width(this.width) + .width(this.textWidth) .height(10) .backgroundColor(this.color) Text('click') - .height(this.height) + .height(this.textHeight) .onClick(() => { animateTo({ curve: Curve.Sharp, duration: 1000 }, () => { - this.width = (this.width === 100 ? 200 : 100); + this.textWidth = (this.textWidth === 100 ? 200 : 100); }); animateTo({ curve: Curve.Linear, duration: 2000 }, () => { this.color = (this.color === Color.Yellow ? Color.Red : Color.Yellow); @@ -319,7 +335,7 @@ struct MyComponent { } ``` -在第一个animateTo之前,不存在需要更新的脏状态变量和脏节点,无需更新。在第一个animateTo的动画闭包中,改变了width属性,所以Row组件需要更新一次并对比产生宽高动画。在第二个animateTo之前,由于也没有执行额外的语句,不存在需要更新的脏状态变量和脏节点,无需更新。在第二个animateTo的动画闭包中,改变了color属性,所以Row组件再更新一次并产生了背景色动画。Row组件总共更新了2次属性。 +在第一个animateTo之前,不存在需要更新的脏状态变量和脏节点,无需更新。在第一个animateTo的动画闭包中,改变了textWidth属性,所以Row组件需要更新一次并对比产生宽高动画。在第二个animateTo之前,由于也没有执行额外的语句,不存在需要更新的脏状态变量和脏节点,无需更新。在第二个animateTo的动画闭包中,改变了color属性,所以Row组件再更新一次并产生了背景色动画。Row组件总共更新了2次属性。 正例2:在animateTo之前显式的指定所有需要动画的属性初值,统一更新到节点中,然后再做动画。 @@ -327,28 +343,28 @@ struct MyComponent { @Entry @Component struct MyComponent { - @State width: number = 200; - @State height: number = 50; + @State textWidth: number = 200; + @State textHeight: number = 50; @State color: Color = Color.Red; build() { Column() { Row() - .width(this.width) + .width(this.textWidth) .height(10) .backgroundColor(this.color) Text('click') - .height(this.height) + .height(this.textHeight) .onClick(() => { - this.width = 100; + this.textWidth = 100; this.color = Color.Yellow; animateTo({ curve: Curve.Sharp, duration: 1000 }, () => { - this.width = 200; + this.textWidth = 200; }); animateTo({ curve: Curve.Linear, duration: 2000 }, () => { this.color = Color.Red; }); - this.height = 100; + this.textHeight = 100; }) } .width('100%') @@ -357,4 +373,4 @@ struct MyComponent { } ``` -在第一个animateTo之前,重新设置了width和color属性,所以Row需要更新一次。在第一个animateTo的动画闭包中,改变了width属性,所以Row组件需要更新一次并对比产生宽高动画。在第二个animateTo之前,由于没有执行额外的语句,不存在需要更新的脏状态变量和脏节点,无需更新。在第二个animateTo的动画闭包中,改变了color属性,所以Row组件再更新一次并产生了背景色动画。Row组件总共更新了3次属性。 \ No newline at end of file +在第一个animateTo之前,重新设置了textWidth和color属性,所以Row需要更新一次。在第一个animateTo的动画闭包中,改变了textWidth属性,所以Row组件需要更新一次并对比产生宽高动画。在第二个animateTo之前,由于没有执行额外的语句,不存在需要更新的脏状态变量和脏节点,无需更新。在第二个animateTo的动画闭包中,改变了color属性,所以Row组件再更新一次并产生了背景色动画。Row组件总共更新了3次属性。 \ No newline at end of file diff --git a/zh-cn/application-dev/performance/performance-optimization-using-hidumper.md b/zh-cn/application-dev/performance/performance-optimization-using-hidumper.md index 7c85423ff5dd85e373b2c027c228c691d26860e4..6357e5bb997ebbbe8f085346f5b426d45a1041c8 100644 --- a/zh-cn/application-dev/performance/performance-optimization-using-hidumper.md +++ b/zh-cn/application-dev/performance/performance-optimization-using-hidumper.md @@ -144,9 +144,6 @@ struct ConditionComponent { Depth: 6 IsDisappearing: 0 ``` -对比三种情况的组件数可以发现: -* 当使用visibility属性控制组件显影时,该组件通过改变Visible属性实现功能,但组件的其他结构依然会被创建。 -* 当visibility属性为Hidden时,组件虽然不会显示,但仍然在页面中占用实际位置。 ### 查看visibility属性 @@ -219,6 +216,9 @@ struct VisibilityComponent { Visible: 2 ... ``` +对比三种情况的组件数可以发现: +* 当使用visibility属性控制组件显影时,该组件通过改变Visible属性实现功能,但组件的其他结构依然会被创建。 +* 当visibility属性为Hidden时,组件虽然不会显示,但仍然在页面中占用实际位置。 ## HiDumper查看内存信息 diff --git a/zh-cn/application-dev/quick-start/arkts-page-custom-components-lifecycle.md b/zh-cn/application-dev/quick-start/arkts-page-custom-components-lifecycle.md index f1af52c8af5075c7e470f2dcc756656985c76b68..319e3481622a4a638317c142a957ea8e56a7fc55 100644 --- a/zh-cn/application-dev/quick-start/arkts-page-custom-components-lifecycle.md +++ b/zh-cn/application-dev/quick-start/arkts-page-custom-components-lifecycle.md @@ -82,7 +82,7 @@ 如果if组件的分支改变,或者ForEach循环渲染中数组的个数改变,组件将被删除: -1. 在删除组件之前,将调用其aboutToDisappear生命周期函数,标记着该节点将要被销毁。ArkUI的节点删除机制是:后端节点直接从组件树上摘下,后端节点被销毁,对前端节点解引用,当前端节点已经没有引用时,将被JS虚拟机垃圾回收。 +1. 在删除组件之前,将调用其aboutToDisappear生命周期函数,标记着该节点将要被销毁。ArkUI的节点删除机制是:后端节点直接从组件树上摘下,后端节点被销毁,对前端节点解引用,前端节点已经没有引用时,将被JS虚拟机垃圾回收。 2. 自定义组件和它的变量将被删除,如果其有同步的变量,比如[@Link](arkts-link.md)、[@Prop](arkts-prop.md)、[@StorageLink](arkts-appstorage.md#storagelink),将从[同步源](arkts-state-management-overview.md#基本概念)上取消注册。 diff --git a/zh-cn/application-dev/quick-start/arkts-state-management-overview.md b/zh-cn/application-dev/quick-start/arkts-state-management-overview.md index 316b0db0cc9713eee65c78ac2cec876e2960e4ff..6dae4924a4e6e304085c2f1ac857d350793855ce 100644 --- a/zh-cn/application-dev/quick-start/arkts-state-management-overview.md +++ b/zh-cn/application-dev/quick-start/arkts-state-management-overview.md @@ -126,7 +126,7 @@ ArkUI提供了多种装饰器,通过使用这些装饰器,状态变量不仅 \@Watch用于监听状态变量的变化。 -$$运算符:给内置组件提供TS变量的引用,使得TS变量和内置组件的内部状态保持同步。 +[$$运算符](arkts-two-way-sync.md):给内置组件提供TS变量的引用,使得TS变量和内置组件的内部状态保持同步。 ## 相关实例 diff --git a/zh-cn/application-dev/quick-start/arkts-state.md b/zh-cn/application-dev/quick-start/arkts-state.md index c440b452facb4b018c58d2b1c6af7d9097d808d6..9ec28b831cb90e22babced95b5a19853c20df8e0 100644 --- a/zh-cn/application-dev/quick-start/arkts-state.md +++ b/zh-cn/application-dev/quick-start/arkts-state.md @@ -301,8 +301,8 @@ struct MyComponent { public count:number; public increaseBy:number; constructor(count: number, increaseBy:number) { - this.count = count; - this.increaseBy = increaseBy; + this.count = count; + this.increaseBy = increaseBy; } } let obj = new C1(1, 2) diff --git a/zh-cn/application-dev/quick-start/typescript-to-arkts-migration-guide.md b/zh-cn/application-dev/quick-start/typescript-to-arkts-migration-guide.md index 36d6645ca5c86d2ceeb675527c771a1d96318442..e764829be6fa374b5d7ed68e9ad2704fc105595c 100644 --- a/zh-cn/application-dev/quick-start/typescript-to-arkts-migration-guide.md +++ b/zh-cn/application-dev/quick-start/typescript-to-arkts-migration-guide.md @@ -220,7 +220,7 @@ structural typing是否有助于生成清晰、易理解的代码,关于这一 **TypeScript** ```typescript -var x = {'name': 1, 2: 3} +var x = { 'name': 'x', 2: '3' } console.log(x['name']) console.log(x[2]) @@ -230,18 +230,18 @@ console.log(x[2]) ```typescript class X { - public name: number = 0 + public name: string = '' } -let x: X = {name: 1} +let x: X = { name: 'x' } console.log(x.name) -let y = [1, 2, 3] +let y = ['a', 'b', 'c'] console.log(y[2]) -// 在需要通过非标识符(即不同类型的key)获取数据的场景中,使用Map: -let z = new Map() -z.set('name', 1) -z.set(2, 2) +// 在需要通过非标识符(即不同类型的key)获取数据的场景中,使用Map。 +let z = new Map() +z.set('name', '1') +z.set(2, '2') console.log(z.get('name')) console.log(z.get(2)) ``` diff --git a/zh-cn/application-dev/reference/apis/Readme-CN.md b/zh-cn/application-dev/reference/apis/Readme-CN.md index b31e8e3043582e035b7dacfeafb3a0ac29eac406..c384caf017e0058f53f32fb7524ecf903af4f16a 100644 --- a/zh-cn/application-dev/reference/apis/Readme-CN.md +++ b/zh-cn/application-dev/reference/apis/Readme-CN.md @@ -248,6 +248,7 @@ - [@ohos.display (屏幕属性)](js-apis-display.md) - [@ohos.effectKit (图像效果)](js-apis-effectKit.md) - [@ohos.graphics.colorSpaceManager (色彩管理)](js-apis-colorSpaceManager.md) + - [@ohos.PiPWindow (画中画窗口)](js-apis-pipWindow.md) - [@ohos.screen (屏幕)](js-apis-screen.md) - [@ohos.screenshot (屏幕截图)](js-apis-screenshot.md) - [@ohos.window (窗口)](js-apis-window.md) diff --git a/zh-cn/application-dev/reference/apis/js-apis-ability-featureAbility.md b/zh-cn/application-dev/reference/apis/js-apis-ability-featureAbility.md index bccb3473fd1a483176f2aa104d8bc6edf3870b45..3a06ceae4c9bd9ce44aa347ff08a90c20a9bab1d 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-ability-featureAbility.md +++ b/zh-cn/application-dev/reference/apis/js-apis-ability-featureAbility.md @@ -3,9 +3,9 @@ FeatureAbility模块提供与用户进行交互的Ability的能力,包括启动新的Ability、停止Ability、获取dataAbilityHelper对象、获取当前Ability对应的窗口,连接断连Service等。 > **说明:** -> -> 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 -> 本模块接口仅可在FA模型下使用。 +> +> 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 +> 本模块接口仅可在FA模型下使用,Stage模型下需使用[UIAbility模块](js-apis-app-ability-uiAbility.md)和[UIAbilityContext模块](js-apis-inner-application-uiAbilityContext.md)。 ## 使用限制 @@ -30,12 +30,14 @@ startAbility(parameter: StartAbilityParameter, callback: AsyncCallback\) **系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel +**说明**:本接口仅可在FA模型下使用,Stage模型下需使用[UIAbilityContext.startAbility](js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability)。 + **参数:** | 参数名 | 类型 | 必填 | 说明 | | --------- | ---------------------------------------- | ---- | -------------- | | parameter | [StartAbilityParameter](js-apis-inner-ability-startAbilityParameter.md) | 是 | 表示被启动的Ability。 | -| callback | AsyncCallback\ | 是 | 以callback的形式返回启动Ability的结果。 | +| callback | AsyncCallback\ | 是 | 回调函数。当启动Ability成功,err为undefined,data为0表示启动成功,data为其他表示启动失败;否则为错误对象。 | **错误码:** @@ -106,6 +108,8 @@ startAbility(parameter: StartAbilityParameter): Promise\ **系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel +**说明**:本接口仅可在FA模型下使用,Stage模型下需使用[UIAbilityContext.startAbility](js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability-2)。 + **参数:** | 参数名 | 类型 | 必填 | 说明 | @@ -116,7 +120,7 @@ startAbility(parameter: StartAbilityParameter): Promise\ | 类型 | 说明 | | ---------------------------------------- | ------- | -| Promise\ | Promise形式返回启动Ability结果。 | +| Promise\ | Promise对象。返回0表示启动成功,返回其他表示启动失败。 | **错误码:** @@ -181,6 +185,8 @@ acquireDataAbilityHelper(uri: string): DataAbilityHelper **系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel +**说明**:本接口仅可在FA模型下使用,Stage模型下需使用[dataShare.createDataShareHelper](js-apis-data-dataShare.md#datasharecreatedatasharehelper)。 + **参数:** | 参数名 | 类型 | 必填 | 说明 | @@ -218,12 +224,15 @@ startAbilityForResult(parameter: StartAbilityParameter, callback: AsyncCallback\ **系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel +**说明**:本接口仅可在FA模型下使用,Stage模型下需使用[UIAbilityContext.startAbilityForResult](js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartabilityforresult)。 + + **参数:** | 参数名 | 类型 | 必填 | 说明 | | --------- | ---------------------------------------- | ---- | -------------- | | parameter | [StartAbilityParameter](js-apis-inner-ability-startAbilityParameter.md) | 是 | 表示被启动的Ability。 | -| callback | AsyncCallback\<[AbilityResult](js-apis-inner-ability-abilityResult.md)> | 是 | 以callback的形式返回启动Ability结果。 | +| callback | AsyncCallback\<[AbilityResult](js-apis-inner-ability-abilityResult.md)> | 是 | 回调函数。当启动Ability成功,err为undefined,data为ability的启动结果;否则为错误对象。 | **错误码:** @@ -296,6 +305,8 @@ startAbilityForResult(parameter: StartAbilityParameter): Promise\ **系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel +**说明**:本接口仅可在FA模型下使用,Stage模型下需使用[UIAbilityContext.startAbilityForResult](js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartabilityforresult-2)。 + **参数:** | 参数名 | 类型 | 必填 | 说明 | @@ -306,7 +317,7 @@ startAbilityForResult(parameter: StartAbilityParameter): Promise\ | 类型 | 说明 | | ---------------------------------------- | ------- | -| Promise\<[AbilityResult](js-apis-inner-ability-abilityResult.md)> | Promise形式返回启动Ability结果。 | +| Promise\<[AbilityResult](js-apis-inner-ability-abilityResult.md)> | Promise对象,返回启动Ability的结果。 | **错误码:** @@ -376,12 +387,14 @@ terminateSelfWithResult(parameter: AbilityResult, callback: AsyncCallback\ **系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel +**说明**:本接口仅可在FA模型下使用,Stage模型下需使用[UIAbilityContext.terminateSelfWithResult](js-apis-inner-application-uiAbilityContext.md#uiabilitycontextterminateselfwithresult)。 + **参数:** | 参数名 | 类型 | 必填 | 说明 | | --------- | ------------------------------- | ---- | -------------- | | parameter | [AbilityResult](js-apis-inner-ability-abilityResult.md) | 是 | 表示停止Ability之后返回的结果。 | -| callback | AsyncCallback\ | 是 | 以callback的形式返回停止Ability结果。 | +| callback | AsyncCallback\ | 是 | 回调函数。当停止当前Ability成功,err为undefined,否则为错误对象。 | **错误码:** @@ -441,6 +454,8 @@ terminateSelfWithResult(parameter: AbilityResult): Promise\ **系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel +**说明**:本接口仅可在FA模型下使用,Stage模型下需使用[UIAbilityContext.terminateSelfWithResult](js-apis-inner-application-uiAbilityContext.md#uiabilitycontextterminateselfwithresult-1)。 + **参数:** | 参数名 | 类型 | 必填 | 说明 | @@ -451,7 +466,7 @@ terminateSelfWithResult(parameter: AbilityResult): Promise\ | 类型 | 说明 | | -------------- | --------------- | -| Promise\ | 以Promise形式返回停止当前Ability结果。 | +| Promise\ | Promise对象。无返回结果的Promise对象。 | **错误码:** @@ -510,6 +525,8 @@ hasWindowFocus(callback: AsyncCallback\): void **系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel +**说明**:本接口仅可在FA模型下使用,Stage模型下需使用[on('windowEvent')](js-apis-window.md#onwindowevent10)。 + **参数:** | 参数名 | 类型 | 必填 | 说明 | @@ -572,6 +589,8 @@ getWant(callback: AsyncCallback\): void **系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel +**说明**:本接口仅可在FA模型下使用,Stage模型下需使用[UIAbility.launchWant](js-apis-app-ability-uiAbility.md#属性)。 + **参数:** | 参数名 | 类型 | 必填 | 说明 | @@ -606,6 +625,8 @@ getWant(): Promise\ **系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel +**说明**:本接口仅可在FA模型下使用,Stage模型下需使用[UIAbility.launchWant](js-apis-app-ability-uiAbility.md#属性)。 + **返回值:** | 类型 | 说明 | @@ -636,6 +657,8 @@ getContext(): Context **系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel +**说明**:本接口仅可在FA模型下使用,Stage模型下需使用[UIAbility.context](js-apis-app-ability-uiAbility.md#属性)。 + **返回值:** | 类型 | 说明 | @@ -664,6 +687,8 @@ terminateSelf(callback: AsyncCallback\): void **系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel +**说明**:本接口仅可在FA模型下使用,Stage模型下需使用[UIAbilityContext.terminateSelf](js-apis-inner-application-uiAbilityContext.md#uiabilitycontextterminateself)。 + **参数:** | 参数名 | 类型 | 必填 | 说明 | @@ -702,11 +727,13 @@ terminateSelf(): Promise\ **系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel +**说明**:本接口仅可在FA模型下使用,Stage模型下需使用[UIAbilityContext.terminateSelf](js-apis-inner-application-uiAbilityContext.md#uiabilitycontextterminateself-1)。 + **返回值:** | 类型 | 说明 | | -------------- | ---------------- | -| Promise\ | 以Promise的形式返回停止当前Ability结果。 | +| Promise\ | Promise对象。无返回结果的Promise对象。 | **错误码:** @@ -744,6 +771,8 @@ connectAbility(request: Want, options:ConnectOptions): number **系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel +**说明**:本接口仅可在FA模型下使用,Stage模型下需使用[UIAbilityContext.connectAbility](js-apis-inner-application-uiAbilityContext.md#uiabilitycontextconnectserviceextensionability)。 + **参数:** | 参数名 | 类型 | 必填 | 说明 | @@ -811,6 +840,8 @@ disconnectAbility(connection: number, callback:AsyncCallback\): void **系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel +**说明**:本接口仅可在FA模型下使用,Stage模型下需使用[UIAbilityContext.disconnectAbility](js-apis-inner-application-uiAbilityContext.md#uiabilitycontextdisconnectserviceextensionability-1)。 + **参数:** | 参数名 | 类型 | 必填 | 说明 | @@ -870,6 +901,8 @@ disconnectAbility(connection: number): Promise\ **系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel +**说明**:本接口仅可在FA模型下使用,Stage模型下需使用[UIAbilityContext.disconnectAbility](js-apis-inner-application-uiAbilityContext.md#uiabilitycontextdisconnectserviceextensionability)。 + **参数:** | 参数名 | 类型 | 必填 | 说明 | @@ -880,7 +913,7 @@ disconnectAbility(connection: number): Promise\ | 类型 | 说明 | | -------------- | --------------- | -| Promise\ | 以Promise形式返回断开连接结果。 | +| Promise\ | Promise对象。无返回结果的Promise对象。 | **错误码:** @@ -934,6 +967,8 @@ getWindow(callback: AsyncCallback\): void **系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel +**说明**:本接口仅可在FA模型下使用,Stage模型下需使用[window.getLastWindow](js-apis-window.md#windowgetlastwindow9)。 + **参数:** | 参数名 | 类型 | 必填 | 说明 | @@ -976,6 +1011,8 @@ getWindow(): Promise\ **系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel +**说明**:本接口仅可在FA模型下使用,Stage模型下需使用[window.getLastWindow](js-apis-window.md#windowgetlastwindow9-1)。 + **返回值:** | 类型 | 说明 | diff --git a/zh-cn/application-dev/reference/apis/js-apis-ability-particleAbility.md b/zh-cn/application-dev/reference/apis/js-apis-ability-particleAbility.md index 4bee717d34f13cb5a4ef1d304098803c1d578940..15cfaa15a081e4d397b5083504982fdbab71f7f7 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-ability-particleAbility.md +++ b/zh-cn/application-dev/reference/apis/js-apis-ability-particleAbility.md @@ -5,7 +5,7 @@ particleAbility模块提供了操作Data和Service类型的Ability的能力, > **说明:** > > 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 -> 本模块接口仅可在FA模型下使用。 +> 本模块接口仅可在FA模型下使用,Stage模型下需使用[ServiceExtensionAbility模块](js-apis-app-ability-serviceExtensionAbility.md)和[ServiceExtensionContext模块](js-apis-inner-application-serviceExtensionContext.md)。 ## 使用限制 @@ -30,6 +30,8 @@ startAbility(parameter: StartAbilityParameter, callback: AsyncCallback\): **系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel +**说明**:本接口仅可在FA模型下使用,Stage模型下需使用[ServiceExtensionContext.startAbility](js-apis-inner-application-serviceExtensionContext.md#serviceextensioncontextstartability)。 + **参数:** | 参数名 | 类型 | 必填 | 说明 | @@ -65,7 +67,7 @@ startAbility(parameter: StartAbilityParameter, callback: AsyncCallback\): ```ts import particleAbility from '@ohos.ability.particleAbility'; -import wantConstant from '@ohos.ability.wantConstant'; +import wantConstant from '@ohos.app.ability.wantConstant'; particleAbility.startAbility( { @@ -104,6 +106,8 @@ startAbility(parameter: StartAbilityParameter): Promise\ **系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel +**说明**:本接口仅可在FA模型下使用,Stage模型下需使用[ServiceExtensionContext.startAbility](js-apis-inner-application-serviceExtensionContext.md#serviceextensioncontextstartability-1)。 + **参数:** | 参数名 | 类型 | 必填 | 说明 | @@ -114,7 +118,7 @@ startAbility(parameter: StartAbilityParameter): Promise\ | 类型 | 说明 | | -------------- | ------------------------- | -| Promise\ | Promise形式返回启动Ability的结果。 | +| Promise\ | Promise对象。无返回结果的Promise对象。 | **错误码:** @@ -144,7 +148,7 @@ startAbility(parameter: StartAbilityParameter): Promise\ ```ts import particleAbility from '@ohos.ability.particleAbility'; -import wantConstant from '@ohos.ability.wantConstant'; +import wantConstant from '@ohos.app.ability.wantConstant'; particleAbility.startAbility( { @@ -173,6 +177,8 @@ terminateSelf(callback: AsyncCallback\): void **系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel +**说明**:本接口仅可在FA模型下使用,Stage模型下需使用[ServiceExtensionContext.terminateSelf](js-apis-inner-application-serviceExtensionContext.md#serviceextensioncontextterminateself)。 + **参数:** | 参数名 | 类型 | 必填 | 说明 | @@ -215,11 +221,13 @@ terminateSelf(): Promise\ **系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel +**说明**:本接口仅可在FA模型下使用,Stage模型下需使用[ServiceExtensionContext.terminateSelf](js-apis-inner-application-serviceExtensionContext.md#serviceextensioncontextterminateself-1)。 + **返回值:** | 类型 | 说明 | | -------------- | ------------------------- | -| Promise\ | 使用Promise形式返回停止当前Ability结果。 | +| Promise\ | Promise对象。无返回结果的Promise对象。 | **错误码:** @@ -261,6 +269,8 @@ acquireDataAbilityHelper(uri: string): DataAbilityHelper **系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel +**说明**:本接口仅可在FA模型下使用,Stage模型下需使用[dataShare.createDataShareHelper](js-apis-data-dataShare.md#datasharecreatedatasharehelper)。 + **参数:** | 参数名 | 类型 | 必填 | 说明 | @@ -287,12 +297,14 @@ particleAbility.acquireDataAbilityHelper(uri); startBackgroundRunning(id: number, request: NotificationRequest, callback: AsyncCallback<void>): void -向系统申请长时任务,使用callback形式返回结果,建议使用新接口[backgroundTaskManager.startBackgroundRunning](js-apis-backgroundTaskManager.md#backgroundtaskmanagerstartbackgroundrunning8)。 +向系统申请长时任务,使用callback形式返回结果。 **需要权限:** ohos.permission.KEEP_BACKGROUND_RUNNING **系统能力**:SystemCapability.ResourceSchedule.BackgroundTaskManager.ContinuousTask +**说明**:本接口仅可在FA模型下使用,Stage模型下需使用[backgroundTaskManager.startBackgroundRunning](js-apis-backgroundTaskManager.md#backgroundtaskmanagerstartbackgroundrunning8)。 + **参数:** | 参数名 | 类型 | 必填 | 说明 | @@ -367,11 +379,13 @@ wantAgent.getWantAgent(wantAgentInfo).then((wantAgentObj) => { startBackgroundRunning(id: number, request: NotificationRequest): Promise<void> +向系统申请长时任务,使用promise形式返回结果。 + **需要权限:** ohos.permission.KEEP_BACKGROUND_RUNNING **系统能力**:SystemCapability.ResourceSchedule.BackgroundTaskManager.ContinuousTask -向系统申请长时任务,使用promise形式返回结果,建议使用新接口[backgroundTaskManager.startBackgroundRunning](js-apis-backgroundTaskManager.md#backgroundtaskmanagerstartbackgroundrunning8-1)。 +**说明**:本接口仅可在FA模型下使用,Stage模型下需使用[backgroundTaskManager.startBackgroundRunning](js-apis-backgroundTaskManager.md#backgroundtaskmanagerstartbackgroundrunning8-1)。 **参数:** @@ -384,7 +398,7 @@ startBackgroundRunning(id: number, request: NotificationRequest): Promise<voi | 类型 | 说明 | | -------------- | ------------------------- | -| Promise\ | 使用Promise形式返回启动长时任务的结果。 | +| Promise\ | Promise对象。无返回结果的Promise对象。 | **错误码:** @@ -448,10 +462,12 @@ wantAgent.getWantAgent(wantAgentInfo).then((wantAgentObj) => { cancelBackgroundRunning(callback: AsyncCallback<void>): void -向系统申请取消长时任务,使用callback形式返回结果,建议使用新接口[backgroundTaskManager.stopBackgroundRunning](js-apis-backgroundTaskManager.md#backgroundtaskmanagerstopbackgroundrunning8)。 +向系统申请取消长时任务,使用callback形式返回结果。 **系统能力**:SystemCapability.ResourceSchedule.BackgroundTaskManager.ContinuousTask +**说明**:本接口仅可在FA模型下使用,Stage模型下需使用[backgroundTaskManager.stopBackgroundRunning](js-apis-backgroundTaskManager.md#backgroundtaskmanagerstopbackgroundrunning8)。 + **参数:** | 参数名 | 类型 | 必填 | 说明 | @@ -491,15 +507,17 @@ particleAbility.cancelBackgroundRunning(callback); cancelBackgroundRunning(): Promise<void> -向系统申请取消长时任务,使用promise形式返回结果,建议使用新接口[backgroundTaskManager.stopBackgroundRunning](js-apis-backgroundTaskManager.md#backgroundtaskmanagerstopbackgroundrunning8-1)。 +向系统申请取消长时任务,使用promise形式返回结果。 **系统能力**:SystemCapability.ResourceSchedule.BackgroundTaskManager.ContinuousTask +**说明**:本接口仅可在FA模型下使用,Stage模型下需使用[backgroundTaskManager.stopBackgroundRunning](js-apis-backgroundTaskManager.md#backgroundtaskmanagerstopbackgroundrunning8-1)。 + **返回值:** | 类型 | 说明 | | -------------- | ------------------------- | -| Promise\ | 使用Promise形式返回取消长时任务的结果。 | +| Promise\ | Promise对象。无返回结果的Promise对象。 | **错误码:** @@ -539,6 +557,8 @@ connectAbility(request: Want, options:ConnectOptions): number **系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel +**说明**:本接口仅可在FA模型下使用,Stage模型下需使用[ServiceExtensionContext.connectServiceExtensionAbility](js-apis-inner-application-serviceExtensionContext.md#serviceextensioncontextconnectserviceextensionability)。 + **参数:** | 参数名 | 类型 | 必填 | 说明 | @@ -612,6 +632,8 @@ disconnectAbility(connection: number, callback:AsyncCallback\): void **系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel +**说明**:本接口仅可在FA模型下使用,Stage模型下需使用[ServiceExtensionContext.disconnectServiceExtensionAbility](js-apis-inner-application-serviceExtensionContext.md#serviceextensioncontextdisconnectserviceextensionability)。 + **参数:** | 参数名 | 类型 | 必填 | 说明 | @@ -668,12 +690,14 @@ disconnectAbility(connection: number): Promise\ **系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel +**说明**:本接口仅可在FA模型下使用,Stage模型下需使用[ServiceExtensionContext.disconnectServiceExtensionAbility](js-apis-inner-application-serviceExtensionContext.md#serviceextensioncontextdisconnectserviceextensionability-1)。 + **返回值:** | 类型 | 说明 | | -------------- | ------------------------- | | connection | number | 是 | 表示断开连接的ServiceAbility的ID。 | -| Promise\ | 使用Promise形式返回结果。 | +| Promise\ | Promise对象。无返回结果的Promise对象。 | **错误码:** diff --git a/zh-cn/application-dev/reference/apis/js-apis-app-ability-abilityDelegatorRegistry.md b/zh-cn/application-dev/reference/apis/js-apis-app-ability-abilityDelegatorRegistry.md index 0535242d0bfdfe165352f72a0312ade0b66467c2..46c537450986c6f8db725ef45dca9f7f7aa9ce9a 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-app-ability-abilityDelegatorRegistry.md +++ b/zh-cn/application-dev/reference/apis/js-apis-app-ability-abilityDelegatorRegistry.md @@ -1,6 +1,6 @@ # @ohos.app.ability.abilityDelegatorRegistry (AbilityDelegatorRegistry) -AbilityDelegatorRegistry是[自动化测试框架使用指南](../../application-test/arkxtest-guidelines.md)模块,该模块用于获取[AbilityDelegator](js-apis-inner-application-abilityDelegator.md)和[AbilityDelegatorArgs](js-apis-inner-application-abilityDelegatorArgs.md)对象,其中[AbilityDelegator](js-apis-inner-application-abilityDelegator.md)对象提供添加用于监视指定ability的生命周期状态更改的AbilityMonitor对象的能力,[AbilityDelegatorArgs](js-apis-inner-application-abilityDelegatorArgs.md)对象提供获取当前测试参数的能力。 +AbilityDelegatorRegistry是[自动化测试框架使用指南](../../application-test/arkxtest-guidelines.md)模块,该模块用于获取[AbilityDelegator](js-apis-inner-application-abilityDelegator.md)和[AbilityDelegatorArgs](js-apis-inner-application-abilityDelegatorArgs.md)对象,其中[AbilityDelegator](js-apis-inner-application-abilityDelegator.md)对象提供添加用于监视指定ability的生命周期状态更改的[AbilityMonitor](js-apis-inner-application-abilityMonitor.md#abilitymonitor-1)对象的能力,[AbilityDelegatorArgs](js-apis-inner-application-abilityDelegatorArgs.md)对象提供获取当前测试参数的能力。 > **说明:** > diff --git a/zh-cn/application-dev/reference/apis/js-apis-app-ability-abilityManager.md b/zh-cn/application-dev/reference/apis/js-apis-app-ability-abilityManager.md index e7051286f3b1661a0bf9c679b389571e5106f6b8..8ef44bac3dcdf996b1f12c468847d3618f6889fd 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-app-ability-abilityManager.md +++ b/zh-cn/application-dev/reference/apis/js-apis-app-ability-abilityManager.md @@ -17,9 +17,9 @@ import abilityManager from '@ohos.app.ability.abilityManager'; Ability的状态,该类型为枚举,可配合[AbilityRunningInfo](js-apis-inner-application-abilityRunningInfo.md)返回Ability的状态。 -**系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.Core +**系统接口**: 该接口为系统接口。 -**系统API**: 此枚举类型为系统接口内部定义,三方应用不支持调用。 +**系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.Core | 名称 | 值 | 说明 | | -------- | -------- | -------- | @@ -36,6 +36,8 @@ updateConfiguration(config: Configuration, callback: AsyncCallback\): void 通过传入修改的配置项来更新配置(callback形式)。 +**系统接口**:该接口为系统接口。 + **需要权限**: ohos.permission.UPDATE_CONFIGURATION **系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.Core @@ -92,6 +94,8 @@ updateConfiguration(config: Configuration): Promise\ 通过修改配置来更新配置(Promise形式)。 +**系统接口**:该接口为系统接口。 + **需要权限**: ohos.permission.UPDATE_CONFIGURATION **系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.Core @@ -152,6 +156,8 @@ getAbilityRunningInfos(callback: AsyncCallback\>): vo 获取UIAbility运行相关信息(callback形式)。 +**系统接口**:该接口为系统接口。 + **需要权限**: ohos.permission.GET_RUNNING_INFO **系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.Core @@ -197,6 +203,8 @@ getAbilityRunningInfos(): Promise\> 获取UIAbility运行相关信息(Promise形式)。 +**系统接口**:该接口为系统接口。 + **需要权限**: ohos.permission.GET_RUNNING_INFO **系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.Core @@ -240,6 +248,8 @@ getExtensionRunningInfos(upperLimit: number, callback: AsyncCallback\) => { + abilityManager.getExtensionRunningInfos(upperLimit, (err: BusinessError, data: Array) => { if (err) { console.error(`getExtensionRunningInfos fail, err: ${JSON.stringify(err)}`); } else { @@ -287,7 +297,9 @@ try { getExtensionRunningInfos(upperLimit: number): Promise\> 获取关于运行扩展能力的信息(Promise形式)。 - + +**系统接口**:该接口为系统接口。 + **需要权限**: ohos.permission.GET_RUNNING_INFO **系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.Core @@ -321,7 +333,7 @@ import { BusinessError } from '@ohos.base'; let upperLimit = 10; try { - abilityManager.getExtensionRunningInfos(upperLimit).then((data: Array) => { + abilityManager.getExtensionRunningInfos(upperLimit).then((data: Array) => { console.log(`getExtensionRunningInfos success, data: ${JSON.stringify(data)}`); }).catch((err: BusinessError) => { console.error(`getExtensionRunningInfos fail, err: ${JSON.stringify(err)}`); @@ -333,12 +345,14 @@ try { } ``` -## getTopAbility9+ +## getTopAbility -getTopAbility(callback: AsyncCallback\): void; +getTopAbility(callback: AsyncCallback\): void 获取窗口焦点的ability接口(callback形式)。 +**系统接口**:该接口为系统接口。 + **系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.Core **参数**: @@ -361,7 +375,7 @@ getTopAbility(callback: AsyncCallback\): void; import abilityManager from '@ohos.app.ability.abilityManager'; import { BusinessError } from '@ohos.base'; -abilityManager.getTopAbility((err: BusinessError, data: AsyncCallback) => { +abilityManager.getTopAbility((err: BusinessError, data) => { if (err) { console.error(`getTopAbility fail, err: ${JSON.stringify(err)}`); } else { @@ -372,10 +386,12 @@ abilityManager.getTopAbility((err: BusinessError, data: AsyncCallback; +getTopAbility(): Promise\ 获取窗口焦点的ability接口(Promise形式)。 - + +**系统接口**:该接口为系统接口。 + **系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.Core **返回值:** @@ -398,7 +414,7 @@ getTopAbility(): Promise\; import abilityManager from '@ohos.app.ability.abilityManager'; import { BusinessError } from '@ohos.base'; -abilityManager.getTopAbility().then((data: AsyncCallback) => { +abilityManager.getTopAbility().then((data) => { console.log(`getTopAbility success, data: ${JSON.stringify(data)}`); }).catch((err: BusinessError) => { console.error(`getTopAbility fail, err: ${JSON.stringify(err)}`); @@ -407,13 +423,13 @@ abilityManager.getTopAbility().then((data: AsyncCallback) => { ## acquireShareData10+ -acquireShareData(missionId: number, callback: AsyncCallback<{[key: string]: Object}>): void; +acquireShareData(missionId: number, callback: AsyncCallback<{[key: string]: Object}>): void 系统弹框通过该接口发起原子化服务分享,调用到目标UIAbility的onShare,返回分享数据(callback形式)。 -**系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.Core +**系统接口**:该接口为系统接口。 -**系统API**:该接口为系统接口,三方应用不支持调用。 +**系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.Core **参数**: @@ -454,13 +470,13 @@ try { ## acquireShareData10+ -acquireShareData(missionId: number): Promise<{[key: string]: Object}>; +acquireShareData(missionId: number): Promise<{[key: string]: Object}> 系统弹框通过该接口发起原子化服务分享,调用到目标UIAbility的onShare,返回分享数据(Promise形式)。 - -**系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.Core -**系统API**:该接口为系统接口,三方应用不支持调用。 +**系统接口**:该接口为系统接口。 + +**系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.Core **参数**: @@ -503,16 +519,16 @@ try { ## notifySaveAsResult10+ -notifySaveAsResult(parameter: AbilityResult, requestCode: number, callback: AsyncCallback\): void; +notifySaveAsResult(parameter: AbilityResult, requestCode: number, callback: AsyncCallback\): void -该接口仅供DLP(Data Loss Prevention, 数据丢失防护)管理应用使用,其他应用禁止使用,DLP管理应用通过该接口通知沙箱应用另存为结果。使用callback异步回调。 +该接口仅供[DLP](js-apis-dlppermission.md)(Data Loss Prevention, 数据丢失防护)管理应用使用,其他应用禁止使用,DLP管理应用通过该接口通知沙箱应用另存为结果。使用callback异步回调。 **模型约束**:此接口仅可在Stage模型下使用。 -**系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.Core - **系统接口**:此接口为系统接口。 +**系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.Core + **参数**: | 参数名 | 类型 | 必填 | 说明 | @@ -564,16 +580,16 @@ try { ## notifySaveAsResult10+ -notifySaveAsResult(parameter: AbilityResult, requestCode: number): Promise\; +notifySaveAsResult(parameter: AbilityResult, requestCode: number): Promise\ -该接口仅供DLP管理应用使用,其他应用禁止使用,DLP管理应用通过该接口通知沙箱应用另存为结果。使用Promise异步回调。 +该接口仅供[DLP](js-apis-dlppermission.md)(Data Loss Prevention, 数据丢失防护)管理应用使用,其他应用禁止使用,DLP管理应用通过该接口通知沙箱应用另存为结果。使用Promise异步回调。 **模型约束**:此接口仅可在Stage模型下使用。 -**系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.Core - **系统接口**:此接口为系统接口。 +**系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.Core + **参数**: | 参数名 | 类型 | 必填 | 说明 | diff --git a/zh-cn/application-dev/reference/apis/js-apis-app-ability-appManager.md b/zh-cn/application-dev/reference/apis/js-apis-app-ability-appManager.md index 7af0124746d95859d5c19b9517e9561fcccf564b..a304f083ba56fa2e608504307b3aa4b472741e60 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-app-ability-appManager.md +++ b/zh-cn/application-dev/reference/apis/js-apis-app-ability-appManager.md @@ -1489,6 +1489,101 @@ try { } ``` +## appManager.isApplicationRunning11+ + +isApplicationRunning(bundleName: string): Promise\ + +查询单个应用是否正在运行。使用Promise异步回调。 + +**系统接口**:此接口为系统接口。 + +**需要权限**:ohos.permission.GET_RUNNING_INFO + +**系统能力**:SystemCapability.Ability.AbilityRuntime.Core + +**参数**: + +| 参数名 | 类型 | 必填 | 说明 | +| --------- | ---------------------------------------- | ---- | -------------- | +| bundleName | string | 是 | 表示要查询的应用的包名。 | + +**返回值:** + +| 类型 | 说明 | +| -------- | -------- | +| Promise\ | Promise对象。返回true表示查询的应用正在运行,返回false表示查询的应用没有运行。 | + +**错误码**: + +| 错误码ID | 错误信息 | +| ------- | -------- | +| 16000050 | Internal error. | + +以上错误码详细介绍请参考[errcode-ability](../errorcodes/errorcode-ability.md)。 + +**示例:** + +```ts +import appManager from '@ohos.app.ability.appManager'; +import { BusinessError } from '@ohos.base'; + +let bundleName = "com.example.myapplication"; +appManager.isApplicationRunning(bundleName).then((data) => { + console.log(`The application running is: ${JSON.stringify(data)}`); +}).catch((error: BusinessError) => { + console.error(`error: ${JSON.stringify(error)}`); +}); +``` + +## appManager.isApplicationRunning11+ + +isApplicationRunning(bundleName: string, callback: AsyncCallback\): void + +查询单个应用是否正在运行。使用callback异步回调。 + +**系统接口**:此接口为系统接口。 + +**需要权限**:ohos.permission.GET_RUNNING_INFO + +**系统能力**:SystemCapability.Ability.AbilityRuntime.Core + +**参数**: + +| 参数名 | 类型 | 必填 | 说明 | +| --------- | ---------------------------------------- | ---- | -------------- | +| bundleName | string | 是 | 表示要查询的共享库包名。 | +| callback | AsyncCallback<boolean> | 是 | 回调函数。返回true表示查询的应用正在运行,返回false表示查询的应用没有运行。 | + +**错误码**: + +| 错误码ID | 错误信息 | +| ------- | -------- | +| 16000050 | Internal error. | + +以上错误码详细介绍请参考[errcode-ability](../errorcodes/errorcode-ability.md)。 + +**示例:** + +```ts +import appManager from '@ohos.app.ability.appManager'; +import { BusinessError } from '@ohos.base'; + +let bundleName = "com.example.myapplication"; +try { + appManager.isApplicationRunning(bundleName, (err, data) => { + if (err) { + console.error(`err: ${JSON.stringify(err)}`); + } else { + console.log(`The application running is: ${JSON.stringify(data)}`); + } + }); +} catch (paramError) { + let code = (paramError as BusinessError).code; + let message = (paramError as BusinessError).message; + console.error(`[appManager] error: ${code}, ${message} `); +} +``` + ## ApplicationState 应用状态,该类型为枚举,可配合[AbilityStateData](js-apis-inner-application-appStateData.md)返回相应的应用状态。 diff --git a/zh-cn/application-dev/reference/apis/js-apis-app-ability-uiExtensionContentSession.md b/zh-cn/application-dev/reference/apis/js-apis-app-ability-uiExtensionContentSession.md index 104fae1b96dec7724d4c50ceaa2ac7de8de75dd1..af534b5cc13e1a4d5a04a595d3a8012331808e99 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-app-ability-uiExtensionContentSession.md +++ b/zh-cn/application-dev/reference/apis/js-apis-app-ability-uiExtensionContentSession.md @@ -541,7 +541,7 @@ startAbilityByType(type: string, wantParam: Record, | type | string | 是 | 显示拉起的UIExtensionAbility类型。 | | wantParam | {[key: string]: any} | 是 | 表示扩展参数。 | | abilityStartCallback | [AbilityStartCallback](js-apis-inner-application-abilityStartCallback.md) | 是 | 启动失败后的回调。 | -| callback | AsyncCallback | 是 | 回调函数,返回接口调用是否成功的结果。 | +| callback | AsyncCallback<void> | 是 | 回调函数,返回接口调用是否成功的结果。 | **错误码:** @@ -576,7 +576,7 @@ startAbilityByType(type: string, wantParam: Record, | 类型 | 说明 | | -------- | -------- | -| Promise | Promise对象。无返回结果的Promise对象。 | +| Promise<void> | Promise对象。无返回结果的Promise对象。 | **错误码:** diff --git a/zh-cn/application-dev/reference/apis/js-apis-audio.md b/zh-cn/application-dev/reference/apis/js-apis-audio.md index 96a165959ecceed02faf48b7f0f0934c3ce21da5..1bb99b159894660d19f96e43f153a5dc3db05fdd 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-audio.md +++ b/zh-cn/application-dev/reference/apis/js-apis-audio.md @@ -852,6 +852,7 @@ async function createTonePlayerBefore(){ | SOURCE_TYPE_VOICE_RECOGNITION9+ | 1 | 语音识别源。
**系统能力:** SystemCapability.Multimedia.Audio.Core | | SOURCE_TYPE_PLAYBACK_CAPTURE10+ | 2 | 播放音频流(内录)录制音频源。
**系统能力:** SystemCapability.Multimedia.Audio.PlaybackCapture | | SOURCE_TYPE_WAKEUP 10+ | 3 | 语音唤醒音频流录制音频源。
**系统能力:** SystemCapability.Multimedia.Audio.Core
**需要权限:** ohos.permission.MANAGE_INTELLIGENT_VOICE
此接口为系统接口| +| SOURCE_TYPE_VOICE_CALL11+ | 4 | 通话录音的音频源。
**系统能力:** SystemCapability.Multimedia.Audio.Core
**需要权限:** ohos.permission.RECORD_VOICE_CALL
此接口为系统接口| | SOURCE_TYPE_VOICE_COMMUNICATION | 7 | 语音通话场景的音频源。
**系统能力:** SystemCapability.Multimedia.Audio.Core | ## AudioPlaybackCaptureConfig10+ diff --git a/zh-cn/application-dev/reference/apis/js-apis-bundleManager.md b/zh-cn/application-dev/reference/apis/js-apis-bundleManager.md index 4c231662cd56437bc6d0f7d84a230a96a53f3a10..ee13d71233fdfe89c4e3f906f6a3bae0fbbdf872 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-bundleManager.md +++ b/zh-cn/application-dev/reference/apis/js-apis-bundleManager.md @@ -4723,3 +4723,73 @@ try { hilog.error(0x0000, 'testTag', 'verifyAbc failed. Cause: %{public}s', message); } ``` + +### bundleManager.queryExtensionAbilityInfoSync11+ + +queryExtensionAbilityInfoSync(extensionAbilityType: string, extensionAbilityFlags: [number](#extensionabilityflag), userId?: number): Array\<[ExtensionAbilityInfo](js-apis-bundleManager-extensionAbilityInfo.md)> + +根据给定的extensionAbilityType、extensionAbilityFlags和userId获取ExtensionAbilityInfo。 + +**系统接口:** 此接口为系统接口。 + +**需要权限:** ohos.permission.GET_BUNDLE_INFO_PRIVILEGED or ohos.permission.GET_BUNDLE_INFO + +**系统能力:** SystemCapability.BundleManager.BundleFramework.Core + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| --------------------- | ------------------------------- | ---- | --------------------------------------------------------- | +| extensionAbilityType | string | 是 | 表示自定义extensionAbility的类型。 | +| extensionAbilityFlags | [number](#extensionabilityflag) | 是 | 表示返回的ExtensionInfo对象中需要包含的信息标志。 | +| userId | number | 否 | 表示用户ID,默认值:调用方所在用户ID。取值范围:大于等于0。 | + +**返回值:** + +| 类型 | 说明 | +| ------------------------------------------------------------ | -------------------------------------- | +| Array\<[ExtensionAbilityInfo](js-apis-bundleManager-extensionAbilityInfo.md)> | 同步返回Array\。 | + +**错误码:** + +以下错误码的详细介绍请参见[ohos.bundle错误码](../errorcodes/errorcode-bundle.md)。 + +| 错误码ID | 错误信息 | +| -------- | -------------------------------------------- | +| 17700003 | The specified extensionAbility is not found. | +| 17700004 | The specified userId is invalid. | + +**示例:** + +```ts +// 示例接口带userId参数查询 +import bundleManager from '@ohos.bundle.bundleManager'; +import hilog from '@ohos.hilog'; + +let extensionAbilityType = "form"; +let extensionFlags = bundleManager.ExtensionAbilityFlag.GET_EXTENSION_ABILITY_INFO_DEFAULT; +let userId = 100; + +try { + let data = bundleManager.queryExtensionAbilityInfoSync(extensionAbilityType, extensionFlags, userId) + hilog.info(0x0000, 'testTag', 'queryExtensionAbilityInfoSync successfully. Data: %{public}s', JSON.stringify(data)); +} catch (err) { + hilog.error(0x0000, 'testTag', 'queryExtensionAbilityInfoSync failed.'); +} +``` + +```ts +// 示例接口不带userId参数查询 +import bundleManager from '@ohos.bundle.bundleManager'; +import hilog from '@ohos.hilog'; + +let extensionAbilityType = "form"; +let extensionFlags = bundleManager.ExtensionAbilityFlag.GET_EXTENSION_ABILITY_INFO_DEFAULT; + +try { + let data = bundleManager.queryExtensionAbilityInfoSync(extensionAbilityType, extensionFlags); + hilog.info(0x0000, 'testTag', 'queryExtensionAbilityInfoSync successfully. Data: %{public}s', JSON.stringify(data)); +} catch (err) { + hilog.error(0x0000, 'testTag', 'queryExtensionAbilityInfoSync failed.'); +} +``` \ No newline at end of file diff --git a/zh-cn/application-dev/reference/apis/js-apis-call.md b/zh-cn/application-dev/reference/apis/js-apis-call.md index 096f8aa9ea0955a3092e3e7b970e9bec3eeb3709..00ed887898aba3fd07815767387cae3f78debbf0 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-call.md +++ b/zh-cn/application-dev/reference/apis/js-apis-call.md @@ -5770,10 +5770,12 @@ IP多媒体系统调用模式。 **系统能力**:SystemCapability.Telephony.CallManager -| 名称 | 值 | 说明 | -| ---------- | ---- | -------- | -| TYPE_VOICE | 0 | 语音状态 | -| TYPE_VIDEO | 1 | 视频状态 | +| 名称 | 值 | 说明 | +| ------------------------------------- | ---- | --------| +| TYPE_VOICE | 0 | 语音状态。 | +| TYPE_VIDEO_SEND_ONLY11+ | 1 | 视频通话只发送数据状态。 | +| TYPE_VIDEO_RECEIVE_ONLY11+ | 2 | 视频通话只接收数据状态。 | +| TYPE_VIDEO | 3 | 视频状态。 | ## DetailedCallState7+ @@ -6076,3 +6078,802 @@ MMI码结果。 | MMI_CODE_SUCCESS | 0 | 表示MMI码成功 | | MMI_CODE_FAILED | 1 | 表示MMI码失败 | +## call.answerCall11+ + +answerCall(videoState: VideoStateType, callId?: number\): Promise\ + +接听来电。使用Promise异步回调。 + +**系统接口:** 此接口为系统接口。 + +**需要权限**:ohos.permission.ANSWER_CALL + +**系统能力**:SystemCapability.Telephony.CallManager + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ----------------------- | ------------------- | ---- | ------------------------------------------------------------ | +| videoState| [VideoStateType](#videostatetype7)| 是 | 接听通话类型。 | +| callId | number | 否 | 呼叫Id。可以通过订阅callDetailsChange事件获得。不填该参数则接通最近一通正在响铃的来电。| + +**返回值:** + +| 类型 | 说明 | +| ------------------- | --------------------------- | +| Promise<void> | 以Promise形式异步返回接听电话结果。 | + +**错误码:** + +以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)。 + +| 错误码ID | 错误信息 | +| -------- | -------------------------------------------- | +| 201 | Permission denied. | +| 202 | Non-system applications use system APIs. | +| 401 | Parameter error. | +| 8300001 | Invalid parameter value. | +| 8300002 | Operation failed. Cannot connect to service. | +| 8300003 | System internal error. | +| 8300999 | Unknown error code. | + +**示例:** + +```ts +import { BusinessError } from '@ohos.base'; + +call.answerCall(0, 1).then(() => { + console.log(`answerCall success.`); +}).catch((err: BusinessError) => { + console.error(`answerCall fail, promise: err->${JSON.stringify(err)}`); +}); +``` + +## call.cancelCallUpgrade11+ + +cancelCallUpgrade\(callId: number\): Promise\ + +视频通话升级过程中取消升级。使用Promise异步回调。 + +**系统接口:** 此接口为系统接口。 + +**需要权限**:ohos.permission.PLACE_CALL + +**系统能力**:SystemCapability.Telephony.CallManager + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ------ | ---------------------------- | ---- | -------------- | +| callId | number | 是 | 呼叫Id。可以通过订阅callDetailsChange事件获得。| + +**返回值:** + +| 类型 | 说明 | +| ------------------- | --------------------------- | +| Promise<void> | 以Promise形式异步返回升级过程中取消视频升级结果。 | + +**错误码:** + +以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)。 + +| 错误码ID | 错误信息 | +| -------- | -------------------------------------------- | +| 201 | Permission denied. | +| 202 | Non-system applications use system APIs. | +| 401 | Parameter error. | +| 8300001 | Invalid parameter value. | +| 8300002 | Operation failed. Cannot connect to service. | +| 8300003 | System internal error. | +| 8300999 | Unknown error code. | + +**示例:** + +```ts +import { BusinessError } from '@ohos.base'; + +call.cancelCallUpgrade(1).then(() => { + console.log(`cancelCallUpgrade success.`); +}).catch((err: BusinessError) => { + console.error(`cancelCallUpgrade fail, promise: err->${JSON.stringify(err)}`); +}); +``` + +## call.controlCamera11+ + +controlCamera\(callId: number, cameraId: string\): Promise\ + +设置使用指定的相机进行视频通话,cameraId为空表示关闭相机。使用Promise异步回调。 + +**系统接口:** 此接口为系统接口。 + +**需要权限**:ohos.permission.SET_TELEPHONY_STATE + +**系统能力**:SystemCapability.Telephony.CallManager + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ------ | ---------------------------- | ---- | -------------- | +| callId | number | 是 | 呼叫Id。可以通过订阅callDetailsChange事件获得。 | +| cameraId | string | 是 | 相机Id。cameraId获取方式可参考[相机管理](js-apis-camera.md#getsupportedcameras)。| + +**返回值:** + +| 类型 | 说明 | +| ------------------- | --------------------------- | +| Promise<void> | 以Promise形式异步返回设置开启,关闭,切换相机结果。 | + +**错误码:** + +以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)。 + +| 错误码ID | 错误信息 | +| -------- | -------------------------------------------- | +| 201 | Permission denied. | +| 202 | Non-system applications use system APIs. | +| 401 | Parameter error. | +| 8300001 | Invalid parameter value. | +| 8300002 | Operation failed. Cannot connect to service. | +| 8300003 | System internal error. | +| 8300999 | Unknown error code. | + +**示例:** + +```ts +import { BusinessError } from '@ohos.base'; + +call.controlCamera(1, "1").then(() => { + console.log(`controlCamera success.`); +}).catch((err: BusinessError) => { + console.error(`controlCamera fail, promise: err->${JSON.stringify(err)}`); +}); +``` + +## call.setPreviewWindow11+ + +setPreviewWindow\(callId: number, surfaceId: string\): Promise\ + +设置本端预览画面窗口。使用Promise异步回调。 + +**系统接口:** 此接口为系统接口。 + +**需要权限**:ohos.permission.SET_TELEPHONY_STATE + +**系统能力**:SystemCapability.Telephony.CallManager + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ------ | ---------------------------- | ---- | -------------- | +| callId | number | 是 | 呼叫Id。可以通过订阅callDetailsChange事件获得。 | +| surfaceId | string | 是 | 预览窗口Id。surfaceId获取方式可参考[XComponent](../arkui-ts/ts-basic-components-xcomponent.md#getxcomponentsurfaceid)。 | + +**返回值:** + +| 类型 | 说明 | +| ------------------- | --------------------------- | +| Promise<void> | 以Promise形式异步返回设置本端预览画面窗口结果。 | + +**错误码:** + +以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)。 + +| 错误码ID | 错误信息 | +| -------- | -------------------------------------------- | +| 201 | Permission denied. | +| 202 | Non-system applications use system APIs. | +| 401 | Parameter error. | +| 8300001 | Invalid parameter value. | +| 8300002 | Operation failed. Cannot connect to service. | +| 8300003 | System internal error. | +| 8300999 | Unknown error code. | + +**示例:** + +```ts +import { BusinessError } from '@ohos.base'; + +call.setPreviewWindow(1, "surfaceId1").then(() => { + console.log(`setPreviewWindow success.`); +}).catch((err: BusinessError) => { + console.error(`setPreviewWindow fail, promise: err->${JSON.stringify(err)}`); +}); +``` + +## call.setDisplayWindow11+ + +setDisplayWindow\(callId: number, surfaceId: string\): Promise\ + +设置远端画面窗口。使用Promise异步回调。 + +**系统接口:** 此接口为系统接口。 + +**需要权限**:ohos.permission.SET_TELEPHONY_STATE + +**系统能力**:SystemCapability.Telephony.CallManager + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ------ | ---------------------------- | ---- | -------------- | +| callId | number | 是 | 呼叫Id。可以通过订阅callDetailsChange事件获得。 | +| surfaceId | string | 是 | 画面窗口Id。surfaceId获取方式可参考[XComponent](../arkui-ts/ts-basic-components-xcomponent.md#getxcomponentsurfaceid)。 | + +**返回值:** + +| 类型 | 说明 | +| ------------------- | --------------------------- | +| Promise<void> | 以Promise形式异步返回设置远端画面窗口结果。 | + +**错误码:** + +以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)。 + +| 错误码ID | 错误信息 | +| -------- | -------------------------------------------- | +| 201 | Permission denied. | +| 202 | Non-system applications use system APIs. | +| 401 | Parameter error. | +| 8300001 | Invalid parameter value. | +| 8300002 | Operation failed. Cannot connect to service. | +| 8300003 | System internal error. | +| 8300999 | Unknown error code. | + +**示例:** + +```ts +import { BusinessError } from '@ohos.base'; + +call.setDisplayWindow(1, "surfaceId1").then(() => { + console.log(`setDisplayWindow success.`); +}).catch((err: BusinessError) => { + console.error(`setDisplayWindow fail, promise: err->${JSON.stringify(err)}`); +}); +``` + +## call.setDeviceDirection11+ + +setDeviceDirection\(callId: number, deviceDirection: DeviceDirection\): Promise\ + +设置视频通话画面显示方向为设备方向。使用Promise异步回调。 + +**系统接口:** 此接口为系统接口。 + +**需要权限**:ohos.permission.SET_TELEPHONY_STATE + +**系统能力**:SystemCapability.Telephony.CallManager + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ------ | ----------------------------------------------- | ---- | -------------- | +| callId | number | 是 | 呼叫Id。可以通过订阅callDetailsChange事件获得。| +| deviceDirection | [DeviceDirection](#devicedirection11) | 是 | 画面方向。该参数根据设备方向获取 | + +**返回值:** + +| 类型 | 说明 | +| ------------------- | --------------------------- | +| Promise<void> | 以Promise形式异步返回设置视频通话画面方向结果。 | + +**错误码:** + +以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)。 + +| 错误码ID | 错误信息 | +| -------- | -------------------------------------------- | +| 201 | Permission denied. | +| 202 | Non-system applications use system APIs. | +| 401 | Parameter error. | +| 8300001 | Invalid parameter value. | +| 8300002 | Operation failed. Cannot connect to service. | +| 8300003 | System internal error. | +| 8300999 | Unknown error code. | + +**示例:** + +```ts +import { BusinessError } from '@ohos.base'; + +call.setDeviceDirection(1, 0).then(() => { + console.log(`setDeviceDirection success.`); +}).catch((err: BusinessError) => { + console.error(`setDeviceDirection fail, promise: err->${JSON.stringify(err)}`); +}); +``` + +## call.setPausePicture11+ + +setPausePicture\(callId: number\): Promise\ + +设置视频通话过程中画面暂停时的图片。使用Promise异步回调。 + +**系统接口:** 此接口为系统接口。 + +**需要权限**:ohos.permission.SET_TELEPHONY_STATE + +**系统能力**:SystemCapability.Telephony.CallManager + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ------ | ----------------------------------------------- | ---- | -------------- | +| callId | number | 是 | 呼叫Id。可以通过订阅callDetailsChange事件获得。 | + +**返回值:** + +| 类型 | 说明 | +| ------------------- | --------------------------- | +| Promise<void> | 以Promise形式异步返回设置画面暂停图片结果。 | + +**错误码:** + +以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)。 + +| 错误码ID | 错误信息 | +| -------- | -------------------------------------------- | +| 201 | Permission denied. | +| 202 | Non-system applications use system APIs. | +| 401 | Parameter error. | +| 8300001 | Invalid parameter value. | +| 8300002 | Operation failed. Cannot connect to service. | +| 8300003 | System internal error. | +| 8300999 | Unknown error code. | + +**示例:** + +```ts +import { BusinessError } from '@ohos.base'; + +call.setPausePicture(1).then(() => { + console.log(`setPausePicture success.`); +}).catch((err: BusinessError) => { + console.error(`setPausePicture fail, promise: err->${JSON.stringify(err)}`); +}); +``` + +## call.on('imsCallModeChange')11+ + +on\(type: 'imsCallModeChange', callback: Callback\\): void + +订阅imsCallModeChange事件。使用callback异步回调。 + +**系统接口:** 此接口为系统接口。 + +**需要权限**:ohos.permission.SET_TELEPHONY_STATE + +**系统能力**:SystemCapability.Telephony.CallManager + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------------------------------------ | ---- | -------------------------- | +| type | string | 是 | 视频通话时监听通话模式的变化,参数固定为'imsCallModeChange'。 | +| callback | Callback<[ImsCallModeInfo](#imscallmode8)> | 是 | 以回调函数的方式返回订阅imsCallModeChange事件的结果。 | + +**错误码:** + +以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)。 + +| 错误码ID | 错误信息 | +| -------- | -------------------------------------------- | +| 201 | Permission denied. | +| 202 | Non-system applications use system APIs. | +| 401 | Parameter error. | +| 8300001 | Invalid parameter value. | +| 8300002 | Operation failed. Cannot connect to service. | +| 8300003 | System internal error. | +| 8300999 | Unknown error code. | + +**示例:** + +```ts +import { BusinessError } from '@ohos.base'; + +call.on('imsCallModeChange', (data: call.ImsCallModeInfo) => { + console.log(`callback: data->${JSON.stringify(data)}`); +}); +``` + +## call.off('imsCallModeChange')11+ + +off\(type: 'imsCallModeChange', callback?: Callback\\): void + +取消订阅imsCallModeChange事件。使用callback异步回调。 + +**系统接口:** 此接口为系统接口。 + +**需要权限**:ohos.permission.SET_TELEPHONY_STATE + +**系统能力**:SystemCapability.Telephony.CallManager + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------------------------------------ | ---- | ---------------------------------- | +| type | string | 是 | 视频通话时取消监听通话模式的变化,参数固定为'imsCallModeChange'。 | +| callback | Callback<[ImsCallModeInfo](#imscallmode8)> | 否 | 回调函数。不填该参数将不会收到取消订阅的处理结果。 | + +**错误码:** + +以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)。 + +| 错误码ID | 错误信息 | +| -------- | -------------------------------------------- | +| 201 | Permission denied. | +| 202 | Non-system applications use system APIs. | +| 401 | Parameter error. | +| 8300001 | Invalid parameter value. | +| 8300002 | Operation failed. Cannot connect to service. | +| 8300003 | System internal error. | +| 8300999 | Unknown error code. | + +**示例:** + +```ts +import { BusinessError } from '@ohos.base'; + +call.off('imsCallModeChange', (data: call.ImsCallModeInfo) => { + console.log(`callback: data->${JSON.stringify(data)}`); +}); +``` + +## call.on('callSessionEvent')11+ + +on\(type: 'callSessionEvent', callback: Callback\\): void + +订阅callSessionEvent事件。使用callback异步回调。 + +**系统接口:** 此接口为系统接口。 + +**需要权限**:ohos.permission.SET_TELEPHONY_STATE + +**系统能力**:SystemCapability.Telephony.CallManager + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------------------------------------------- | ---- | -------------------------- | +| type | string | 是 | 视频通话时监听通话事件,参数固定为'callSessionEvent'。 | +| callback | Callback<[CallSessionEvent](#callsessionevent11)> | 是 | 以回调函数的方式返回订阅callSessionEvent事件的结果。 | + +**错误码:** + +以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)。 + +| 错误码ID | 错误信息 | +| -------- | -------------------------------------------- | +| 201 | Permission denied. | +| 202 | Non-system applications use system APIs. | +| 401 | Parameter error. | +| 8300001 | Invalid parameter value. | +| 8300002 | Operation failed. Cannot connect to service. | +| 8300003 | System internal error. | +| 8300999 | Unknown error code. | + +**示例:** + +```ts +import { BusinessError } from '@ohos.base'; + +call.on('callSessionEvent', (data: call.CallSessionEvent) => { + console.log(`callback: data->${JSON.stringify(data)}`); +}); +``` + +## call.off('callSessionEvent')11+ + +off\(type: 'callSessionEvent', callback?: Callback\\): void + +取消订阅callSessionEvent事件。使用callback异步回调。 + +**系统接口:** 此接口为系统接口。 + +**需要权限**:ohos.permission.SET_TELEPHONY_STATE + +**系统能力**:SystemCapability.Telephony.CallManager + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------------------------------------ | ---- | ---------------------------------- | +| type | string | 是 | 视频通话时取消监听通话事件,参数固定为'callSessionEvent'。 | +| callback | Callback<[CallSessionEvent](#callsessionevent11)> | 否 | 回调函数。不填该参数将不会收到取消订阅的处理结果。 | + +**错误码:** + +以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)。 + +| 错误码ID | 错误信息 | +| -------- | -------------------------------------------- | +| 201 | Permission denied. | +| 202 | Non-system applications use system APIs. | +| 401 | Parameter error. | +| 8300001 | Invalid parameter value. | +| 8300002 | Operation failed. Cannot connect to service. | +| 8300003 | System internal error. | +| 8300999 | Unknown error code. | + +**示例:** + +```ts +import { BusinessError } from '@ohos.base'; + +call.off('callSessionEvent', (data: call.CallSessionEvent) => { + console.log(`callback: data->${JSON.stringify(data)}`); +}); +``` + +## call.on('peerDimensionsChange')11+ + +on\(type: 'peerDimensionsChange', callback: Callback\\): void + +订阅peerDimensionsChange事件。使用callback异步回调。 + +**系统接口:** 此接口为系统接口。 + +**需要权限**:ohos.permission.SET_TELEPHONY_STATE + +**系统能力**:SystemCapability.Telephony.CallManager + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | --------------------------------------------------------- | ---- | -------------------------- | +| type | string | 是 | 视频通话时监听对端画面分辨率的变化,参数固定为'peerDimensionsChange'。 | +| callback | Callback<[PeerDimensionsDetail](#peerdimensionsdetail11)> | 是 | 以回调函数的方式返回订阅peerDimensionsChange事件的结果。 | + +**错误码:** + +以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)。 + +| 错误码ID | 错误信息 | +| -------- | -------------------------------------------- | +| 201 | Permission denied. | +| 202 | Non-system applications use system APIs. | +| 401 | Parameter error. | +| 8300001 | Invalid parameter value. | +| 8300002 | Operation failed. Cannot connect to service. | +| 8300003 | System internal error. | +| 8300999 | Unknown error code. | + +**示例:** + +```ts +import { BusinessError } from '@ohos.base'; + +call.on('peerDimensionsChange', (data: call.PeerDimensionsDetail) => { + console.log(`callback: data->${JSON.stringify(data)}`); +}); +``` + +## call.off('peerDimensionsChange')11+ + +off\(type: 'peerDimensionsChange', callback?: Callback\\): void + +取消订阅peerDimensionsChange事件。使用callback异步回调。 + +**系统接口:** 此接口为系统接口。 + +**需要权限**:ohos.permission.SET_TELEPHONY_STATE + +**系统能力**:SystemCapability.Telephony.CallManager + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | --------------------------------------------------------- | ---- | -------------------------- | +| type | string | 是 | 视频通话时监听对端画面分辨率的变化,参数固定为'peerDimensionsChange'。 | +| callback | Callback<[PeerDimensionsDetail](#peerdimensionsdetail11)> | 是 | 回调函数。不填该参数将不会收到取消订阅的处理结果。 | + +**错误码:** + +以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)。 + +| 错误码ID | 错误信息 | +| -------- | -------------------------------------------- | +| 201 | Permission denied. | +| 202 | Non-system applications use system APIs. | +| 401 | Parameter error. | +| 8300001 | Invalid parameter value. | +| 8300002 | Operation failed. Cannot connect to service. | +| 8300003 | System internal error. | +| 8300999 | Unknown error code. | + +**示例:** + +```ts +import { BusinessError } from '@ohos.base'; + +call.off('peerDimensionsChange', (data: call.PeerDimensionsDetail) => { + console.log(`callback: data->${JSON.stringify(data)}`); +}); +``` + +## call.on('cameraCapabilitiesChange')11+ + +on\(type: 'cameraCapabilitiesChange', callback: Callback\\): void + +订阅cameraCapabilitiesChange事件。使用callback异步回调。 + +**系统接口:** 此接口为系统接口。 + +**需要权限**:ohos.permission.SET_TELEPHONY_STATE + +**系统能力**:SystemCapability.Telephony.CallManager + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------------------------------------------------| ---- | -------------------------- | +| type | string | 是 | 视频通话时监听本端相机画面分辨率的变化,参数固定为'cameraCapabilitiesChange'。 | +| callback | Callback<[CameraCapabilities](#cameracapabilities11)> | 是 | 以回调函数的方式返回订阅cameraCapabilitiesChange事件的结果。 | + +**错误码:** + +以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)。 + +| 错误码ID | 错误信息 | +| -------- | -------------------------------------------- | +| 201 | Permission denied. | +| 202 | Non-system applications use system APIs. | +| 401 | Parameter error. | +| 8300001 | Invalid parameter value. | +| 8300002 | Operation failed. Cannot connect to service. | +| 8300003 | System internal error. | +| 8300999 | Unknown error code. | + +**示例:** + +```ts +call.on('cameraCapabilitiesChange', (data: call.CameraCapabilities) => { + console.log(`callback: data->${JSON.stringify(data)}`); +}); +``` + +## call.off('cameraCapabilitiesChange')11+ + +off\(type: 'cameraCapabilitiesChange', callback?: Callback\\): void + +取消订阅cameraCapabilitiesChange事件。使用callback异步回调。 + +**系统接口:** 此接口为系统接口。 + +**需要权限**:ohos.permission.SET_TELEPHONY_STATE + +**系统能力**:SystemCapability.Telephony.CallManager + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ----------------------------------------------------- | ---- | ---------------------------------- | +| type | string | 是 | 视频通话时取消监听本端相机画面分辨率的变化,参数固定为'cameraCapabilitiesChange'。 | +| callback | Callback<[CameraCapabilities](#cameracapabilities11)> | 否 | 回调函数。不填该参数将不会收到取消订阅的处理结果。 | + +**错误码:** + +以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)。 + +| 错误码ID | 错误信息 | +| -------- | -------------------------------------------- | +| 201 | Permission denied. | +| 202 | Non-system applications use system APIs. | +| 401 | Parameter error. | +| 8300001 | Invalid parameter value. | +| 8300002 | Operation failed. Cannot connect to service. | +| 8300003 | System internal error. | +| 8300999 | Unknown error code. | + +**示例:** + +```ts +call.off('cameraCapabilitiesChange', (data: call.CameraCapabilities) => { + console.log(`callback: data->${JSON.stringify(data)}`); +}); +``` + +## VideoRequestResultType11+ + +视频通话升降级请求结果类型。 + +**系统接口:** 此接口为系统接口。 + +**系统能力**:SystemCapability.Telephony.CallManager + +| 名称 | 值 | 说明 | +| ------------------------------------------ | ------ | --------| +| TYPE_REQUEST_SUCCESS | 0 | 请求成功。 | +| TYPE_REQUEST_FAILURE | 1 | 请求失败。 | +| TYPE_REQUEST_INVALID | 2 | 请求无效。 | +| TYPE_REQUEST_TIMED_OUT | 3 | 请求超时。 | +| TYPE_REQUEST_REJECTED_BY_REMOTE | 4 | 请求被拒绝。 | +| TYPE_DOWNGRADE_RTP_OR_RTCP_TIMEOUT | 100 | 视频通话降级RTP或RTCP超时。 | +| TYPE_DOWNGRADE_RTP_AND_RTCP_TIMEOUT | 101 | 视频通话降级RTP和RTCP超时。 | + +## DeviceDirection11+ + +视频通话画面方向类型。 + +**系统接口:** 此接口为系统接口。 + +**系统能力**:SystemCapability.Telephony.CallManager + +| 名称 | 值 | 说明 | +| -------------------- | ------ | --------| +| DEVICE_DIRECTION_0 | 0 | 视频画面0度方向。 | +| DEVICE_DIRECTION_90 | 90 | 视频画面90度方向。 | +| DEVICE_DIRECTION_180 | 180 | 视频画面180度方向。 | +| DEVICE_DIRECTION_270 | 270 | 视频画面270度方向。 | + +## CallSessionEventId11+ + +视频通话事件类型。 + +**系统接口:** 此接口为系统接口。 + +**系统能力**:SystemCapability.Telephony.CallManager + +| 名称 | 值 | 说明 | +| ------------------------------ | ------ | --------| +| EVENT_CONTROL_CAMERA_FAILURE | 0 | 相机设置失败。 | +| EVENT_CONTROL_CAMERA_READY | 1 | 相机设置成功。 | +| EVENT_DISPLAY_SURFACE_RELEASED | 100 | 远端画面窗口释放。 | +| EVENT_PREVIEW_SURFACE_RELEASED | 101 | 本端画面窗口释放。 | + +## ImsCallModeInfo11+ + +视频通话模式信息。 + +**系统接口:** 此接口为系统接口。 + +**系统能力**:SystemCapability.Telephony.CallManager + +| 名称 | 类型 | 必填 | 说明 | +| ------- | -------------------------------------------------- | ---- | ------------- | +| callId | number | 是 | 呼叫Id。 | +| isRequestInfo| boolean | 是 | 该信息是否为请求信息。| +| imsCallMode | [ImsCallMode](#imscallmode8) | 是 | 视频通话模式。 | +| requestResult | [VideoRequestResultType](#videorequestresulttype11)| 否 | 通话结束提示信息。| + +## CallSessionEvent11+ + +视频通话事件信息。 + +**系统接口:** 此接口为系统接口。 + +**系统能力**:SystemCapability.Telephony.CallManager + +| 名称 | 类型 | 必填 | 说明 | +| ------- | -------------------------------------------------- | ---- | ------------- | +| callId | number | 是 | 呼叫Id。 | +| eventId | [CallSessionEventId](#callsessioneventid11) | 是 | 视频通话事件。 | + +## PeerDimensionsDetail11+ + +视频通话对端画面分辨率信息。 + +**系统接口:** 此接口为系统接口。 + +**系统能力**:SystemCapability.Telephony.CallManager + +| 名称 | 类型 | 必填 | 说明 | +| ------- | ------------ | ---- | ------------- | +| callId | number | 是 | 呼叫Id。 | +| width | number | 是 | 对端画面图像尺寸宽(像素)。 | +| height | number | 是 | 对端画面图像尺寸高(像素)。 | + +## CameraCapabilities11+ + +视频通话本端相机画面分辨率信息。 + +**系统接口:** 此接口为系统接口。 + +**系统能力**:SystemCapability.Telephony.CallManager + +| 名称 | 类型 | 必填 | 说明 | +| ------- | ------------ | ---- | ------------- | +| callId | number | 是 | 呼叫Id。 | +| width | number | 是 | 本端画面图像尺寸宽(像素)。 | +| height | number | 是 | 本端画面图像尺寸高(像素)。 | + diff --git a/zh-cn/application-dev/reference/apis/js-apis-cardEmulation.md b/zh-cn/application-dev/reference/apis/js-apis-cardEmulation.md index 93f4c3b6f97cd491db1ae1cbe8330bac549c5e15..c57ce45a407fb4ddb2b6de1eff45072a03a5310c 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-cardEmulation.md +++ b/zh-cn/application-dev/reference/apis/js-apis-cardEmulation.md @@ -189,7 +189,7 @@ stop(elementName: ElementName): void; on(type: "hceCmd", callback: AsyncCallback): void; -订阅回调,用于接收对端读卡设备发送的APDU数据。暂不支持使用,仅做接口声明。 +订阅回调,用于接收对端读卡设备发送的APDU数据。 **需要权限:** ohos.permission.NFC_CARD_EMULATION @@ -202,6 +202,21 @@ on(type: "hceCmd", callback: AsyncCallback): void; | type | string | 是 | 固定填"hceCmd"字符串。 | | callback | AsyncCallback | 是 | 订阅的事件回调,入参是符合APDU协议的数据,每个number十六进制表示,范围是0x00~0xFF。 | +**示例:** +```js +import cardEmulation from '@ohos.nfc.cardEmulation'; +import { AsyncCallback } from '@ohos.base'; + +let hceService: cardEmulation.HceService = new cardEmulation.HceService(); + +const apduCallback: AsyncCallback = (err, data) => { + //handle the data and err + console.log("got apdu data"); +}; +hceService.on('hceCmd', apduCallback); +``` + + ### sendResponse8+ sendResponse(responseApdu: number[]): void; @@ -225,7 +240,7 @@ sendResponse(responseApdu: number[]): void; transmit(response: number[]): Promise\; -发送APDU数据到对端读卡设备。暂不支持使用,仅做接口声明。 +发送APDU数据到对端读卡设备。 **需要权限:** ohos.permission.NFC_CARD_EMULATION @@ -251,6 +266,23 @@ transmit(response: number[]): Promise\; | ------- | -------| | 3100301 | Card emulation running state is abnormal in service. | +**示例:** +```js +import cardEmulation from '@ohos.nfc.cardEmulation'; +import { AsyncCallback } from '@ohos.base'; + +let hceService: cardEmulation.HceService = new cardEmulation.HceService(); + +// the data app wanna send, just a example data +const responseData = [0x1, 0x2]; +hceService.transmit(responseData).then(() => { + // handle the transmit promise + console.log("send data."); +}).catch((err: BusinessError) => { + console.log("send data error:", err); +}); +``` + ### transmit9+ transmit(response: number[], callback: AsyncCallback\): void; diff --git a/zh-cn/application-dev/reference/apis/js-apis-continuation-continuationManager.md b/zh-cn/application-dev/reference/apis/js-apis-continuation-continuationManager.md index d6786abb433d21259da46b303aefbaa3cea2f1d6..794cc637e56c61ca9fe7a630a42a65fde8af3a65 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-continuation-continuationManager.md +++ b/zh-cn/application-dev/reference/apis/js-apis-continuation-continuationManager.md @@ -588,7 +588,7 @@ startDeviceManager(token: number, callback: AsyncCallback\): void | 参数名 | 类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | | token | number | 是 | 注册后的token。 | - | callback | AsyncCallback\ | 是 | AsyncCallback形式返回接口调用结果。 | + | callback | AsyncCallback\ | 是 | 回调函数。当模块选择完成,err为undefined,否则返回错误对象。 | **示例:** @@ -596,12 +596,12 @@ startDeviceManager(token: number, callback: AsyncCallback\): void import continuationManager from '@ohos.continuation.continuationManager'; let token: number = 1; - continuationManager.startDeviceManager(token, (err, data) => { + continuationManager.startDeviceManager(token, (err) => { if (err.code != 0) { console.error('startDeviceManager failed, cause: ' + JSON.stringify(err)); return; } - console.info('startDeviceManager finished, ' + JSON.stringify(data)); + console.info('startDeviceManager finished. '); }); ``` @@ -623,7 +623,7 @@ startDeviceManager(token: number, options: ContinuationExtraParams, callback: As | -------- | -------- | -------- | -------- | | token | number | 是 | 注册后的token。 | | options | [ContinuationExtraParams](js-apis-continuation-continuationExtraParams.md) | 是 | 过滤可选择设备列表的额外参数。 | - | callback | AsyncCallback\ | 是 | AsyncCallback形式返回接口调用结果。 | + | callback | AsyncCallback\ | 是 | 回调函数。当模块选择完成,err为undefined,否则返回错误对象。 | **示例:** @@ -636,12 +636,12 @@ startDeviceManager(token: number, options: ContinuationExtraParams, callback: As { deviceType: ["00E"] }, - (err, data) => { + (err) => { if (err.code != 0) { console.error('startDeviceManager failed, cause: ' + JSON.stringify(err)); return; } - console.info('startDeviceManager finished, ' + JSON.stringify(data)); + console.info('startDeviceManager finished. '); }); ``` @@ -681,8 +681,8 @@ startDeviceManager(token: number, options?: ContinuationExtraParams): Promise\ { - console.info('startDeviceManager finished, ' + JSON.stringify(data)); + }).then(() => { + console.info('startDeviceManager finished. '); }).catch((err: BusinessError) => { console.error('startDeviceManager failed, cause: ' + JSON.stringify(err)); }); @@ -703,7 +703,7 @@ startContinuationDeviceManager(token: number, callback: AsyncCallback\): v | 参数名 | 类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | | token | number | 是 | 注册后的token。 | - | callback | AsyncCallback\ | 是 | AsyncCallback形式返回接口调用结果。 | + | callback | AsyncCallback\ | 是 | 回调函数。当模块选择完成,err为undefined,否则返回错误对象。 | **错误码:** @@ -721,12 +721,12 @@ startContinuationDeviceManager(token: number, callback: AsyncCallback\): v let token: number = -1; try { - continuationManager.startContinuationDeviceManager(token, (err, data) => { + continuationManager.startContinuationDeviceManager(token, (err) => { if (err.code != 0) { console.error('startContinuationDeviceManager failed, cause: ' + JSON.stringify(err)); return; } - console.info('startContinuationDeviceManager finished, ' + JSON.stringify(data)); + console.info('startContinuationDeviceManager finished. '); }); } catch (err) { console.error('startContinuationDeviceManager failed, cause: ' + JSON.stringify(err)); @@ -749,7 +749,7 @@ startContinuationDeviceManager(token: number, options: ContinuationExtraParams, | -------- | -------- | -------- | -------- | | token | number | 是 | 注册后的token。 | | options | [ContinuationExtraParams](js-apis-continuation-continuationExtraParams.md) | 是 | 过滤可选择设备列表的额外参数。 | - | callback | AsyncCallback\ | 是 | AsyncCallback形式返回接口调用结果。 | + | callback | AsyncCallback\ | 是 | 回调函数。当模块选择完成,err为undefined,否则返回错误对象。 | **错误码:** @@ -772,12 +772,12 @@ startContinuationDeviceManager(token: number, options: ContinuationExtraParams, { deviceType: ["00E"] }, - (err, data) => { + (err) => { if (err.code != 0) { console.error('startContinuationDeviceManager failed, cause: ' + JSON.stringify(err)); return; } - console.info('startContinuationDeviceManager finished, ' + JSON.stringify(data)); + console.info('startContinuationDeviceManager finished. '); }); } catch (err) { console.error('startContinuationDeviceManager failed, cause: ' + JSON.stringify(err)); @@ -828,8 +828,8 @@ startContinuationDeviceManager(token: number, options?: ContinuationExtraParams) token, { deviceType: ["00E"] - }).then((data) => { - console.info('startContinuationDeviceManager finished, ' + JSON.stringify(data)); + }).then(() => { + console.info('startContinuationDeviceManager finished. '); }).catch((err: BusinessError) => { console.error('startContinuationDeviceManager failed, cause: ' + JSON.stringify(err)); }); @@ -857,7 +857,7 @@ updateConnectStatus(token: number, deviceId: string, status: DeviceConnectState, | token | number | 是 | 注册后的token。 | | deviceId | string | 是 | 设备ID。 | | status | [DeviceConnectState](#deviceconnectstate) | 是 | 设备连接状态。 | - | callback | AsyncCallback\ | 是 | AsyncCallback形式返回接口调用结果。 | + | callback | AsyncCallback\ | 是 | 回调函数。当通知设备成功,err为undefined,否则返回错误对象。 | **示例:** @@ -866,12 +866,12 @@ updateConnectStatus(token: number, deviceId: string, status: DeviceConnectState, let token: number = -1; let deviceId: string = "test deviceId"; - continuationManager.updateConnectStatus(token, deviceId, continuationManager.DeviceConnectState.CONNECTED, (err, data) => { + continuationManager.updateConnectStatus(token, deviceId, continuationManager.DeviceConnectState.CONNECTED, (err) => { if (err.code != 0) { console.error('updateConnectStatus failed, cause: ' + JSON.stringify(err)); return; } - console.info('updateConnectStatus finished, ' + JSON.stringify(data)); + console.info('updateConnectStatus finished. '); }); ``` @@ -910,8 +910,8 @@ updateConnectStatus(token: number, deviceId: string, status: DeviceConnectState) let token: number = 1; let deviceId: string = "test deviceId"; continuationManager.updateConnectStatus(token, deviceId, continuationManager.DeviceConnectState.CONNECTED) - .then((data) => { - console.info('updateConnectStatus finished, ' + JSON.stringify(data)); + .then(() => { + console.info('updateConnectStatus finished. '); }) .catch((err: BusinessError) => { console.error('updateConnectStatus failed, cause: ' + JSON.stringify(err)); @@ -935,7 +935,7 @@ updateContinuationState(token: number, deviceId: string, status: DeviceConnectSt | token | number | 是 | 注册后的token。 | | deviceId | string | 是 | 设备ID。 | | status | [DeviceConnectState](#deviceconnectstate) | 是 | 设备连接状态。 | - | callback | AsyncCallback\ | 是 | AsyncCallback形式返回接口调用结果。 | + | callback | AsyncCallback\ | 是 | 回调函数。当通知设备成功,err为undefined,否则返回错误对象。 | **错误码:** @@ -954,12 +954,12 @@ updateContinuationState(token: number, deviceId: string, status: DeviceConnectSt let token: number = 1; let deviceId: string = "test deviceId"; try { - continuationManager.updateContinuationState(token, deviceId, continuationManager.DeviceConnectState.CONNECTED, (err, data) => { + continuationManager.updateContinuationState(token, deviceId, continuationManager.DeviceConnectState.CONNECTED, (err) => { if (err.code != 0) { console.error('updateContinuationState failed, cause: ' + JSON.stringify(err)); return; } - console.info('updateContinuationState finished, ' + JSON.stringify(data)); + console.info('updateContinuationState finished. '); }); } catch (err) { console.error('updateContinuationState failed, cause: ' + JSON.stringify(err)); @@ -1009,8 +1009,8 @@ updateContinuationState(token: number, deviceId: string, status: DeviceConnectSt let deviceId: string = "test deviceId"; try { continuationManager.updateContinuationState(token, deviceId, continuationManager.DeviceConnectState.CONNECTED) - .then((data) => { - console.info('updateContinuationState finished, ' + JSON.stringify(data)); + .then(() => { + console.info('updateContinuationState finished. '); }) .catch((err: BusinessError) => { console.error('updateContinuationState failed, cause: ' + JSON.stringify(err)); @@ -1038,7 +1038,7 @@ unregister(token: number, callback: AsyncCallback\): void | 参数名 | 类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | | token | number | 是 | 注册后的token。 | - | callback | AsyncCallback\ | 是 | AsyncCallback形式返回接口调用结果。 | + | callback | AsyncCallback\ | 是 | 回调函数。当解注册成功,err为undefined,否则返回错误对象。 | **示例:** @@ -1046,12 +1046,12 @@ unregister(token: number, callback: AsyncCallback\): void import continuationManager from '@ohos.continuation.continuationManager'; let token: number = 1; - continuationManager.unregister(token, (err, data) => { + continuationManager.unregister(token, (err) => { if (err.code != 0) { console.error('unregister failed, cause: ' + JSON.stringify(err)); return; } - console.info('unregister finished, ' + JSON.stringify(data)); + console.info('unregister finished. '); }); ``` @@ -1087,8 +1087,8 @@ unregister(token: number): Promise\ let token: number = 1; continuationManager.unregister(token) - .then((data) => { - console.info('unregister finished, ' + JSON.stringify(data)); + .then(() => { + console.info('unregister finished. '); }).catch((err: BusinessError) => { console.error('unregister failed, cause: ' + JSON.stringify(err)); }); @@ -1109,7 +1109,7 @@ unregisterContinuation(token: number, callback: AsyncCallback\): void | 参数名 | 类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | | token | number | 是 | 注册后的token。 | - | callback | AsyncCallback\ | 是 | AsyncCallback形式返回接口调用结果。 | + | callback | AsyncCallback\ | 是 | 回调函数。当解注册成功,err为undefined,否则返回错误对象。 | **错误码:** @@ -1128,7 +1128,7 @@ unregisterContinuation(token: number, callback: AsyncCallback\): void let token: number = 1; try { - continuationManager.unregisterContinuation(token, (err, data) => { + continuationManager.unregisterContinuation(token, (err) => { if (err.code != 0) { console.error('unregisterContinuation failed, cause: ' + JSON.stringify(err)); return; diff --git a/zh-cn/application-dev/reference/apis/js-apis-devicestatus-draginteraction.md b/zh-cn/application-dev/reference/apis/js-apis-devicestatus-draginteraction.md index d62054c2f439ce29dc2ebc21c94e48691bc9fb90..1a9d538b38582b927f9142fae7366667490d0ffb 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-devicestatus-draginteraction.md +++ b/zh-cn/application-dev/reference/apis/js-apis-devicestatus-draginteraction.md @@ -1,12 +1,12 @@ # @ohos.deviceStatus.dragInteraction(拖拽) - 拖拽功能模块,提供注册和取消拖拽状态监听的能力。 +拖拽功能模块,提供注册和取消拖拽状态监听的能力。 -> **说明** +> **说明:** > -> - 本模块首批接口从API version 10开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 +> - 本模块首批接口从API version 10开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 > -> - 本模块接口均为系统接口。 +> - 本模块接口均为系统接口。 ## 导入模块 @@ -14,44 +14,49 @@ import dragInteraction from '@ohos.deviceStatus.dragInteraction' ``` -## DragState +## DragState 拖拽状态。 -**系统能力**:SystemCapability.Msdp.DeviceStatus.Drag +**系统能力:** SystemCapability.Msdp.DeviceStatus.Drag -| 名称 | 值 | 说明 | -| -------- | ----------------- | ----------------- | -| MSG_DRAG_STATE_START | 1 | 表示开始拖拽。 | -| MSG_DRAG_STATE_STOP | 2 | 表示结束拖拽。 | -| MSG_DRAG_STATE_CANCEL | 3 | 表示取消拖拽。 | +| 名称 | 值 | 说明 | +| --------------------- | ---- | -------------- | +| MSG_DRAG_STATE_START | 1 | 表示开始拖拽。 | +| MSG_DRAG_STATE_STOP | 2 | 表示结束拖拽。 | +| MSG_DRAG_STATE_CANCEL | 3 | 表示取消拖拽。 | + +## Summary11+ + +拖拽对象的数据摘要。 + +**系统能力:** SystemCapability.Msdp.DeviceStatus.Drag + +| 名称 | 类型 | 必填 | 说明 | +| ---------- | -------- | ---- | ------------------ | +| dataType | string | 是 | 拖拽对象类型。 | +| dataSize | number | 是 | 拖拽对象数据长度。 | ## dragInteraction.on('drag') -on(type: 'drag', callback: Callback<DragState>): void; +on(type: 'drag', callback: Callback\<[DragState](#dragstate)>): void; 注册监听拖拽状态。 -**系统能力**:SystemCapability.Msdp.DeviceStatus.Drag +**系统能力:** SystemCapability.Msdp.DeviceStatus.Drag -**参数**: +**参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ---------------------------- | ---- | ---------------------------- | -| type | string | 是 | 监听类型,固定取值为 'drag' | -| callback | Callback<[DragState](#dragstate)> | 是 | 回调函数,异步返回拖拽状态消息 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------------------- | ---- | -------------------------------- | +| type | string | 是 | 监听类型,固定取值为 'drag'。 | +| callback | Callback\<[DragState](#dragstate)> | 是 | 回调函数,异步返回拖拽状态消息。 | -**示例**: +**示例:** ```ts -enum DragState { - MSG_DRAG_STATE_START = 1, - MSG_DRAG_STATE_STOP = 2, - MSG_DRAG_STATE_CANCEL = 3 -} - try { - dragInteraction.on('drag', (data : DragState) => { + dragInteraction.on('drag', (data: dragInteraction.DragState) => { console.log(`Drag interaction event: ${JSON.stringify(data)}`); }); } catch (error) { @@ -61,30 +66,24 @@ try { ## dragInteraction.off('drag') -off(type: 'drag', callback?: Callback<DragState>): void; +off(type: 'drag', callback?: Callback\<[DragState](#dragstate)>): void; 取消监听拖拽状态。 -**系统能力**:SystemCapability.Msdp.DeviceStatus.Drag +**系统能力:** SystemCapability.Msdp.DeviceStatus.Drag -**参数**: +**参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ---------------------------- | ---- | ---------------------------- | -| type | string | 是 | 监听类型,固定取值为 'drag' | -| callback | Callback<[DragState](#dragstate)> | 否 | 需要取消注册的回调函数,若无此参数,则取消当前应用注册的所有回调函数。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------------------- | ---- | ---------------------------------------------------------------------- | +| type | string | 是 | 监听类型,固定取值为 'drag'。 | +| callback | Callback\<[DragState](#dragstate)> | 否 | 需要取消注册的回调函数,若无此参数,则取消当前应用注册的所有回调函数。 | -**示例**: +**示例:** ```ts -enum DragState { - MSG_DRAG_STATE_START = 1, - MSG_DRAG_STATE_STOP = 2, - MSG_DRAG_STATE_CANCEL = 3 -} - // 取消注册单个回调函数 -function single_callback(event : DragState) { +function single_callback(event: dragInteraction.DragState) { console.log(`Drag interaction event: ${JSON.stringify(event)}`); return false; } @@ -95,15 +94,10 @@ try { console.log(`Execute failed, error: ${JSON.stringify(error, [`code`, `message`])}`); } ``` -```ts -enum DragState { - MSG_DRAG_STATE_START = 1, - MSG_DRAG_STATE_STOP = 2, - MSG_DRAG_STATE_CANCEL = 3 -} +```ts // 取消注册所有回调函数 -function all_callback(event : DragState) { +function all_callback(event: dragInteraction.DragState) { console.log(`Drag interaction event: ${JSON.stringify(event)}`); return false; } @@ -115,4 +109,23 @@ try { } ``` +## dragInteraction.getDataSummary()11+ + +function getDataSummary(): Array\<[Summary](#summary11)>; + +获取所有拖拽对象的摘要。 + +**系统能力:** SystemCapability.Msdp.DeviceStatus.Drag +**返回值:** + +| 类型 | 说明 | +| ----------------------------- | ---------------------------------------------------- | +| Array\<[Summary](#summary11)> | 所有拖拽对象的数据摘要,包含拖拽对象的类型和数据长度。 | + +**示例:** + +```ts +let summarys: Array = dragInteraction.getDataSummary(); +console.log(`Drag interaction summarys: ${JSON.stringify(summarys)}`); +``` \ No newline at end of file diff --git a/zh-cn/application-dev/reference/apis/js-apis-display.md b/zh-cn/application-dev/reference/apis/js-apis-display.md index f19f0a4413bae5ad4af38fc7ce1d1808ef02ea71..d2942a9c2c088047dc42c55d1f1941405851f7fb 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-display.md +++ b/zh-cn/application-dev/reference/apis/js-apis-display.md @@ -875,7 +875,7 @@ promise.then((data: Array) => { | alive | boolean | 是 | 否 | 显示设备是否启用。 | | state | [DisplayState](#displaystate) | 是 | 否 | 显示设备的状态。 | | refreshRate | number | 是 | 否 | 显示设备的刷新率,该参数应为整数。 | -| rotation | number | 是 | 否 | 显示设备的屏幕旋转角度。
值为0时,表示显示设备屏幕旋转为0°;
值为1时,表示显示设备屏幕旋转为90°;
值为2时,表示显示设备屏幕旋转为180°;
值为3时,表示显示设备屏幕旋转为270°。 | +| rotation | number | 是 | 否 | 显示设备的屏幕顺时针旋转角度。
值为0时,表示显示设备屏幕顺时针旋转为0°;
值为1时,表示显示设备屏幕顺时针旋转为90°;
值为2时,表示显示设备屏幕顺时针旋转为180°;
值为3时,表示显示设备屏幕顺时针旋转为270°。 | | width | number | 是 | 否 | 显示设备的宽度,单位为像素,该参数应为整数。 | | height | number | 是 | 否 | 显示设备的高度,单位为像素,该参数应为整数。 | | densityDPI | number | 是 | 否 | 显示设备的屏幕密度,表示每英寸点数。该参数为浮点数,一般取值160.0、480.0等。 | diff --git a/zh-cn/application-dev/reference/apis/js-apis-dlppermission.md b/zh-cn/application-dev/reference/apis/js-apis-dlppermission.md index d037827b80eb41cd25cbdf9b053f53115267aa90..88d32acebca4571774611c8c27b827530c743143 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-dlppermission.md +++ b/zh-cn/application-dev/reference/apis/js-apis-dlppermission.md @@ -917,6 +917,64 @@ try { } ``` +## dlpPermission.startDLPManagerForResult11+ + +startDLPManagerForResult(context: common.UIAbilityContext, want: Want): Promise<DLPManagerResult> + +在当前UIAbility界面以无边框形式打开DLP权限管理应用。使用Promise方式异步返回结果。 + +**模型约束:** 此接口仅可在Stage模型下使用。 + +**系统能力:** SystemCapability.Security.DataLossPrevention + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | -------- | -------- | -------- | +| context | [common.UIAbilityContext](js-apis-inner-application-uiAbilityContext.md) | 是 | 当前窗口UIAbility上下文。 | +| want | [Want](js-apis-app-ability-want.md) | 是 | 请求对象。 | + +**返回值:** + +| 类型 | 说明 | +| -------- | -------- | +| Promise<[DLPManagerResult](#dlpmanagerresult11)> | Promise对象。打开DLP权限管理应用并退出后的结果。 | + +**错误码:** + +以下错误码的详细介绍请参见[DLP服务错误码](../errorcodes/errorcode-dlp.md)。 + +| 错误码ID | 错误信息 | +| -------- | -------- | +| 401 | Parameter error. | +| 19100001 | Invalid parameter value. | +| 19100011 | System service exception. | +| 19100016 | Uri does not exist in want. | +| 19100017 | DisplayName does not exist in want (under parameters). | + +**示例:** + +```ts +import dlpPermission from '@ohos.dlpPermission'; +import common from '@ohos.app.ability.common'; +import { BusinessError } from '@ohos.base'; + +try { + let context = getContext(this) as common.UIAbilityContext; // 获取当前UIAbilityContext + let want = { + "uri": "file://docs/storage/Users/currentUser/Desktop/1.txt", + "parameters": { + "displayName": "1.txt" + } + }; // 请求参数 + let res: dlpPermission.DLPManagerResult = await dlpPermission.startDLPManagerForResult(context, want); // 打开DLP权限管理应用 + console.info('res.resultCode', res.resultCode); + console.info('res.want', JSON.stringifg(res.want)); +} catch (err) { + console.error('error', err.code, err.message); // 失败报错 +} +``` + ## dlpPermission.getDLPGatheringPolicy getDLPGatheringPolicy(): Promise<GatheringPolicyType> @@ -2624,6 +2682,19 @@ DLP文件授权类型的枚举。 | uri | string | 是 | 否 | 表示DLP文件的uri。 | | lastOpenTime | number | 是 | 否 | 表示DLP文件最近打开时间。 | +## DLPManagerResult11+ + +表示打开DLP权限管理应用的结果。 + +**模型约束:** 此接口仅可在Stage模型下使用。 + +**系统能力:** SystemCapability.Security.DataLossPrevention + +| 名称 | 类型 | 可读 | 可写 | 说明 | +| -------- | -------- | -------- | -------- | -------- | +| resultCode | number | 是 | 否 | 表示打开DLP权限管理应用并退出后返回的结果码。 | +| want | [Want](js-apis-app-ability-want.md) | 是 | 否 | 表示打开DLP权限管理应用并退出后返回的数据。 | + ## DLPSandboxInfo 表示DLP沙箱的信息。 diff --git a/zh-cn/application-dev/reference/apis/js-apis-inner-ability-dataAbilityHelper.md b/zh-cn/application-dev/reference/apis/js-apis-inner-ability-dataAbilityHelper.md index 8af27a03a72e262d1197fc69a4662ec4fc98e6ea..2bd97864644ea5b53751dfe430672db1f178f2ad 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-inner-ability-dataAbilityHelper.md +++ b/zh-cn/application-dev/reference/apis/js-apis-inner-ability-dataAbilityHelper.md @@ -5,7 +5,7 @@ > **说明:** > > 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 -> 本模块接口仅可在FA模型下使用。 +> 本模块接口仅可在FA模型下使用,Stage模型下需使用[dataAbility模块](js-apis-data-ability.md)和[dataShare模块](js-apis-data-dataShare.md)。 ## 导入模块 @@ -29,6 +29,8 @@ openFile(uri: string, mode: string, callback: AsyncCallback\): void **系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel +**说明**:本接口仅可在FA模型下使用,Stage模型下需使用[FileAccessHelper.openFile](js-apis-fileAccess.md#openfile-1)。 + **参数:** | 参数名 | 类型 | 必填 | 说明 | @@ -64,6 +66,8 @@ openFile(uri: string, mode: string): Promise\ **系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel +**说明**:本接口仅可在FA模型下使用,Stage模型下需使用[FileAccessHelper.openFile](js-apis-fileAccess.md#openfile)。 + **参数:** | 参数名 | 类型 | 必填 | 说明 | @@ -100,6 +104,8 @@ on(type: 'dataChange', uri: string, callback: AsyncCallback\): void **系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel +**说明**:本接口仅可在FA模型下使用,Stage模型下需使用[DataShareHelper.on('dataChange')](js-apis-data-dataShare.md#ondatachange)。 + **参数:** | 参数名 | 类型 | 必填 | 说明 | @@ -135,6 +141,8 @@ off(type: 'dataChange', uri: string, callback?: AsyncCallback\): void **系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel +**说明**:本接口仅可在FA模型下使用,Stage模型下需使用[DataShareHelper.off('dataChange')](js-apis-data-dataShare.md#offdatachange)。 + **参数:** | 参数名 | 类型 | 必填 | 说明 | @@ -310,6 +318,8 @@ normalizeUri(uri: string, callback: AsyncCallback\): void **系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel +**说明**:本接口仅可在FA模型下使用,Stage模型下需使用[DataShareHelper.normalizeUri](js-apis-data-dataShare.md#normalizeuri)。 + **参数:** | 参数名 | 类型 | 必填 | 说明 | @@ -343,6 +353,8 @@ normalizeUri(uri: string): Promise\ **系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel +**说明**:本接口仅可在FA模型下使用,Stage模型下需使用[DataShareHelper.normalizeUri](js-apis-data-dataShare.md#normalizeuri-1)。 + **参数:** | 参数名 | 类型 | 必填 | 说明 | @@ -377,6 +389,8 @@ denormalizeUri(uri: string, callback: AsyncCallback\): void **系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel +**说明**:本接口仅可在FA模型下使用,Stage模型下需使用[DataShareHelper.denormalizeUri](js-apis-data-dataShare.md#denormalizeuri)。 + **参数:** | 参数名 | 类型 | 必填 | 说明 | @@ -410,6 +424,8 @@ denormalizeUri(uri: string): Promise\ **系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel +**说明**:本接口仅可在FA模型下使用,Stage模型下需使用[DataShareHelper.denormalizeUri](js-apis-data-dataShare.md#denormalizeuri-1)。 + **参数:** | 参数名 | 类型 | 必填 | 说明 | @@ -444,6 +460,8 @@ notifyChange(uri: string, callback: AsyncCallback\): void **系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel +**说明**:本接口仅可在FA模型下使用,Stage模型下需使用[DataShareHelper.notifyChange](js-apis-data-dataShare.md#notifychange)。 + **参数:** | 参数名 | 类型 | 必填 | 说明 | @@ -477,6 +495,8 @@ notifyChange(uri: string): Promise\ **系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel +**说明**:本接口仅可在FA模型下使用,Stage模型下需使用[DataShareHelper.notifyChange](js-apis-data-dataShare.md#notifychange-1)。 + **参数:** | 参数名 | 类型 | 必填 | 说明 | @@ -511,6 +531,8 @@ insert(uri: string, valuesBucket: rdb.ValuesBucket, callback: AsyncCallback\ **系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel +**说明**:本接口仅可在FA模型下使用,Stage模型下需使用[DataShareHelper.insert](js-apis-data-dataShare.md#insert-1)。 + **参数:** | 参数名 | 类型 | 必填 | 说明 | @@ -594,6 +618,8 @@ batchInsert(uri: string, valuesBuckets: Array\, callback: Asyn **系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel +**说明**:本接口仅可在FA模型下使用,Stage模型下需使用[DataShareHelper.batchInsert](js-apis-data-dataShare.md#batchinsert)。 + **参数:** | 参数名 | 类型 | 必填 | 说明 | @@ -632,6 +658,8 @@ batchInsert(uri: string, valuesBuckets: Array): Promise\, predicates: dataAbility.DataAbilityP **系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel +**说明**:本接口仅可在FA模型下使用,Stage模型下需使用[DataShareHelper.query](js-apis-data-dataShare.md#query)。 + **参数:** | 参数名 | 类型 | 必填 | 说明 | @@ -945,6 +987,8 @@ query(uri: string, callback: AsyncCallback\): void **系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel +**说明**:本接口仅可在FA模型下使用,Stage模型下需使用[DataShareHelper.query](js-apis-data-dataShare.md#query)。 + **参数:** | 参数名 | 类型 | 必填 | 说明 | @@ -978,6 +1022,8 @@ query(uri: string, columns: Array\, callback: AsyncCallback\) **系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel +**说明**:本接口仅可在FA模型下使用,Stage模型下需使用[DataShareHelper.query](js-apis-data-dataShare.md#query)。 + **参数:** | 参数名 | 类型 | 必填 | 说明 | @@ -1013,6 +1059,8 @@ query(uri: string, predicates: dataAbility.DataAbilityPredicates, callback: Asyn **系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel +**说明**:本接口仅可在FA模型下使用,Stage模型下需使用[DataShareHelper.query](js-apis-data-dataShare.md#query)。 + **参数:** | 参数名 | 类型 | 必填 | 说明 | @@ -1049,6 +1097,8 @@ query(uri: string, columns?: Array\, predicates?: dataAbility.DataAbilit **系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel +**说明**:本接口仅可在FA模型下使用,Stage模型下需使用[DataShareHelper.query](js-apis-data-dataShare.md#query-1)。 + **参数:** | 参数名 | 类型 | 必填 | 说明 | diff --git a/zh-cn/application-dev/reference/apis/js-apis-inner-application-abilityDelegator.md b/zh-cn/application-dev/reference/apis/js-apis-inner-application-abilityDelegator.md index cb309e4d600ade97deb08aa8fcc1a2a5224a54c2..0a352693b7cb11c21f91a2acbc250da0a08a0670 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-inner-application-abilityDelegator.md +++ b/zh-cn/application-dev/reference/apis/js-apis-inner-application-abilityDelegator.md @@ -1,6 +1,6 @@ # AbilityDelegator -AbilityDelegator提供添加用于监视指定ability的生命周期状态更改的AbilityMonitor对象的能力,包括对AbilityMonitor实例的添加、删除、等待ability到达OnCreate生命周期、设置等待时间等、获取指定ability的生命周期状态、获取当前应用顶部ability、启动指定ability等。 +AbilityDelegator提供添加用于监视指定ability的生命周期状态更改的[AbilityMonitor](js-apis-inner-application-abilityMonitor.md#abilitymonitor-1)对象的能力,包括对AbilityMonitor实例的添加、删除、等待ability到达OnCreate生命周期、设置等待时间等、获取指定ability的生命周期状态、获取当前应用顶部ability、启动指定ability等。 > **说明:** > diff --git a/zh-cn/application-dev/reference/apis/js-apis-inner-application-abilityMonitor.md b/zh-cn/application-dev/reference/apis/js-apis-inner-application-abilityMonitor.md index 81aa26932c0a3576bb03a329a2aa61fa225b955b..c2c8569be89104484fe15c6f6e786e999634a585 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-inner-application-abilityMonitor.md +++ b/zh-cn/application-dev/reference/apis/js-apis-inner-application-abilityMonitor.md @@ -1,6 +1,6 @@ # AbilityMonitor -AbilityMonitor模块提供匹配满足指定条件的受监视能力对象的方法的能力,最近匹配的ability对象将保存在AbilityMonitor对象中。 +AbilityMonitor模块提供匹配满足指定条件的受监视能力对象的方法的能力,最近匹配的ability对象将保存在[AbilityMonitor](js-apis-inner-application-abilityMonitor.md#abilitymonitor-1)对象中。 > **说明:** > diff --git a/zh-cn/application-dev/reference/apis/js-apis-inner-application-uiAbilityContext.md b/zh-cn/application-dev/reference/apis/js-apis-inner-application-uiAbilityContext.md index 0d2eb5d9f185ce012e7982f9feffbddef60aba9b..46daf2032da552dff670b5ea061e55a03fd0a2fb 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-inner-application-uiAbilityContext.md +++ b/zh-cn/application-dev/reference/apis/js-apis-inner-application-uiAbilityContext.md @@ -34,9 +34,9 @@ startAbility(want: Want, callback: AsyncCallback<void>): void 启动Ability(callback形式)。 使用规则: - - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限 - - 跨应用场景下,目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限 - - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md) + - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限。 + - 跨应用场景下,目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限。 + - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md)。 - 跨任务链启动时,如果需要跨任务链进行返回,需要参考[Want](js-apis-app-ability-want.md)中的parameter参数用法。 **系统能力**:SystemCapability.Ability.AbilityRuntime.Core @@ -112,9 +112,9 @@ startAbility(want: Want, options: StartOptions, callback: AsyncCallback<void& 启动Ability(callback形式)。 使用规则: - - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限 - - 跨应用场景下,目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限 - - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md) + - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限。 + - 跨应用场景下,目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限。 + - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md)。 **系统能力**:SystemCapability.Ability.AbilityRuntime.Core @@ -195,9 +195,9 @@ startAbility(want: Want, options?: StartOptions): Promise<void> 启动Ability(promise形式)。 使用规则: - - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限 - - 跨应用场景下,目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限 - - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md) + - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限。 + - 跨应用场景下,目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限。 + - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md)。 **系统能力**:SystemCapability.Ability.AbilityRuntime.Core @@ -285,9 +285,9 @@ startAbilityForResult(want: Want, callback: AsyncCallback<AbilityResult>): - 如果被启动的Ability模式是单实例模式, 不同应用多次调用该接口启动这个Ability,当这个Ability调用[terminateSelfWithResult](#uiabilitycontextterminateselfwithresult)接口使之终止时,只将正常结果返回给最后一个调用方, 其它调用方返回异常信息, 异常信息中resultCode为-1。 使用规则: - - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限 - - 跨应用场景下,目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限 - - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md) + - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限。 + - 跨应用场景下,目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限。 + - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md)。 **系统能力**:SystemCapability.Ability.AbilityRuntime.Core @@ -367,9 +367,9 @@ startAbilityForResult(want: Want, options: StartOptions, callback: AsyncCallback - 如果被启动的Ability模式是单实例模式, 不同应用多次调用该接口启动这个Ability,当这个Ability调用[terminateSelfWithResult](#uiabilitycontextterminateselfwithresult)接口使之终止时,只将正常结果返回给最后一个调用方,其它调用方返回异常信息, 异常信息中resultCode为-1。 使用规则: - - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限 - - 跨应用场景下,目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限 - - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md) + - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限。 + - 跨应用场景下,目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限。 + - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md)。 **系统能力**:SystemCapability.Ability.AbilityRuntime.Core @@ -455,9 +455,9 @@ startAbilityForResult(want: Want, options?: StartOptions): Promise<AbilityRes - 如果被启动的Ability模式是单实例模式, 不同应用多次调用该接口启动这个Ability,当这个Ability调用[terminateSelfWithResult](#uiabilitycontextterminateselfwithresult)接口使之终止时,只将正常结果返回给最后一个调用方, 其它调用方返回异常信息, 异常信息中resultCode为-1。 使用规则: - - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限 - - 跨应用场景下,目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限 - - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md) + - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限。 + - 跨应用场景下,目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限。 + - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md)。 **系统能力**:SystemCapability.Ability.AbilityRuntime.Core @@ -544,9 +544,9 @@ startAbilityForResultWithAccount(want: Want, accountId: number, callback: AsyncC 启动一个Ability并在该Ability销毁时返回执行结果(callback形式)。 使用规则: - - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限 - - 跨应用场景下,目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限 - - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md) + - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限。 + - 跨应用场景下,目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限。 + - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md)。 > **说明:** > @@ -635,9 +635,9 @@ startAbilityForResultWithAccount(want: Want, accountId: number, options: StartOp 启动一个Ability并在该Ability销毁时返回执行结果(callback形式)。 使用规则: - - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限 - - 跨应用场景下,目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限 - - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md) + - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限。 + - 跨应用场景下,目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限。 + - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md)。 > **说明:** > @@ -730,9 +730,9 @@ startAbilityForResultWithAccount(want: Want, accountId: number, options?: StartO 启动一个Ability并在该Ability销毁时返回执行结果(promise形式)。 使用规则: - - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限 - - 跨应用场景下,目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限 - - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md) + - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限。 + - 跨应用场景下,目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限。 + - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md)。 > **说明:** > @@ -1969,9 +1969,9 @@ startAbilityByCall(want: Want): Promise<Caller> 启动指定Ability至前台或后台,同时获取其Caller通信接口,调用方可使用Caller与被启动的Ability进行通信。 使用规则: - - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限 - - 跨应用场景下,目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限 - - 同设备与跨设备场景下,该接口的使用规则存在差异,详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md) + - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限。 + - 跨应用场景下,目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限。 + - 同设备与跨设备场景下,该接口的使用规则存在差异,详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md)。 **需要权限:** ohos.permission.ABILITY_BACKGROUND_COMMUNICATION @@ -2101,9 +2101,9 @@ startAbilityWithAccount(want: Want, accountId: number, callback: AsyncCallback\< 根据want和accountId启动Ability(callback形式)。 使用规则: - - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限 - - 跨应用场景下,目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限 - - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md) + - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限。 + - 跨应用场景下,目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限。 + - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md)。 > **说明:** > @@ -2190,9 +2190,9 @@ startAbilityWithAccount(want: Want, accountId: number, options: StartOptions, ca 根据want、accountId及startOptions启动Ability(callback形式)。 使用规则: - - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限 - - 跨应用场景下,目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限 - - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md) + - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限。 + - 跨应用场景下,目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限。 + - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md)。 > **说明:** > @@ -2284,9 +2284,9 @@ startAbilityWithAccount(want: Want, accountId: number, options?: StartOptions): 根据want、accountId和startOptions启动Ability(Promise形式)。 使用规则: - - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限 - - 跨应用场景下,目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限 - - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md) + - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限。 + - 跨应用场景下,目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限。 + - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md)。 > **说明:** > @@ -2903,9 +2903,9 @@ startRecentAbility(want: Want, callback: AsyncCallback<void>): void 启动一个指定的Ability,如果这个Ability有多个实例,将拉起最近启动的那个实例。启动结果以callback的形式返回开发者。 使用规则: - - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限 - - 跨应用场景下,目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限 - - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md) + - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限。 + - 跨应用场景下,目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限。 + - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md)。 **系统能力**:SystemCapability.Ability.AbilityRuntime.Core @@ -2982,9 +2982,9 @@ startRecentAbility(want: Want, options: StartOptions, callback: AsyncCallback< 当开发者需要携带启动参数时可以选择此API。 使用规则: - - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限 - - 跨应用场景下,目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限 - - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md) + - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限。 + - 跨应用场景下,目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限。 + - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md)。 **系统能力**:SystemCapability.Ability.AbilityRuntime.Core @@ -3067,9 +3067,9 @@ startRecentAbility(want: Want, options?: StartOptions): Promise<void> 当开发者期望启动结果以Promise形式返回时可以选择此API。 使用规则: - - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限 - - 跨应用场景下,目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限 - - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md) + - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限。 + - 跨应用场景下,目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限。 + - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md)。 **系统能力**:SystemCapability.Ability.AbilityRuntime.Core @@ -3150,10 +3150,10 @@ startAbilityByCallWithAccount(want: Want, accountId: number): Promise<Caller& 根据accountId对指定的Ability进行call调用,并且可以使用返回的Caller通信接口与被调用方进行通信。 使用规则: - - 跨用户场景下,Call调用目标Ability时,调用方应用需同时申请`ohos.permission.ABILITY_BACKGROUND_COMMUNICATION`与`ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS`权限 - - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限 - - 跨应用场景下,目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限 - - 同设备与跨设备场景下,该接口的使用规则存在差异,详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md) + - 跨用户场景下,Call调用目标Ability时,调用方应用需同时申请`ohos.permission.ABILITY_BACKGROUND_COMMUNICATION`与`ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS`权限。 + - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限。 + - 跨应用场景下,目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限。 + - 同设备与跨设备场景下,该接口的使用规则存在差异,详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md)。 **需要权限**: ohos.permission.ABILITY_BACKGROUND_COMMUNICATION, ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS @@ -3245,9 +3245,9 @@ startAbilityAsCaller(want: Want, callback: AsyncCallback\): void 使用设置的caller信息启动一个Ability,caller信息由want携带,在系统服务层识别,Ability可以在onCreate生命周期的want参数中获取到caller信息。使用该接口启动一个Ability时,want的caller信息不会被当前自身的应用信息覆盖,系统服务层可获取到初始caller的信息。使用callback异步回调。 使用规则: - - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限 - - 跨应用场景下,目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限 - - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md) + - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限。 + - 跨应用场景下,目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限。 + - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md)。 **系统能力**:SystemCapability.Ability.AbilityRuntime.Core @@ -3317,9 +3317,9 @@ startAbilityAsCaller(want: Want, options: StartOptions, callback: AsyncCallback\ 使用设置的caller信息启动一个Ability,caller信息由want携带,在系统服务层识别,Ability可以在onCreate生命周期的want参数中获取到caller信息。使用该接口启动一个Ability时,want的caller信息不会被当前自身的应用信息覆盖,系统服务层可获取到初始caller的信息。使用callback异步回调。 使用规则: - - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限 - - 跨应用场景下,目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限 - - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md) + - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限。 + - 跨应用场景下,目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限。 + - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md)。 **系统能力**:SystemCapability.Ability.AbilityRuntime.Core @@ -3393,9 +3393,9 @@ startAbilityAsCaller(want: Want, options?: StartOptions): Promise\ 使用设置的caller信息启动一个Ability,caller信息由want携带,在系统服务层识别,Ability可以在onCreate生命周期的want参数中获取到caller信息。使用该接口启动一个Ability时,want的caller信息不会被当前自身的应用信息覆盖,系统服务层可获取到初始caller的信息。使用Promise异步回调。 使用规则: - - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限 - - 跨应用场景下,目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限 - - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md) + - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限。 + - 跨应用场景下,目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限。 + - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md)。 **系统能力**:SystemCapability.Ability.AbilityRuntime.Core @@ -3543,7 +3543,7 @@ startAbilityByType(type: string, wantParam: Record, | type | string | 是 | 显示拉起的UIExtensionAbility类型。 | | wantParam | {[key: string]: any} | 是 | 表示扩展参数。 | | abilityStartCallback | [AbilityStartCallback](js-apis-inner-application-abilityStartCallback.md) | 是 | 启动失败后的回调。 | -| callback | AsyncCallback | 是 | 回调函数,返回接口调用是否成功的结果。 | +| callback | AsyncCallback<void> | 是 | 回调函数,返回接口调用是否成功的结果。 | **错误码:** @@ -3600,7 +3600,7 @@ startAbilityByType(type: string, wantParam: Record, | 类型 | 说明 | | -------- | -------- | -| Promise | Promise对象。无返回结果的Promise对象。 | +| Promise<void> | Promise对象。无返回结果的Promise对象。 | **错误码:** diff --git a/zh-cn/application-dev/reference/apis/js-apis-inner-application-uiExtensionContext.md b/zh-cn/application-dev/reference/apis/js-apis-inner-application-uiExtensionContext.md index d37957e29aa80d9d3665d1be81ee54847e37ed45..48b5c093117e7f67e46039217fbb5dfdc3291f7f 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-inner-application-uiExtensionContext.md +++ b/zh-cn/application-dev/reference/apis/js-apis-inner-application-uiExtensionContext.md @@ -20,9 +20,9 @@ startAbility(want: Want, callback: AsyncCallback<void>): void 启动Ability(callback形式)。 使用规则: - - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限 - - 跨应用场景下,目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限 - - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md) + - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限。 + - 跨应用场景下,目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限。 + - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md)。 **系统能力**:SystemCapability.Ability.AbilityRuntime.Core @@ -62,9 +62,9 @@ startAbility(want: Want, options: StartOptions, callback: AsyncCallback<void& 启动Ability(callback形式)。 使用规则: - - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限 - - 跨应用场景下,目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限 - - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md) + - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限。 + - 跨应用场景下,目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限。 + - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md)。 **系统能力**:SystemCapability.Ability.AbilityRuntime.Core @@ -103,9 +103,9 @@ startAbility(want: Want, options?: StartOptions): Promise<void> 启动Ability(promise形式)。 使用规则: - - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限 - - 跨应用场景下,目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限 - - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md) + - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限。 + - 跨应用场景下,目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限。 + - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md)。 **系统能力**:SystemCapability.Ability.AbilityRuntime.Core @@ -154,9 +154,9 @@ startAbilityForResult(want: Want, callback: AsyncCallback<AbilityResult>): - 如果被启动的Ability模式是单实例模式, 不同应用多次调用该接口启动这个Ability,当这个Ability调用[terminateSelfWithResult](js-apis-inner-application-uiAbilityContext.md#uiabilitycontextterminateselfwithresult)接口使之终止时,只将正常结果返回给最后一个调用方, 其它调用方返回异常信息, 异常信息中resultCode为-1。 使用规则: - - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限 - - 跨应用场景下,目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限 - - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md) + - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限。 + - 跨应用场景下,目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限。 + - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md)。 **系统能力**:SystemCapability.Ability.AbilityRuntime.Core @@ -199,9 +199,9 @@ startAbilityForResult(want: Want, options: StartOptions, callback: AsyncCallback - 如果被启动的Ability模式是单实例模式, 不同应用多次调用该接口启动这个Ability,当这个Ability调用[terminateSelfWithResult](js-apis-inner-application-uiAbilityContext.md#uiabilitycontextterminateselfwithresult)接口使之终止时,只将正常结果返回给最后一个调用方,其它调用方返回异常信息, 异常信息中resultCode为-1。 使用规则: - - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限 - - 跨应用场景下,目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限 - - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md) + - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限。 + - 跨应用场景下,目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限。 + - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md)。 **系统能力**:SystemCapability.Ability.AbilityRuntime.Core @@ -243,9 +243,9 @@ startAbilityForResult(want: Want, options?: StartOptions): Promise<AbilityRes - 如果被启动的Ability模式是单实例模式, 不同应用多次调用该接口启动这个Ability,当这个Ability调用[terminateSelfWithResult](js-apis-inner-application-uiAbilityContext.md#uiabilitycontextterminateselfwithresult)接口使之终止时,只将正常结果返回给最后一个调用方, 其它调用方返回异常信息, 异常信息中resultCode为-1。 使用规则: - - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限 - - 跨应用场景下,目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限 - - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md) + - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限。 + - 跨应用场景下,目标Ability的exported属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限。 + - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md)。 **系统能力**:SystemCapability.Ability.AbilityRuntime.Core diff --git a/zh-cn/application-dev/reference/apis/js-apis-inputmonitor.md b/zh-cn/application-dev/reference/apis/js-apis-inputmonitor.md index e120c5145c9081cd476bbf471fe39e2698d8d110..a94fd438ee5c312c93252799b1ed29eab7e75c84 100755 --- a/zh-cn/application-dev/reference/apis/js-apis-inputmonitor.md +++ b/zh-cn/application-dev/reference/apis/js-apis-inputmonitor.md @@ -79,6 +79,64 @@ try { } ``` +## inputMonitor.on('mouse')11+ + +on(type: 'mouse', rect: display.Rect[], receiver: Callback<MouseEvent>): void + +监听鼠标事件,当鼠标移动至指定矩形区域内时,触发回调任务。 + +**需要权限:** ohos.permission.INPUT_MONITORING + +**系统能力:** SystemCapability.MultimodalInput.Input.InputMonitor + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | -------------------------- | ---- | ------------------- | +| type | string | 是 | 输入设备事件类型,取值'mouse'。 | +| rect | display.Rect[] | 是 | 可以触发回调任务的矩形区域,可传入1至2个。 | +| receiver | Callback<[MouseEvent](./js-apis-mouseevent.md)> | 是 | 回调函数,异步上报鼠标输入事件。 | + + **示例:** + +```js +import { MouseEvent } from '@ohos.multimodalInput.mouseEvent'; +import promptAction from '@ohos.promptAction' +import display from '@ohos.display'; + +/** + * 鼠标在矩形区域内时,触发的回调任务。 + */ +function callback(mouseEvent : MouseEvent) { + promptAction.showToast({ + message: `监听成功:${JSON.stringify(mouseEvent)}` + }) + console.log(`Monitor on success ${JSON.stringify(mouseEvent)}`); + return false; +}; + +/** + * 触发回调事件矩形区域。 + */ +let rect: display.Rect[] = [{ + left: 100, + top: 100, + width: 100, + height: 100 +}, { + left: 600, + top: 100, + width: 100, + height: 100 +}]; + +try { + inputMonitor.on('mouse', rect, callback); +} catch (error) { + console.log(`Monitor on failed, error: ${JSON.stringify(error, [`code`, `message`])}`); +} +``` + ## inputMonitor.off('touch') off(type: 'touch', receiver?: TouchEventReceiver): void diff --git a/zh-cn/application-dev/reference/apis/js-apis-net-connection.md b/zh-cn/application-dev/reference/apis/js-apis-net-connection.md index 13fc603802e54ce614ae162d54c2e342533097e4..c6abdd1fc0f109c2b6ba1b794bcd17cf33bb1a8d 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-net-connection.md +++ b/zh-cn/application-dev/reference/apis/js-apis-net-connection.md @@ -8,14 +8,14 @@ ## 导入模块 ```ts -import connection from '@ohos.net.connection' +import connection from '@ohos.net.connection'; ``` -## connection.createNetConnection8+ +## connection.createNetConnection createNetConnection(netSpecifier?: NetSpecifier, timeout?: number): NetConnection -返回一个NetConnection对象,[netSpecifier](#netspecifier8)指定关注的网络的各项特征;timeout是超时时间(单位是毫秒);netSpecifier是timeout的必要条件,两者都没有则表示关注默认网络。 +创建一个NetConnection对象,[netSpecifier](#netspecifier)指定关注的网络的各项特征;timeout是超时时间(单位是毫秒);netSpecifier是timeout的必要条件,两者都没有则表示关注默认网络。 **系统能力**:SystemCapability.Communication.NetManager.Core @@ -23,7 +23,7 @@ createNetConnection(netSpecifier?: NetSpecifier, timeout?: number): NetConnectio | 参数名 | 类型 | 必填 | 说明 | | ------------ | ----------------------------- | ---- | ------------------------------------------------------------ | -| netSpecifier | [NetSpecifier](#netspecifier8) | 否 | 指定网络的各项特征,不指定或为undefined时关注默认网络。 | +| netSpecifier | [NetSpecifier](#netspecifier) | 否 | 指定网络的各项特征,不指定或为undefined时关注默认网络。 | | timeout | number | 否 | 获取netSpecifier指定的网络时的超时时间,仅netSpecifier存在时生效,undefined时默认值为0。 | **返回值:** @@ -35,20 +35,20 @@ createNetConnection(netSpecifier?: NetSpecifier, timeout?: number): NetConnectio **示例:** ```ts -import connection from '@ohos.net.connection' +import connection from '@ohos.net.connection'; // 关注默认网络, 不需要传参 -let netConnection = connection.createNetConnection() +let netConnection = connection.createNetConnection(); // 关注蜂窝网络,需要传入相关网络特征,timeout参数未传入说明未使用超时时间,此时timeout为0 let netConnectionCellular = connection.createNetConnection({ netCapabilities: { bearerTypes: [connection.NetBearType.BEARER_CELLULAR] } -}) +}); ``` -## connection.getDefaultNet8+ +## connection.getDefaultNet getDefaultNet(callback: AsyncCallback\): void @@ -76,16 +76,16 @@ getDefaultNet(callback: AsyncCallback\): void **示例:** ```ts -import connection from '@ohos.net.connection' -import { BusinessError } from '@ohos.base' +import connection from '@ohos.net.connection'; +import { BusinessError } from '@ohos.base'; connection.getDefaultNet((error: BusinessError, data: connection.NetHandle) => { - console.log(JSON.stringify(error)) - console.log(JSON.stringify(data)) -}) + console.log(JSON.stringify(error)); + console.log(JSON.stringify(data)); +}); ``` -## connection.getDefaultNet8+ +## connection.getDefaultNet getDefaultNet(): Promise\ @@ -113,10 +113,10 @@ getDefaultNet(): Promise\ **示例:** ```ts -import connection from '@ohos.net.connection' +import connection from '@ohos.net.connection'; connection.getDefaultNet().then((data: connection.NetHandle) => { - console.log(JSON.stringify(data)) -}) + console.log(JSON.stringify(data)); +}); ``` ## connection.getDefaultNetSync9+ @@ -147,7 +147,7 @@ getDefaultNetSync(): NetHandle **示例:** ```ts -import connection from '@ohos.net.connection' +import connection from '@ohos.net.connection'; let netHandle = connection.getDefaultNetSync(); ``` @@ -180,13 +180,13 @@ getGlobalHttpProxy(callback: AsyncCallback\): void **示例:** ```ts -import connection from '@ohos.net.connection' -import { BusinessError } from '@ohos.base' +import connection from '@ohos.net.connection'; +import { BusinessError } from '@ohos.base'; connection.getGlobalHttpProxy((error: BusinessError, data: connection.HttpProxy) => { console.info(JSON.stringify(error)); console.info(JSON.stringify(data)); -}) +}); ``` ## connection.getGlobalHttpProxy10+ @@ -217,14 +217,14 @@ getGlobalHttpProxy(): Promise\; **示例:** ```ts -import connection from '@ohos.net.connection' -import { BusinessError } from '@ohos.base' +import connection from '@ohos.net.connection'; +import { BusinessError } from '@ohos.base'; connection.getGlobalHttpProxy().then((data: connection.HttpProxy) => { console.info(JSON.stringify(data)); }).catch((error: BusinessError) => { console.info(JSON.stringify(error)); -}) +}); ``` ## connection.setGlobalHttpProxy10+ @@ -260,10 +260,10 @@ setGlobalHttpProxy(httpProxy: HttpProxy, callback: AsyncCallback\): void **示例:** ```ts -import connection from '@ohos.net.connection' +import connection from '@ohos.net.connection'; import { BusinessError } from '@ohos.base'; -let exclusionStr = "192.168,baidu.com" +let exclusionStr = "192.168,baidu.com"; let exclusionArray = exclusionStr.split(','); connection.setGlobalHttpProxy({ host: "192.168.xx.xxx", @@ -314,10 +314,10 @@ setGlobalHttpProxy(httpProxy: HttpProxy): Promise\; **示例:** ```ts -import connection from '@ohos.net.connection' +import connection from '@ohos.net.connection'; import { BusinessError } from '@ohos.base'; -let exclusionStr = "192.168,baidu.com" +let exclusionStr = "192.168,baidu.com"; let exclusionArray = exclusionStr.split(','); connection.setGlobalHttpProxy({ host: "192.168.xx.xxx", @@ -335,7 +335,7 @@ connection.setGlobalHttpProxy({ getDefaultHttpProxy(callback: AsyncCallback\): void 获取网络默认的代理配置信息。 -如果设置了全局代理,则会返回全局代理配置信息。如果进程使用[setAppNet](#connectionsetappnet)绑定到指定[NetHandle](#nethandle)对应的网络,则返回[NetHandle](#nethandle)对应网络的代理配置信息。在其它情况下,将返回默认网络的代理配置信息。 +如果设置了全局代理,则会返回全局代理配置信息。如果进程使用[setAppNet](#connectionsetappnet9)绑定到指定[NetHandle](#nethandle)对应的网络,则返回[NetHandle](#nethandle)对应网络的代理配置信息。在其它情况下,将返回默认网络的代理配置信息。 使用callback方式作为异步方法。 **系统能力**:SystemCapability.Communication.NetManager.Core @@ -356,13 +356,13 @@ getDefaultHttpProxy(callback: AsyncCallback\): void **示例:** ```ts -import connection from '@ohos.net.connection' -import { BusinessError } from '@ohos.base' +import connection from '@ohos.net.connection'; +import { BusinessError } from '@ohos.base'; connection.getDefaultHttpProxy((error: BusinessError, data: connection.HttpProxy) => { console.info(JSON.stringify(error)); console.info(JSON.stringify(data)); -}) +}); ``` ## connection.getDefaultHttpProxy10+ @@ -370,7 +370,7 @@ connection.getDefaultHttpProxy((error: BusinessError, data: connection.HttpProxy getDefaultHttpProxy(): Promise\; 获取网络默认的代理配置信息。 -如果设置了全局代理,则会返回全局代理配置信息。如果进程使用[setAppNet](#connectionsetappnet)绑定到指定[NetHandle](#nethandle)对应的网络,则返回[NetHandle](#nethandle)对应网络的代理配置信息。在其它情况下,将返回默认网络的代理配置信息。 +如果设置了全局代理,则会返回全局代理配置信息。如果进程使用[setAppNet](#connectionsetappnet9)绑定到指定[NetHandle](#nethandle)对应的网络,则返回[NetHandle](#nethandle)对应网络的代理配置信息。在其它情况下,将返回默认网络的代理配置信息。 使用Promise方式作为异步方法。 **系统能力**:SystemCapability.Communication.NetManager.Core @@ -391,14 +391,14 @@ getDefaultHttpProxy(): Promise\; **示例:** ```ts -import connection from '@ohos.net.connection' -import { BusinessError } from '@ohos.base' +import connection from '@ohos.net.connection'; +import { BusinessError } from '@ohos.base'; connection.getDefaultHttpProxy().then((data: connection.HttpProxy) => { console.info(JSON.stringify(data)); }).catch((error: BusinessError) => { console.info(JSON.stringify(error)); -}) +}); ``` ## connection.getAppNet9+ @@ -426,12 +426,12 @@ getAppNet(callback: AsyncCallback\): void **示例:** ```ts -import connection from '@ohos.net.connection' -import { BusinessError } from '@ohos.base' +import connection from '@ohos.net.connection'; +import { BusinessError } from '@ohos.base'; connection.getAppNet((error: BusinessError, data: connection.NetHandle) => { - console.log(JSON.stringify(error)) - console.log(JSON.stringify(data)) + console.log(JSON.stringify(error)); + console.log(JSON.stringify(data)); }) ``` @@ -460,14 +460,14 @@ getAppNet(): Promise\; **示例:** ```ts -import connection from '@ohos.net.connection' -import { BusinessError } from '@ohos.base' +import connection from '@ohos.net.connection'; +import { BusinessError } from '@ohos.base'; connection.getAppNet().then((data: connection.NetHandle) => { console.info(JSON.stringify(data)); }).catch((error: BusinessError) => { console.info(JSON.stringify(error)); -}) +}); ``` ## connection.getAppNetSync10+ @@ -482,7 +482,7 @@ getAppNetSync(): NetHandle | 类型 | 说明 | | --------- | ---------------------------------- | -| [NetHandle](#nethandle8) | 返回APP绑定的数据网络。 | +| [NetHandle](#nethandle) | 返回APP绑定的数据网络。 | **错误码:** @@ -495,12 +495,12 @@ getAppNetSync(): NetHandle **示例:** ```ts -import connection from '@ohos.net.connection' +import connection from '@ohos.net.connection'; let netHandle = connection.getAppNetSync(); ``` -## connection.SetAppNet9+ +## connection.setAppNet9+ setAppNet(netHandle: NetHandle, callback: AsyncCallback\): void @@ -530,18 +530,18 @@ setAppNet(netHandle: NetHandle, callback: AsyncCallback\): void **示例:** ```ts -import connection from '@ohos.net.connection' -import { BusinessError } from '@ohos.base' +import connection from '@ohos.net.connection'; +import { BusinessError } from '@ohos.base'; connection.getDefaultNet((error: BusinessError, netHandle: connection.NetHandle) => { connection.setAppNet(netHandle, (error: BusinessError, data: void) => { - console.log(JSON.stringify(error)) - console.log(JSON.stringify(data)) + console.log(JSON.stringify(error)); + console.log(JSON.stringify(data)); }); -}) +}); ``` -## connection.SetAppNet9+ +## connection.setAppNet9+ setAppNet(netHandle: NetHandle): Promise\; @@ -576,19 +576,19 @@ setAppNet(netHandle: NetHandle): Promise\; **示例:** ```ts -import connection from '@ohos.net.connection' -import { BusinessError } from '@ohos.base' +import connection from '@ohos.net.connection'; +import { BusinessError } from '@ohos.base'; connection.getDefaultNet().then((netHandle: connection.NetHandle) => { connection.setAppNet(netHandle).then(() => { - console.log("success") + console.log("success"); }).catch((error: BusinessError) => { - console.log(JSON.stringify(error)) + console.log(JSON.stringify(error)); }) -}) +}); ``` -## connection.getAllNets8+ +## connection.getAllNets getAllNets(callback: AsyncCallback<Array<NetHandle>>): void @@ -616,16 +616,16 @@ getAllNets(callback: AsyncCallback<Array<NetHandle>>): void **示例:** ```ts -import connection from '@ohos.net.connection' -import { BusinessError } from '@ohos.base' +import connection from '@ohos.net.connection'; +import { BusinessError } from '@ohos.base'; connection.getAllNets((error: BusinessError, data: connection.NetHandle[]) => { - console.log(JSON.stringify(error)) - console.log(JSON.stringify(data)) + console.log(JSON.stringify(error)); + console.log(JSON.stringify(data)); }); ``` -## connection.getAllNets8+ +## connection.getAllNets getAllNets(): Promise<Array<NetHandle>> @@ -653,10 +653,10 @@ getAllNets(): Promise<Array<NetHandle>> **示例:** ```ts -import connection from '@ohos.net.connection' +import connection from '@ohos.net.connection'; connection.getAllNets().then((data: connection.NetHandle[]) => { - console.log(JSON.stringify(data)) + console.log(JSON.stringify(data)); }); ``` @@ -674,7 +674,7 @@ getAllNetsSync(): Array<NetHandle> | 类型 | 说明 | | --------- | ---------------------------------- | -| Array<[NetHandle](#nethandle8)> | 返回激活的数据网络列表。 | +| Array<[NetHandle](#nethandle)> | 返回激活的数据网络列表。 | **错误码:** @@ -688,12 +688,12 @@ getAllNetsSync(): Array<NetHandle> **示例:** ```ts -import connection from '@ohos.net.connection' +import connection from '@ohos.net.connection'; let netHandle = connection.getAllNetsSync(); ``` -## connection.getConnectionProperties8+ +## connection.getConnectionProperties getConnectionProperties(netHandle: NetHandle, callback: AsyncCallback\): void @@ -723,18 +723,18 @@ getConnectionProperties(netHandle: NetHandle, callback: AsyncCallback\ { connection.getConnectionProperties(netHandle, (error: BusinessError, data: connection.ConnectionProperties) => { - console.log(JSON.stringify(error)) - console.log(JSON.stringify(data)) + console.log(JSON.stringify(error)); + console.log(JSON.stringify(data)); }) -}) +}); ``` -## connection.getConnectionProperties8+ +## connection.getConnectionProperties getConnectionProperties(netHandle: NetHandle): Promise\ @@ -769,13 +769,13 @@ getConnectionProperties(netHandle: NetHandle): Promise\ **示例:** ```ts -import connection from '@ohos.net.connection' +import connection from '@ohos.net.connection'; connection.getDefaultNet().then((netHandle: connection.NetHandle) => { connection.getConnectionProperties(netHandle).then((data: connection.ConnectionProperties) => { - console.log(JSON.stringify(data)) + console.log(JSON.stringify(data)); }) -}) +}); ``` ## connection.getConnectionPropertiesSync10+ @@ -792,13 +792,13 @@ getConnectionPropertiesSync(netHandle: NetHandle): ConnectionProperties | 参数名 | 类型 | 必填 | 说明 | | --------- | ----------------------- | ---- | ---------------- | -| netHandle | [NetHandle](#nethandle8) | 是 | 数据网络的句柄。 | +| netHandle | [NetHandle](#nethandle) | 是 | 数据网络的句柄。 | **返回值:** | 类型 | 说明 | | ------------------------------------------------------- | --------------------------------- | -| [ConnectionProperties](#connectionproperties8) | 返回网络的连接信息。 | +| [ConnectionProperties](#connectionproperties) | 返回网络的连接信息。 | **错误码:** @@ -813,13 +813,13 @@ getConnectionPropertiesSync(netHandle: NetHandle): ConnectionProperties **示例:** ```ts -import connection from '@ohos.net.connection' +import connection from '@ohos.net.connection'; let netHandle = connection.getDefaultNetSync(); let connectionproperties = connection.getConnectionPropertiesSync(netHandle); ``` -## connection.getNetCapabilities8+ +## connection.getNetCapabilities getNetCapabilities(netHandle: NetHandle, callback: AsyncCallback\): void @@ -849,18 +849,18 @@ getNetCapabilities(netHandle: NetHandle, callback: AsyncCallback\ { connection.getNetCapabilities(netHandle, (error: BusinessError, data: connection.NetCapabilities) => { - console.log(JSON.stringify(error)) - console.log(JSON.stringify(data)) + console.log(JSON.stringify(error)); + console.log(JSON.stringify(data)); }) -}) +}); ``` -## connection.getNetCapabilities8+ +## connection.getNetCapabilities getNetCapabilities(netHandle: NetHandle): Promise\ @@ -895,13 +895,13 @@ getNetCapabilities(netHandle: NetHandle): Promise\ **示例:** ```ts -import connection from '@ohos.net.connection' +import connection from '@ohos.net.connection'; connection.getDefaultNet().then((netHandle: connection.NetHandle) => { connection.getNetCapabilities(netHandle).then((data: connection.NetCapabilities) => { - console.log(JSON.stringify(data)) + console.log(JSON.stringify(data)); }) -}) +}); ``` ## connection.getNetCapabilitiesSync10+ @@ -918,13 +918,13 @@ getNetCapabilitiesSync(netHandle: NetHandle): NetCapabilities | 参数名 | 类型 | 必填 | 说明 | | --------- | ----------------------- | ---- | ---------------- | -| netHandle | [NetHandle](#nethandle8) | 是 | 数据网络的句柄。 | +| netHandle | [NetHandle](#nethandle) | 是 | 数据网络的句柄。 | **返回值:** | 类型 | 说明 | | --------------------------------------------- | --------------------------------- | -| [NetCapabilities](#netcapabilities8) | 返回网络的能力信息。 | +| [NetCapabilities](#netcapabilities) | 返回网络的能力信息。 | **错误码:** @@ -939,7 +939,7 @@ getNetCapabilitiesSync(netHandle: NetHandle): NetCapabilities **示例:** ```ts -import connection from '@ohos.net.connection' +import connection from '@ohos.net.connection'; let netHandle = connection.getDefaultNetSync(); let getNetCapabilitiesSync = connection.getNetCapabilitiesSync(netHandle); @@ -973,13 +973,13 @@ isDefaultNetMetered(callback: AsyncCallback\): void **示例:** ```ts -import connection from '@ohos.net.connection' -import { BusinessError } from '@ohos.base' +import connection from '@ohos.net.connection'; +import { BusinessError } from '@ohos.base'; connection.isDefaultNetMetered((error: BusinessError, data: boolean) => { - console.log(JSON.stringify(error)) - console.log('data: ' + data) -}) + console.log(JSON.stringify(error)); + console.log('data: ' + data); +}); ``` ## connection.isDefaultNetMetered9+ @@ -1010,11 +1010,11 @@ isDefaultNetMetered(): Promise\ **示例:** ```ts -import connection from '@ohos.net.connection' +import connection from '@ohos.net.connection'; connection.isDefaultNetMetered().then((data: boolean) => { - console.log('data: ' + data) -}) + console.log('data: ' + data); +}); ``` ## connection.isDefaultNetMeteredSync10+ @@ -1045,12 +1045,12 @@ isDefaultNetMeteredSync(): boolean **示例:** ```ts -import connection from '@ohos.net.connection' +import connection from '@ohos.net.connection'; let isMetered = connection.isDefaultNetMeteredSync(); ``` -## connection.hasDefaultNet8+ +## connection.hasDefaultNet hasDefaultNet(callback: AsyncCallback\): void @@ -1078,16 +1078,16 @@ hasDefaultNet(callback: AsyncCallback\): void **示例:** ```ts -import connection from '@ohos.net.connection' -import { BusinessError } from '@ohos.base' +import connection from '@ohos.net.connection'; +import { BusinessError } from '@ohos.base'; connection.hasDefaultNet((error: BusinessError, data: boolean) => { - console.log(JSON.stringify(error)) - console.log('data: ' + data) -}) + console.log(JSON.stringify(error)); + console.log('data: ' + data); +}); ``` -## connection.hasDefaultNet8+ +## connection.hasDefaultNet hasDefaultNet(): Promise\ @@ -1115,10 +1115,10 @@ hasDefaultNet(): Promise\ **示例:** ```ts -import connection from '@ohos.net.connection' +import connection from '@ohos.net.connection'; connection.hasDefaultNet().then((data: boolean) => { - console.log('data: ' + data) -}) + console.log('data: ' + data); +}); ``` ## connection.hasDefaultNetSync10+ @@ -1149,12 +1149,12 @@ hasDefaultNetSync(): boolean **示例:** ```ts -import connection from '@ohos.net.connection' +import connection from '@ohos.net.connection'; let isDefaultNet = connection.hasDefaultNetSync(); ``` -## connection.enableAirplaneMode8+ +## connection.enableAirplaneMode enableAirplaneMode(callback: AsyncCallback\): void @@ -1185,15 +1185,15 @@ enableAirplaneMode(callback: AsyncCallback\): void **示例:** ```ts -import connection from '@ohos.net.connection' -import { BusinessError } from '@ohos.base' +import connection from '@ohos.net.connection'; +import { BusinessError } from '@ohos.base'; connection.enableAirplaneMode((error: BusinessError) => { - console.log(JSON.stringify(error)) -}) + console.log(JSON.stringify(error)); +}); ``` -## connection.enableAirplaneMode8+ +## connection.enableAirplaneMode enableAirplaneMode(): Promise\ @@ -1224,14 +1224,14 @@ enableAirplaneMode(): Promise\ **示例:** ```ts -import connection from '@ohos.net.connection' +import connection from '@ohos.net.connection'; connection.enableAirplaneMode().then((error: void) => { - console.log(JSON.stringify(error)) -}) + console.log(JSON.stringify(error)); +}); ``` -## connection.disableAirplaneMode8+ +## connection.disableAirplaneMode disableAirplaneMode(callback: AsyncCallback\): void @@ -1262,15 +1262,15 @@ disableAirplaneMode(callback: AsyncCallback\): void **示例:** ```ts -import connection from '@ohos.net.connection' -import { BusinessError } from '@ohos.base' +import connection from '@ohos.net.connection'; +import { BusinessError } from '@ohos.base'; connection.disableAirplaneMode((error: BusinessError) => { - console.log(JSON.stringify(error)) -}) + console.log(JSON.stringify(error)); +}); ``` -## connection.disableAirplaneMode8+ +## connection.disableAirplaneMode disableAirplaneMode(): Promise\ @@ -1301,14 +1301,14 @@ disableAirplaneMode(): Promise\ **示例:** ```ts -import connection from '@ohos.net.connection' +import connection from '@ohos.net.connection'; connection.disableAirplaneMode().then((error: void) => { - console.log(JSON.stringify(error)) -}) + console.log(JSON.stringify(error)); +}); ``` -## connection.reportNetConnected8+ +## connection.reportNetConnected reportNetConnected(netHandle: NetHandle, callback: AsyncCallback<void>): void @@ -1338,17 +1338,17 @@ reportNetConnected(netHandle: NetHandle, callback: AsyncCallback<void>): v **示例:** ```ts -import connection from '@ohos.net.connection' -import { BusinessError } from '@ohos.base' +import connection from '@ohos.net.connection'; +import { BusinessError } from '@ohos.base'; connection.getDefaultNet().then((netHandle: connection.NetHandle) => { connection.reportNetConnected(netHandle, (error: BusinessError) => { - console.log(JSON.stringify(error)) + console.log(JSON.stringify(error)); }); }); ``` -## connection.reportNetConnected8+ +## connection.reportNetConnected reportNetConnected(netHandle: NetHandle): Promise<void> @@ -1382,15 +1382,15 @@ reportNetConnected(netHandle: NetHandle): Promise<void> **示例:** ```ts -import connection from '@ohos.net.connection' +import connection from '@ohos.net.connection'; connection.getDefaultNet().then((netHandle: connection.NetHandle) => { connection.reportNetConnected(netHandle).then(() => { - console.log(`report success`) + console.log(`report success`); }); }); ``` -## connection.reportNetDisconnected8+ +## connection.reportNetDisconnected reportNetDisconnected(netHandle: NetHandle, callback: AsyncCallback<void>): void @@ -1420,15 +1420,15 @@ reportNetDisconnected(netHandle: NetHandle, callback: AsyncCallback<void>) **示例:** ```ts -import connection from '@ohos.net.connection' +import connection from '@ohos.net.connection'; connection.getDefaultNet().then((netHandle: connection.NetHandle) => { connection.reportNetDisconnected(netHandle).then( () => { - console.log(`report success`) + console.log(`report success`); }); }); ``` -## connection.reportNetDisconnected8+ +## connection.reportNetDisconnected reportNetDisconnected(netHandle: NetHandle): Promise<void> @@ -1462,15 +1462,15 @@ reportNetDisconnected(netHandle: NetHandle): Promise<void> **示例:** ```ts -import connection from '@ohos.net.connection' +import connection from '@ohos.net.connection'; connection.getDefaultNet().then((netHandle: connection.NetHandle) => { connection.reportNetDisconnected(netHandle).then( () => { - console.log(`report success`) + console.log(`report success`); }); }); ``` -## connection.getAddressesByName8+ +## connection.getAddressesByName getAddressesByName(host: string, callback: AsyncCallback\>): void @@ -1500,15 +1500,15 @@ getAddressesByName(host: string, callback: AsyncCallback\>): **示例:** ```ts -import connection from '@ohos.net.connection' -import { BusinessError } from "@ohos.base" +import connection from '@ohos.net.connection'; +import { BusinessError } from "@ohos.base"; connection.getAddressesByName("xxxx", (error: BusinessError, data: connection.NetAddress[]) => { - console.log(JSON.stringify(error)) - console.log(JSON.stringify(data)) -}) + console.log(JSON.stringify(error)); + console.log(JSON.stringify(data)); +}); ``` -## connection.getAddressesByName8+ +## connection.getAddressesByName getAddressesByName(host: string): Promise\> @@ -1543,10 +1543,10 @@ getAddressesByName(host: string): Promise\> **示例:** ```ts -import connection from '@ohos.net.connection' +import connection from '@ohos.net.connection'; connection.getAddressesByName("xxxx").then((data: connection.NetAddress[]) => { - console.log(JSON.stringify(data)) -}) + console.log(JSON.stringify(data)); +}); ``` ## NetConnection @@ -1558,7 +1558,7 @@ connection.getAddressesByName("xxxx").then((data: connection.NetAddress[]) => { > 设备从有网络到无网络状态会触发netLost事件; > 设备从WiFi到蜂窝会触发netLost事件(WiFi丢失)之后触发 netAvaliable事件(蜂窝可用); -### register8+ +### register register(callback: AsyncCallback\): void @@ -1588,15 +1588,15 @@ register(callback: AsyncCallback\): void **示例:** ```ts -import connection from '@ohos.net.connection' -import { BusinessError } from "@ohos.base" +import connection from '@ohos.net.connection'; +import { BusinessError } from "@ohos.base"; let netCon: connection.NetConnection = connection.createNetConnection(); netCon.register((error: BusinessError) => { - console.log(JSON.stringify(error)) -}) + console.log(JSON.stringify(error)); +}); ``` -### unregister8+ +### unregister unregister(callback: AsyncCallback\): void @@ -1623,15 +1623,15 @@ unregister(callback: AsyncCallback\): void **示例:** ```ts -import connection from '@ohos.net.connection' -import { BusinessError } from "@ohos.base" +import connection from '@ohos.net.connection'; +import { BusinessError } from "@ohos.base"; let netCon: connection.NetConnection = connection.createNetConnection(); netCon.unregister((error: BusinessError) => { - console.log(JSON.stringify(error)) -}) + console.log(JSON.stringify(error)); +}); ``` -### on('netAvailable')8+ +### on('netAvailable') on(type: 'netAvailable', callback: Callback\): void @@ -1651,29 +1651,29 @@ on(type: 'netAvailable', callback: Callback\): void **示例:** ```ts -import connection from '@ohos.net.connection' -import { BusinessError } from "@ohos.base" +import connection from '@ohos.net.connection'; +import { BusinessError } from "@ohos.base"; // 创建NetConnection对象 let netCon: connection.NetConnection = connection.createNetConnection(); // 先使用register接口注册订阅事件 netCon.register((error: BusinessError) => { - console.log(JSON.stringify(error)) -}) + console.log(JSON.stringify(error)); +}); // 订阅网络可用事件。调用register后,才能接收到此事件通知 netCon.on('netAvailable', (data: connection.NetHandle) => { - console.log(JSON.stringify(data)) -}) + console.log(JSON.stringify(data)); +}); // 使用unregister接口取消订阅 netCon.unregister((error: BusinessError) => { - console.log(JSON.stringify(error)) -}) + console.log(JSON.stringify(error)); +}); ``` -### on('netBlockStatusChange')8+ +### on('netBlockStatusChange') on(type: 'netBlockStatusChange', callback: Callback<{ netHandle: NetHandle, blocked: boolean }>): void @@ -1693,16 +1693,16 @@ on(type: 'netBlockStatusChange', callback: Callback<{ netHandle: NetHandle, b **示例:** ```ts -import connection from '@ohos.net.connection' -import { BusinessError } from "@ohos.base" +import connection from '@ohos.net.connection'; +import { BusinessError } from "@ohos.base"; // 创建NetConnection对象 let netCon: connection.NetConnection = connection.createNetConnection(); // 先使用register接口注册订阅事件 netCon.register((error: BusinessError) => { - console.log(JSON.stringify(error)) -}) + console.log(JSON.stringify(error)); +}); // 订阅网络可用事件。调用register后,才能接收到此事件通知 class Value { @@ -1710,16 +1710,16 @@ class Value { blocked: boolean = false } netCon.on('netBlockStatusChange', (data: Value) => { - console.log(JSON.stringify(data)) -}) + console.log(JSON.stringify(data)); +}); // 使用unregister接口取消订阅 netCon.unregister((error: BusinessError) => { - console.log(JSON.stringify(error)) -}) + console.log(JSON.stringify(error)); +}); ``` -### on('netCapabilitiesChange')8+ +### on('netCapabilitiesChange') on(type: 'netCapabilitiesChange', callback: Callback\): void @@ -1734,34 +1734,34 @@ on(type: 'netCapabilitiesChange', callback: Callback\): void | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | | type | string | 是 | 订阅事件,固定为'netCapabilitiesChange'。
netCapabilitiesChange:网络能力变化事件。 | -| callback | Callback<[NetCapabilityInfo](#netcapabilityinfo)> | 是 | 回调函数,返回数据网络句柄(netHandle)和网络的能力信息(netCap)。| +| callback | Callback<[NetCapabilityInfo](#netcapabilityinfo10)> | 是 | 回调函数,返回数据网络句柄(netHandle)和网络的能力信息(netCap)。| **示例:** ```ts -import connection from '@ohos.net.connection' -import { BusinessError } from "@ohos.base" +import connection from '@ohos.net.connection'; +import { BusinessError } from "@ohos.base"; // 创建NetConnection对象 let netCon: connection.NetConnection = connection.createNetConnection(); // 先使用register接口注册订阅事件 netCon.register((error: BusinessError) => { - console.log(JSON.stringify(error)) -}) + console.log(JSON.stringify(error)); +}); // 订阅网络可用事件。调用register后,才能接收到此事件通知 netCon.on('netAvailable', (data: connection.NetHandle) => { - console.log(JSON.stringify(data)) -}) + console.log(JSON.stringify(data)); +}); // 使用unregister接口取消订阅 netCon.unregister((error: BusinessError) => { - console.log(JSON.stringify(error)) -}) + console.log(JSON.stringify(error)); +}); ``` -### on('netConnectionPropertiesChange')8+ +### on('netConnectionPropertiesChange') on(type: 'netConnectionPropertiesChange', callback: Callback<{ netHandle: NetHandle, connectionProperties: ConnectionProperties }>): void @@ -1782,16 +1782,16 @@ ConnectionProperties }>): void **示例:** ```ts -import connection from '@ohos.net.connection' -import { BusinessError } from "@ohos.base" +import connection from '@ohos.net.connection'; +import { BusinessError } from "@ohos.base"; // 创建NetConnection对象 let netCon: connection.NetConnection = connection.createNetConnection(); // 先使用register接口注册订阅事件 netCon.register((error: BusinessError) => { - console.log(JSON.stringify(error)) -}) + console.log(JSON.stringify(error)); +}); class Value { netHandle: NetHandle = connection.NetHandle @@ -1800,16 +1800,16 @@ class Value { // 订阅网络可用事件。调用register后,才能接收到此事件通知 netCon.on('netConnectionPropertiesChange', (data: Value) => { - console.log(JSON.stringify(data)) -}) + console.log(JSON.stringify(data)); +}); // 使用unregister接口取消订阅 netCon.unregister((error: BusinessError) => { - console.log(JSON.stringify(error)) -}) + console.log(JSON.stringify(error)); +}); ``` -### on('netLost')8+ +### on('netLost') on(type: 'netLost', callback: Callback\): void @@ -1829,29 +1829,29 @@ on(type: 'netLost', callback: Callback\): void **示例:** ```ts -import connection from '@ohos.net.connection' -import { BusinessError } from "@ohos.base" +import connection from '@ohos.net.connection'; +import { BusinessError } from "@ohos.base"; // 创建NetConnection对象 let netCon: connection.NetConnection = connection.createNetConnection(); // 先使用register接口注册订阅事件 netCon.register((error: BusinessError) => { - console.log(JSON.stringify(error)) -}) + console.log(JSON.stringify(error)); +}); // 订阅网络可用事件。调用register后,才能接收到此事件通知 netCon.on('netLost', (data: connection.NetHandle) => { - console.log(JSON.stringify(data)) -}) + console.log(JSON.stringify(data)); +}); // 使用unregister接口取消订阅 netCon.unregister((error: BusinessError) => { - console.log(JSON.stringify(error)) -}) + console.log(JSON.stringify(error)); +}); ``` -### on('netUnavailable')8+ +### on('netUnavailable') on(type: 'netUnavailable', callback: Callback\): void @@ -1871,29 +1871,29 @@ on(type: 'netUnavailable', callback: Callback\): void **示例:** ```ts -import connection from '@ohos.net.connection' -import { BusinessError } from "@ohos.base" +import connection from '@ohos.net.connection'; +import { BusinessError } from "@ohos.base"; // 创建NetConnection对象 let netCon: connection.NetConnection = connection.createNetConnection(); // 先使用register接口注册订阅事件 netCon.register((error: BusinessError) => { - console.log(JSON.stringify(error)) -}) + console.log(JSON.stringify(error)); +}); // 订阅网络可用事件。调用register后,才能接收到此事件通知 netCon.on('netAvailable', (data: connection.NetHandle) => { - console.log(JSON.stringify(data)) -}) + console.log(JSON.stringify(data)); +}); // 使用unregister接口取消订阅 netCon.unregister((error: BusinessError) => { - console.log(JSON.stringify(error)) -}) + console.log(JSON.stringify(error)); +}); ``` -## NetHandle8+ +## NetHandle 数据网络的句柄。 @@ -1919,7 +1919,7 @@ bindSocket(socketParam: TCPSocket \| UDPSocket, callback: AsyncCallback\): | 参数名 | 类型 | 必填 | 说明 | | ----------- | ------------------------ | ---- | -------------------------------| -| socketParam | [TCPSocket](js-apis-socket.md#tcpsocket) \| [UDPSocket](js-apis-socket.md#udpsocket) | 是 | 待绑定的TCPSocket或UDPSocket对象。| +| socketParam | [TCPSocket](js-apis-socket.md#tcpsocket7) \| [UDPSocket](js-apis-socket.md#udpsocket7) | 是 | 待绑定的TCPSocket或UDPSocket对象。| | callback | AsyncCallback\ | 是 | 回调函数。当TCPSocket或UDPSocket成功绑定到当前网络,error为undefined,否则为错误对象。 | **错误码:** @@ -1961,12 +1961,12 @@ connection.getDefaultNet().then((netHandle: connection.NetHandle) => { } else { console.log(JSON.stringify(data)); } - }) - }) + }); + }); } else { let callback: (value: Data) => void = (value: Data) => { console.log("on message, message:" + value.message + ", remoteInfo:" + value.remoteInfo); - } + }; udp.bind({address:"192.168.xxx.xxx", port:8080, family:1} as socket.NetAddress, (error: BusinessError) => { @@ -1975,7 +1975,7 @@ connection.getDefaultNet().then((netHandle: connection.NetHandle) => { return; } udp.on('message', (data: Data) => { - console.log(JSON.stringify(data)) + console.log(JSON.stringify(data)); }); netHandle.bindSocket(udp, (error: BusinessError, data: void) => { if (error) { @@ -1983,10 +1983,10 @@ connection.getDefaultNet().then((netHandle: connection.NetHandle) => { } else { console.log(JSON.stringify(data)); } - }) - }) + }); + }); } -}) +}); ``` ### bindSocket9+ @@ -2001,7 +2001,7 @@ bindSocket(socketParam: TCPSocket \| UDPSocket): Promise\; | 参数名 | 类型 | 必填 | 说明 | | --------------- | --------------------- | ---- | ------------------------------ | -| socketParam | [TCPSocket](js-apis-socket.md#tcpsocket) \| [UDPSocket](js-apis-socket.md#udpsocket) | 是 | 待绑定的TCPSocket或UDPSocket对象。| +| socketParam | [TCPSocket](js-apis-socket.md#tcpsocket7) \| [UDPSocket](js-apis-socket.md#udpsocket7) | 是 | 待绑定的TCPSocket或UDPSocket对象。| **返回值:** @@ -2047,8 +2047,8 @@ connection.getDefaultNet().then((netHandle: connection.NetHandle) => { } else { console.log(JSON.stringify(data)); } - }) - }) + }); + }); } else { let callback: (value: Data) => void = (value: Data) => { console.log("on message, message:" + value.message + ", remoteInfo:" + value.remoteInfo); @@ -2061,7 +2061,7 @@ connection.getDefaultNet().then((netHandle: connection.NetHandle) => { return; } udp.on('message', (data: Data) => { - console.log(JSON.stringify(data)) + console.log(JSON.stringify(data)); }); netHandle.bindSocket(udp, (error: BusinessError, data: void) => { if (error) { @@ -2069,13 +2069,13 @@ connection.getDefaultNet().then((netHandle: connection.NetHandle) => { } else { console.log(JSON.stringify(data)); } - }) - }) + }); + }); } -}) +}); ``` -### getAddressesByName8+ +### getAddressesByName getAddressesByName(host: string, callback: AsyncCallback\>): void @@ -2105,19 +2105,19 @@ getAddressesByName(host: string, callback: AsyncCallback\>): **示例:** ```ts -import connection from '@ohos.net.connection' -import { BusinessError } from "@ohos.base" +import connection from '@ohos.net.connection'; +import { BusinessError } from "@ohos.base"; connection.getDefaultNet().then((netHandle: connection.NetHandle) => { let host = "xxxx"; netHandle.getAddressesByName(host, (error: BusinessError, data: connection.NetAddress[]) => { - console.log(JSON.stringify(error)) - console.log(JSON.stringify(data)) - }) -}) + console.log(JSON.stringify(error)); + console.log(JSON.stringify(data)); + }); +}); ``` -### getAddressesByName8+ +### getAddressesByName getAddressesByName(host: string): Promise\> @@ -2152,17 +2152,17 @@ getAddressesByName(host: string): Promise\> **示例:** ```ts -import connection from '@ohos.net.connection' +import connection from '@ohos.net.connection'; connection.getDefaultNet().then((netHandle: connection.NetHandle) => { let host = "xxxx"; netHandle.getAddressesByName(host).then((data: connection.NetAddress[]) => { - console.log(JSON.stringify(data)) - }) -}) + console.log(JSON.stringify(data)); + }); +}); ``` -### getAddressByName8+ +### getAddressByName getAddressByName(host: string, callback: AsyncCallback\): void @@ -2192,19 +2192,19 @@ getAddressByName(host: string, callback: AsyncCallback\): void **示例:** ```ts -import connection from '@ohos.net.connection' -import { BusinessError } from "@ohos.base" +import connection from '@ohos.net.connection'; +import { BusinessError } from "@ohos.base"; connection.getDefaultNet().then((netHandle: connection.NetHandle) => { let host = "xxxx"; netHandle.getAddressByName(host, (error: BusinessError, data: connection.NetAddress) => { - console.log(JSON.stringify(error)) - console.log(JSON.stringify(data)) - }) -}) + console.log(JSON.stringify(error)); + console.log(JSON.stringify(data)); + }); +}); ``` -### getAddressByName8+ +### getAddressByName getAddressByName(host: string): Promise\ @@ -2239,17 +2239,17 @@ getAddressByName(host: string): Promise\ **示例:** ```ts -import connection from '@ohos.net.connection' +import connection from '@ohos.net.connection'; connection.getDefaultNet().then((netHandle: connection.NetHandle) => { let host = "xxxx"; netHandle.getAddressByName(host).then((data: connection.NetAddress) => { - console.log(JSON.stringify(data)) - }) -}) + console.log(JSON.stringify(data)); + }); +}); ``` -## NetCap8+ +## NetCap 网络具体能力。 @@ -2263,7 +2263,7 @@ connection.getDefaultNet().then((netHandle: connection.NetHandle) => { | NET_CAPABILITY_NOT_VPN | 15 | 表示网络不使用VPN(Virtual Private Network,虚拟专用网络)。 | | NET_CAPABILITY_VALIDATED | 16 | 表示该网络访问Internet的能力被网络管理成功验证,该能力由网络管理模块设置。 | -## NetBearType8+ +## NetBearType 网络类型。 @@ -2287,7 +2287,7 @@ connection.getDefaultNet().then((netHandle: connection.NetHandle) => { | port | number | 否 | 主机端口。 | | exclusionList | Array | 否 | 不使用代理的主机名列表,主机名支持域名、IP地址以及通配符形式,详细匹配规则如下:
1、域名匹配规则:
(1)完全匹配:代理服务器主机名只要与列表中的任意一个主机名完全相同,就可以匹配。
(2)包含匹配:代理服务器主机名只要包含列表中的任意一个主机名,就可以匹配。
例如,如果在主机名列表中设置了 “ample.com”,则 “ample.com”、“www.ample.com”、“ample.com:80”都会被匹配,而 “www.example.com”、“ample.com.org”则不会被匹配。
2、IP地址匹配规则:代理服务器主机名只要与列表中的任意一个IP地址完全相同,就可以匹配。
3、域名跟IP地址可以同时添加到列表中进行匹配。
4、单个“*”是唯一有效的通配符,当列表中只有通配符时,将与所有代理服务器主机名匹配,表示禁用代理。通配符只能单独添加,不可以与其他域名、IP地址一起添加到列表中,否则通配符将不生效。
5、匹配规则不区分主机名大小写。
6、匹配主机名时,不考虑http和https等协议前缀。 | -## NetSpecifier8+ +## NetSpecifier 提供承载数据网络能力的实例。 @@ -2309,7 +2309,7 @@ connection.getDefaultNet().then((netHandle: connection.NetHandle) => { | netHandle | [NetHandle](#nethandle) | 是 | 数据网络句柄。 | | netCap | [NetCapabilities](#netcapabilities) | 否 | 存储数据网络的传输能力和承载类型。 | -## NetCapabilities8+ +## NetCapabilities 网络的能力集。 @@ -2322,7 +2322,7 @@ connection.getDefaultNet().then((netHandle: connection.NetHandle) => { | networkCap | Array\<[NetCap](#netcap)> | 否 | 网络具体能力。 | | bearerTypes | Array\<[NetBearType](#netbeartype)> | 是 | 网络类型。 | -## ConnectionProperties8+ +## ConnectionProperties 网络连接信息。 @@ -2337,7 +2337,7 @@ connection.getDefaultNet().then((netHandle: connection.NetHandle) => { | dnses | Array\<[NetAddress](#netaddress)> | 是 |网络地址,参考[NetAddress](#netaddress)。 | | mtu | number | 是 |最大传输单元。 | -## RouteInfo8+ +## RouteInfo 网络路由信息。 @@ -2351,7 +2351,7 @@ connection.getDefaultNet().then((netHandle: connection.NetHandle) => { | hasGateway | boolean | 是 |是否有网关。 | | isDefaultRoute | boolean | 是 |是否为默认路由。 | -## LinkAddress8+ +## LinkAddress 网络链路信息。 @@ -2362,7 +2362,7 @@ connection.getDefaultNet().then((netHandle: connection.NetHandle) => { | address | [NetAddress](#netaddress) | 是 | 链路地址。 | | prefixLength | number | 是 |链路地址前缀的长度。 | -## NetAddress8+ +## NetAddress 网络地址。 diff --git a/zh-cn/application-dev/reference/apis/js-apis-net-mdns.md b/zh-cn/application-dev/reference/apis/js-apis-net-mdns.md index 72d5b2af25c02854ae6f4d0b2b9d8c102f38e9bc..11b4c718d7d78253436a1232e793b6056eec8a53 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-net-mdns.md +++ b/zh-cn/application-dev/reference/apis/js-apis-net-mdns.md @@ -11,7 +11,7 @@ MDNS即多播DNS(Multicast DNS),提供局域网内的本地服务添加、 import mdns from '@ohos.net.mdns' ``` -## mdns.addLocalService10+ +## mdns.addLocalService addLocalService(context: Context, serviceInfo: LocalServiceInfo, callback: AsyncCallback\): void @@ -97,7 +97,7 @@ mdns.addLocalService(context as Context, localServiceInfo, (error:BusinessError, }); ``` -## mdns.addLocalService10+ +## mdns.addLocalService addLocalService(context: Context, serviceInfo: LocalServiceInfo): Promise\ @@ -187,7 +187,7 @@ mdns.addLocalService(context as Context, localServiceInfo).then((data: mdns.Loca }); ``` -## mdns.removeLocalService10+ +## mdns.removeLocalService removeLocalService(context: Context, serviceInfo: LocalServiceInfo, callback: AsyncCallback\): void @@ -273,7 +273,7 @@ mdns.removeLocalService(context as Context, localServiceInfo, (error: BusinessEr }); ``` -## mdns.removeLocalService10+ +## mdns.removeLocalService removeLocalService(context: Context, serviceInfo: LocalServiceInfo): Promise\ @@ -363,7 +363,7 @@ mdns.removeLocalService(context as Context, localServiceInfo).then((data: mdns.L }); ``` -## mdns.createDiscoveryService10+ +## mdns.createDiscoveryService createDiscoveryService(context: Context, serviceType: string): DiscoveryService @@ -434,7 +434,7 @@ let serviceType = "_print._tcp"; let discoveryService : Object = mdns.createDiscoveryService(context as Context, serviceType); ``` -## mdns.resolveLocalService10+ +## mdns.resolveLocalService resolveLocalService(context: Context, serviceInfo: LocalServiceInfo, callback: AsyncCallback\): void @@ -520,7 +520,7 @@ mdns.resolveLocalService(context as Context, localServiceInfo, (error: BusinessE }); ``` -## mdns.resolveLocalService10+ +## mdns.resolveLocalService resolveLocalService(context: Context, serviceInfo: LocalServiceInfo): Promise\ @@ -609,11 +609,11 @@ mdns.resolveLocalService(context as Context, localServiceInfo).then((data: mdns. console.log(JSON.stringify(data)); }); ``` -## DiscoveryService10+ +## DiscoveryService 指定服务类型的发现服务对象。 -### startSearchingMDNS10+ +### startSearchingMDNS startSearchingMDNS(): void @@ -665,7 +665,7 @@ let discoveryService = mdns.createDiscoveryService(context as Context, serviceTy discoveryService.startSearchingMDNS(); ``` -### stopSearchingMDNS10+ +### stopSearchingMDNS stopSearchingMDNS(): void @@ -717,7 +717,7 @@ let discoveryService = mdns.createDiscoveryService(context as Context, serviceTy discoveryService.stopSearchingMDNS(); ``` -### on('discoveryStart')10+ +### on('discoveryStart') on(type: 'discoveryStart', callback: Callback<{serviceInfo: LocalServiceInfo, errorCode?: MdnsError}>): void @@ -785,7 +785,7 @@ discoveryService.on('discoveryStart', (data: DataServiceInfo) => { discoveryService.stopSearchingMDNS(); ``` -### off('discoveryStart')10+ +### off('discoveryStart') off(type: 'discoveryStart', callback?: Callback<{ serviceInfo: LocalServiceInfo, errorCode?: MdnsError }>): void @@ -856,7 +856,7 @@ discoveryService.off('discoveryStart', (data: Data) => { }); ``` -### on('discoveryStop')10+ +### on('discoveryStop') on(type: 'discoveryStop', callback: Callback<{serviceInfo: LocalServiceInfo, errorCode?: MdnsError}>): void @@ -923,7 +923,7 @@ discoveryService.on('discoveryStop', (data: Data) => { discoveryService.stopSearchingMDNS(); ``` -### off('discoveryStop')10+ +### off('discoveryStop') off(type: 'discoveryStop', callback?: Callback<{ serviceInfo: LocalServiceInfo, errorCode?: MdnsError }>): void @@ -994,7 +994,7 @@ discoveryService.off('discoveryStop', (data: Data) => { }); ``` -### on('serviceFound')10+ +### on('serviceFound') on(type: 'serviceFound', callback: Callback\): void @@ -1057,7 +1057,7 @@ discoveryService.on('serviceFound', (data: mdns.LocalServiceInfo) => { discoveryService.stopSearchingMDNS(); ``` -### off('serviceFound')10+ +### off('serviceFound') off(type: 'serviceFound', callback?: Callback\): void @@ -1124,7 +1124,7 @@ discoveryService.off('serviceFound', (data: mdns.LocalServiceInfo) => { }); ``` -### on('serviceLost')10+ +### on('serviceLost') on(type: 'serviceLost', callback: Callback\): void @@ -1187,7 +1187,7 @@ discoveryService.on('serviceLost', (data: mdns.LocalServiceInfo) => { discoveryService.stopSearchingMDNS(); ``` -### off('serviceLost')10+ +### off('serviceLost') off(type: 'serviceLost', callback?: Callback\): void @@ -1254,7 +1254,7 @@ discoveryService.off('serviceLost', (data: mdns.LocalServiceInfo) => { }); ``` -## LocalServiceInfo10+ +## LocalServiceInfo mDNS服务信息 @@ -1268,7 +1268,7 @@ mDNS服务信息 | host | [NetAddress](js-apis-net-connection.md#netaddress) | 否 | mDNS服务设备的IP地址。采用设备的IP,添加服务和移除服务时候不生效。 | | serviceAttribute | serviceAttribute\<[ServiceAttribute](#serviceattribute)> | 否 | mDNS服务属性信息。 | -## ServiceAttribute10+ +## ServiceAttribute mDNS服务属性信息 diff --git a/zh-cn/application-dev/reference/apis/js-apis-pipWindow.md b/zh-cn/application-dev/reference/apis/js-apis-pipWindow.md index b6a76e38b55e3c90eb25e78378cdab4d0447f420..ae0e664c12c11783cea008e207345d2692fc587a 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-pipWindow.md +++ b/zh-cn/application-dev/reference/apis/js-apis-pipWindow.md @@ -5,6 +5,8 @@ > **说明:** > > 本模块首批接口从API version 11开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 +> +> 需要在支持SystemCapability.Window.SessionManager能力的系统上使用该模块,参考[系统能力SystemCapability使用指南](../syscap.md)。 ## 导入模块 @@ -130,14 +132,14 @@ promise.then((data : pipWindow.PiPController) => { **系统能力:** SystemCapability.Window.SessionManager -| 名称 | 类型 | 必填 | 说明 | -|---------------------|-----------------------------------------------------------------------|-----|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| context | [BaseContext](js-apis-inner-application-baseContext.md) | 是 | 表示上下文环境。 | -| componentController | [XComponentController](../arkui-ts/ts-basic-components-xcomponent.md) | 是 | 表示原始XComponent控制器。 | -| navigationId | string | 否 | 当前page导航ID。如果当前页面是通过[NavRouter](../arkui-ts/ts-basic-components-navrouter.md)跳转而来,取[RouteInfo](../arkui-ts/ts-basic-components-navrouter.md#routeinfo10对象说明)的name值;否则取空值。 | -| templateType | [PiPTemplateType](#piptemplatetype) | 否 | 模板类型,用以区分视频播放、视频通话或视频会议。 | -| contentWidth | number | 否 | 原始内容宽度,单位为px。用于确定画中画窗口比例。 | -| contentHeight | number | 否 | 原始内容高度,单位为px。用于确定画中画窗口比例。 | +| 名称 | 类型 | 必填 | 说明 | +|---------------------|-----------------------------------------------------------------------|-----|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| context | [BaseContext](js-apis-inner-application-baseContext.md) | 是 | 表示上下文环境。 | +| componentController | [XComponentController](../arkui-ts/ts-basic-components-xcomponent.md) | 是 | 表示原始[XComponent](../../ui/arkts-common-components-xcomponent.md)控制器。 | +| navigationId | string | 否 | 当前page导航id。
1、UIAbility使用[Navigation](../arkui-ts/ts-basic-components-navigation.md)管理页面,需要设置Navigation控件的id属性,并将该id设置给画中画控制器,确保还原场景下能够从画中画窗口恢复到原页面。
2、UIAbility使用[Router](js-apis-router.md)管理页面时(画中画场景不推荐该导航方式),无需设置navigationId。注意:该场景下启动画中画后,不要进行页面切换,否则还原场景可能出现异常。
3、UIAbility只有单页面时,无需设置navigationId,还原场景下也能够从画中画窗口恢复到原页面。 | +| templateType | [PiPTemplateType](#piptemplatetype) | 否 | 模板类型,用以区分视频播放、视频通话或视频会议。 | +| contentWidth | number | 否 | 原始内容宽度,单位为px。用于确定画中画窗口比例。 | +| contentHeight | number | 否 | 原始内容高度,单位为px。用于确定画中画窗口比例。 | ## PiPTemplateType diff --git a/zh-cn/application-dev/reference/apis/js-apis-sim.md b/zh-cn/application-dev/reference/apis/js-apis-sim.md index 6654a2fc0754f4d6b75ffa776338b7e2efc75268..083fc68e262755326d90696ed8dc1c775ab38c0f 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-sim.md +++ b/zh-cn/application-dev/reference/apis/js-apis-sim.md @@ -103,6 +103,58 @@ let isSimActive: boolean = sim.isSimActiveSync(0); console.log(`the sim is active:` + isSimActive); ``` +## sim.isOperatorSimCard11+ + +isOperatorSimCard\(slotId: number, operator: OperatorSimCard\): boolean + +获取指定卡槽SIM卡是否为指定运营商卡。 + +**系统接口:** 此接口为系统接口。 + +**系统能力**:SystemCapability.Telephony.CoreService + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ------ | --------------------------------------- | ---- | --------------------------------- | +| slotId | number | 是 | 卡槽ID。
- 0:卡槽1
- 1:卡槽2 | +| operator | [OperatorSimCard](#operatorsimcard11) | 是 | 运营商卡名称。(当前仅支持中国电信卡)| + +**返回值:** + +| 类型 | 说明 | +| --------------------- | ---------------------------------- | +| boolean | 返回指定卡槽是否为指定运营商卡,如果是返回true。 | + +**错误码:** + +以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)。 + +| 错误码ID | 错误信息 | +| -------- | -------------------------------------------- | +| 202 | Non-system applications use system APIs. | +| 401 | Parameter error. | +| 8300001 | Invalid parameter value. | +| 8300002 | Operation failed. Cannot connect to service. | +| 8300003 | System internal error. | +| 8300004 | Do not have sim card. | +| 8300999 | Unknown error code. | + +**示例:** + +```ts +import { BusinessError } from '@ohos.base'; +import sim from '@ohos.telephony.sim'; + +let slotId : number = 0; +let operator : sim.OperatorSimCard = sim.OperatorSimCard.CHINA_TELECOM_CARD; +try { + let isOperatorSimCard: boolean = sim.isOperatorSimCard(slotId, operator); + console.log(`is operator sim card: ` + isOperatorSimCard); +} catch (error) { + console.error("isOperatorSimCard err: " + JSON.stringify(err)); +} +``` ## sim.getDefaultVoiceSlotId7+ @@ -4920,3 +4972,15 @@ Icc帐户信息。 | DSDS_MODE_V3 | 1 | 设备支持DSDS 3.0 Mode。 | | DSDS_MODE_V5_TDM | 2 | 设备支持DSDS 5.0 TDM Mode。 | | DSDS_MODE_V5_DSDA | 3 | 设备支持DSDS 5.0 DSDA Mode。 | + +## OperatorSimCard11+ + +运营商名称。 + +**系统接口:** 此接口为系统接口。 + +**系统能力**:SystemCapability.Telephony.CoreService + +| 名称 | 值 | 说明 | +| ------------------ | --------------------- | -------- | +| CHINA_TELECOM_CARD | "china_telecom_card" | 中国电信卡。 | diff --git a/zh-cn/application-dev/reference/apis/js-apis-uitest.md b/zh-cn/application-dev/reference/apis/js-apis-uitest.md index 266df0854276eab8749531bc7ac2d7864701d5ed..66573e084b88e398a12ccb7e3dc852531aba126d 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-uitest.md +++ b/zh-cn/application-dev/reference/apis/js-apis-uitest.md @@ -156,7 +156,7 @@ UI事件的相关信息。 ## On9+ UiTest框架在API 9中,通过On类提供了丰富的控件特征描述API,用于进行控件筛选来匹配/查找出目标控件。
-On提供的API能力具有以下几个特点:
1、支持单属性匹配和多属性组合匹配,例如同时指定目标控件text和id。
2、控件属性支持多种匹配模式。
3、支持控件绝对定位,相对定位,可通过[ON.isBefore](#isbefore)和[ON.isAfter](#isafter)等API限定邻近控件特征进行辅助定位。
On类提供的所有API均为同步接口,建议使用者通过静态构造器ON来链式创建On对象。 +On提供的API能力具有以下几个特点:
1、支持单属性匹配和多属性组合匹配,例如同时指定目标控件text和id。
2、控件属性支持多种匹配模式。
3、支持控件绝对定位,相对定位,可通过[ON.isBefore](#isbefore9)和[ON.isAfter](#isafter9)等API限定邻近控件特征进行辅助定位。
On类提供的所有API均为同步接口,建议使用者通过静态构造器ON来链式创建On对象。 ```ts import { ON } from '@ohos.UiTest'; @@ -884,9 +884,9 @@ isLongClickable(): Promise\ **返回值:** -| 类型 | 说明 | -| ----------------- | ------------------------------------------------------------ | -| Promise\ | 以Promise形式返回控件对象是否可安装点击,true:可长按点击,false:不可长按点击。 | +| 类型 | 说明 | +| ----------------- |--------------------------------------------------| +| Promise\ | 以Promise形式返回控件对象是否可长按点击,true:可长按点击,false:不可长按点击。 | **错误码:** @@ -1115,7 +1115,7 @@ isSelected(): Promise\ | 类型 | 说明 | | ----------------- | --------------------------------------------------- | -| Promise\ | 控件对象被选中状态,true:被选中,false:未被选中。 | +| Promise\ | 以Promise形式返回控件对象被选中状态,true:被选中,false:未被选中。 | **错误码:** @@ -1184,6 +1184,7 @@ clearText(): Promise\ **系统能力**:SystemCapability.Test.UiTest **错误码:** +以下错误码的详细介绍请参见[uitest测试框架错误码](../errorcodes/errorcode-uitest.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | @@ -1613,7 +1614,7 @@ waitForComponent(on: On, time: number): Promise\ | 类型 | 说明 | | --------------------------------- | --------------------------------- | -| Promise\<[Component](#component)> | 以Promise形式返回找到的控件对象。 | +| Promise\<[Component](#component9)> | 以Promise形式返回找到的控件对象。 | **错误码:** @@ -1948,7 +1949,7 @@ Driver对象采取如下操作:捕获当前屏幕,并保存为PNG格式的 | 类型 | 说明 | | ----------------- | -------------------------------------- | -| Promise\ | 截图操作是否成功完成。成功完成为true。 | +| Promise\ | 以Promise形式返回截图操作是否成功完成。成功完成为true。 | **错误码:** @@ -2353,7 +2354,7 @@ screenCapture(savePath: string, rect?: Rect): Promise\; | 类型 | 说明 | | ----------------- | -------------------------------------- | -| Promise\ | 截图操作是否成功完成。成功完成为true。 | +| Promise\ | 以Promise形式返回截图操作是否成功完成。成功完成为true。 | **错误码:** @@ -2486,9 +2487,9 @@ createUIEventObserver(): UIEventObserver; **返回值:** -| 类型 | 说明 | -| ----------------------------------------------- | ------------------------------------- | -| Promise\<[UIEventObserver](#uieventobserver10)> | 以Promise形式返回找到的目标窗口对象。 | +| 类型 | 说明 | +| ------------------------------------ | ------------------------------------- | +|[UIEventObserver](#uieventobserver10) | 返回找到的目标窗口对象。 | **错误码:** @@ -3245,7 +3246,7 @@ UI事件监听器。 ### once('toastShow') -once(type: 'toastShow', callback: Callback\):void; +once(type: 'toastShow', callback: Callback\): void; 开始监听toast控件出现的事件,使用callback的形式返回结果。 @@ -3964,7 +3965,7 @@ isSelected(): Promise\ | 类型 | 说明 | | ----------------- | ----------------------------------------------------- | -| Promise\ | 控件对象被选中的状态,true:被选中,false:未被选中。 | +| Promise\ | 以Promise形式返回控件对象被选中的状态,true:被选中,false:未被选中。 | **示例:** @@ -4375,7 +4376,7 @@ UiDriver对象采取如下操作:捕获当前屏幕,并保存为PNG格式的 | 类型 | 说明 | | ----------------- | -------------------------------------- | -| Promise\ | 截图操作是否成功完成。成功完成为true。 | +| Promise\ | 以Promise形式返回截图操作是否成功完成。成功完成为true。 | **示例:** diff --git a/zh-cn/application-dev/reference/apis/js-apis-webview.md b/zh-cn/application-dev/reference/apis/js-apis-webview.md index 14e6d461fd32e24f531c3c793315cd82c04e3f6d..ba75f21ade799b70934ad667999e2229c130af08 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-webview.md +++ b/zh-cn/application-dev/reference/apis/js-apis-webview.md @@ -1047,7 +1047,7 @@ onActive(): void | 错误码ID | 错误信息 | | -------- | ------------------------------------------------------------ | -| 17100001 | Init error. The WebviewController must be associated with a Web compoent. | +| 17100001 | Init error. The WebviewController must be associated with a Web component. | **示例:** @@ -1092,7 +1092,7 @@ onInactive(): void | 错误码ID | 错误信息 | | -------- | ------------------------------------------------------------ | -| 17100001 | Init error. The WebviewController must be associated with a Web compoent. | +| 17100001 | Init error. The WebviewController must be associated with a Web component. | **示例:** @@ -1136,7 +1136,7 @@ refresh(): void | 错误码ID | 错误信息 | | -------- | ------------------------------------------------------------ | -| 17100001 | Init error. The WebviewController must be associated with a Web compoent. | +| 17100001 | Init error. The WebviewController must be associated with a Web component. | **示例:** @@ -1193,7 +1193,7 @@ accessStep(step: number): boolean | 错误码ID | 错误信息 | | -------- | ------------------------------------------------------------ | -| 17100001 | Init error. The WebviewController must be associated with a Web compoent. | +| 17100001 | Init error. The WebviewController must be associated with a Web component. | **示例:** @@ -1240,7 +1240,7 @@ clearHistory(): void | 错误码ID | 错误信息 | | -------- | ------------------------------------------------------------ | -| 17100001 | Init error. The WebviewController must be associated with a Web compoent. | +| 17100001 | Init error. The WebviewController must be associated with a Web component. | **示例:** @@ -1291,7 +1291,7 @@ getHitTest(): WebHitTestType | 错误码ID | 错误信息 | | -------- | ------------------------------------------------------------ | -| 17100001 | Init error. The WebviewController must be associated with a Web compoent. | +| 17100001 | Init error. The WebviewController must be associated with a Web component. | **示例:** @@ -1345,7 +1345,7 @@ registerJavaScriptProxy(object: object, name: string, methodList: Array\ | 错误码ID | 错误信息 | | -------- | ------------------------------------------------------------ | -| 17100001 | Init error. The WebviewController must be associated with a Web compoent. | +| 17100001 | Init error. The WebviewController must be associated with a Web component. | **示例:** @@ -1464,7 +1464,7 @@ runJavaScript(script: string, callback : AsyncCallback\): void | 错误码ID | 错误信息 | | -------- | ------------------------------------------------------------ | -| 17100001 | Init error. The WebviewController must be associated with a Web compoent. | +| 17100001 | Init error. The WebviewController must be associated with a Web component. | **示例:** @@ -1554,7 +1554,7 @@ runJavaScript(script: string): Promise\ | 错误码ID | 错误信息 | | -------- | ------------------------------------------------------------ | -| 17100001 | Init error. The WebviewController must be associated with a Web compoent. | +| 17100001 | Init error. The WebviewController must be associated with a Web component. | **示例:** @@ -1633,7 +1633,7 @@ runJavaScriptExt(script: string, callback : AsyncCallback\): void | 错误码ID | 错误信息 | | -------- | ------------------------------------------------------------ | -| 17100001 | Init error. The WebviewController must be associated with a Web compoent. | +| 17100001 | Init error. The WebviewController must be associated with a Web component. | **示例:** @@ -1759,7 +1759,7 @@ runJavaScriptExt(script: string): Promise\ | 错误码ID | 错误信息 | | -------- | ------------------------------------------------------------ | -| 17100001 | Init error. The WebviewController must be associated with a Web compoent. | +| 17100001 | Init error. The WebviewController must be associated with a Web component. | **示例:** @@ -1870,7 +1870,7 @@ deleteJavaScriptRegister(name: string): void | 错误码ID | 错误信息 | | -------- | ------------------------------------------------------------ | -| 17100001 | Init error. The WebviewController must be associated with a Web compoent. | +| 17100001 | Init error. The WebviewController must be associated with a Web component. | | 17100008 | Cannot delete JavaScriptProxy. | **示例:** @@ -1975,7 +1975,7 @@ zoom(factor: number): void | 错误码ID | 错误信息 | | -------- | ------------------------------------------------------------ | -| 17100001 | Init error. The WebviewController must be associated with a Web compoent. | +| 17100001 | Init error. The WebviewController must be associated with a Web component. | | 17100004 | Function not enable. | **示例:** @@ -2029,7 +2029,7 @@ searchAllAsync(searchString: string): void | 错误码ID | 错误信息 | | -------- | ------------------------------------------------------------ | -| 17100001 | Init error. The WebviewController must be associated with a Web compoent. | +| 17100001 | Init error. The WebviewController must be associated with a Web component. | **示例:** @@ -2092,7 +2092,7 @@ clearMatches(): void | 错误码ID | 错误信息 | | -------- | ------------------------------------------------------------ | -| 17100001 | Init error. The WebviewController must be associated with a Web compoent. | +| 17100001 | Init error. The WebviewController must be associated with a Web component. | **示例:** @@ -2145,7 +2145,7 @@ searchNext(forward: boolean): void | 错误码ID | 错误信息 | | -------- | ------------------------------------------------------------ | -| 17100001 | Init error. The WebviewController must be associated with a Web compoent. | +| 17100001 | Init error. The WebviewController must be associated with a Web component. | **示例:** @@ -2192,7 +2192,7 @@ clearSslCache(): void | 错误码ID | 错误信息 | | -------- | ------------------------------------------------------------ | -| 17100001 | Init error. The WebviewController must be associated with a Web compoent. | +| 17100001 | Init error. The WebviewController must be associated with a Web component. | **示例:** @@ -2237,7 +2237,7 @@ clearClientAuthenticationCache(): void | 错误码ID | 错误信息 | | -------- | ------------------------------------------------------------ | -| 17100001 | Init error. The WebviewController must be associated with a Web compoent. | +| 17100001 | Init error. The WebviewController must be associated with a Web component. | **示例:** @@ -3624,7 +3624,7 @@ hasImage(callback: AsyncCallback\): void | 错误码ID | 错误信息 | | -------- | ------------------------------------------------------------ | -| 17100001 | Init error. The WebviewController must be associated with a Web compoent. | +| 17100001 | Init error. The WebviewController must be associated with a Web component. | **示例:** @@ -3681,7 +3681,7 @@ hasImage(): Promise\ | 错误码ID | 错误信息 | | -------- | ------------------------------------------------------------ | -| 17100001 | Init error. The WebviewController must be associated with a Web compoent. | +| 17100001 | Init error. The WebviewController must be associated with a Web component. | **示例:** @@ -4320,7 +4320,7 @@ getCertificate(callback: AsyncCallback>): void | 错误码ID | 错误信息 | | -------- | ------------------------------------------------------------ | -| 17100001 | Init error. The WebviewController must be associated with a Web compoent. | +| 17100001 | Init error. The WebviewController must be associated with a Web component. | **示例:** @@ -8167,7 +8167,7 @@ struct WebComponent { ### getLastErrorCode11+ -getLastErrorCode(): number +getLastErrorCode(): WebDownloadErrorCode 获取下载的错误码。 @@ -8717,9 +8717,9 @@ static deserialize(serializedData: Uint8Array): WebDownloadItem **参数:** -| 类型 | 说明 | -| ------ | ------------------------- | -| Uint8Array | 序列化后的下载。 | +| 参数名 | 类型 | 必填 | 说明 | +| ------------------ | ------- | ---- | ------------- | +| serializedData | Uint8Array | 是 | 序列化后的下载。| **返回值:** @@ -8802,9 +8802,9 @@ start(downloadPath: string): void **参数:** -| 类型 | 说明 | -| ------ | ------------------------- | -| string | 下载文件的路径(包含文件名)。 | +| 参数名 | 类型 | 必填 | 说明 | +| ------ | ---------------------- | ---- | ------------------------------| +| downloadPath | string | 是 | 下载文件的路径(包含文件名)。| **示例:** @@ -9172,7 +9172,7 @@ struct WebComponent { ### onBeforeDownload11+ -onBeforeDownload(): void +onBeforeDownload(callback: Callback\): void 下载开始前通知给用户,用户需要在此接口中调用WebDownloadItem.start("xxx")并提供下载路径,否则下载会一直处于PENDING状态。 @@ -9274,7 +9274,7 @@ struct WebComponent { ### onDownloadUpdated11+ -onDownloadUpdated(): void +onDownloadUpdated(callback: Callback\): void 下载过程中的回调,通过该回调的参数可以了解下载进度等信息。 @@ -9376,7 +9376,7 @@ struct WebComponent { ### onDownloadFinish11+ -onDownloadFinish(): void +onDownloadFinish(callback: Callback\): void 下载完成的通知。 @@ -9478,7 +9478,7 @@ struct WebComponent { ### onDownloadFailed11+ -onDownloadFailed(): void +onDownloadFailed(callback: Callback\): void 下载失败的通知。 diff --git a/zh-cn/application-dev/reference/apis/js-apis-window.md b/zh-cn/application-dev/reference/apis/js-apis-window.md index 0562d4962ba42d6c6341d3b284ef4df8056095d5..c95f65b751663b13cacaa65f9f98e485842a1292 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-window.md +++ b/zh-cn/application-dev/reference/apis/js-apis-window.md @@ -3742,6 +3742,78 @@ try { } ``` +### on('windowVisibilityChange')11+ + +on(type: 'windowVisibilityChange', callback: Callback<boolean>): void + +开启本窗口可见状态变化事件的监听。 + +**系统能力:** SystemCapability.Window.SessionManager + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | --------------------------| ---- | ------------------------------------------------------------ | +| type | string | 是 | 监听事件,固定为'windowVisibilityChange',即本窗口可见状态变化的事件。 | +| callback | Callback<boolean> | 是 | 回调函数。当本窗口可见状态发生变化后的回调。回调函数返回boolean类型参数,当返回参数为true时表示窗口可见,否则表示窗口不可见。 | + +**错误码:** + +以下错误码的详细介绍请参见[窗口错误码](../errorcodes/errorcode-window.md)。 + +| 错误码ID | 错误信息 | +| ------- | ------------------------------ | +| 1300002 | This window state is abnormal. | +| 1300003 | This window manager service works abnormally. | + +**示例:** + +```ts +try { + let windowClass: window.Window = window.findWindow("test"); + windowClass.on('windowVisibilityChange', (boolean) => { + console.info('Window visibility changed, isVisible=' + boolean); + }); +} catch (exception) { + console.error('Failed to register callback. Cause: ' + JSON.stringify(exception)); +} +``` + +### off('windowVisibilityChange')11+ + +off(type: 'windowVisibilityChange', callback?: Callback<boolean>): void + +关闭本窗口可见状态变化事件的监听。 + +**系统能力:** SystemCapability.Window.SessionManager + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- |----------------------------| ---- |--------------------------------------| +| type | string | 是 | 监听事件,固定为'windowVisibilityChange',即本窗口可见状态变化的事件。 | +| callback | Callback<boolean> | 否 | 回调函数。当本窗口可见状态发生变化时的回调。如果传入参数,则关闭该监听。如果未传入参数,则关闭所有本窗口可见状态变化事件的回调。 | + +**错误码:** + +以下错误码的详细介绍请参见[窗口错误码](../errorcodes/errorcode-window.md)。 + +| 错误码ID | 错误信息 | +| ------- | ------------------------------ | +| 1300002 | This window state is abnormal. | +| 1300003 | This window manager service works abnormally. | + +**示例:** + +```ts +try { + let windowClass: window.Window = window.findWindow("test"); + windowClass.off('windowVisibilityChange'); +} catch (exception) { + console.error('Failed to unregister callback. Cause: ' + JSON.stringify(exception)); +} +``` + ### bindDialogTarget9+ bindDialogTarget(token: rpc.RemoteObject, deathCallback: Callback<void>, callback: AsyncCallback<void>): void @@ -8245,6 +8317,18 @@ WindowStage生命周期。 | RESUMED11+ | 5 | 前台可交互状态。前台应用进入多任务为不可交互状态,继续返回前台时恢复可交互状态。 | | PAUSED11+ | 6 | 前台不可交互状态。前台应用进入多任务为不可交互状态,继续返回前台时恢复可交互状态。 | +## SubWindowOptions11+ + +子窗口创建参数。 + +**系统能力:** SystemCapability.Window.SessionManager + +| 名称 | 类型 | 可读 | 可写 | 说明 | +| ---------- | ---- | ---- | ---- | ----------- | +| title | string | 否 | 是 | 子窗口标题。 | +| decorEnabled | boolean | 否 | 是 | 子窗口是否显示装饰。true表示子窗口显示装饰,false表示子窗口不显示装饰。 | + + ## WindowStage9+ 窗口管理器。管理各个基本窗口单元,即[Window](#window)实例。 @@ -8516,7 +8600,69 @@ export default class EntryAbility extends UIAbility { } }; ``` +### createSubWindowWithOptions11+ + +createSubWindowWithOptions(name: string, options: SubWindowOptions): Promise<Window> + +创建该WindowStage实例下的子窗口,使用Promise异步回调。 + +**模型约束:** 此接口仅可在Stage模型下使用。 + +**系统能力:** SystemCapability.Window.SessionManager + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ------ | ------ | ---- | -------------- | +| name | string | 是 | 子窗口的名字。 | +| options | [SubWindowOptions](#subwindowoptions11) | 是 | 子窗口参数。 | + +**返回值:** + +| 类型 | 说明 | +| -------------------------------- | ------------------------------------------------ | +| Promise<[Window](#window)> | Promise对象。返回当前WindowStage下创建的子窗口对象。 | + +**错误码:** + +以下错误码的详细介绍请参见[窗口错误码](../errorcodes/errorcode-window.md)。 + +| 错误码ID | 错误信息 | +| ------- | ------------------------------ | +| 1300002 | This window state is abnormal. | +| 1300005 | This window stage is abnormal. | + +**示例:** + +```ts +import UIAbility from '@ohos.app.ability.UIAbility'; +import window from '@ohos.window'; +import { BusinessError } from '@ohos.base'; +export default class EntryAbility extends UIAbility { + // ... + + onWindowStageCreate(windowStage: window.WindowStage) { + console.info('onWindowStageCreate'); + let windowClass: window.Window | undefined = undefined; + try { + let options : window.SubWindowOptions = { + title: 'title', + decorEnabled: true + }; + let promise = windowStage.createSubWindowWithOptions('mySubWindow', options); + promise.then((data) => { + windowClass = data; + console.info('Succeeded in creating the subwindow. Data: ' + JSON.stringify(data)); + }).catch((err: BusinessError) => { + console.error('Failed to create the subwindow. Cause: ' + JSON.stringify(err)); + }); + } catch (exception) { + console.error('Failed to create the subwindow. Cause: ' + JSON.stringify(exception)); + } + } +}; +``` ### getSubWindow9+ getSubWindow(callback: AsyncCallback<Array<Window>>): void diff --git a/zh-cn/application-dev/reference/arkui-ts/figures/ColoringStrategy_circle.png b/zh-cn/application-dev/reference/arkui-ts/figures/ColoringStrategy_circle.png index 1ea0edb63c1effab0ff368714baeece62b0cf49f..f6d647ade1752d4bae6894107225194e931ab1d2 100644 Binary files a/zh-cn/application-dev/reference/arkui-ts/figures/ColoringStrategy_circle.png and b/zh-cn/application-dev/reference/arkui-ts/figures/ColoringStrategy_circle.png differ diff --git a/zh-cn/application-dev/reference/arkui-ts/figures/TextInput.png b/zh-cn/application-dev/reference/arkui-ts/figures/TextInput.png index 517cbbcea01c161bb449c67d36e6cb0c199b1bd0..5cf143cfc6e55192d403bc175e8f68042a73c426 100644 Binary files a/zh-cn/application-dev/reference/arkui-ts/figures/TextInput.png and b/zh-cn/application-dev/reference/arkui-ts/figures/TextInput.png differ diff --git a/zh-cn/application-dev/reference/arkui-ts/figures/TextPickerDialog.gif b/zh-cn/application-dev/reference/arkui-ts/figures/TextPickerDialog.gif index a913a9cad96d3c92b87254dd865cdab992c5cfda..6c0ffa35f1466e6b1cf131d3542e8600beb1769f 100644 Binary files a/zh-cn/application-dev/reference/arkui-ts/figures/TextPickerDialog.gif and b/zh-cn/application-dev/reference/arkui-ts/figures/TextPickerDialog.gif differ diff --git a/zh-cn/application-dev/reference/arkui-ts/figures/search.gif b/zh-cn/application-dev/reference/arkui-ts/figures/search.gif index c3634a5bf5c0ca3fadf53824008ae708085aab52..55a1d7cd80558d4719945687c9bca6f936ad98fb 100644 Binary files a/zh-cn/application-dev/reference/arkui-ts/figures/search.gif and b/zh-cn/application-dev/reference/arkui-ts/figures/search.gif differ diff --git a/zh-cn/application-dev/reference/arkui-ts/figures/testlinearGradientBlur.png b/zh-cn/application-dev/reference/arkui-ts/figures/testlinearGradientBlur.png index 31670804a45639913c06b482dfe421277a2c0b3b..0112ac3dfd4a9845a5a74650e7d8d4c2b0a4fa8a 100644 Binary files a/zh-cn/application-dev/reference/arkui-ts/figures/testlinearGradientBlur.png and b/zh-cn/application-dev/reference/arkui-ts/figures/testlinearGradientBlur.png differ diff --git a/zh-cn/application-dev/reference/arkui-ts/figures/testlinearGradientBlurOrigin.png b/zh-cn/application-dev/reference/arkui-ts/figures/testlinearGradientBlurOrigin.png new file mode 100644 index 0000000000000000000000000000000000000000..402bfedf4f8940e0cfb427c73105c23317007bb9 Binary files /dev/null and b/zh-cn/application-dev/reference/arkui-ts/figures/testlinearGradientBlurOrigin.png differ diff --git a/zh-cn/application-dev/reference/arkui-ts/figures/textArea.gif b/zh-cn/application-dev/reference/arkui-ts/figures/textArea.gif index 8755838d74172fea4d02464a9a78afcec4fd8ed7..ef7df38544b8be55e23605472c684f950d018aa9 100644 Binary files a/zh-cn/application-dev/reference/arkui-ts/figures/textArea.gif and b/zh-cn/application-dev/reference/arkui-ts/figures/textArea.gif differ diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-basic-components-image.md b/zh-cn/application-dev/reference/arkui-ts/ts-basic-components-image.md index c8834c00fb076dec7a9bdb42ed31cf518a76d7a3..27bb137e22b08e699b83d2f52f5949d6a6f70b58 100755 --- a/zh-cn/application-dev/reference/arkui-ts/ts-basic-components-image.md +++ b/zh-cn/application-dev/reference/arkui-ts/ts-basic-components-image.md @@ -31,7 +31,7 @@ Image组件加载图片失败或图片尺寸为0时,图片组件大小自动 | 参数名 | 参数类型 | 必填 | 参数描述 | | ------ | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | -| src | [PixelMap](../apis/js-apis-image.md#pixelmap7) \| [ResourceStr](ts-types.md#resourcestr)\| [DrawableDescriptor](../apis/js-apis-arkui-drawableDescriptor.md#drawabledescriptor) | 是 | 图片的数据源,支持本地图片和网络图片,引用方式请参考[加载图片资源](../../ui/arkts-graphics-display.md#加载图片资源)。
1. PixelMap格式为像素图,常用于图片编辑的场景。
2. ResourceStr包含Resource和string格式。
string格式可用于加载网络图片和本地图片,常用于加载网络图片。当使用相对路径引用本地图片时,例如Image("common/test.jpg"),不支持跨包/跨模块调用该Image组件,建议使用Resource格式来管理需全局使用的图片资源。
- 支持`Base64`字符串。格式`data:image/[png\|jpeg\|bmp\|webp];base64,[base64 data]`, 其中`[base64 data]`为`Base64`字符串数据。
- 支持file://路径前缀的字符串。用于读取本应用安装目录下files文件夹下的图片资源。需要保证目录包路径下的文件有可读权限。
Resource格式可以跨包/跨模块访问资源文件,是访问本地图片的推荐方式。
3. 当传入资源id或name为普通图片时,生成DrawableDescriptor对象。
**说明:**
- ArkTS卡片上支持gif图片格式动效,但仅在显示时播放一次。
- ArkTS卡片上不支持http://等网络相关路径前缀和file://路径前缀的字符串。
- ArkTS卡片上不支持 [PixelMap](../apis/js-apis-image.md#pixelmap7)类型。
- 加载本地图片过程中,如果对图片进行修改或者替换,可能会引起应用崩溃。因此需要覆盖图片文件时,应该先删除该文件再重新创建一个同名文件。
- 网络图片必须支持RFC 9113标准,否则会导致加载失败。| +| src | [PixelMap](../apis/js-apis-image.md#pixelmap7) \| [ResourceStr](ts-types.md#resourcestr)\| [DrawableDescriptor](../apis/js-apis-arkui-drawableDescriptor.md#drawabledescriptor) | 是 | 图片的数据源,支持本地图片和网络图片,引用方式请参考[加载图片资源](../../ui/arkts-graphics-display.md#加载图片资源)。
1. PixelMap格式为像素图,常用于图片编辑的场景。
2. ResourceStr包含Resource和string格式。
string格式可用于加载网络图片和本地图片,常用于加载网络图片。当使用相对路径引用本地图片时,例如Image("common/test.jpg"),不支持跨包/跨模块调用该Image组件,建议使用Resource格式来管理需全局使用的图片资源。
- 支持`Base64`字符串。格式`data:image/[png\|jpeg\|bmp\|webp];base64,[base64 data]`, 其中`[base64 data]`为`Base64`字符串数据。
- 支持file://路径前缀的字符串,[应用沙箱URI](../apis/js-apis-file-fileuri.md#constructor10):file://\/\。用于读取本应用安装目录下files文件夹下的图片资源。需要保证目录包路径下的文件有可读权限。
Resource格式可以跨包/跨模块访问资源文件,是访问本地图片的推荐方式。
3. 当传入资源id或name为普通图片时,生成DrawableDescriptor对象。
**说明:**
- ArkTS卡片上支持gif图片格式动效,但仅在显示时播放一次。
- ArkTS卡片上不支持http://等网络相关路径前缀和file://路径前缀的字符串。
- ArkTS卡片上不支持 [PixelMap](../apis/js-apis-image.md#pixelmap7)类型。
- 加载本地图片过程中,如果对图片进行修改或者替换,可能会引起应用崩溃。因此需要覆盖图片文件时,应该先删除该文件再重新创建一个同名文件。
- 网络图片必须支持RFC 9113标准,否则会导致加载失败。| ## 属性 diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-basic-components-richeditor.md b/zh-cn/application-dev/reference/arkui-ts/ts-basic-components-richeditor.md index 0ce352d7340dfc94cac55303f8b468bad6b6927e..da48fcdc7f99f706eb1502ac4214f2fdfaa9dc44 100755 --- a/zh-cn/application-dev/reference/arkui-ts/ts-basic-components-richeditor.md +++ b/zh-cn/application-dev/reference/arkui-ts/ts-basic-components-richeditor.md @@ -36,8 +36,8 @@ RichEditor(value: RichEditorOptions) | 名称 | 参数类型 | 描述 | | ------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | | customKeyboard | [CustomBuilder](ts-types.md#custombuilder8) | 设置自定义键盘。
**说明:**
当设置自定义键盘时,输入框激活后不会打开系统输入法,而是加载指定的自定义组件。
自定义键盘的高度可以通过自定义组件根节点的height属性设置,宽度不可设置,使用系统默认值。
自定义键盘采用覆盖原始界面的方式呈现,不会对应用原始界面产生压缩或者上提。
自定义键盘无法获取焦点,但是会拦截手势事件。
默认在输入控件失去焦点时,关闭自定义键盘。 | -| bindSelectionMenu | {
spantype: [RichEditorSpanType](#richeditorspantype),
content: [CustomBuilder](ts-types.md#custombuilder8),
responseType: [ResponseType](ts-appendix-enums.md#responsetype8) \| [RichEditorResponseType11+](ts-appendix-enums.md#richeditorresponsetype11),
options?: [SelectionMenuOptions](#selectionmenuoptions)
} | 设置自定义选择菜单。
默认值:{
spanType: RichEditorSpanType:TEXT
responseType: ResponseType.LongPress
其他:空
}| -| copyOptions | [CopyOptions](ts-appendix-enums.md#copyoptions9) | 组件支持设置文本内容是否可复制粘贴。
默认值:CopyOptions.LocalDevice
**说明:**
设置copyOptions为CopyOptions.InApp或者CopyOptions.LocalDevice,长按组件内容,会弹出文本默认选择菜单,可选中内容并进行复制、全选操作。
设置copyOptions为CopyOptions.None,复制、剪切功能不生效。 | +| bindSelectionMenu | {
spantype: [RichEditorSpanType](#richeditorspantype),
content: [CustomBuilder](ts-types.md#custombuilder8),
responseType: [ResponseType](ts-appendix-enums.md#responsetype8) \| [RichEditorResponseType11+](ts-appendix-enums.md#richeditorresponsetype11),
options?: [SelectionMenuOptions](#selectionmenuoptions11)
} | 设置自定义选择菜单。
默认值:{
spanType: RichEditorSpanType:TEXT
responseType: ResponseType.LongPress
其他:空
}| +| copyOptions | [CopyOptions](ts-appendix-enums.md#copyoptions9) | 组件支持设置文本内容是否可复制粘贴。
默认值:CopyOptions.LocalDevice
**说明:**
copyOptions不为CopyOptions.None时,长按组件内容,会弹出文本选择弹框。如果通过bindSelectionMenu等方式自定义文本选择菜单,则会弹出自定义的菜单。
设置copyOptions为CopyOptions.None,复制、剪切功能不生效。 | ## 事件 除支持[通用事件](ts-universal-events-click.md)外,还支持以下事件: @@ -45,12 +45,12 @@ RichEditor(value: RichEditorOptions) | 名称 | 功能描述 | | ------------------------------------------------------------ | ------------------------------------------------------------ | | onReady(callback: () => void) | 富文本组件初始化完成后,触发回调。 | -| onSelect(callback: (value: [RichEditorSelection](#richeditorselection)) => void) | 鼠标左键按下选择,松开左键后触发回调。
- 用手指选择时,松开手指触发回调。
- value:选中的所有span信息。 | +| onSelect(callback: (value: [RichEditorSelection](#richeditorselection)) => void) | 鼠标左键按下选择,松开左键后触发回调。
用手指选择时,松开手指触发回调。
- value:选中的所有span信息。 | | aboutToIMEInput(callback: (value: [RichEditorInsertValue](#richeditorinsertvalue)) => boolean) | 输入法输入内容前,触发回调。
- value:输入法将要输入内容信息。| | onIMEInputComplete(callback: (value: [RichEditorTextSpanResult](#richeditortextspanresult)) => void) | 输入法输完成输入后,触发回调。
- value:输入法完成输入后的文本Span信息。 | | aboutToDelete(callback: (value: [RichEditorDeleteValue](#richeditordeletevalue)) => boolean) | 输入法删除内容前,触发回调。
- value:准备删除的内容所在的文本Span信息。| | onDeleteComplete(callback: () => void) | 输入法完成删除后,触发回调。 | -| onPaste11+(callback: (event?: [PasteEvent](#pasteevent)) => void) | 完成粘贴前,触发回调。
**说明:**
系统的默认粘贴和拖拽行为,只支持纯文本的粘贴。
开发者可以通过该方法,覆盖系统默认行为,实现图文的粘贴。| +| onPaste11+(callback: (event?: [PasteEvent](#pasteevent11)) => void) | 完成粘贴前,触发回调。
**说明:**
系统的默认粘贴和拖拽行为,只支持纯文本的粘贴。
开发者可以通过该方法,覆盖系统默认行为,实现图文的粘贴。| ## RichEditorInsertValue @@ -318,7 +318,7 @@ getParagraphs(value?: RichEditorRange): Array\ | 类型 | 说明 | | ----------------------- | ---------------- | -| Array\<[RichEditorParagraphResult](#richeditorparagraphresult11) | 选中段落的信息。 | +| Array\<[RichEditorParagraphResult](#richeditorparagraphresult11)> | 选中段落的信息。 | ### closeSelectionMenu diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-basic-components-search.md b/zh-cn/application-dev/reference/arkui-ts/ts-basic-components-search.md index da98bce0af48ee9a109fcdd774493001471f493e..a57dc9460933c10e4a24c45a5394f6de29483a2d 100755 --- a/zh-cn/application-dev/reference/arkui-ts/ts-basic-components-search.md +++ b/zh-cn/application-dev/reference/arkui-ts/ts-basic-components-search.md @@ -183,6 +183,7 @@ getCaretOffset(): CaretOffset > - 返回的位置信息是相对Search组件中搜索图标的偏移值。 > - 不输入文本时,返回值中有相对Search组件的位置信息。 > - 返回值中的位置信息是光标相对于可编辑组件的位置。 +> - 在当前帧更新光标位置同时调用该接口,该接口不生效。 ## 示例 @@ -199,7 +200,7 @@ struct SearchExample { controller: SearchController = new SearchController() build() { - Column() { + Column({space: 10}) { Text('onSubmit:' + this.submitValue).fontSize(18).margin(15) Text('onChange:' + this.changeValue).fontSize(18).margin(15) Search({ value: this.changeValue, placeholder: 'Type to search...', controller: this.controller }) @@ -221,6 +222,9 @@ struct SearchExample { .onClick(() => { // 设置光标位置到输入的第一个字符后 this.controller.caretPosition(1) + }) + Button('Get CaretOffset') + .onClick(() => { this.positionInfo = this.controller.getCaretOffset() }) }.width('100%') diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-basic-components-text.md b/zh-cn/application-dev/reference/arkui-ts/ts-basic-components-text.md index 45d125c4af7ae601c60ed5bd8bea0227d197393c..eca3b4b34e22a196edf648ae5525579ba4e3c711 100644 --- a/zh-cn/application-dev/reference/arkui-ts/ts-basic-components-text.md +++ b/zh-cn/application-dev/reference/arkui-ts/ts-basic-components-text.md @@ -46,7 +46,7 @@ Text(content?: string | Resource) | heightAdaptivePolicy10+ | [TextHeightAdaptivePolicy](ts-appendix-enums.md#textheightadaptivepolicy10) | 设置文本自适应高度的方式。
默认值:TextHeightAdaptivePolicy.MAX_LINES_FIRST。
**说明:**
当设置为TextHeightAdaptivePolicy.MAX_LINES_FIRST时,优先使用`maxLines`属性来调整文本高度。如果使用`maxLines`属性的布局大小超过了布局约束,则尝试在`minFontSize`和`maxFontSize`的范围内缩小字体以显示更多文本。
当设置为TextHeightAdaptivePolicy.MIN_FONT_SIZE_FIRST时,优先使用`minFontSize`属性来调整文本高度。如果使用`minFontSize`属性可以将文本布局在一行中,则尝试在`minFontSize`和`maxFontSize`的范围内增大字体并使用最大可能的字体大小。
当设置为TextHeightAdaptivePolicy.LAYOUT_CONSTRAINT_FIRST时,优先使用布局约束来调整文本高度。如果布局大小超过布局约束,则尝试在`minFontSize`和`maxFontSize`的范围内缩小字体以满足布局约束。如果将字体大小缩小到`minFontSize`后,布局大小仍然超过布局约束,则删除超过布局约束的行。| | textIndent10+ | number \| string | 设置首行文本缩进,默认值0。 | | font10+ | [Font](ts-types.md#font) | 设置文本样式。包括字体大小、字体粗细、字体族和字体风格。 | -| wordBreak11+ | [WorkBreak](ts-appendix-enums.md#wordbreak11) | 设置断行规则。
默认值:WordBreak.BREAK_WORD
**说明:**
从API version 11开始,该接口支持在ArkTS卡片中使用。
WordBreak.BREAK_ALL与{overflow: TextOverflow.Ellipsis},`maxLines`组合使用可实现英文单词按字母截断,超出部分以省略号显示| +| wordBreak11+ | [WordBreak](ts-appendix-enums.md#wordbreak11) | 设置断行规则。
默认值:WordBreak.BREAK_WORD
**说明:**
从API version 11开始,该接口支持在ArkTS卡片中使用。
WordBreak.BREAK_ALL与{overflow: TextOverflow.Ellipsis},`maxLines`组合使用可实现英文单词按字母截断,超出部分以省略号显示| | selection11+ |(selectionStart: number, selectionEnd: number)| 设置选中区域。选中区域高亮且显示手柄和文本选择菜单。
默认值:(-1,-1)
**说明:**
从API version 11开始,该接口支持在ArkTS卡片中使用。
当`copyOption`设置为CopyOptions.None时,设置`selection`属性不生效。
当`overflow`设置为TextOverflow.Marquee时,设置`selection`属性不生效。
当`selectionStart`大于等于`selectionEnd`时不选中。可选范围为[0, textSize],textSize为文本内容最大字符数,入参小于0处理为0,大于textSize处理为textSize。
当`selectionStart`或`selectionEnd`在截断不可见区域时不选中。截断为false时超出父组件的文本选中区域生效。| | ellipsisMode11+ |[EllipsisMode](ts-appendix-enums.md#ellipsismode11)| 设置省略位置。
默认值:EllipsisMode.END
**说明:**
从API version 11开始,该接口支持在ArkTS卡片中使用。
当`ellipsisMode`设置为EllipsisMode.END,需要配合`overflow`设置为TextOverflow.Ellipsis以及maxLines使用,单独设置`ellipsisMode`属性不生效。
EllipsisMode.START和EllipsisMode.CENTER仅在单行超长文本生效。| @@ -54,7 +54,7 @@ Text(content?: string | Resource) > > 不支持Text内同时存在文本内容和Span或ImageSpan子组件。如果同时存在,只显示Span或ImageSpan内的内容。 > -> 通用属性中形状裁剪[clip](ts-universal-attributes-sharp-clipping.md#clip)属性,不支持在Text组件中使用。 +> 通用属性中形状裁剪[clip](ts-universal-attributes-sharp-clipping.md#clip)属性,在Text组件中,默认值为true,即文本内容大于组件内容时,文本会截断。如果需要显示超出的部分,可以设置clip为false。 ## 事件 diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-basic-components-textarea.md b/zh-cn/application-dev/reference/arkui-ts/ts-basic-components-textarea.md index e7f0e24a015b7c89e0df20bd377be66eeeb3919b..118b005611f7765081ad401763853c6246d4bd52 100755 --- a/zh-cn/application-dev/reference/arkui-ts/ts-basic-components-textarea.md +++ b/zh-cn/application-dev/reference/arkui-ts/ts-basic-components-textarea.md @@ -40,7 +40,7 @@ TextArea(value?:{placeholder?: ResourceStr, text?: ResourceStr, controller?: Tex | inputFilter8+ | {
value: [ResourceStr](ts-types.md#resourcestr),
error?: (value: string) => void
} | 通过正则表达式设置输入过滤器。匹配表达式的输入允许显示,不匹配的输入将被过滤。仅支持单个字符匹配,不支持字符串匹配。
- value:设置正则表达式。
- error:正则匹配失败时,返回被过滤的内容。 | | copyOption9+ | [CopyOptions](ts-appendix-enums.md#copyoptions9) | 设置输入的文本是否可复制。
默认值:CopyOptions.LocalDevice,支持设备内复制。
设置CopyOptions.None时,当前TextArea中的文字无法被复制或剪切,仅支持粘贴。
| | maxLength10+ | number | 设置文本的最大输入字符数。
默认不设置最大输入字符数限制。
到达文本最大字符限制,将无法继续输入字符,同时边框变为红色。 | -| showCounter10+ | value: boolean, options11+?: [InputCounterOptions](ts-basic-components-textinput.md#inputcounteroptions11对象说明) | 参数value为true时,文本框开启计数下标功能,且在此前提下才能设置options。文本框开启计数下标功能,需要配合maxlength(设置最大字符限制)一起使用,字符计数器显示的效果是当前输入字符数/最大可输入字符数。例如开发者设置最大字符数,options为50,当用户输入字符数达到最大字符限制乘50%时,显示字符计数器。 | +| showCounter10+ | value: boolean, options11+?: [InputCounterOptions](ts-basic-components-textinput.md#inputcounteroptions11对象说明) | 参数value为true时,文本框开启计数下标功能,且在此前提下才能设置options。文本框开启计数下标功能,需要配合maxlength(设置最大字符限制)一起使用,字符计数器显示的效果是当前输入字符数/最大可输入字符数。例如开发者设置最大字符数,options为50,当用户输入字符数达到最大字符限制乘50%时,显示字符计数器。内联模式和密码模式下字符计数器不显示。 | | style10+ | [TextContentStyle](ts-appendix-enums.md#textcontentstyle10) | 设置文本框多态样式。
默认值:TextContentStyle.DEFAULT | | enableKeyboardOnFocus10+ | boolean | TextArea获焦时,是否绑定输入法
默认值:true。从API version 10开始,获焦默认绑定输入法。 | | selectionMenuHidden10+ | boolean | 设置长按输入框或者右键输入框时,是否弹出文本选择菜单。
默认值:false | @@ -171,6 +171,10 @@ getCaretOffset(): CaretOffset | ----------------------- | ---------------- | | [CaretOffset](ts-basic-components-textinput.md#caretoffset11对象说明) | 光标相对输入框的位置。 | +> **说明:** +> +> - 在当前帧更新光标位置同时调用该接口,该接口不生效。 + ## 示例 ### 示例1 @@ -208,6 +212,11 @@ struct TextAreaExample { .onClick(() => { // 设置光标位置到第一个字符后 this.controller.caretPosition(1) + }) + Button('Get CaretOffset') + .backgroundColor('#007DFF') + .margin(15) + .onClick(() => { this.positionInfo = this.controller.getCaretOffset() }) }.width('100%').height('100%').backgroundColor('#F1F3F5') diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-basic-components-textinput.md b/zh-cn/application-dev/reference/arkui-ts/ts-basic-components-textinput.md index ada9fbae1677ec0d1583ab6eed8746b2de67b443..6b2c15c7f124a454a65e7370626a83eb52340549 100644 --- a/zh-cn/application-dev/reference/arkui-ts/ts-basic-components-textinput.md +++ b/zh-cn/application-dev/reference/arkui-ts/ts-basic-components-textinput.md @@ -57,7 +57,7 @@ TextInput(value?:{placeholder?: ResourceStr, text?: ResourceStr, controller?: Te | passwordRules11+ | string | 定义生成密码的规则。 | | cancelButton11+ | {
style? : [CancelButtonStyle](ts-basic-components-search.md#cancelbuttonstyle10枚举说明)
icon?: [IconOptions](ts-basic-components-search.md#iconoptions10对象说明)
} | 设置右侧清除按钮样式。
默认值:
{
style:CancelButtonStyle.INPUT
} | | selectAll11+ | boolean | 初始状态,是否全选文本。
默认值:false | -| showCounter11+ | value: boolean, options?: [InputCounterOptions](#inputcounteroptions11对象说明) | 参数value为true时,才能设置options,文本框开启计数下标功能,需要配合maxlength(设置最大字符限制)一起使用。字符计数器显示的效果是当前输入字符数/最大可输入字符数。当输入字符数大于最大字符数乘百分比值时,显示字符计数器。 | +| showCounter11+ | value: boolean, options?: [InputCounterOptions](#inputcounteroptions11对象说明) | 参数value为true时,才能设置options,文本框开启计数下标功能,需要配合maxlength(设置最大字符限制)一起使用。字符计数器显示的效果是当前输入字符数/最大可输入字符数。当输入字符数大于最大字符数乘百分比值时,显示字符计数器。内联模式和密码模式下字符计数器不显示。 | | | | | > **说明:** > [通用属性padding](ts-universal-attributes-size.md)的默认值为:
{
 top: 8 vp,
 right: 16 vp,
 bottom: 8 vp,
 left: 16 vp
} @@ -209,6 +209,10 @@ getCaretOffset(): CaretOffset | ----------------------- | ---------------- | | [CaretOffset](#caretoffset11对象说明) | 光标相对输入框的位置。 | +> **说明:** +> +> - 在当前帧更新光标位置同时调用该接口,该接口不生效。 + ## CaretOffset11+对象说明 | 参数名 | 类型 | 描述 | | ----- | ------ | ----------------- | @@ -241,7 +245,7 @@ struct TextInputExample { .placeholderColor(Color.Grey) .placeholderFont({ size: 14, weight: 400 }) .caretColor(Color.Blue) - .width(400) + .width(300) .height(40) .margin(20) .fontSize(14) @@ -258,11 +262,15 @@ struct TextInputExample { .onClick(() => { // 将光标移动至第一个字符后 this.controller.caretPosition(1) + }) + Button('Get CaretOffset') + .margin(15) + .onClick(() => { this.positionInfo = this.controller.getCaretOffset() }) // 密码输入框 TextInput({ placeholder: 'input your password...' }) - .width(400) + .width(300) .height(40) .margin(20) .type(InputType.Password) @@ -270,7 +278,7 @@ struct TextInputExample { .showPasswordIcon(true) // 内联风格输入框 TextInput({ text: 'inline style' }) - .width(400) + .width(300) .height(50) .margin(20) .borderRadius(0) diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-composite-components-selecttitlebar.md b/zh-cn/application-dev/reference/arkui-ts/ts-composite-components-selecttitlebar.md index 409914be5dab257323fc67c0295ab89672fbdced..c7571697c03f6a1dbaae14f9604dae1a3731d8ed 100644 --- a/zh-cn/application-dev/reference/arkui-ts/ts-composite-components-selecttitlebar.md +++ b/zh-cn/application-dev/reference/arkui-ts/ts-composite-components-selecttitlebar.md @@ -61,28 +61,28 @@ SelectTitleBar({selected: number, options: Array<SelectOption>, menuItems? import { SelectTitleBar } from "@ohos.arkui.advanced.SelectTitleBar" import promptAction from '@ohos.promptAction' +class menuItems { + value: Resource; + isEnabled: boolean; + action: () => void + + constructor(value: Resource,isEnabled: boolean,action: () => void) { + this.value = value + this.isEnabled = isEnabled + this.action = action + } +} + @Entry @Component struct Index { - menuItems: { - value: Resource, - isEnabled: boolean, - action: () => void - }[] = - [ - { isEnabled: true, value: $r('app.media.ic_public_save'), - action: () => promptAction.showToast({ message: "show toast index 1" }) - }, - { isEnabled: true, value: $r('app.media.ic_public_reduce'), - action: () => promptAction.showToast({ message: "show toast index 2" }) - }, - { isEnabled: true, value: $r('app.media.ic_public_edit'), - action: () => promptAction.showToast({ message: "show toast index 3" }) - }, - { isEnabled: true, value: $r('app.media.ic_public_reduce'), - action: () => promptAction.showToast({ message: "show toast index 4" }) - } - ] + private menuItems:Array = + [ + new menuItems($r('app.media.ic_public_save'),true,() => promptAction.showToast({ message: "show toast index 1" })), + new menuItems($r('app.media.ic_public_reduce'),true,() => promptAction.showToast({ message: "show toast index 2" })), + new menuItems($r('app.media.ic_public_edit'),true,() => promptAction.showToast({ message: "show toast index 3" })), + new menuItems($r('app.media.ic_public_reduce'),true,() => promptAction.showToast({ message: "show toast index 4" })) + ] build() { Row() { diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-composite-components-tabtitlebar.md b/zh-cn/application-dev/reference/arkui-ts/ts-composite-components-tabtitlebar.md index a8c55ebeacec5ed5a020f9281eee22cff985a094..67cf846659f88ae452dd7eaeed02990a0e09ae0d 100644 --- a/zh-cn/application-dev/reference/arkui-ts/ts-composite-components-tabtitlebar.md +++ b/zh-cn/application-dev/reference/arkui-ts/ts-composite-components-tabtitlebar.md @@ -67,6 +67,25 @@ TabTitleBar({tabItems: Array<TabTitleBarTabItem>, menuItems?: Array<Tab import { TabTitleBar } from "@ohos.arkui.advanced.TabTitleBar" import promptAction from '@ohos.promptAction' +class tabItem { + title: ResourceStr; + icon?: ResourceStr; + constructor(title: ResourceStr,icon?: ResourceStr) { + this.title = title + this.icon = icon + } +} +class menuItem{ + value: ResourceStr; + isEnabled?: boolean; + action?: ()=>void; + constructor(value: ResourceStr,isEnabled?: boolean,action?: ()=>void) { + this.value = value; + this.isEnabled = isEnabled; + this.action = action; + } +} + @Entry @Component struct Index { @@ -109,34 +128,15 @@ struct Index { .backgroundColor("#3498DB") } - private readonly tabItems: { - title: ResourceStr, - icon?: ResourceStr - }[] = - [ - { title: "页签1" }, - { title: "页签2" }, - { title: "页签3" }, - { title: "Happy", - icon: $r('app.media.emoji_happy') }, - { title: "页签4" }, - ] - private readonly menuItems: { - value: Resource, - isEnabled: boolean, - action: () => void - }[] = - [ - { isEnabled: true, value: $r('app.media.ic_public_reduce'), - action: () => promptAction.showToast({ message: "on item click! index 0" }) - }, - { isEnabled: true, value: $r('app.media.ic_public_edit'), - action: () => promptAction.showToast({ message: "on item click! index 1" }) - }, - { isEnabled: true, value: $r('app.media.ic_public_save'), - action: () => promptAction.showToast({ message: "on item click! index 2" }) - } - ] + private readonly tabItems: Array = [new tabItem('页签1'),new tabItem('页签2'),new tabItem('页签3'),new tabItem("Happy",$r('app.media.emoji_happy'))] + private readonly menuItems: Array = [ + new menuItem($r('app.media.ic_public_reduce'),true, + () => promptAction.showToast({ message: "on item click! index 0" })), + new menuItem($r('app.media.ic_public_edit'),true, + () => promptAction.showToast({ message: "on item click! index 1" })), + new menuItem($r('app.media.ic_public_save'),true, + () => promptAction.showToast({ message: "on item click! index 2" })) + ] build() { Row() { diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-container-relativecontainer.md b/zh-cn/application-dev/reference/arkui-ts/ts-container-relativecontainer.md index d0cd0b1766f4c46222d8a2c36bf2c30ec066fd03..c0ccbade3d707909be6ddce05c7aea601b397c05 100644 --- a/zh-cn/application-dev/reference/arkui-ts/ts-container-relativecontainer.md +++ b/zh-cn/application-dev/reference/arkui-ts/ts-container-relativecontainer.md @@ -15,9 +15,9 @@ * 垂直方向为top, center, bottom,对应容器的VerticalAlign.Top, VerticalAlign.Center, VerticalAlign.Bottom。 * 子组件可以将容器或者其他子组件设为锚点: * 参与相对布局的容器内组件必须设置id,不设置id的组件不显示,容器id固定为__container__。 - * 此子组件某一方向上的三个位置可以将容器或其他子组件的同方向三个位置为锚点,同方向上设置两个以上锚点的优先级。水平方向Start和Center优先,垂直方向Top和Center优先。 - * 前端页面设置的子组件尺寸大小不会受到相对布局规则的影响。子组件某个方向上设置两个或以上alignRules时不建议设置此方向尺寸大小。 - * 对齐后需要额外偏移可设置offset。 + * 此子组件某一方向上的三个位置(水平方向为left、middle、right,垂直方向为top、center、bottom)可以指定容器或其他子组件同方向的三个位置(水平方向为HorizontalAlign.Start、HorizontalAlign.Center、HorizontalAlign.End,垂直方向为VerticalAlign.Top、VerticalAlign.Center、VerticalAlign.Bottom)为锚点。若同方向上设置两个以上锚点,水平方向Start和Center优先,垂直方向Top和Center优先。例如,水平方向上指定了left以容器的HorizontalAlign.Start为锚点,middle以容器的HorizontalAlign.Center为锚点,又指定right的锚点为容器的HorizontalAlign.End,当组件的width和容器的width不能同时满足3条约束规则时,优先取Start和Center的约束规则。 + * 当同时存在前端页面设置的子组件尺寸和相对布局规则时,子组件的绘制尺寸取决于约束规则。从API Version 11开始,该规则发生变化,子组件绘制尺寸取决于前端页面设置的尺寸。 + * 对齐后需要额外偏移可设置offset(API Version 11上新增了bias, 不再使用offset设置额外偏移)。 * 特殊情况 * 互相依赖,环形依赖时容器内子组件全部不绘制。 * 同方向上两个以上位置设置锚点但锚点位置逆序时此子组件大小为0,即不绘制。 diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-methods-textpicker-dialog.md b/zh-cn/application-dev/reference/arkui-ts/ts-methods-textpicker-dialog.md index bf9b59ab48de229b3768777a3cab2377f7bbb362..54f7cf983e4e55de201ae9f85678a42b315d9385 100755 --- a/zh-cn/application-dev/reference/arkui-ts/ts-methods-textpicker-dialog.md +++ b/zh-cn/application-dev/reference/arkui-ts/ts-methods-textpicker-dialog.md @@ -49,13 +49,14 @@ show(options?: TextPickerDialogOptions) @Entry @Component struct TextPickerDialogExample { - private select: number | number[] = 2 + private select: number | number[] = 0 private fruits: string[] = ['apple1', 'orange2', 'peach3', 'grape4', 'banana5'] + @State v:string = ''; build() { Row() { Column() { - Button("TextPickerDialog") + Button("TextPickerDialog:" + this.v) .margin(20) .onClick(() => { TextPickerDialog.show({ @@ -67,6 +68,9 @@ struct TextPickerDialogExample { onAccept: (value: TextPickerResult) => { // 设置select为按下确定按钮时候的选中项index,这样当弹窗再次弹出时显示选中的是上一次确定的选项 this.select = value.index + console.log(this.select + '') + // 点击确定后,被选到的文本数据展示到页面 + this.v = value.value as string console.info("TextPickerDialog:onAccept()" + JSON.stringify(value)) }, onCancel: () => { diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-universal-attributes-background.md b/zh-cn/application-dev/reference/arkui-ts/ts-universal-attributes-background.md index 0211b581eb66767e94022ecd49d54a9deeef36e2..9ac1075661852388364cc31290e7577669d6c08b 100644 --- a/zh-cn/application-dev/reference/arkui-ts/ts-universal-attributes-background.md +++ b/zh-cn/application-dev/reference/arkui-ts/ts-universal-attributes-background.md @@ -16,7 +16,7 @@ | backgroundImageSize | {
width?: [Length](ts-types.md#length),
height?: [Length](ts-types.md#length)
} \| [ImageSize](ts-appendix-enums.md#imagesize) | 设置背景图像的高度和宽度。当输入为{width: Length, height: Length}对象时,如果只设置一个属性,则第二个属性保持图片原始宽高比进行调整。默认保持原图的比例不变。
width和height取值范围: [0, +∞)
默认值:ImageSize.Auto
从API version 9开始,该接口支持在ArkTS卡片中使用。
**说明:**
设置为小于0的值时,按值为0显示。当设置了height未设置width时,width根据图片原始宽高比进行调整。 | | backgroundImagePosition | [Position](ts-types.md#position8) \| [Alignment](ts-appendix-enums.md#alignment) | 设置背景图在组件中显示位置,即相对于组件左上角的坐标。
默认值:
{
x: 0,
y: 0
}
x和y值设置百分比时,偏移量是相对组件自身宽高计算的。
从API version 9开始,该接口支持在ArkTS卡片中使用。 | | backgroundBlurStyle9+ | value:[BlurStyle](ts-appendix-enums.md#blurstyle9),
options10+?:[BackgroundBlurStyleOptions](#backgroundblurstyleoptions10对象说明) | 为当前组件提供一种在背景和内容之间的模糊能力。
value: 背景模糊样式。模糊样式中封装了模糊半径、蒙版颜色、蒙版透明度、饱和度、亮度五个参数。
options: 可选参数,背景模糊选项。
该接口支持在ArkTS卡片中使用。 | -| backgroundEffect11+ | blurOptions:[BackgroundEffectOptions](ts-appendix-enums.md#backgroundbrightnessoptions11) | 设置组件背景属性包括:饱和度,亮度,颜色。 | +| backgroundEffect11+ | blurOptions:[BackgroundBrightnessOptions](ts-appendix-enums.md#backgroundbrightnessoptions11) | 设置组件背景属性包括:饱和度,亮度,颜色。 | ## BackgroundBlurStyleOptions10+对象说明 diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-universal-attributes-image-effect.md b/zh-cn/application-dev/reference/arkui-ts/ts-universal-attributes-image-effect.md index 187eb50529faa486a1faf689be034f5c78dacbd2..4767a0ec6cf50ee0a851f1c2be1bb7424408e767 100644 --- a/zh-cn/application-dev/reference/arkui-ts/ts-universal-attributes-image-effect.md +++ b/zh-cn/application-dev/reference/arkui-ts/ts-universal-attributes-image-effect.md @@ -12,8 +12,8 @@ | 名称 | 参数类型 | 默认值 | 描述 | | -------------------------------- | ---------------------------------------- | ------ | ---------------------------------------- | -| blur | number | [BlurOptions](ts-appendix-enums.md#bluroptions11)11+ | - | 为当前组件添加内容模糊效果,入参为模糊半径,模糊半径越大越模糊,为0时不模糊。
取值范围:[0, +∞)
从API version 9开始,该接口支持在ArkTS卡片中使用。 | -| backdropBlur | number | [BlurOptions](ts-appendix-enums.md#bluroptions11)11+ | - | 为当前组件添加背景模糊效果,入参为模糊半径,模糊半径越大越模糊,为0时不模糊。
取值范围:[0, +∞)
从API version 9开始,该接口支持在ArkTS卡片中使用。 | +| blur | (number ,?[BlurOptions](ts-appendix-enums.md#bluroptions11)11+) | - | number:当前组件添加内容模糊效果,入参为模糊半径,模糊半径越大越模糊,为0时不模糊。
取值范围:[0, +∞)
[BlurOptions](ts-appendix-enums.md#bluroptions11)11+:灰阶梯参数。
从API version 9开始,该接口支持在ArkTS卡片中使用。 | +| backdropBlur | (number , ?[BlurOptions](ts-appendix-enums.md#bluroptions11)11+) | - | number:为当前组件添加背景模糊效果,入参为模糊半径,模糊半径越大越模糊,为0时不模糊。
取值范围:[0, +∞)。
[BlurOptions](ts-appendix-enums.md#bluroptions11)11+:灰阶梯参数。
从API version 9开始,该接口支持在ArkTS卡片中使用。 | | shadow | [ShadowOptions](#shadowoptions对象说明) \| [ShadowStyle](#shadowstyle10枚举说明)10+ | - | 为当前组件添加阴影效果。
入参类型为ShadowOptions时,可以指定模糊半径、阴影的颜色、X轴和Y轴的偏移量。
入参类型为ShadowStyle时,可指定不同阴影样式。
从API version 9开始,该接口支持在ArkTS卡片中使用,ArkTS卡片上不支持参数为 [ShadowStyle](#shadowstyle10枚举说明)类型。 | | grayscale | number | 0.0 | 为当前组件添加灰度效果。值定义为灰度转换的比例,入参1.0则完全转为灰度图像,入参则0.0图像无变化,入参在0.0和1.0之间时,效果呈线性变化。(百分比)
取值范围:[0, 1]
**说明:**
设置小于0的值时,按值为0处理,设置大于1的值时,按值为1处理。
从API version 9开始,该接口支持在ArkTS卡片中使用。 | | brightness | number | 1.0 | 为当前组件添加高光效果,入参为高光比例,值为1时没有效果,小于1时亮度变暗,0为全黑,大于1时亮度增加,数值越大亮度越大。
取值范围:[0, +∞)
**说明:**
设置小于0的值时,按值为0处理。
从API version 9开始,该接口支持在ArkTS卡片中使用。 | @@ -26,7 +26,7 @@ | sphericalEffect10+ | number | - | 设置组件的图像球面化程度。
取值范围:[0,1]。
**说明:**
1. 如果value等于0则图像保持原样,如果value等于1则图像为完全球面化效果。在0和1之间,数值越大,则球面化程度越高。
`value < 0 `或者` value > 1`为异常情况,`value < 0`按0处理,`value > 1`按1处理。
2. 如果组件的图像使用异步加载,则不支持球面效果。例如Image组件默认使用异步加载,如果要使用球面效果,就要设置`syncLoad`为`true`,但是这种做法不推荐。`backgroundImage`也是使用异步加载,所以如果设置了`backgroundImage`,不支持球面效果。
3. 如果组件设置了阴影,不支持球面效果。
**系统接口:** 此接口为系统接口。 | | lightUpEffect10+ | number | - | 设置组件图像亮起程度。
取值范围:[0,1]。
如果value等于0则图像为全黑,如果value等于1则图像为全亮效果。0到1之间数值越大,表示图像亮度越高。`value < 0` 或者 `value > 1`为异常情况,`value < 0`按0处理,`value > 1`按1处理。
**系统接口:** 此接口为系统接口。 | | pixelStretchEffect10+ | [PixelStretchEffectOptions](ts-types.md#pixelstretcheffectoptions10) | - | 设置组件的图像边缘像素扩展距离。
参数`options`包括上下左右四个方向的边缘像素扩展距离。
**说明:**
1. 如果距离为正值,表示向外扩展,放大原来图像大小。上下左右四个方向分别用边缘像素填充,填充的距离即为设置的边缘扩展的距离。
2. 如果距离为负值,表示内缩,但是最终图像大小不变。
内缩方式:
图像根据`options`的设置缩小,缩小大小为四个方向边缘扩展距离的绝对值。
图像用边缘像素扩展到原来大小。
3. 对`options`的输入约束:
上下左右四个方向的扩展统一为非正值或者非负值。即四个边同时向外扩或者内缩,方向一致。
所有方向的输入均为百分比或者具体值,不支持百分比和具体值混用。
所有异常情况下,显示为{0,0,0,0}效果,即跟原图保持一致。
**系统接口:** 此接口为系统接口。 | -| linearGradientBlur10+ |
value: number,
{
fractionStops:Array\<[FractionStop]()>,
direction:[GradientDirection](ts-appendix-enums.md#gradientdirection)
}
| - | 为当前组件添加内容线性渐变模糊效果,
-value为模糊半径,模糊半径越大越模糊,为0时不模糊。取值范围:[0, 60]
线性梯度模糊包含两个部分fractionStops和direction
-fractionStops数组中保存的每一个二元数组(取值0-1,小于0则为0,大于0则为1)表示[模糊程度, 模糊位置];模糊位置需严格递增,开发者传入的数据不符合规范会记录日志,渐变模糊数组中二元数组个数必须大于等于2,否则渐变模糊不生效
-direction为渐变模糊方向,默认值为[GradientDirection](ts-appendix-enums.md#gradientdirection).Bottom
从API version 10开始,该接口支持在ArkTS卡片中使用。 | +| linearGradientBlur10+ |
value: number,
{
fractionStops:Array\<[FractionStop]()>,
direction:[GradientDirection](ts-appendix-enums.md#gradientdirection)
}
| - | 为当前组件添加内容线性渐变模糊效果,
-value为模糊半径,模糊半径越大越模糊,为0时不模糊。取值范围:[0, 60]
线性梯度模糊包含两个部分fractionStops和direction
-fractionStops数组中保存的每一个二元数组(取值0-1,小于0则为0,大于0则为1)表示[模糊程度, 模糊位置];模糊位置需严格递增,开发者传入的数据不符合规范会记录日志,渐变模糊数组中二元数组个数必须大于等于2,否则渐变模糊不生效
-direction为渐变模糊方向,默认值为[GradientDirection](ts-appendix-enums.md#gradientdirection).Bottom。 | | renderGroup10+ | boolean | false | 设置当前控件和子控件是否先整体离屏渲染绘制后再与父控件融合绘制。当前控件的不透明度不为1时绘制效果可能有差异。 | | blendMode11+ | value: [BlendMode](#blendmode枚举说明) |BlendMode.NORMAL| 将当前控件背景与子节点内容进行混合,
**说明:**
-value为混合模式,不同的模式控制不同的混合方式从而产生不同的效果,默认值为BlendMode.NORMAL
**注意事项:**
1、实现效果只需要一层blend,不推荐blendMode嵌套使用,会影响性能且效果可能不正常
2、SOURCE_IN和DESTINATION_IN混合模式只适用于alpha通道存在的图像,即包含透明度信息的图像。如果图像没有alpha通道,则无法使用这两种混合模式。
从API version 11开始,该接口支持在ArkTS卡片中使用。 | @@ -363,7 +363,7 @@ right:-10,bottom:-10 })`,则缩小后的大小为`(100-10-10)*(100-10-10)`, @Entry @Component struct ImageExample1 { - private_resource1:Resource = $r('app.media.1') + private_resource1:Resource = $r('app.media.testlinearGradientBlurOrigin') @State image_src: Resource = this.private_resource1 build() { Column() { diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-universal-attributes-location.md b/zh-cn/application-dev/reference/arkui-ts/ts-universal-attributes-location.md index 415ee72196769040ffca4b510fce570c5181dc07..9675c9838991cc200102c5a351d10302f4f0b42b 100644 --- a/zh-cn/application-dev/reference/arkui-ts/ts-universal-attributes-location.md +++ b/zh-cn/application-dev/reference/arkui-ts/ts-universal-attributes-location.md @@ -17,7 +17,7 @@ | position | [Position](ts-types.md#position8) | 绝对定位,设置元素左上角相对于父容器左上角偏移位置。在布局容器中,设置该属性不参与父容器布局,即不占位,仅在绘制时进行位置调整。
适用于置顶显示、悬浮按钮等组件在父容器中位置固定的场景。
从API version 9开始,该接口支持在ArkTS卡片中使用。 | | markAnchor | [Position](ts-types.md#position8) | 设置元素在位置定位时的锚点,以元素左上角作为基准点进行偏移。通常配合position和offset属性使用,单独使用时,效果类似offset
API version 9及以前,默认值为:
{
x: 0,
y: 0
}
API version 10:无默认值。
从API version 9开始,该接口支持在ArkTS卡片中使用。 | | offset | [Position](ts-types.md#position8) | 相对定位,设置元素相对于自身的偏移量。设置该属性后子组件正常参与父容器布局,在绘制时基于父容器给予的offset做一次额外的偏移。
API version 9及以前,默认值为:
{
x: 0,
y: 0
}
API version 10:无默认值。
从API version 9开始,该接口支持在ArkTS卡片中使用。 | -| alignRules9+ | {
left?: { anchor: string, align: [HorizontalAlign](ts-appendix-enums.md#horizontalalign) };
right?: { anchor: string, align: [HorizontalAlign](ts-appendix-enums.md#horizontalalign) };
middle?: { anchor: string, align: [HorizontalAlign](ts-appendix-enums.md#horizontalalign) };
top?: { anchor: string, align: [VerticalAlign](ts-appendix-enums.md#verticalalign) };
bottom?: { anchor: string, align: [VerticalAlign](ts-appendix-enums.md#verticalalign) };
center?: { anchor: string, align: [VerticalAlign](ts-appendix-enums.md#verticalalign) }
} | 指定相对容器的对齐规则,仅当父容器为[RelativeContainer](ts-container-relativecontainer.md)时生效。
- left:设置左对齐参数。
- right:设置右对齐参数。
- middle:设置中间对齐的参数。
- top:设置顶部对齐的参数。
- bottom:设置底部对齐的参数。
- center:设置中心对齐的参数。
该接口支持在ArkTS卡片中使用。
**说明:**
- anchor:设置作为锚点的组件的id值。
- align:设置相对于锚点组件的对齐方式。 | +| alignRules9+ | {
left?: { anchor: string, align: [HorizontalAlign](ts-appendix-enums.md#horizontalalign) };
right?: { anchor: string, align: [HorizontalAlign](ts-appendix-enums.md#horizontalalign) };
middle?: { anchor: string, align: [HorizontalAlign](ts-appendix-enums.md#horizontalalign) };
top?: { anchor: string, align: [VerticalAlign](ts-appendix-enums.md#verticalalign) };
bottom?: { anchor: string, align: [VerticalAlign](ts-appendix-enums.md#verticalalign) };
center?: { anchor: string, align: [VerticalAlign](ts-appendix-enums.md#verticalalign) }
};
bias?: { horizontal: number, vertical: number } | 指定相对容器的对齐规则,仅当父容器为[RelativeContainer](ts-container-relativecontainer.md)时生效。
- left:设置左对齐参数。
- right:设置右对齐参数。
- middle:设置中间对齐的参数。
- top:设置顶部对齐的参数。
- bottom:设置底部对齐的参数。
- center:设置中心对齐的参数。
- bias:设置组件在锚点约束下的偏移参数,其值为到左/上侧锚点的距离与锚点间总距离的比值
该接口支持在ArkTS卡片中使用。
**说明:**
- anchor:设置作为锚点的组件的id值。
- align:设置相对于锚点组件的对齐方式。
- horizontal:水平方向上的bias值。
- vertical:垂直方向上的bias值。 | ## 示例 diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-universal-attributes-sheet-transition.md b/zh-cn/application-dev/reference/arkui-ts/ts-universal-attributes-sheet-transition.md index 80528104f0220cef3dac0925c444e057da5cd432..791d39dbb35fb5326423fc6af83eb1e1039ee15c 100644 --- a/zh-cn/application-dev/reference/arkui-ts/ts-universal-attributes-sheet-transition.md +++ b/zh-cn/application-dev/reference/arkui-ts/ts-universal-attributes-sheet-transition.md @@ -22,7 +22,7 @@ | 名称 | 类型 | 必填 | 描述 | | --------------- | ---------------------------------------- | ---- | --------------- | -| height | [SheetSize](#sheetsize) \| [Length](ts-types.md#length) | 否 | 半模态高度,默认是LARGE。
**说明:**
底部弹窗竖屏时,当设置sheetDetents时,该属性设置无效。
底部弹窗横屏时,该属性设置无效。
居中弹窗和跟手弹窗设置类型为SheetSize无效,显示默认高度。 | +| height | [SheetSize](#sheetsize) \| [Length](ts-types.md#length) | 否 | 半模态高度,默认是LARGE。
**说明:**
底部弹窗竖屏时,当设置sheetDetents时,该属性设置无效。
底部弹窗横屏时,该属性设置无效。
居中弹窗和跟手弹窗设置类型为SheetSize.LARGE和SheetSize.MUDIUM无效,显示默认高度。 | | detents11+ | [([SheetSize.LARGE](#sheetsize) \|[SheetSize.MEDIUM](#sheetsize) \| [Length](ts-types.md#length)), ([SheetSize.LARGE](#sheetsize)\| [SheetSize.MEDIUM](#sheetsize)\| [Length](ts-types.md#length)), ([SheetSize.LARGE](#sheetsize) \| [SheetSize.MEDIUM](#sheetsize)\| [Length](ts-types.md#length))?] | 否 | 半模态页面的切换高度档位。
**说明:**
底部弹窗竖屏生效,元组中第一个高度为初始高度。 | | type11+ | [SheetType.CENTER](#sheettype11)\| [SheetType.POPUP](#sheettype11) | 否 | 半模态页面的样式。 | | showClose11+ | boolean \| [Resource](ts-types.md#resource) | 否 | 是否显示关闭图标,默认显示。
**说明:**
Resource需要为boolean类型。 | diff --git a/zh-cn/application-dev/reference/errorcodes/errorcode-dlp.md b/zh-cn/application-dev/reference/errorcodes/errorcode-dlp.md index 77ef17540dff4ef0b83f40571a4e8d2ec71e79bf..3e5c10548a60c1d68b533dd8c0daa2dbe509c93b 100644 --- a/zh-cn/application-dev/reference/errorcodes/errorcode-dlp.md +++ b/zh-cn/application-dev/reference/errorcodes/errorcode-dlp.md @@ -273,6 +273,81 @@ Out of memory. 系统内存不足,请稍后重试,或者重启设备。 +## 19100013 用户无权限 + +**错误信息** + +User has no permission. + +**错误描述** + +用户无权限。 + +**处理步骤** + +请检查权限。 + + +## 19100014 账号未登录 + +**错误信息** + +Account not login. + +**错误描述** + +账号未登录。 + +**处理步骤** + +请登录账号。 + + +## 19100015 系统需要升级 + +**错误信息** + +System need to be upgraded. + +**错误描述** + +系统需要升级。 + +**处理步骤** + +请升级系统。 + + +## 19100016 want参数中没有uri + +**错误信息** + +Uri does not exist in want. + +**错误描述** + +want参数中没有uri。 + +**处理步骤** + +请传入正确的参数。 + + +## 19100017 want参数中parameters内没有displayName + +**错误信息** + +DisplayName does not exist in want (under parameters). + +**错误描述** + +want参数中parameters内没有displayName。 + +**处理步骤** + +请传入正确的参数。 + + ## 19100019 DLP文件已过期 **错误信息** diff --git a/zh-cn/application-dev/reference/errorcodes/errorcode-net-mdns.md b/zh-cn/application-dev/reference/errorcodes/errorcode-net-mdns.md index 3578cc6a5775252a1f3e85f85cb8d52008823782..f389e132635b4760aacd855d2aa450133403948a 100644 --- a/zh-cn/application-dev/reference/errorcodes/errorcode-net-mdns.md +++ b/zh-cn/application-dev/reference/errorcodes/errorcode-net-mdns.md @@ -62,6 +62,24 @@ callback 已经存在。 检查mDNS服务是否存在。 +## 2204007 服务已存在 + +**错误信息** + +Service instance duplicated. + +**错误描述** + +服务已存在。 + +**可能原因** + +之前注册的服务还在运行。 + +**处理步骤** + +检查mDNS服务是否存在。 + ## 2204008 删除服务失败 **错误信息** diff --git a/zh-cn/application-dev/reference/native-apis/Readme-CN.md b/zh-cn/application-dev/reference/native-apis/Readme-CN.md index c16660bd2e5f938fd14791d912b1bca71f275d84..3a53ff9bd7232d791253a9ae960d6e3206acee66 100644 --- a/zh-cn/application-dev/reference/native-apis/Readme-CN.md +++ b/zh-cn/application-dev/reference/native-apis/Readme-CN.md @@ -27,6 +27,7 @@ - [OHAudio](_o_h_audio.md) - [AVScreenCapture](_a_v_screen_capture.md) - [OH_Camera](_o_h___camera.md) + - [AVPlayer](_a_v_player.md) - [HuksKeyApi](_huks_key_api.md) - [HuksParamSetApi](_huks_param_set_api.md) - [HuksTypeApi](_huks_type_api.md) @@ -36,6 +37,7 @@ - [Hitrace](_hitrace.md) - [Vulkan](_vulkan.md) - [Bundle](_bundle.md) + - [HidDdk](_hid_ddk.md) - 头文件 - [drawing_bitmap.h](drawing__bitmap_8h.md) - [drawing_brush.h](drawing__brush_8h.md) @@ -100,6 +102,8 @@ - [photo_output.h](photo__output_8h.md) - [preview_output.h](preview__output_8h.md) - [video_output.h](video__output_8h.md) + - [avplayer.h](avplayer_8h.md) + - [avplayer_base.h](avplayer__base_8h.md) - [native_huks_api.h](native__huks__api_8h.md) - [native_huks_param.h](native__huks__param_8h.md) - [native_huks_type.h](native__huks__type_8h.md) @@ -117,6 +121,8 @@ - [usb_ddk_types.h](usb__ddk__types_8h.md) - [trace.h](trace_8h.md) - [vulkan_ohos.h](vulkan__ohos_8h.md) + - [hid_ddk_api.h](hid__ddk__api_8h.md) + - [hid_ddk_types.h](hid__ddk__types_8h.md) - 结构体 - [OH_Drawing_BitmapFormat](_o_h___drawing___bitmap_format.md) - [OH_NativeBuffer_Config](_o_h___native_buffer___config.md) @@ -192,6 +198,7 @@ - [PhotoOutput_Callbacks](_photo_output___callbacks.md) - [PreviewOutput_Callbacks](_preview_output___callbacks.md) - [VideoOutput_Callbacks](_video_output___callbacks.md) + - [AVPlayerCallback](_a_v_player_callback.md) - [OH_Huks_Blob](_o_h___huks___blob.md) - [OH_Huks_CertChain](_o_h___huks___cert_chain.md) - [OH_Huks_KeyInfo](_o_h___huks___key_info.md) @@ -235,3 +242,11 @@ - [VkNativeBufferPropertiesOHOS](_vk_native_buffer_properties_o_h_o_s.md) - [VkNativeBufferUsageOHOS](_vk_native_buffer_usage_o_h_o_s.md) - [VkSurfaceCreateInfoOHOS](_vk_surface_create_info_o_h_o_s.md) + - [Hid_AbsAxesArray](_hid___abs_axes_array.md) + - [Hid_Device](_hid___device.md) + - [Hid_EmitItem](_hid___emit_item.md) + - [Hid_EventProperties](_hid___event_properties.md) + - [Hid_EventTypeArray](_hid___event_type_array.md) + - [Hid_KeyCodeArray](_hid___key_code_array.md) + - [Hid_MscEventArray](_hid___msc_event_array.md) + - [Hid_RelAxesArray](_hid___rel_axes_array.md) diff --git a/zh-cn/application-dev/reference/native-apis/_a_v_player.md b/zh-cn/application-dev/reference/native-apis/_a_v_player.md new file mode 100644 index 0000000000000000000000000000000000000000..a9cf3e3646c7fd0252735641b470cf19da840bf9 --- /dev/null +++ b/zh-cn/application-dev/reference/native-apis/_a_v_player.md @@ -0,0 +1,1072 @@ +# AVPlayer + + +## 概述 + +为媒体源提供播放能力的API。 + +**系统能力:** SystemCapability.Multimedia.Media.AVPlayer + +**起始版本:** 11 + + +## 汇总 + + +### 文件 + +| 名称 | 描述 | +| -------- | -------- | +| [avplayer.h](avplayer_8h.md) | 定义avplayer接口。使用AVPlayer提供的Native API播放媒体源。 | +| [avplayer_base.h](avplayer__base_8h.md) | 定义AVPlayer的结构体和枚举。 | + + +### 结构体 + +| 名称 | 描述 | +| -------- | -------- | +| [AVPlayerCallback](_a_v_player_callback.md) | OH_AVPlayer中所有回调函数指针的集合。 | + + +### 类型定义 + +| 名称 | 描述 | +| -------- | -------- | +| [AVPlayerState](#avplayerstate) | 播放状态 | +| [AVPlayerSeekMode](#avplayerseekmode) | 跳转模式 | +| [AVPlaybackSpeed](#avplaybackspeed) | 播放速度 | +| [AVPlayerOnInfoType](#avplayeroninfotype) | OnInfo类型 | +| (\*[OH_AVPlayerOnInfo](#oh_avplayeroninfo)) (OH_AVPlayer \*player, [AVPlayerOnInfoType](#avplayeroninfotype) type, int32_t extra) | 收到播放器消息时调用。 | +| (\*[OH_AVPlayerOnError](#oh_avplayeronerror)) (OH_AVPlayer \*player, int32_t errorCode, const char \*errorMsg) | 在API 9以上的版本发生错误时调用 | +| [AVPlayerCallback](#avplayercallback) | OH_AVPlayer中所有回调函数指针的集合。 | + + +### 枚举 + +| 名称 | 描述 | +| -------- | -------- | +| [AVPlayerState](#avplayerstate) {
AV_IDLE = 0, AV_INITIALIZED = 1, AV_PREPARED = 2, AV_PLAYING = 3,
AV_PAUSED = 4, AV_STOPPED = 5, AV_COMPLETED = 6, AV_RELEASED = 7,
AV_ERROR = 8
} | 播放状态 | +| [AVPlayerSeekMode](#avplayerseekmode) { AV_SEEK_NEXT_SYNC = 0, AV_SEEK_PREVIOUS_SYNC } | 跳转模式 | +| [AVPlaybackSpeed](#avplaybackspeed) {
AV_SPEED_FORWARD_0_75_X, AV_SPEED_FORWARD_1_00_X, AV_SPEED_FORWARD_1_25_X, AV_SPEED_FORWARD_1_75_X,
AV_SPEED_FORWARD_2_00_X
} | 播放速度 | +| [AVPlayerOnInfoType](#avplayeroninfotype) {
AV_INFO_TYPE_SEEKDONE = 0, AV_INFO_TYPE_SPEEDDONE = 1, AV_INFO_TYPE_BITRATEDONE = 2, AV_INFO_TYPE_EOS = 3,
AV_INFO_TYPE_STATE_CHANGE = 4, AV_INFO_TYPE_POSITION_UPDATE = 5, AV_INFO_TYPE_MESSAGE = 6, AV_INFO_TYPE_VOLUME_CHANGE = 7,
AV_INFO_TYPE_RESOLUTION_CHANGE = 8, AV_INFO_TYPE_BUFFERING_UPDATE = 9, AV_INFO_TYPE_BITRATE_COLLECT = 10, AV_INFO_TYPE_INTERRUPT_EVENT = 11,
AV_INFO_TYPE_DURATION_UPDATE = 12, AV_INFO_TYPE_IS_LIVE_STREAM = 13, AV_INFO_TYPE_TRACKCHANGE = 14, AV_INFO_TYPE_TRACK_INFO_UPDATE = 15,
AV_INFO_TYPE_SUBTITLE_UPDATE = 16
} | OnInfo类型 | + + +### 函数 + +| 名称 | 描述 | +| -------- | -------- | +| \*[OH_AVPlayer_Create](#oh_avplayer_create) (void) | 创建播放器。 | +| [OH_AVPlayer_SetURLSource](#oh_avplayer_seturlsource) (OH_AVPlayer \*player, const char \*url) | 设置播放器的播放源。对应的源可以是http url。 | +| [OH_AVPlayer_SetFDSource](#oh_avplayer_setfdsource) (OH_AVPlayer \*player, int32_t fd, int64_t offset, int64_t size) | 设置播放器的播放媒体文件描述符来源。 | +| [OH_AVPlayer_Prepare](#oh_avplayer_prepare) (OH_AVPlayer \*player) | 准备播放环境,异步缓存媒体数据。 | +| [OH_AVPlayer_Play](#oh_avplayer_play) (OH_AVPlayer \*player) | 开始播放。 | +| [OH_AVPlayer_Pause](#oh_avplayer_pause) (OH_AVPlayer \*player) | 暂停播放。 | +| [OH_AVPlayer_Stop](#oh_avplayer_stop) (OH_AVPlayer \*player) | 停止播放。 | +| [OH_AVPlayer_Reset](#oh_avplayer_reset) (OH_AVPlayer \*player) | 将播放器恢复到初始状态。 | +| [OH_AVPlayer_Release](#oh_avplayer_release) (OH_AVPlayer \*player) | 异步释放播放器资源。 | +| [OH_AVPlayer_ReleaseSync](#oh_avplayer_releasesync) (OH_AVPlayer \*player) | 同步释放播放器资源。 | +| [OH_AVPlayer_SetVolume](#oh_avplayer_setvolume) (OH_AVPlayer \*player, float leftVolume, float rightVolume) | 设置播放器的音量。 | +| [OH_AVPlayer_Seek](#oh_avplayer_seek) (OH_AVPlayer \*player, int32_t mSeconds, [AVPlayerSeekMode](#avplayerseekmode) mode) | 改变播放位置。 | +| [OH_AVPlayer_GetCurrentTime](#oh_avplayer_getcurrenttime) (OH_AVPlayer \*player, int32_t \*currentTime) | 获取播放位置,精确到毫秒。 | +| [OH_AVPlayer_GetVideoWidth](#oh_avplayer_getvideowidth) (OH_AVPlayer \*player, int32_t \*videoWidth) | 获取视频宽度。 | +| [OH_AVPlayer_GetVideoHeight](#oh_avplayer_getvideoheight) (OH_AVPlayer \*player, int32_t \*videoHeight) | 获取视频高度。 | +| [OH_AVPlayer_SetPlaybackSpeed](#oh_avplayer_setplaybackspeed) (OH_AVPlayer \*player, [AVPlaybackSpeed](#avplaybackspeed) speed) | 设置播放器播放速率。 | +| [OH_AVPlayer_GetPlaybackSpeed](#oh_avplayer_getplaybackspeed) (OH_AVPlayer \*player, [AVPlaybackSpeed](#avplaybackspeed) \*speed) | 获取当前播放器播放速率。 | +| [OH_AVPlayer_SelectBitRate](#oh_avplayer_selectbitrate) (OH_AVPlayer \*player, uint32_t bitRate) | 设置hls播放器使用的码率。 | +| [OH_AVPlayer_SetVideoSurface](#oh_avplayer_setvideosurface) (OH_AVPlayer \*player, OHNativeWindow \*window) | 设置播放画面窗口。 | +| [OH_AVPlayer_GetDuration](#oh_avplayer_getduration) (OH_AVPlayer \*player, int32_t \*duration) | 获取媒体文件的总时长,精确到毫秒。 | +| [OH_AVPlayer_GetState](#oh_avplayer_getstate) (OH_AVPlayer \*player, [AVPlayerState](#avplayerstate) \*state) | 获取当前播放状态。 | +| [OH_AVPlayer_IsPlaying](#oh_avplayer_isplaying) (OH_AVPlayer \*player) | 判断播放器是否在播放。 | +| [OH_AVPlayer_IsLooping](#oh_avplayer_islooping) (OH_AVPlayer \*player) | 判断是用循环播放。 | +| [OH_AVPlayer_SetLooping](#oh_avplayer_setlooping) (OH_AVPlayer \*player, bool loop) | 设置循环播放。 | +| [OH_AVPlayer_SetPlayerCallback](#oh_avplayer_setplayercallback) (OH_AVPlayer \*player, [AVPlayerCallback](_a_v_player_callback.md) callback) | 设置播放器回调方法。 | +| [OH_AVPlayer_SelectTrack](#oh_avplayer_selecttrack) (OH_AVPlayer \*player, int32_t index) | 选择音频或字幕轨道。 | +| [OH_AVPlayer_DeselectTrack](#oh_avplayer_deselecttrack) (OH_AVPlayer \*player, int32_t index) | 取消选择当前音频或字幕轨道。 | +| [OH_AVPlayer_GetCurrentTrack](#oh_avplayer_getcurrenttrack) (OH_AVPlayer \*player, int32_t trackType, int32_t \*index) | 获取当前有效的轨道索引。 | + + +### 变量 + +| 名称 | 描述 | +| -------- | -------- | +| [AVPlayerCallback::onInfo](#oninfo) | 监听AVPlayer过程信息,参考[OH_AVPlayerOnInfo](#oh_avplayeroninfo)。 | +| [AVPlayerCallback::onError](#onerror) | 监听AVPlayer操作错误,参考[OH_AVPlayerOnError](#oh_avplayeronerror)。 | + + +## 类型定义说明 + + +### AVPlaybackSpeed + +``` +typedef enum AVPlaybackSpeedAVPlaybackSpeed +``` + +**描述** + +播放速度 + +**系统能力:** SystemCapability.Multimedia.Media.AVPlayer + +**起始版本:** 11 + + +### AVPlayerCallback + +``` +typedef struct AVPlayerCallbackAVPlayerCallback +``` + +**描述** + +OH_AVPlayer中所有回调函数指针的集合。注册此的实例结构体到OH_AVPlayer实例中,并对回调上报的信息进行处理,保证AVPlayer的正常运行。 + +**系统能力:** SystemCapability.Multimedia.Media.AVPlayer + +**起始版本:** 11 + + +### AVPlayerOnInfoType + +``` +typedef enum AVPlayerOnInfoTypeAVPlayerOnInfoType +``` + +**描述** + +OnInfo类型 + +**系统能力:** SystemCapability.Multimedia.Media.AVPlayer + +**起始版本:** 11 + + +### AVPlayerSeekMode + +``` +typedef enum AVPlayerSeekModeAVPlayerSeekMode +``` + +**描述** + +跳转模式 + +**系统能力:** SystemCapability.Multimedia.Media.AVPlayer + +**起始版本:** 11 + + +### AVPlayerState + +``` +typedef enum AVPlayerStateAVPlayerState +``` + +**描述** + +播放状态 + +**系统能力:** SystemCapability.Multimedia.Media.AVPlayer + +**起始版本:** 11 + + +### OH_AVPlayerOnError + +``` +typedef void(* OH_AVPlayerOnError) (OH_AVPlayer *player, int32_t errorCode, const char *errorMsg) +``` + +**描述** + +在API9以上的版本发生错误时调用。 + +**系统能力:** SystemCapability.Multimedia.Media.AVPlayer + +**起始版本:** 11 + +**参数:** + +| 名称 | 描述 | +| -------- | -------- | +| player | 指向OH_AVPlayer实例的指针 | +| errorCode | 错误码 | +| errorMsg | 错误消息 | + + +### OH_AVPlayerOnInfo + +``` +typedef void(* OH_AVPlayerOnInfo) (OH_AVPlayer *player, AVPlayerOnInfoType type, int32_t extra) +``` + +**描述** + +收到播放器消息时调用。 + +**系统能力:** SystemCapability.Multimedia.Media.AVPlayer + +**起始版本:** 11 + +**参数:** + +| 名称 | 描述 | +| -------- | -------- | +| player | 指向OH_AVPlayer实例的指针。 | +| type | 信息类型。具体请参见[AVPlayerOnInfoType](#avplayeroninfotype)。 | +| extra | 其他信息,如播放文件的开始时间位置。 | + + +## 枚举类型说明 + + +### AVPlaybackSpeed + +``` +enum AVPlaybackSpeed +``` + +**描述** + +播放速度 + +**系统能力:** SystemCapability.Multimedia.Media.AVPlayer + +**起始版本:** 11 + +| 枚举值 | 描述 | +| -------- | -------- | +| AV_SPEED_FORWARD_0_75_X | 0.75倍速播放 | +| AV_SPEED_FORWARD_1_00_X | 正常播放 | +| AV_SPEED_FORWARD_1_25_X | 1.25倍速播放 | +| AV_SPEED_FORWARD_1_75_X | 1.75倍速播放 | +| AV_SPEED_FORWARD_2_00_X | 2.0倍速播放 | + + +### AVPlayerOnInfoType + +``` +enum AVPlayerOnInfoType +``` + +**描述** + +OnInfo类型 + +**系统能力:** SystemCapability.Multimedia.Media.AVPlayer + +**起始版本:** 11 + +| 枚举值 | 描述 | +| -------- | -------- | +| AV_INFO_TYPE_SEEKDONE | 跳转到对应播放位置时返回消息。 | +| AV_INFO_TYPE_SPEEDDONE | 速率设置完成时返回消息。 | +| AV_INFO_TYPE_BITRATEDONE | 比特率设置完成时返回消息。 | +| AV_INFO_TYPE_EOS | 播放完成时返回消息。 | +| AV_INFO_TYPE_STATE_CHANGE | 状态改变时返回消息。 | +| AV_INFO_TYPE_POSITION_UPDATE | 返回当前播放位置。 | +| AV_INFO_TYPE_MESSAGE | 返回播放消息。 | +| AV_INFO_TYPE_VOLUME_CHANGE | 音量改变时返回消息。 | +| AV_INFO_TYPE_RESOLUTION_CHANGE | 首次获取视频大小或视频大小更新时返回消息。 | +| AV_INFO_TYPE_BUFFERING_UPDATE | 返回多队列缓冲时间。 | +| AV_INFO_TYPE_BITRATE_COLLECT | 返回hls比特率。 | +| AV_INFO_TYPE_INTERRUPT_EVENT | 音频焦点改变时返回消息。 | +| AV_INFO_TYPE_DURATION_UPDATE | 返回播放时长。 | +| AV_INFO_TYPE_IS_LIVE_STREAM | 播放为直播流时返回消息。 | +| AV_INFO_TYPE_TRACKCHANGE | 轨道改变时返回消息。 | +| AV_INFO_TYPE_TRACK_INFO_UPDATE | 字幕轨信息更新时返回消息。 | +| AV_INFO_TYPE_SUBTITLE_UPDATE | 返回字幕信息。 | + + +### AVPlayerSeekMode + +``` +enum AVPlayerSeekMode +``` + +**描述** + +跳转模式 + +**系统能力:** SystemCapability.Multimedia.Media.AVPlayer + +**起始版本:** 11 + +| 枚举值 | 描述 | +| -------- | -------- | +| AV_SEEK_NEXT_SYNC | 同步到时间点之后的关键帧。 | +| AV_SEEK_PREVIOUS_SYNC | 同步到时间点之前的关键帧。 | + + +### AVPlayerState + +``` +enum AVPlayerState +``` + +**描述** + +播放状态 + +**系统能力:** SystemCapability.Multimedia.Media.AVPlayer + +**起始版本:** 11 + +| 枚举值 | 描述 | +| -------- | -------- | +| AV_IDLE | 空闲 | +| AV_INITIALIZED | 初始化 | +| AV_PREPARED | 准备 | +| AV_PLAYING | 播放 | +| AV_PAUSED | 暂停 | +| AV_STOPPED | 停止 | +| AV_COMPLETED | 结束 | +| AV_RELEASED | 释放 | +| AV_ERROR | 错误 | + + +## 函数说明 + + +### OH_AVPlayer_Create() + +``` +OH_AVPlayer* OH_AVPlayer_Create (void ) +``` + +**描述** + +创建播放器。 + +**系统能力:** SystemCapability.Multimedia.Media.AVPlayer + +**起始版本:** 11 + +**返回:** + +返回指向OH_AVPlayer实例的指针 + + +### OH_AVPlayer_DeselectTrack() + +``` +OH_AVErrCode OH_AVPlayer_DeselectTrack (OH_AVPlayer * player, int32_t index ) +``` + +**描述** + +取消选择当前音频或字幕轨道。 + +**系统能力:** SystemCapability.Multimedia.Media.AVPlayer + +**起始版本:** 11 + +**参数:** + +| 名称 | 描述 | +| -------- | -------- | +| player | 指向OH_AVPlayer实例的指针 | +| index | 索引 | + +**返回:** + +如果成功返回**AV_ERR_OK**;否则返回在**native_averrors.h**中定义的错误代码。 + + +### OH_AVPlayer_GetCurrentTime() + +``` +OH_AVErrCode OH_AVPlayer_GetCurrentTime (OH_AVPlayer * player, int32_t * currentTime ) +``` + +**描述** + +获取播放位置,精确到毫秒。 + +**系统能力:** SystemCapability.Multimedia.Media.AVPlayer + +**起始版本:** 11 + +**参数:** + +| 名称 | 描述 | +| -------- | -------- | +| player | 指向OH_AVPlayer实例的指针 | +| currentTime | 播放位置 | + +**返回:** + +如果获取当前位置,则返回**AV_ERR_OK**;否则返回在**native_averrors.h**中定义的错误代码。 + + +### OH_AVPlayer_GetCurrentTrack() + +``` +OH_AVErrCode OH_AVPlayer_GetCurrentTrack (OH_AVPlayer * player, int32_t trackType, int32_t * index ) +``` + +**描述** + +获取当前有效的轨道索引。 + +请将其设置为准备/正在播放/暂停/完成状态。 + +**系统能力:** SystemCapability.Multimedia.Media.AVPlayer + +**起始版本:** 11 + +**参数:** + +| 名称 | 描述 | +| -------- | -------- | +| player | 指向OH_AVPlayer实例的指针 | +| trackType | 媒体类型 | +| index | 索引 | + +**返回:** + +成功返回**AV_ERR_OK**,否则返回在**native_averrors.h**中定义的错误代码。 + + +### OH_AVPlayer_GetDuration() + +``` +OH_AVErrCode OH_AVPlayer_GetDuration (OH_AVPlayer * player, int32_t * duration ) +``` + +**描述** + +获取媒体文件的总时长,精确到毫秒。 + +**系统能力:** SystemCapability.Multimedia.Media.AVPlayer + +**起始版本:** 11 + +**参数:** + +| 名称 | 描述 | +| -------- | -------- | +| player | 指向OH_AVPlayer实例的指针 | +| duration | 媒体文件的总时长 | + +**返回:** + +如果获取当前时长,则返回**AV_ERR_OK**,否则返回在**native_averrors.h**中定义的错误代码。 + + +### OH_AVPlayer_GetPlaybackSpeed() + +``` +OH_AVErrCode OH_AVPlayer_GetPlaybackSpeed (OH_AVPlayer * player, AVPlaybackSpeed * speed ) +``` + +**描述** + +获取当前播放器播放速率。 + +**系统能力:** SystemCapability.Multimedia.Media.AVPlayer + +**起始版本:** 11 + +**参数:** + +| 名称 | 描述 | +| -------- | -------- | +| player | 指向OH_AVPlayer实例的指针 | +| speed | 可以获取的速率模式[AVPlaybackSpeed](#avplaybackspeed) | + +**返回:** + +获取播放速率成功返回**AV_ERR_OK**,否则返回在**native_averrors.h**中定义的错误代码。 + + +### OH_AVPlayer_GetState() + +``` +OH_AVErrCode OH_AVPlayer_GetState (OH_AVPlayer * player, AVPlayerState * state ) +``` + +**描述** + +获取当前播放状态。 + +**系统能力:** SystemCapability.Multimedia.Media.AVPlayer + +**起始版本:** 11 + +**参数:** + +| 名称 | 描述 | +| -------- | -------- | +| player | 指向OH_AVPlayer实例的指针 | +| state | 当前播放状态 | + +**返回:** + +如果获取当前播放状态,则返回**AV_ERR_OK**;否则返回在**native_averrors.h**中定义的错误代码。 + + +### OH_AVPlayer_GetVideoHeight() + +``` +OH_AVErrCode OH_AVPlayer_GetVideoHeight (OH_AVPlayer * player, int32_t * videoHeight ) +``` + +**描述** + +获取视频高度。 + +**系统能力:** SystemCapability.Multimedia.Media.AVPlayer + +**起始版本:** 11 + +**参数:** + +| 名称 | 描述 | +| -------- | -------- | +| player | 指向OH_AVPlayer实例的指针 | +| videoHeights | 视频高度 | + +**返回:** + +如果获取视频高度,则返回**AV_ERR_OK**;否则返回在**native_averrors.h**中定义的错误代码。 + + +### OH_AVPlayer_GetVideoWidth() + +``` +OH_AVErrCode OH_AVPlayer_GetVideoWidth (OH_AVPlayer * player, int32_t * videoWidth ) +``` + +**描述** + +获取视频宽度。 + +**系统能力:** SystemCapability.Multimedia.Media.AVPlayer + +**起始版本:** 11 + +**参数:** + +| 名称 | 描述 | +| -------- | -------- | +| player | 指向OH_AVPlayer实例的指针 | +| videoWidth | 视频宽度 | + +**返回:** + +如果获取视频宽度,则返回**AV_ERR_OK**;否则返回在**native_averrors.h**中定义的错误代码。 + + +### OH_AVPlayer_IsLooping() + +``` +bool OH_AVPlayer_IsLooping (OH_AVPlayer * player) +``` + +**描述** + +判断是否循环播放。 + +**系统能力:** SystemCapability.Multimedia.Media.AVPlayer + +**起始版本:** 11 + +**参数:** + +| 名称 | 描述 | +| -------- | -------- | +| player | 指向OH_AVPlayer实例的指针 | + +**返回:** + +如果循环播放,则返回true,否则返回false。 + + +### OH_AVPlayer_IsPlaying() + +``` +bool OH_AVPlayer_IsPlaying (OH_AVPlayer * player) +``` + +**描述** + +判断播放器是否在播放。 + +**系统能力:** SystemCapability.Multimedia.Media.AVPlayer + +**起始版本:** 11 + +**参数:** + +| 名称 | 描述 | +| -------- | -------- | +| player | 指向OH_AVPlayer实例的指针 | + +**返回:** + +如果正在播放,则返回true,否则返回false + + +### OH_AVPlayer_Pause() + +``` +OH_AVErrCode OH_AVPlayer_Pause (OH_AVPlayer * player) +``` + +**描述** + +暂停播放。 + +**系统能力:** SystemCapability.Multimedia.Media.AVPlayer + +**起始版本:** 11 + +**参数:** + +| 名称 | 描述 | +| -------- | -------- | +| player | 指向OH_AVPlayer实例的指针 | + +**返回:** + +如果成功将**Pause**添加到任务队列中,否则返回在**native_averrors.h**中定义的错误代码。 + + +### OH_AVPlayer_Play() + +``` +OH_AVErrCode OH_AVPlayer_Play (OH_AVPlayer * player) +``` + +**描述** + +开始播放。 + +此函数必须在**Prepare**之后调用。如果播放器状态为<Prepared>。调用此函数开始播放。 + +**系统能力:** SystemCapability.Multimedia.Media.AVPlayer + +**起始版本:** 11 + +**参数:** + +| 名称 | 描述 | +| -------- | -------- | +| player | 指向OH_AVPlayer实例的指针 | + +**返回:** + +如果开始播放,则返回**AV_ERR_OK**,否则返回在**native_averrors.h**中定义的错误代码。 + + +### OH_AVPlayer_Prepare() + +``` +OH_AVErrCode OH_AVPlayer_Prepare (OH_AVPlayer * player) +``` + +**描述** + +准备播放环境,异步缓存媒体数据。 + +此函数必须在**SetSource**之后调用。 + +**系统能力:** SystemCapability.Multimedia.Media.AVPlayer + +**起始版本:** 11 + +**参数:** + +| 名称 | 描述 | +| -------- | -------- | +| player | 指向OH_AVPlayer实例的指针 | + +**返回:** + +如果成功将{}添加到任务队列中,则返回**AV_ERR_OK**;否则返回在**native_averrors.h**中定义的错误代码 + + +### OH_AVPlayer_Release() + +``` +OH_AVErrCode OH_AVPlayer_Release (OH_AVPlayer * player) +``` + +**描述** + +异步释放播放器资源。 + +异步释放保证性能,但无法保证是否释放了播放画面的surfacebuffer。调用者需要保证播放画面窗口的生命周期安全。 + +**系统能力:** SystemCapability.Multimedia.Media.AVPlayer + +**起始版本:** 11 + +**参数:** + +| 名称 | 描述 | +| -------- | -------- | +| player | 指向OH_AVPlayer实例的指针 | + +**返回:** + +如果成功将**Release**添加到任务队列中,则返回**AV_ERR_OK**;否则返回在**native_averrors.h**中定义的错误代码。 + + +### OH_AVPlayer_ReleaseSync() + +``` +OH_AVErrCode OH_AVPlayer_ReleaseSync (OH_AVPlayer * player) +``` + +**描述** + +同步释放播放器资源。 + +同步过程保证了播放画面的surfacebuffer释放,但这个界面会花费很长时间(发动机非怠速状态时),要求调用者自己设计异步机制。 + +**系统能力:** SystemCapability.Multimedia.Media.AVPlayer + +**起始版本:** 11 + +**参数:** + +| 名称 | 描述 | +| -------- | -------- | +| player | 指向OH_AVPlayer实例的指针 | + +**返回:** + +如果播放被释放返回**AV_ERR_OK**,否则返回在**native_averrors.h**中定义的错误代码。 + + +### OH_AVPlayer_Reset() + +``` +OH_AVErrCode OH_AVPlayer_Reset (OH_AVPlayer * player) +``` + +**描述** + +将播放器恢复到初始状态。 + +函数调用完成后,调用**SetSource**添加播放源。调用**Prepare**后,调用**Play**重新开始播放。 + +**系统能力:** SystemCapability.Multimedia.Media.AVPlayer + +**起始版本:** 11 + +**参数:** + +| 名称 | 描述 | +| -------- | -------- | +| player | 指向OH_AVPlayer实例的指针 | + +**返回:** + +如果成功将**reset**添加到任务队列,否则返回在**native_averrors.h**中定义的错误代码。 + + +### OH_AVPlayer_Seek() + +``` +OH_AVErrCode OH_AVPlayer_Seek (OH_AVPlayer * player, int32_t mSeconds, AVPlayerSeekMode mode ) +``` + +**描述** + +改变播放位置。 + +此函数可以在播放或暂停时使用。 + +**系统能力:** SystemCapability.Multimedia.Media.AVPlayer + +**参数:** + +| 名称 | 描述 | +| -------- | -------- | +| player | 指向OH_AVPlayer实例的指针。 | +| mSeconds | 播放目标位置,精确到毫秒。 | +| mode | 播放器的跳转模式。具体请参考[AVPlayerSeekMode](#avplayerseekmode)。 | + + +### OH_AVPlayer_SelectBitRate() + +``` +OH_AVErrCode OH_AVPlayer_SelectBitRate (OH_AVPlayer * player, uint32_t bitRate ) +``` + +**描述** + +设置hls播放器使用的码率。 + +播放比特率,以比特/秒为单位,以比特/秒为单位。 仅对HLS协议网络流有效。默认情况下, 播放器会根据网络连接情况选择合适的码率和速度。 通过INFO_TYPE_BITRATE_COLLECT上报有效码率链表 设置并选择指定的码率,选择小于和最接近的码率 到指定的码率播放。准备好后,读取它以查询当前选择的比特率。 + +**系统能力:** SystemCapability.Multimedia.Media.AVPlayer + +**起始版本:** 11 + +**参数:** + +| 名称 | 描述 | +| -------- | -------- | +| player | 指向OH_AVPlayer实例的指针 | +| bitRate | 码率,单位为bps | + +**返回:** + +设置码率成功返回**AV_ERR_OK**,否则返回在**native_averrors.h**中定义的错误代码。 + + +### OH_AVPlayer_SelectTrack() + +``` +OH_AVErrCode OH_AVPlayer_SelectTrack (OH_AVPlayer * player, int32_t index ) +``` + +**描述** + +选择音频或字幕轨道。 + +默认播放第一个带数据的音频流,不播放字幕轨迹。 设置生效后,原曲目将失效。请设置字幕 处于准备/播放/暂停/完成状态,并将音轨设置为准备状态。 + +**系统能力:** SystemCapability.Multimedia.Media.AVPlayer + +**起始版本:** 11 + +**参数:** + +| 名称 | 描述 | +| -------- | -------- | +| player | 指向OH_AVPlayer实例的指针 | +| index | 索引 | + +**返回:** + +如果成功选择返回**AV_ERR_OK**;否则返回在**native_averrors.h**中定义的错误代码。 + + +### OH_AVPlayer_SetFDSource() + +``` +OH_AVErrCode OH_AVPlayer_SetFDSource (OH_AVPlayer * player, int32_t fd, int64_t offset, int64_t size ) +``` + +**描述** + +设置播放器的播放媒体文件描述符来源。 + +**系统能力:** SystemCapability.Multimedia.Media.AVPlayer + +**起始版本:** 11 + +**参数:** + +| 名称 | 描述 | +| -------- | -------- | +| player | 指向OH_AVPlayer实例的指针 | +| fd | 媒体源的文件描述符 | +| offset | 媒体源在文件描述符中的偏移量 | +| size | 表示媒体源的大小 | + +**返回:** + +如果fd设置成功返回**AV_ERR_OK**,否则返回**native_averrors.h**中定义的错误码。 + + +### OH_AVPlayer_SetLooping() + +``` +OH_AVErrCode OH_AVPlayer_SetLooping (OH_AVPlayer * player, bool loop ) +``` + +**描述** + +设置循环播放。 + +**系统能力:** SystemCapability.Multimedia.Media.AVPlayer + +**起始版本:** 11 + +**参数:** + +| 名称 | 描述 | +| -------- | -------- | +| player | 指向OH_AVPlayer实例的指针 | +| loop | 循环播放开关 | + +**返回:** + +如果设置了循环,则返回**AV_ERR_OK**;否则返回在**native_averrors.h**中定义的错误代码。 + + +### OH_AVPlayer_SetPlaybackSpeed() + +``` +OH_AVErrCode OH_AVPlayer_SetPlaybackSpeed (OH_AVPlayer * player, AVPlaybackSpeed speed ) +``` + +**描述** + +设置播放器播放速率。 + +**系统能力:** SystemCapability.Multimedia.Media.AVPlayer + +**参数:** + +| 名称 | 描述 | +| -------- | -------- | +| player | 指向OH_AVPlayer实例的指针 | +| speed | 可以设置速率模式[AVPlaybackSpeed](#avplaybackspeed) | + + +### OH_AVPlayer_SetPlayerCallback() + +``` +OH_AVErrCode OH_AVPlayer_SetPlayerCallback (OH_AVPlayer * player, AVPlayerCallback callback ) +``` + +**描述** + +设置播放器回调方法。 + +**系统能力:** SystemCapability.Multimedia.Media.AVPlayer + +**起始版本:** 11 + +**参数:** + +| 名称 | 描述 | +| -------- | -------- | +| player | 指向OH_AVPlayer实例的指针 | +| callback | 回调对象指针 | + +**返回:** + +如果设置了播放器回调,则返回**AV_ERR_OK**;否则返回在**native_averrors.h**中定义的错误代码。 + + +### OH_AVPlayer_SetURLSource() + +``` +OH_AVErrCode OH_AVPlayer_SetURLSource (OH_AVPlayer * player, const char * url ) +``` + +**描述** + +设置播放器的播放源。对应的源可以是http url。 + +**系统能力:** SystemCapability.Multimedia.Media.AVPlayer + +**起始版本:** 11 + +**参数:** + +| 名称 | 描述 | +| -------- | -------- | +| player | 指向OH_AVPlayer实例的指针 | +| url | 播放源 | + +**返回:** + +如果url设置成功返回**AV_ERR_OK**,否则返回**native_averrors.h**中定义的错误码。 + + +### OH_AVPlayer_SetVideoSurface() + +``` +OH_AVErrCode OH_AVPlayer_SetVideoSurface (OH_AVPlayer * player, OHNativeWindow * window ) +``` + +**描述** + +设置播放画面窗口。 + +**系统能力:** SystemCapability.Multimedia.Media.AVPlayer + +**参数:** + +| 名称 | 描述 | +| -------- | -------- | +| player | 指向OH_AVPlayer实例的指针 | +| window | 指向OHNativeWindow实例的指针 | + + +### OH_AVPlayer_SetVolume() + +``` +OH_AVErrCode OH_AVPlayer_SetVolume (OH_AVPlayer * player, float leftVolume, float rightVolume ) +``` + +**描述** + +设置播放器的音量。 + +可以在播放或暂停的过程中使用。<0>表示无声音,<1>为原始值。 + +**系统能力:** SystemCapability.Multimedia.Media.AVPlayer + +**起始版本:** 11 + +**参数:** + +| 名称 | 描述 | +| -------- | -------- | +| player | 指向OH_AVPlayer实例的指针 | +| leftVolume | 要设置的左声道目标音量 | +| rightVolume | 要设置的右声道目标音量 | + +**返回:** + +如果设置了音量,则返回**AV_ERR_OK**;否则返回在**native_averrors.h**中定义的错误代码, + + +### OH_AVPlayer_Stop() + +``` +OH_AVErrCode OH_AVPlayer_Stop (OH_AVPlayer * player) +``` + +**描述** + +停止播放。 + +**系统能力:** SystemCapability.Multimedia.Media.AVPlayer + +**起始版本:** 11 + +**参数:** + +| 名称 | 描述 | +| -------- | -------- | +| player | 指向OH_AVPlayer实例的指针 | + +**返回:** + +如果成功将**stop**添加到任务队列,则返回**AV_ERR_OK**;否则返回在**native_averrors.h**中定义的错误代码。 + + +## 变量说明 + + +### onError + +``` +OH_AVPlayerOnError AVPlayerCallback::onError +``` + +**描述** + +监听AVPlayer操作错误,参考[OH_AVPlayerOnError](#oh_avplayeronerror)。 + + +### onInfo + +``` +OH_AVPlayerOnInfo AVPlayerCallback::onInfo +``` + +**描述** + +监听AVPlayer过程信息,参考[OH_AVPlayerOnInfo](#oh_avplayeroninfo)。 diff --git a/zh-cn/application-dev/reference/native-apis/_a_v_player_callback.md b/zh-cn/application-dev/reference/native-apis/_a_v_player_callback.md new file mode 100644 index 0000000000000000000000000000000000000000..a55d60465fab9a072bb7a7725b5c8ad565243472 --- /dev/null +++ b/zh-cn/application-dev/reference/native-apis/_a_v_player_callback.md @@ -0,0 +1,23 @@ +# AVPlayerCallback + + +## 概述 + +OH_AVPlayer中所有回调函数指针的集合。注册此的实例结构体到OH_AVPlayer实例中,并对回调上报的信息进行处理,保证AVPlayer的正常运行。 + +**系统能力:** SystemCapability.Multimedia.Media.AVPlayer + +**起始版本:** 11 + +**相关模块:**[AVPlayer](_a_v_player.md) + + +## 汇总 + + +### 成员变量 + +| 名称 | 描述 | +| -------- | -------- | +| [onInfo](_a_v_player.md#oninfo) | 监控AVPlayer过程信息,参考[OH_AVPlayerOnInfo](_a_v_player.md#oh_avplayeroninfo)。 | +| [onError](_a_v_player.md#onerror) | 监听AVPlayer操作错误,参考[OH_AVPlayerOnError](_a_v_player.md#oh_avplayeronerror)。 | diff --git a/zh-cn/application-dev/reference/native-apis/_hid___abs_axes_array.md b/zh-cn/application-dev/reference/native-apis/_hid___abs_axes_array.md new file mode 100644 index 0000000000000000000000000000000000000000..ca5853cb1322df6d9a8e35eb3b7cd5a60a19d1f3 --- /dev/null +++ b/zh-cn/application-dev/reference/native-apis/_hid___abs_axes_array.md @@ -0,0 +1,21 @@ +# Hid_AbsAxesArray + + +## 概述 + +绝对坐标属性数组。 + +**起始版本:** 11 + +**相关模块:**[HidDdk](_hid_ddk.md) + + +## 汇总 + + +### 成员变量 + +| 名称 | 描述 | +| -------- | -------- | +| [hidAbsAxes](_hid_ddk.md#hidabsaxes) | [Hid_AbsAxes](_hid_ddk.md#hid_absaxes) \* | +| [length](_hid_ddk.md#length-35) | uint16_t | diff --git a/zh-cn/application-dev/reference/native-apis/_hid___device.md b/zh-cn/application-dev/reference/native-apis/_hid___device.md new file mode 100644 index 0000000000000000000000000000000000000000..05af095a2f163170e3ed1be4cc23211550159d85 --- /dev/null +++ b/zh-cn/application-dev/reference/native-apis/_hid___device.md @@ -0,0 +1,26 @@ +# Hid_Device + + +## 概述 + +设备基本信息。 + +**起始版本:** 11 + +**相关模块:**[HidDdk](_hid_ddk.md) + + +## 汇总 + + +### 成员变量 + +| 名称 | 描述 | +| -------- | -------- | +| [deviceName](_hid_ddk.md#devicename) | const char \* | +| [vendorId](_hid_ddk.md#vendorid) | uint16_t | +| [productId](_hid_ddk.md#productid) | uint16_t | +| [version](_hid_ddk.md#version) | uint16_t | +| [bustype](_hid_ddk.md#bustype) | uint16_t | +| [properties](_hid_ddk.md#properties) | [Hid_DeviceProp](_hid_ddk.md#hid_deviceprop) \* | +| [propLength](_hid_ddk.md#proplength) | uint16_t | diff --git a/zh-cn/application-dev/reference/native-apis/_hid___emit_item.md b/zh-cn/application-dev/reference/native-apis/_hid___emit_item.md new file mode 100644 index 0000000000000000000000000000000000000000..c4c390de4221401178bd44a2d06483acf9237562 --- /dev/null +++ b/zh-cn/application-dev/reference/native-apis/_hid___emit_item.md @@ -0,0 +1,22 @@ +# Hid_EmitItem + + +## 概述 + +事件信息。 + +**起始版本:** 11 + +**相关模块:**[HidDdk](_hid_ddk.md) + + +## 汇总 + + +### 成员变量 + +| 名称 | 描述 | +| -------- | -------- | +| [type](_hid_ddk.md#type) | uint16_t | +| [code](_hid_ddk.md#code) | uint16_t | +| [value](_hid_ddk.md#value) | uint32_t | diff --git a/zh-cn/application-dev/reference/native-apis/_hid___event_properties.md b/zh-cn/application-dev/reference/native-apis/_hid___event_properties.md new file mode 100644 index 0000000000000000000000000000000000000000..8d14695060f9380e72b0482bdead7a24ac8403dc --- /dev/null +++ b/zh-cn/application-dev/reference/native-apis/_hid___event_properties.md @@ -0,0 +1,28 @@ +# Hid_EventProperties + + +## 概述 + +设备关注事件属性。 + +**起始版本:** 11 + +**相关模块:**[HidDdk](_hid_ddk.md) + + +## 汇总 + + +### 成员变量 + +| 名称 | 描述 | +| -------- | -------- | +| [hidEventTypes](_hid_ddk.md#hideventtypes) | struct [Hid_EventTypeArray](_hid___event_type_array.md) | +| [hidKeys](_hid_ddk.md#hidkeys) | struct [Hid_KeyCodeArray](_hid___key_code_array.md) | +| [hidAbs](_hid_ddk.md#hidabs) | struct [Hid_AbsAxesArray](_hid___abs_axes_array.md) | +| [hidRelBits](_hid_ddk.md#hidrelbits) | struct [Hid_RelAxesArray](_hid___rel_axes_array.md) | +| [hidMiscellaneous](_hid_ddk.md#hidmiscellaneous) | struct [Hid_MscEventArray](_hid___msc_event_array.md) | +| [hidAbsMax](_hid_ddk.md#hidabsmax) [64] | int32_t | +| [hidAbsMin](_hid_ddk.md#hidabsmin) [64] | int32_t | +| [hidAbsFuzz](_hid_ddk.md#hidabsfuzz) [64] | int32_t | +| [hidAbsFlat](_hid_ddk.md#hidabsflat) [64] | int32_t | diff --git a/zh-cn/application-dev/reference/native-apis/_hid___event_type_array.md b/zh-cn/application-dev/reference/native-apis/_hid___event_type_array.md new file mode 100644 index 0000000000000000000000000000000000000000..418cfa76fd1b0b924d9dbc67406b5129394739bf --- /dev/null +++ b/zh-cn/application-dev/reference/native-apis/_hid___event_type_array.md @@ -0,0 +1,21 @@ +# Hid_EventTypeArray + + +## 概述 + +事件类型编码数组。 + +**起始版本:** 11 + +**相关模块:**[HidDdk](_hid_ddk.md) + + +## 汇总 + + +### 成员变量 + +| 名称 | 描述 | +| -------- | -------- | +| [hidEventType](_hid_ddk.md#hideventtype) | [Hid_EventType](_hid_ddk.md#hid_eventtype) \* | +| [length](_hid_ddk.md#length-15) | uint16_t | diff --git a/zh-cn/application-dev/reference/native-apis/_hid___key_code_array.md b/zh-cn/application-dev/reference/native-apis/_hid___key_code_array.md new file mode 100644 index 0000000000000000000000000000000000000000..0e94586bde4ab97bef372a8d327639ed66806117 --- /dev/null +++ b/zh-cn/application-dev/reference/native-apis/_hid___key_code_array.md @@ -0,0 +1,21 @@ +# Hid_KeyCodeArray + + +## 概述 + +键值属性数组。 + +**起始版本:** 11 + +**相关模块:**[HidDdk](_hid_ddk.md) + + +## 汇总 + + +### 成员变量 + +| 名称 | 描述 | +| -------- | -------- | +| [hidKeyCode](_hid_ddk.md#hidkeycode) | [Hid_KeyCode](_hid_ddk.md#hid_keycode) \* | +| [length](_hid_ddk.md#length-25) | uint16_t | diff --git a/zh-cn/application-dev/reference/native-apis/_hid___msc_event_array.md b/zh-cn/application-dev/reference/native-apis/_hid___msc_event_array.md new file mode 100644 index 0000000000000000000000000000000000000000..f991972f830039a2c582123e3276877decbb4bfa --- /dev/null +++ b/zh-cn/application-dev/reference/native-apis/_hid___msc_event_array.md @@ -0,0 +1,21 @@ +# Hid_MscEventArray + + +## 概述 + +其它特殊事件属性数组。 + +**起始版本:** 11 + +**相关模块:**[HidDdk](_hid_ddk.md) + + +## 汇总 + + +### 成员变量 + +| 名称 | 描述 | +| -------- | -------- | +| [hidMscEvent](_hid_ddk.md#hidmscevent) | [Hid_MscEvent](_hid_ddk.md#hid_mscevent) \* | +| [length](_hid_ddk.md#length-55) | uint16_t | diff --git a/zh-cn/application-dev/reference/native-apis/_hid___rel_axes_array.md b/zh-cn/application-dev/reference/native-apis/_hid___rel_axes_array.md new file mode 100644 index 0000000000000000000000000000000000000000..5a6fb742539bcc89b9222629dc5426f40bcde049 --- /dev/null +++ b/zh-cn/application-dev/reference/native-apis/_hid___rel_axes_array.md @@ -0,0 +1,21 @@ +# Hid_RelAxesArray + + +## 概述 + +相对坐标属性数组。 + +**起始版本:** 11 + +**相关模块:**[HidDdk](_hid_ddk.md) + + +## 汇总 + + +### 成员变量 + +| 名称 | 描述 | +| -------- | -------- | +| [hidRelAxes](_hid_ddk.md#hidrelaxes) | [Hid_RelAxes](_hid_ddk.md#hid_relaxes) \* | +| [length](_hid_ddk.md#length-45) | uint16_t | diff --git a/zh-cn/application-dev/reference/native-apis/_hid_ddk.md b/zh-cn/application-dev/reference/native-apis/_hid_ddk.md new file mode 100644 index 0000000000000000000000000000000000000000..8b69e536b854d7b2de183807becfd63fd20da5bc --- /dev/null +++ b/zh-cn/application-dev/reference/native-apis/_hid_ddk.md @@ -0,0 +1,835 @@ +# HidDdk + + +## 概述 + +提供HID DDK接口,包括创建设备、发送事件、销毁设备。 + +**系统能力:** SystemCapability.Driver.HID.Extension + +**起始版本:** 11 + + +## 汇总 + + +### 文件 + +| 名称 | 描述 | +| -------- | -------- | +| [hid_ddk_api.h](hid__ddk__api_8h.md) | 声明主机侧访问输入设备的HID DDK接口。 | +| [hid_ddk_types.h](hid__ddk__types_8h.md) | 提供HID DDK中的枚举变量与结构体定义。 | + + +### 结构体 + +| 名称 | 描述 | +| -------- | -------- | +| [Hid_EmitItem](_hid___emit_item.md) | struct
事件信息。 | +| [Hid_Device](_hid___device.md) | struct
设备基本信息。 | +| [Hid_EventTypeArray](_hid___event_type_array.md) | struct
事件类型编码数组。 | +| [Hid_KeyCodeArray](_hid___key_code_array.md) | struct
键值属性数组。 | +| [Hid_AbsAxesArray](_hid___abs_axes_array.md) | struct
绝对坐标属性数组。 | +| [Hid_RelAxesArray](_hid___rel_axes_array.md) | struct
相对坐标属性数组。 | +| [Hid_MscEventArray](_hid___msc_event_array.md) | struct
其它特殊事件属性数组。 | +| [Hid_EventProperties](_hid___event_properties.md) | struct
设备关注事件属性。 | + + +### 类型定义 + +| 名称 | 描述 | +| -------- | -------- | +| [Hid_EmitItem](#hid_emititem) | typedef struct [Hid_EmitItem](_hid___emit_item.md)
事件信息。 | +| [Hid_Device](#hid_device) | typedef struct [Hid_Device](_hid___device.md)
设备基本信息。 | +| [Hid_EventTypeArray](#hid_eventtypearray) | typedef struct [Hid_EventTypeArray](_hid___event_type_array.md)
事件类型编码数组。 | +| [Hid_KeyCodeArray](#hid_keycodearray) | typedef struct [Hid_KeyCodeArray](_hid___key_code_array.md)
键值属性数组。 | +| [Hid_AbsAxesArray](#hid_absaxesarray) | typedef struct [Hid_AbsAxesArray](_hid___abs_axes_array.md)
绝对坐标属性数组。 | +| [Hid_RelAxesArray](#hid_relaxesarray) | typedef struct [Hid_RelAxesArray](_hid___rel_axes_array.md)
相对坐标属性数组。 | +| [Hid_MscEventArray](#hid_msceventarray) | typedef struct [Hid_MscEventArray](_hid___msc_event_array.md)
其它特殊事件属性数组。 | +| [Hid_EventProperties](#hid_eventproperties) | typedef struct [Hid_EventProperties](_hid___event_properties.md)
设备关注事件属性。 | + + +### 枚举 + +| 名称 | 描述 | +| -------- | -------- | +| [Hid_DeviceProp](#hid_deviceprop) {
HID_PROP_POINTER = 0x00, HID_PROP_DIRECT = 0x01, HID_PROP_BUTTON_PAD = 0x02, HID_PROP_SEMI_MT = 0x03,
HID_PROP_TOP_BUTTON_PAD = 0x04, HID_PROP_POINTING_STICK = 0x05, HID_PROP_ACCELEROMETER = 0x06
} | 输入设备特性定义。 | +| [Hid_EventType](#hid_eventtype) {
HID_EV_SYN = 0x00, HID_EV_KEY = 0x01, HID_EV_REL = 0x02, HID_EV_ABS = 0x03,
HID_EV_MSC = 0x04
} | 事件类型。 | +| [Hid_SynEvent](#hid_synevent) { HID_SYN_REPORT = 0, HID_SYN_CONFIG = 1, HID_SYN_MT_REPORT = 2, HID_SYN_DROPPED = 3 } | 同步事件编码。 | +| [Hid_KeyCode](#hid_keycode) {
HID_KEY_A = 30, HID_KEY_B = 48, HID_KEY_C = 46, HID_KEY_D = 32,
HID_KEY_E = 18, HID_KEY_F = 33, HID_KEY_G = 34, HID_KEY_H = 35,
HID_KEY_I = 23, HID_KEY_J = 36, HID_KEY_K = 37, HID_KEY_L = 38,
HID_KEY_M = 50, HID_KEY_N = 49, HID_KEY_O = 24, HID_KEY_P = 25,
HID_KEY_Q = 16, HID_KEY_R = 19, HID_KEY_S = 31, HID_KEY_T = 20,
HID_KEY_U = 22, HID_KEY_V = 47, HID_KEY_W = 17, HID_KEY_X = 45,
HID_KEY_Y = 21, HID_KEY_Z = 44, HID_KEY_ESC = 1, HID_KEY_0 = 11,
HID_KEY_1 = 2, HID_KEY_2 = 3, HID_KEY_3 = 4, HID_KEY_4 = 5,
HID_KEY_5 = 6, HID_KEY_6 = 7, HID_KEY_7 = 8, HID_KEY_8 = 9,
HID_KEY_9 = 10, HID_KEY_GRAVE = 41, HID_KEY_MINUS = 12, HID_KEY_EQUALS = 13,
HID_KEY_BACKSPACE = 14, HID_KEY_LEFT_BRACKET = 26, HID_KEY_RIGHT_BRACKET = 27, HID_KEY_ENTER = 28,
HID_KEY_LEFT_SHIFT = 42, HID_KEY_BACKSLASH = 43, HID_KEY_SEMICOLON = 39, HID_KEY_APOSTROPHE = 40,
HID_KEY_SPACE = 57, HID_KEY_SLASH = 53, HID_KEY_COMMA = 51, HID_KEY_PERIOD = 52,
HID_KEY_RIGHT_SHIFT = 54, HID_KEY_NUMPAD_0 = 82, HID_KEY_NUMPAD_1 = 79, HID_KEY_NUMPAD_2 = 80,
HID_KEY_NUMPAD_3 = 81, HID_KEY_NUMPAD_4 = 75, HID_KEY_NUMPAD_5 = 76, HID_KEY_NUMPAD_6 = 77,
HID_KEY_NUMPAD_7 = 71, HID_KEY_NUMPAD_8 = 72, HID_KEY_NUMPAD_9 = 73, HID_KEY_NUMPAD_DIVIDE = 70,
HID_KEY_NUMPAD_MULTIPLY = 55, HID_KEY_NUMPAD_SUBTRACT = 74, HID_KEY_NUMPAD_ADD = 78, HID_KEY_NUMPAD_DOT = 83,
HID_KEY_SYSRQ = 99, HID_KEY_MUTE = 113, HID_KEY_VOLUME_DOWN = 114, HID_KEY_VOLUME_UP = 115,
HID_KEY_BRIGHTNESS_DOWN = 224, HID_KEY_BRIGHTNESS_UP = 225, HID_BTN_0 = 0x100, HID_BTN_1 = 0x101,
HID_BTN_2 = 0x102, HID_BTN_3 = 0x103, HID_BTN_4 = 0x104, HID_BTN_5 = 0x105,
HID_BTN_6 = 0x106, HID_BTN_7 = 0x107, HID_BTN_8 = 0x108, HID_BTN_9 = 0x109,
HID_BTN_LEFT = 0x110, HID_BTN_RIGHT = 0x111, HID_BTN_MIDDLE = 0x112, HID_BTN_SIDE = 0x113,
HID_BTN_EXTRA = 0x114, HID_BTN_FORWARD = 0x115, HID_BTN_BACKWARD = 0x116, HID_BTN_TASK = 0x117,
HID_BTN_TOOL_PEN = 0x140, HID_BTN_TOOL_RUBBER = 0x141, HID_BTN_TOOL_BRUSH = 0x142, HID_BTN_TOOL_PENCIL = 0x143,
HID_BTN_TOOL_AIRBRUSH = 0x144, HID_BTN_TOOL_FINGER = 0x145, HID_BTN_TOOL_MOUSE = 0x146, HID_BTN_TOOL_LENS = 0x147,
HID_BTN_TOOL_QUINT_TAP = 0x148, HID_BTN_STYLUS3 = 0x149, HID_BTN_TOUCH = 0x14a, HID_BTN_STYLUS = 0x14b,
HID_BTN_STYLUS2 = 0x14c, HID_BTN_TOOL_DOUBLE_TAP = 0x14d, HID_BTN_TOOL_TRIPLE_TAP = 0x14e, HID_BTN_TOOL_QUAD_TAP = 0x14f,
HID_BTN_WHEEL = 0x150
} | 键值编码。 | +| [Hid_AbsAxes](#hid_absaxes) {
HID_ABS_X = 0x00, HID_ABS_Y = 0x01, HID_ABS_Z = 0x02, HID_ABS_RX = 0x03,
HID_ABS_RY = 0x04, HID_ABS_RZ = 0x05, HID_ABS_THROTTLE = 0x06, HID_ABS_RUDDER = 0x07,
HID_ABS_WHEEL = 0x08, HID_ABS_GAS = 0x09, HID_ABS_BRAKE = 0x0a, HID_ABS_HAT0X = 0x10,
HID_ABS_HAT0Y = 0x11, HID_ABS_HAT1X = 0x12, HID_ABS_HAT1Y = 0x13, HID_ABS_HAT2X = 0x14,
HID_ABS_HAT2Y = 0x15, HID_ABS_HAT3X = 0x16, HID_ABS_HAT3Y = 0x17, HID_ABS_PRESSURE = 0x18,
HID_ABS_DISTANCE = 0x19, HID_ABS_TILT_X = 0x1a, HID_ABS_TILT_Y = 0x1b, HID_ABS_TOOL_WIDTH = 0x1c,
HID_ABS_VOLUME = 0x20, HID_ABS_MISC = 0x28
} | 绝对坐标编码。 | +| [Hid_RelAxes](#hid_relaxes) {
HID_REL_X = 0x00, HID_REL_Y = 0x01, HID_REL_Z = 0x02, HID_REL_RX = 0x03,
HID_REL_RY = 0x04, HID_REL_RZ = 0x05, HID_REL_HWHEEL = 0x06, HID_REL_DIAL = 0x07,
HID_REL_WHEEL = 0x08, HID_REL_MISC = 0x09, HID_REL_RESERVED = 0x0a, HID_REL_WHEEL_HI_RES = 0x0b,
HID_REL_HWHEEL_HI_RES = 0x0c
} | 相对坐标编码。 | +| [Hid_MscEvent](#hid_mscevent) {
HID_MSC_SERIAL = 0x00, HID_MSC_PULSE_LED = 0x01, HID_MSC_GESTURE = 0x02, HID_MSC_RAW = 0x03,
HID_MSC_SCAN = 0x04, HID_MSC_TIMESTAMP = 0x05
} | 不适合其它类型的输入事件编码。 | +| [Hid_DdkErrCode](#hid_ddkerrcode) {
HID_DDK_SUCCESS = 0, HID_DDK_FAILURE = -1, HID_DDK_INVALID_PARAMETER = -2, HID_DDK_INVALID_OPERATION = -3,
HID_DDK_NULL_PTR = -4, HID_DDK_TIMEOUT = -5, HID_DDK_NO_PERM = -6
} | HID DDK错误码定义。 | + + +### 函数 + +| 名称 | 描述 | +| -------- | -------- | +| [OH_Hid_CreateDevice](#oh_hid_createdevice) ([Hid_Device](_hid___device.md) \*hidDevice, [Hid_EventProperties](_hid___event_properties.md) \*hidEventProperties) | int32_t
创建设备。 | +| [OH_Hid_EmitEvent](#oh_hid_emitevent) (int32_t deviceId, const [Hid_EmitItem](_hid___emit_item.md) items[], uint16_t length) | int32_t
向指定设备发送事件列表。 | +| [OH_Hid_DestroyDevice](#oh_hid_destroydevice) (int32_t deviceId) | int32_t
销毁设备。 | + + +### 变量 + +| 名称 | 描述 | +| -------- | -------- | +| [Hid_EmitItem::type](#type) | uint16_t
事件类型 | +| [Hid_EmitItem::code](#code) | uint16_t
事件编码 | +| [Hid_EmitItem::value](#value) | uint32_t
事件值 | +| [Hid_Device::deviceName](#devicename) | const char \*
设备名称 | +| [Hid_Device::vendorId](#vendorid) | uint16_t
厂商ID | +| [Hid_Device::productId](#productid) | uint16_t
产品ID | +| [Hid_Device::version](#version) | uint16_t
版本号 | +| [Hid_Device::bustype](#bustype) | uint16_t
总线类型 | +| [Hid_Device::properties](#properties) | [Hid_DeviceProp](#hid_deviceprop) \*
设备特性 | +| [Hid_Device::propLength](#proplength) | uint16_t
设备特性数量 | +| [Hid_EventTypeArray::hidEventType](#hideventtype) | [Hid_EventType](#hid_eventtype) \*
事件类型编码 | +| [Hid_EventTypeArray::length](#length-15) | uint16_t
数组长度 | +| [Hid_KeyCodeArray::hidKeyCode](#hidkeycode) | [Hid_KeyCode](#hid_keycode) \*
键值编码 | +| [Hid_KeyCodeArray::length](#length-25) | uint16_t
数组长度 | +| [Hid_AbsAxesArray::hidAbsAxes](#hidabsaxes) | [Hid_AbsAxes](#hid_absaxes) \*
绝对坐标属性编码 | +| [Hid_AbsAxesArray::length](#length-35) | uint16_t
数组长度 | +| [Hid_RelAxesArray::hidRelAxes](#hidrelaxes) | [Hid_RelAxes](#hid_relaxes) \*
相对坐标属性编码 | +| [Hid_RelAxesArray::length](#length-45) | uint16_t
数组长度 | +| [Hid_MscEventArray::hidMscEvent](#hidmscevent) | [Hid_MscEvent](#hid_mscevent) \*
其它特殊事件属性编码 | +| [Hid_MscEventArray::length](#length-55) | uint16_t
数组长度 | +| [Hid_EventProperties::hidEventTypes](#hideventtypes) | struct [Hid_EventTypeArray](_hid___event_type_array.md)
事件类型属性编码数组 | +| [Hid_EventProperties::hidKeys](#hidkeys) | struct [Hid_KeyCodeArray](_hid___key_code_array.md)
键值属性编码数组 | +| [Hid_EventProperties::hidAbs](#hidabs) | struct [Hid_AbsAxesArray](_hid___abs_axes_array.md)
绝对坐标属性编码数组 | +| [Hid_EventProperties::hidRelBits](#hidrelbits) | struct [Hid_RelAxesArray](_hid___rel_axes_array.md)
相对坐标属性编码数组 | +| [Hid_EventProperties::hidMiscellaneous](#hidmiscellaneous) | struct [Hid_MscEventArray](_hid___msc_event_array.md)
其它特殊事件属性编码数组 | +| [Hid_EventProperties::hidAbsMax](#hidabsmax) [64] | int32_t
绝对坐标属性最大值 | +| [Hid_EventProperties::hidAbsMin](#hidabsmin) [64] | int32_t
绝对坐标属性最小值 | +| [Hid_EventProperties::hidAbsFuzz](#hidabsfuzz) [64] | int32_t
绝对坐标属性模糊值 | +| [Hid_EventProperties::hidAbsFlat](#hidabsflat) [64] | int32_t
绝对坐标属性固定值 | + + +## 类型定义说明 + + +### Hid_AbsAxesArray + +``` +typedef struct Hid_AbsAxesArrayHid_AbsAxesArray +``` +**描述** +绝对坐标属性数组。 + +**起始版本:** 11 + + +### Hid_Device + +``` +typedef struct Hid_DeviceHid_Device +``` +**描述** +设备基本信息。 + +**起始版本:** 11 + + +### Hid_EmitItem + +``` +typedef struct Hid_EmitItemHid_EmitItem +``` +**描述** +事件信息。 + +**起始版本:** 11 + + +### Hid_EventProperties + +``` +typedef struct Hid_EventPropertiesHid_EventProperties +``` +**描述** +设备关注事件属性。 + +**起始版本:** 11 + + +### Hid_EventTypeArray + +``` +typedef struct Hid_EventTypeArrayHid_EventTypeArray +``` +**描述** +事件类型编码数组。 + +**起始版本:** 11 + + +### Hid_KeyCodeArray + +``` +typedef struct Hid_KeyCodeArrayHid_KeyCodeArray +``` +**描述** +键值属性数组。 + +**起始版本:** 11 + + +### Hid_MscEventArray + +``` +typedef struct Hid_MscEventArrayHid_MscEventArray +``` +**描述** +其它特殊事件属性数组。 + +**起始版本:** 11 + + +### Hid_RelAxesArray + +``` +typedef struct Hid_RelAxesArrayHid_RelAxesArray +``` +**描述** +相对坐标属性数组。 + +**起始版本:** 11 + + +## 枚举类型说明 + + +### Hid_AbsAxes + +``` +enum Hid_AbsAxes +``` +**描述** +绝对坐标编码。 + +**起始版本:** 11 + +| 枚举值 | 描述 | +| -------- | -------- | +| HID_ABS_X | X轴 | +| HID_ABS_Y | Y轴 | +| HID_ABS_Z | Z轴 | +| HID_ABS_RX | 右模拟摇杆的 X 轴 | +| HID_ABS_RY | 右模拟摇杆的 Y 轴 | +| HID_ABS_RZ | 右模拟摇杆的 Z 轴 | +| HID_ABS_THROTTLE | 油门 | +| HID_ABS_RUDDER | 舵 | +| HID_ABS_WHEEL | 滚轮 | +| HID_ABS_GAS | 气 | +| HID_ABS_BRAKE | 制动 | +| HID_ABS_HAT0X | HAT0X | +| HID_ABS_HAT0Y | HAT0Y | +| HID_ABS_HAT1X | HAT1X | +| HID_ABS_HAT1Y | HAT1Y | +| HID_ABS_HAT2X | HAT2X | +| HID_ABS_HAT2Y | HAT2Y | +| HID_ABS_HAT3X | HAT3X | +| HID_ABS_HAT3Y | HAT3Y | +| HID_ABS_PRESSURE | 压力 | +| HID_ABS_DISTANCE | 距离 | +| HID_ABS_TILT_X | X轴倾斜度 | +| HID_ABS_TILT_Y | Y轴倾斜度 | +| HID_ABS_TOOL_WIDTH | 触摸工具的宽度 | +| HID_ABS_VOLUME | 音量 | +| HID_ABS_MISC | 其它 | + + +### Hid_DdkErrCode + +``` +enum Hid_DdkErrCode +``` +**描述** +HID DDK错误码定义。 + +**起始版本:** 11 + +| 枚举值 | 描述 | +| -------- | -------- | +| HID_DDK_SUCCESS | 操作成功 | +| HID_DDK_FAILURE | 操作失败 | +| HID_DDK_INVALID_PARAMETER | 非法参数 | +| HID_DDK_INVALID_OPERATION | 非法操作 | +| HID_DDK_NULL_PTR | 空指针异常 | +| HID_DDK_TIMEOUT | 超时 | +| HID_DDK_NO_PERM | 没有权限 | + + +### Hid_DeviceProp + +``` +enum Hid_DeviceProp +``` +**描述** +输入设备特性定义。 + +**起始版本:** 11 + +| 枚举值 | 描述 | +| -------- | -------- | +| HID_PROP_POINTER | 指针设备 | +| HID_PROP_DIRECT | 直接输入设备 | +| HID_PROP_BUTTON_PAD | 底部按键触摸设备 | +| HID_PROP_SEMI_MT | 全多点触控设备 | +| HID_PROP_TOP_BUTTON_PAD | 顶部软按键触摸设备 | +| HID_PROP_POINTING_STICK | 指点杆设备 | +| HID_PROP_ACCELEROMETER | 加速度传感器设备 | + + +### Hid_EventType + +``` +enum Hid_EventType +``` +**描述** +事件类型。 + +**起始版本:** 11 + +| 枚举值 | 描述 | +| -------- | -------- | +| HID_EV_SYN | 同步事件 | +| HID_EV_KEY | 按键事件 | +| HID_EV_REL | 相对坐标事件 | +| HID_EV_ABS | 绝对坐标事件 | +| HID_EV_MSC | 特殊事件 | + + +### Hid_KeyCode + +``` +enum Hid_KeyCode +``` +**描述** +键值编码。 + +**起始版本:** 11 + +| 枚举值 | 描述 | +| -------- | -------- | +| HID_KEY_A | 键A | +| HID_KEY_B | 键B | +| HID_KEY_C | 键C | +| HID_KEY_D | 键D | +| HID_KEY_E | 键E | +| HID_KEY_F | 键F | +| HID_KEY_G | 键G | +| HID_KEY_H | 键H | +| HID_KEY_I | 键I | +| HID_KEY_J | 键J | +| HID_KEY_K | 键K | +| HID_KEY_L | 键L | +| HID_KEY_M | 键M | +| HID_KEY_N | 键N | +| HID_KEY_O | 键O | +| HID_KEY_P | 键P | +| HID_KEY_Q | 键Q | +| HID_KEY_R | 键R | +| HID_KEY_S | 键S | +| HID_KEY_T | 键T | +| HID_KEY_U | 键U | +| HID_KEY_V | 键V | +| HID_KEY_W | 键W | +| HID_KEY_X | 键X | +| HID_KEY_Y | 键Y | +| HID_KEY_Z | 键Z | +| HID_KEY_ESC | 键ESC | +| HID_KEY_0 | 键0 | +| HID_KEY_1 | 键1 | +| HID_KEY_2 | 键2 | +| HID_KEY_3 | 键3 | +| HID_KEY_4 | 键4 | +| HID_KEY_5 | 键5 | +| HID_KEY_6 | 键6 | +| HID_KEY_7 | 键7 | +| HID_KEY_8 | 键8 | +| HID_KEY_9 | 键9 | +| HID_KEY_GRAVE | 键` | +| HID_KEY_MINUS | 键- | +| HID_KEY_EQUALS | 键= | +| HID_KEY_BACKSPACE | 键退格 | +| HID_KEY_LEFT_BRACKET | 键[ | +| HID_KEY_RIGHT_BRACKET | 键] | +| HID_KEY_ENTER | 键回车 | +| HID_KEY_LEFT_SHIFT | 键左shift | +| HID_KEY_BACKSLASH | 键\ | +| HID_KEY_SEMICOLON | 键; | +| HID_KEY_APOSTROPHE | 键' | +| HID_KEY_SPACE | 键空格 | +| HID_KEY_SLASH | 键/ | +| HID_KEY_COMMA | 键, | +| HID_KEY_PERIOD | 键. | +| HID_KEY_RIGHT_SHIFT | 键右shift | +| HID_KEY_NUMPAD_0 | 数字键0 | +| HID_KEY_NUMPAD_1 | 数字键1 | +| HID_KEY_NUMPAD_2 | 数字键2 | +| HID_KEY_NUMPAD_3 | 数字键3 | +| HID_KEY_NUMPAD_4 | 数字键4 | +| HID_KEY_NUMPAD_5 | 数字键5 | +| HID_KEY_NUMPAD_6 | 数字键6 | +| HID_KEY_NUMPAD_7 | 数字键7 | +| HID_KEY_NUMPAD_8 | 数字键8 | +| HID_KEY_NUMPAD_9 | 数字键9 | +| HID_KEY_NUMPAD_DIVIDE | 数字键/ | +| HID_KEY_NUMPAD_MULTIPLY | 数字键\* | +| HID_KEY_NUMPAD_SUBTRACT | 数字键- | +| HID_KEY_NUMPAD_ADD | 数字键+ | +| HID_KEY_NUMPAD_DOT | 数字键. | +| HID_KEY_SYSRQ | 键ESC | +| HID_KEY_MUTE | 键静音 | +| HID_KEY_VOLUME_DOWN | 键音量- | +| HID_KEY_VOLUME_UP | 键音量+ | +| HID_KEY_BRIGHTNESS_DOWN | 键亮度- | +| HID_KEY_BRIGHTNESS_UP | 键亮度+ | +| HID_BTN_0 | 按钮0 | +| HID_BTN_1 | 按钮1 | +| HID_BTN_2 | 按钮2 | +| HID_BTN_3 | 按钮3 | +| HID_BTN_4 | 按钮4 | +| HID_BTN_5 | 按钮5 | +| HID_BTN_6 | 按钮6 | +| HID_BTN_7 | 按钮7 | +| HID_BTN_8 | 按钮8 | +| HID_BTN_9 | 按钮9 | +| HID_BTN_LEFT | 鼠标按键左键 | +| HID_BTN_RIGHT | 鼠标按键右键 | +| HID_BTN_MIDDLE | 鼠标按键中键 | +| HID_BTN_SIDE | 鼠标侧面按键 | +| HID_BTN_EXTRA | 鼠标附加按键 | +| HID_BTN_FORWARD | 鼠标向前按键 | +| HID_BTN_BACKWARD | 鼠标向后按键 | +| HID_BTN_TASK | 鼠标任务按键 | +| HID_BTN_TOOL_PEN | 画笔 | +| HID_BTN_TOOL_RUBBER | 橡皮擦 | +| HID_BTN_TOOL_BRUSH | 笔刷 | +| HID_BTN_TOOL_PENCIL | 钢笔 | +| HID_BTN_TOOL_AIRBRUSH | 喷枪 | +| HID_BTN_TOOL_FINGER | 手指 | +| HID_BTN_TOOL_MOUSE | 鼠标 | +| HID_BTN_TOOL_LENS | 镜头 | +| HID_BTN_TOOL_QUINT_TAP | 五指触控 | +| HID_BTN_STYLUS3 | 手写笔3 | +| HID_BTN_TOUCH | 触摸 | +| HID_BTN_STYLUS | 手写笔 | +| HID_BTN_STYLUS2 | 手写笔2 | +| HID_BTN_TOOL_DOUBLE_TAP | 二指触控 | +| HID_BTN_TOOL_TRIPLE_TAP | 三指触控 | +| HID_BTN_TOOL_QUAD_TAP | 四指触控 | +| HID_BTN_WHEEL | 滚轮 | + + +### Hid_MscEvent + +``` +enum Hid_MscEvent +``` +**描述** +不适合其它类型的输入事件编码。 + +**起始版本:** 11 + +| 枚举值 | 描述 | +| -------- | -------- | +| HID_MSC_SERIAL | 序列号 | +| HID_MSC_PULSE_LED | 脉冲 | +| HID_MSC_GESTURE | 手势 | +| HID_MSC_RAW | 开始事件 | +| HID_MSC_SCAN | 扫描 | +| HID_MSC_TIMESTAMP | 时间戳 | + + +### Hid_RelAxes + +``` +enum Hid_RelAxes +``` +**描述** +相对坐标编码。 + +**起始版本:** 11 + +| 枚举值 | 描述 | +| -------- | -------- | +| HID_REL_X | X轴 | +| HID_REL_Y | Y轴 | +| HID_REL_Z | Z轴 | +| HID_REL_RX | 右模拟摇杆的 X 轴 | +| HID_REL_RY | 右模拟摇杆的 Y 轴 | +| HID_REL_RZ | 右模拟摇杆的 Z 轴 | +| HID_REL_HWHEEL | 水平滚轮 | +| HID_REL_DIAL | 刻度 | +| HID_REL_WHEEL | 滚轮 | +| HID_REL_MISC | 其它 | +| HID_REL_RESERVED | 预留 | +| HID_REL_WHEEL_HI_RES | 高分辨率滚轮 | +| HID_REL_HWHEEL_HI_RES | 高分辨率水平滚轮 | + + +### Hid_SynEvent + +``` +enum Hid_SynEvent +``` +**描述** +同步事件编码。 + +**起始版本:** 11 + +| 枚举值 | 描述 | +| -------- | -------- | +| HID_SYN_REPORT | 表示一个事件的结束 | +| HID_SYN_CONFIG | 表示配置同步 | +| HID_SYN_MT_REPORT | 表示多点触摸的ABS数据包结束 | +| HID_SYN_DROPPED | 表示该事件被丢弃 | + + +## 函数说明 + + +### OH_Hid_CreateDevice() + +``` +int32_t OH_Hid_CreateDevice (Hid_Device * hidDevice, Hid_EventProperties * hidEventProperties ) +``` +**描述** +创建设备。 + +**起始版本:** 11 + +**参数:** + +| 名称 | 描述 | +| -------- | -------- | +| hidDevice | 创建设备需要的基本信息,包括设备名、厂商ID、产品ID等。 | +| hidEventProperties | 创建的设备关注的事件,包括事件类型、按键事件属性、绝对坐标事件属性、相对坐标事件属性等。 | + +**Permission:** + +ohos.permission.ACCESS_DDK_HID + +**返回:** + +成功返回设备ID,非负数;否则返回负数。 + + +### OH_Hid_DestroyDevice() + +``` +int32_t OH_Hid_DestroyDevice (int32_t deviceId) +``` +**描述** +销毁设备。 + +**起始版本:** 11 + +**参数:** + +| 名称 | 描述 | +| -------- | -------- | +| deviceId | 设备ID。 | + +**Permission:** + +ohos.permission.ACCESS_DDK_HID + +**返回:** + +成功返回0,否则返回负数。 + + +### OH_Hid_EmitEvent() + +``` +int32_t OH_Hid_EmitEvent (int32_t deviceId, const Hid_EmitItem items[], uint16_t length ) +``` +**描述** +向指定设备发送事件列表。 + +**起始版本:** 11 + +**参数:** + +| 名称 | 描述 | +| -------- | -------- | +| deviceId | 设备ID。 | +| items | 发送的事件列表,事件包括类型(取值来源事件类型Hid_EventType)、编码(取值来源同步事件编码Hid_SynEvent、键值编码Hid_KeyCode、按钮编码HidBtnCode、 绝对坐标编码Hid_AbsAxes、相对坐标编码Hid_RelAxes、其它类型的输入事件编码Hid_MscEvent)、值(根据实际设备输入决定)。 | +| length | 发送事件列表长度(一次发送事件个数)。 | + +**Permission:** + +ohos.permission.ACCESS_DDK_HID + +**返回:** + +成功返回0,否则返回负数。 + + +## 变量说明 + + +### bustype + +``` +uint16_t Hid_Device::bustype +``` +**描述** +总线类型 + + +### code + +``` +uint16_t Hid_EmitItem::code +``` +**描述** +事件编码 + + +### deviceName + +``` +const char* Hid_Device::deviceName +``` +**描述** +设备名称 + + +### hidAbs + +``` +struct Hid_AbsAxesArray Hid_EventProperties::hidAbs +``` +**描述** +绝对坐标属性编码数组 + + +### hidAbsAxes + +``` +Hid_AbsAxes* Hid_AbsAxesArray::hidAbsAxes +``` +**描述** +绝对坐标属性编码 + + +### hidAbsFlat + +``` +int32_t Hid_EventProperties::hidAbsFlat[64] +``` +**描述** +绝对坐标属性固定值 + + +### hidAbsFuzz + +``` +int32_t Hid_EventProperties::hidAbsFuzz[64] +``` +**描述** +绝对坐标属性模糊值 + + +### hidAbsMax + +``` +int32_t Hid_EventProperties::hidAbsMax[64] +``` +**描述** +绝对坐标属性最大值 + + +### hidAbsMin + +``` +int32_t Hid_EventProperties::hidAbsMin[64] +``` +**描述** +绝对坐标属性最小值 + + +### hidEventType + +``` +Hid_EventType* Hid_EventTypeArray::hidEventType +``` +**描述** +事件类型编码 + + +### hidEventTypes + +``` +struct Hid_EventTypeArray Hid_EventProperties::hidEventTypes +``` +**描述** +事件类型属性编码数组 + + +### hidKeyCode + +``` +Hid_KeyCode* Hid_KeyCodeArray::hidKeyCode +``` +**描述** +键值编码 + + +### hidKeys + +``` +struct Hid_KeyCodeArray Hid_EventProperties::hidKeys +``` +**描述** +键值属性编码数组 + + +### hidMiscellaneous + +``` +struct Hid_MscEventArray Hid_EventProperties::hidMiscellaneous +``` +**描述** +其它特殊事件属性编码数组 + + +### hidMscEvent + +``` +Hid_MscEvent* Hid_MscEventArray::hidMscEvent +``` +**描述** +其它特殊事件属性编码 + + +### hidRelAxes + +``` +Hid_RelAxes* Hid_RelAxesArray::hidRelAxes +``` +**描述** +相对坐标属性编码 + + +### hidRelBits + +``` +struct Hid_RelAxesArray Hid_EventProperties::hidRelBits +``` +**描述** +相对坐标属性编码数组 + + +### length [1/5] + +``` +uint16_t Hid_EventTypeArray::length +``` +**描述** +数组长度 + + +### length [2/5] + +``` +uint16_t Hid_KeyCodeArray::length +``` +**描述** +数组长度 + + +### length [3/5] + +``` +uint16_t Hid_AbsAxesArray::length +``` +**描述** +数组长度 + + +### length [4/5] + +``` +uint16_t Hid_RelAxesArray::length +``` +**描述** +数组长度 + + +### length [5/5] + +``` +uint16_t Hid_MscEventArray::length +``` +**描述** +数组长度 + + +### productId + +``` +uint16_t Hid_Device::productId +``` +**描述** +产品ID + + +### properties + +``` +Hid_DeviceProp* Hid_Device::properties +``` +**描述** +设备特性 + + +### propLength + +``` +uint16_t Hid_Device::propLength +``` +**描述** +设备特性数量 + + +### type + +``` +uint16_t Hid_EmitItem::type +``` +**描述** +事件类型 + + +### value + +``` +uint32_t Hid_EmitItem::value +``` +**描述** +事件值 + + +### vendorId + +``` +uint16_t Hid_Device::vendorId +``` +**描述** +厂商ID + + +### version + +``` +uint16_t Hid_Device::version +``` +**描述** +版本号 diff --git a/zh-cn/application-dev/reference/native-apis/_o_h___rdb___config.md b/zh-cn/application-dev/reference/native-apis/_o_h___rdb___config.md index 34bcb47f2da72521ec2d9720e0d16cb144560aef..02f0f33bf72cbc3e47424f1240222f1fc2cc08f3 100644 --- a/zh-cn/application-dev/reference/native-apis/_o_h___rdb___config.md +++ b/zh-cn/application-dev/reference/native-apis/_o_h___rdb___config.md @@ -28,3 +28,4 @@ | [moduleName](_r_d_b.md#modulename) | 应用模块名。 | | [isEncrypt](_r_d_b.md#isencrypt) | 指定数据库是否加密。 | | [securityLevel](_r_d_b.md#securitylevel) | 数据库安全级别。 | +| [area](_r_d_b.md#area)11+ | 设置数据库安全区域等级[Rdb_SecurityArea](_r_d_b.md#rdb_securityarea)。 | \ No newline at end of file diff --git a/zh-cn/application-dev/reference/native-apis/avplayer_8h.md b/zh-cn/application-dev/reference/native-apis/avplayer_8h.md new file mode 100644 index 0000000000000000000000000000000000000000..4367672f60c2323d1057d46098c99d55e6fc8b8f --- /dev/null +++ b/zh-cn/application-dev/reference/native-apis/avplayer_8h.md @@ -0,0 +1,49 @@ +# avplayer.h + + +## 概述 + +定义AVPlayer接口。使用AVPlayer提供的Native API播放媒体源。 + +**库:** libavplayer.so + +**起始版本:** 11 + +**相关模块:**[AVPlayer](_a_v_player.md) + + +## 汇总 + + +### 函数 + +| 名称 | 描述 | +| -------- | -------- | +| \*[OH_AVPlayer_Create](_a_v_player.md#oh_avplayer_create) (void) | 创建播放器。 | +| [OH_AVPlayer_SetURLSource](_a_v_player.md#oh_avplayer_seturlsource) (OH_AVPlayer \*player, const char \*url) | 设置播放器的播放源。对应的源可以是http url。 | +| [OH_AVPlayer_SetFDSource](_a_v_player.md#oh_avplayer_setfdsource) (OH_AVPlayer \*player, int32_t fd, int64_t offset, int64_t size) | 设置播放器的播放媒体文件描述符来源。 | +| [OH_AVPlayer_Prepare](_a_v_player.md#oh_avplayer_prepare) (OH_AVPlayer \*player) | 准备播放环境,异步缓存媒体数据。 | +| [OH_AVPlayer_Play](_a_v_player.md#oh_avplayer_play) (OH_AVPlayer \*player) | 开始播放。 | +| [OH_AVPlayer_Pause](_a_v_player.md#oh_avplayer_pause) (OH_AVPlayer \*player) | 暂停播放。 | +| [OH_AVPlayer_Stop](_a_v_player.md#oh_avplayer_stop) (OH_AVPlayer \*player) | 停止播放。 | +| [OH_AVPlayer_Reset](_a_v_player.md#oh_avplayer_reset) (OH_AVPlayer \*player) | 将播放器恢复到初始状态。 | +| [OH_AVPlayer_Release](_a_v_player.md#oh_avplayer_release) (OH_AVPlayer \*player) | 异步释放播放器资源。 | +| [OH_AVPlayer_ReleaseSync](_a_v_player.md#oh_avplayer_releasesync) (OH_AVPlayer \*player) | 同步释放播放器资源。 | +| [OH_AVPlayer_SetVolume](_a_v_player.md#oh_avplayer_setvolume) (OH_AVPlayer \*player, float leftVolume, float rightVolume) | 设置播放器的音量。 | +| [OH_AVPlayer_Seek](_a_v_player.md#oh_avplayer_seek) (OH_AVPlayer \*player, int32_t mSeconds, [AVPlayerSeekMode](_a_v_player.md#avplayerseekmode) mode) | 改变播放位置。 | +| [OH_AVPlayer_GetCurrentTime](_a_v_player.md#oh_avplayer_getcurrenttime) (OH_AVPlayer \*player, int32_t \*currentTime) | 获取播放位置,精确到毫秒。 | +| [OH_AVPlayer_GetVideoWidth](_a_v_player.md#oh_avplayer_getvideowidth) (OH_AVPlayer \*player, int32_t \*videoWidth) | 获取视频宽度。 | +| [OH_AVPlayer_GetVideoHeight](_a_v_player.md#oh_avplayer_getvideoheight) (OH_AVPlayer \*player, int32_t \*videoHeight) | 获取视频高度。 | +| [OH_AVPlayer_SetPlaybackSpeed](_a_v_player.md#oh_avplayer_setplaybackspeed) (OH_AVPlayer \*player, [AVPlaybackSpeed](_a_v_player.md#avplaybackspeed) speed) | 设置播放器播放速率。 | +| [OH_AVPlayer_GetPlaybackSpeed](_a_v_player.md#oh_avplayer_getplaybackspeed) (OH_AVPlayer \*player, [AVPlaybackSpeed](_a_v_player.md#avplaybackspeed) \*speed) | 获取当前播放器播放速率。 | +| [OH_AVPlayer_SelectBitRate](_a_v_player.md#oh_avplayer_selectbitrate) (OH_AVPlayer \*player, uint32_t bitRate) | 设置hls播放器使用的码率。 | +| [OH_AVPlayer_SetVideoSurface](_a_v_player.md#oh_avplayer_setvideosurface) (OH_AVPlayer \*player, OHNativeWindow \*window) | 设置播放画面窗口。 | +| [OH_AVPlayer_GetDuration](_a_v_player.md#oh_avplayer_getduration) (OH_AVPlayer \*player, int32_t \*duration) | 获取媒体文件的总时长,精确到毫秒。 | +| [OH_AVPlayer_GetState](_a_v_player.md#oh_avplayer_getstate) (OH_AVPlayer \*player, [AVPlayerState](_a_v_player.md#avplayerstate) \*state) | 获取当前播放状态。 | +| [OH_AVPlayer_IsPlaying](_a_v_player.md#oh_avplayer_isplaying) (OH_AVPlayer \*player) | 判断播放器是否在播放。 | +| [OH_AVPlayer_IsLooping](_a_v_player.md#oh_avplayer_islooping) (OH_AVPlayer \*player) | 判断是用循环播放。 | +| [OH_AVPlayer_SetLooping](_a_v_player.md#oh_avplayer_setlooping) (OH_AVPlayer \*player, bool loop) | 设置循环播放。 | +| [OH_AVPlayer_SetPlayerCallback](_a_v_player.md#oh_avplayer_setplayercallback) (OH_AVPlayer \*player, [AVPlayerCallback](_a_v_player_callback.md) callback) | 设置播放器回调方法。 | +| [OH_AVPlayer_SelectTrack](_a_v_player.md#oh_avplayer_selecttrack) (OH_AVPlayer \*player, int32_t index) | 选择音频或字幕轨道。 | +| [OH_AVPlayer_DeselectTrack](_a_v_player.md#oh_avplayer_deselecttrack) (OH_AVPlayer \*player, int32_t index) | 取消选择当前音频或字幕轨道。 | +| [OH_AVPlayer_GetCurrentTrack](_a_v_player.md#oh_avplayer_getcurrenttrack) (OH_AVPlayer \*player, int32_t trackType, int32_t \*index) | 获取当前有效的轨道索引。 | diff --git a/zh-cn/application-dev/reference/native-apis/avplayer__base_8h.md b/zh-cn/application-dev/reference/native-apis/avplayer__base_8h.md new file mode 100644 index 0000000000000000000000000000000000000000..ee687c2383d10189ecaef476df898e89241ec44d --- /dev/null +++ b/zh-cn/application-dev/reference/native-apis/avplayer__base_8h.md @@ -0,0 +1,45 @@ +# avplayer_base.h + + +## 概述 + +定义AVPlayer的结构体和枚举。 + +**库:** libavplayer.so + +**起始版本:** 11 + +**相关模块:**[AVPlayer](_a_v_player.md) + + +## 汇总 + + +### 结构体 + +| 名称 | 描述 | +| -------- | -------- | +| [AVPlayerCallback](_a_v_player_callback.md) | OH_AVPlayer中所有回调函数指针的集合。 | + + +### 类型定义 + +| 名称 | 描述 | +| -------- | -------- | +| [AVPlayerState](_a_v_player.md#avplayerstate) | 播放状态 | +| [AVPlayerSeekMode](_a_v_player.md#avplayerseekmode) | 跳转模式 | +| [AVPlaybackSpeed](_a_v_player.md#avplaybackspeed) | 播放速度 | +| [AVPlayerOnInfoType](_a_v_player.md#avplayeroninfotype) | OnInfo类型 | +| (\*[OH_AVPlayerOnInfo](_a_v_player.md#oh_avplayeroninfo)) (OH_AVPlayer \*player, [AVPlayerOnInfoType](_a_v_player.md#avplayeroninfotype) type, int32_t extra) | 收到播放器消息时调用。 | +| (\*[OH_AVPlayerOnError](_a_v_player.md#oh_avplayeronerror)) (OH_AVPlayer \*player, int32_t errorCode, const char \*errorMsg) | 在API 9以上的版本发生错误时调用 | +| [AVPlayerCallback](_a_v_player.md#avplayercallback) | OH_AVPlayer中所有回调函数指针的集合。 | + + +### 枚举 + +| 名称 | 描述 | +| -------- | -------- | +| [AVPlayerState](_a_v_player.md#avplayerstate) {
[AV_IDLE](_a_v_player.md) = 0, [AV_INITIALIZED](_a_v_player.md) = 1, [AV_PREPARED](_a_v_player.md) = 2, [AV_PLAYING](_a_v_player.md) = 3,
[AV_PAUSED](_a_v_player.md) = 4, [AV_STOPPED](_a_v_player.md) = 5, [AV_COMPLETED](_a_v_player.md) = 6, [AV_RELEASED](_a_v_player.md) = 7,
[AV_ERROR](_a_v_player.md) = 8
} | 播放状态 | +| [AVPlayerSeekMode](_a_v_player.md#avplayerseekmode) { [AV_SEEK_NEXT_SYNC](_a_v_player.md) = 0, [AV_SEEK_PREVIOUS_SYNC](_a_v_player.md) } | 跳转模式 | +| [AVPlaybackSpeed](_a_v_player.md#avplaybackspeed) {
[AV_SPEED_FORWARD_0_75_X](_a_v_player.md), [AV_SPEED_FORWARD_1_00_X](_a_v_player.md), [AV_SPEED_FORWARD_1_25_X](_a_v_player.md), [AV_SPEED_FORWARD_1_75_X](_a_v_player.md),
[AV_SPEED_FORWARD_2_00_X](_a_v_player.md)
} | 播放速度 | +| [AVPlayerOnInfoType](_a_v_player.md#avplayeroninfotype) {
[AV_INFO_TYPE_SEEKDONE](_a_v_player.md) = 0, [AV_INFO_TYPE_SPEEDDONE](_a_v_player.md) = 1, [AV_INFO_TYPE_BITRATEDONE](_a_v_player.md) = 2, [AV_INFO_TYPE_EOS](_a_v_player.md) = 3,
[AV_INFO_TYPE_STATE_CHANGE](_a_v_player.md) = 4, [AV_INFO_TYPE_POSITION_UPDATE](_a_v_player.md) = 5, [AV_INFO_TYPE_MESSAGE](_a_v_player.md) = 6, [AV_INFO_TYPE_VOLUME_CHANGE](_a_v_player.md) = 7,
[AV_INFO_TYPE_RESOLUTION_CHANGE](_a_v_player.md) = 8, [AV_INFO_TYPE_BUFFERING_UPDATE](_a_v_player.md) = 9, [AV_INFO_TYPE_BITRATE_COLLECT](_a_v_player.md) = 10, [AV_INFO_TYPE_INTERRUPT_EVENT](_a_v_player.md) = 11,
[AV_INFO_TYPE_DURATION_UPDATE](_a_v_player.md) = 12, [AV_INFO_TYPE_IS_LIVE_STREAM](_a_v_player.md) = 13, [AV_INFO_TYPE_TRACKCHANGE](_a_v_player.md) = 14, [AV_INFO_TYPE_TRACK_INFO_UPDATE](_a_v_player.md) = 15,
[AV_INFO_TYPE_SUBTITLE_UPDATE](_a_v_player.md) = 16
} | OnInfo类型 | diff --git a/zh-cn/application-dev/reference/native-apis/hid__ddk__api_8h.md b/zh-cn/application-dev/reference/native-apis/hid__ddk__api_8h.md new file mode 100644 index 0000000000000000000000000000000000000000..909bdb2faf245900bb0a5e4f5ceee0b1f0a3ff2f --- /dev/null +++ b/zh-cn/application-dev/reference/native-apis/hid__ddk__api_8h.md @@ -0,0 +1,24 @@ +# hid_ddk_api.h + + +## 概述 + +声明主机侧访问输入设备的HID DDK接口。 + +引用文件:<hid/hid_ddk_api.h> + +**起始版本:** 11 + +**相关模块:**[HidDdk](_hid_ddk.md) + + +## 汇总 + + +### 函数 + +| 名称 | 描述 | +| -------- | -------- | +| [OH_Hid_CreateDevice](_hid_ddk.md#oh_hid_createdevice) ([Hid_Device](_hid___device.md) \*hidDevice, [Hid_EventProperties](_hid___event_properties.md) \*hidEventProperties) | int32_t
创建设备。 | +| [OH_Hid_EmitEvent](_hid_ddk.md#oh_hid_emitevent) (int32_t deviceId, const [Hid_EmitItem](_hid___emit_item.md) items[], uint16_t length) | int32_t
向指定设备发送事件列表。 | +| [OH_Hid_DestroyDevice](_hid_ddk.md#oh_hid_destroydevice) (int32_t deviceId) | int32_t
销毁设备。 | diff --git a/zh-cn/application-dev/reference/native-apis/hid__ddk__types_8h.md b/zh-cn/application-dev/reference/native-apis/hid__ddk__types_8h.md new file mode 100644 index 0000000000000000000000000000000000000000..fd58b61b4281ae09de65ca216eefdf3c1911b124 --- /dev/null +++ b/zh-cn/application-dev/reference/native-apis/hid__ddk__types_8h.md @@ -0,0 +1,57 @@ +# hid_ddk_types.h + + +## 概述 + +提供HID DDK中的枚举变量与结构体定义。 + +引用文件:<hid/hid_ddk_types.h> + +**起始版本:** 11 + +**相关模块:**[HidDdk](_hid_ddk.md) + + +## 汇总 + + +### 结构体 + +| 名称 | 描述 | +| -------- | -------- | +| [Hid_EmitItem](_hid___emit_item.md) | struct
事件信息。 | +| [Hid_Device](_hid___device.md) | struct
设备基本信息。 | +| [Hid_EventTypeArray](_hid___event_type_array.md) | struct
事件类型编码数组。 | +| [Hid_KeyCodeArray](_hid___key_code_array.md) | struct
键值属性数组。 | +| [Hid_AbsAxesArray](_hid___abs_axes_array.md) | struct
绝对坐标属性数组。 | +| [Hid_RelAxesArray](_hid___rel_axes_array.md) | struct
相对坐标属性数组。 | +| [Hid_MscEventArray](_hid___msc_event_array.md) | struct
其它特殊事件属性数组。 | +| [Hid_EventProperties](_hid___event_properties.md) | struct
设备关注事件属性。 | + + +### 类型定义 + +| 名称 | 描述 | +| -------- | -------- | +| [Hid_EmitItem](_hid_ddk.md#hid_emititem) | typedef struct [Hid_EmitItem](_hid___emit_item.md)
事件信息。 | +| [Hid_Device](_hid_ddk.md#hid_device) | typedef struct [Hid_Device](_hid___device.md)
设备基本信息。 | +| [Hid_EventTypeArray](_hid_ddk.md#hid_eventtypearray) | typedef struct [Hid_EventTypeArray](_hid___event_type_array.md)
事件类型编码数组。 | +| [Hid_KeyCodeArray](_hid_ddk.md#hid_keycodearray) | typedef struct [Hid_KeyCodeArray](_hid___key_code_array.md)
键值属性数组。 | +| [Hid_AbsAxesArray](_hid_ddk.md#hid_absaxesarray) | typedef struct [Hid_AbsAxesArray](_hid___abs_axes_array.md)
绝对坐标属性数组。 | +| [Hid_RelAxesArray](_hid_ddk.md#hid_relaxesarray) | typedef struct [Hid_RelAxesArray](_hid___rel_axes_array.md)
相对坐标属性数组。 | +| [Hid_MscEventArray](_hid_ddk.md#hid_msceventarray) | typedef struct [Hid_MscEventArray](_hid___msc_event_array.md)
其它特殊事件属性数组。 | +| [Hid_EventProperties](_hid_ddk.md#hid_eventproperties) | typedef struct [Hid_EventProperties](_hid___event_properties.md)
设备关注事件属性。 | + + +### 枚举 + +| 名称 | 描述 | +| -------- | -------- | +| [Hid_DeviceProp](_hid_ddk.md#hid_deviceprop) {
[HID_PROP_POINTER](_hid_ddk.md) = 0x00, [HID_PROP_DIRECT](_hid_ddk.md) = 0x01, [HID_PROP_BUTTON_PAD](_hid_ddk.md) = 0x02, [HID_PROP_SEMI_MT](_hid_ddk.md) = 0x03,
[HID_PROP_TOP_BUTTON_PAD](_hid_ddk.md) = 0x04, [HID_PROP_POINTING_STICK](_hid_ddk.md) = 0x05, [HID_PROP_ACCELEROMETER](_hid_ddk.md) = 0x06
} | 输入设备特性定义。 | +| [Hid_EventType](_hid_ddk.md#hid_eventtype) {
[HID_EV_SYN](_hid_ddk.md) = 0x00, [HID_EV_KEY](_hid_ddk.md) = 0x01, [HID_EV_REL](_hid_ddk.md) = 0x02, [HID_EV_ABS](_hid_ddk.md) = 0x03,
[HID_EV_MSC](_hid_ddk.md) = 0x04
} | 事件类型。 | +| [Hid_SynEvent](_hid_ddk.md#hid_synevent) { [HID_SYN_REPORT](_hid_ddk.md) = 0, [HID_SYN_CONFIG](_hid_ddk.md) = 1, [HID_SYN_MT_REPORT](_hid_ddk.md) = 2, [HID_SYN_DROPPED](_hid_ddk.md) = 3 } | 同步事件编码。 | +| [Hid_KeyCode](_hid_ddk.md#hid_keycode) {
[HID_KEY_A](_hid_ddk.md) = 30, [HID_KEY_B](_hid_ddk.md) = 48, [HID_KEY_C](_hid_ddk.md) = 46, [HID_KEY_D](_hid_ddk.md) = 32,
[HID_KEY_E](_hid_ddk.md) = 18, [HID_KEY_F](_hid_ddk.md) = 33, [HID_KEY_G](_hid_ddk.md) = 34, [HID_KEY_H](_hid_ddk.md) = 35,
[HID_KEY_I](_hid_ddk.md) = 23, [HID_KEY_J](_hid_ddk.md) = 36, [HID_KEY_K](_hid_ddk.md) = 37, [HID_KEY_L](_hid_ddk.md) = 38,
[HID_KEY_M](_hid_ddk.md) = 50, [HID_KEY_N](_hid_ddk.md) = 49, [HID_KEY_O](_hid_ddk.md) = 24, [HID_KEY_P](_hid_ddk.md) = 25,
[HID_KEY_Q](_hid_ddk.md) = 16, [HID_KEY_R](_hid_ddk.md) = 19, [HID_KEY_S](_hid_ddk.md) = 31, [HID_KEY_T](_hid_ddk.md) = 20,
[HID_KEY_U](_hid_ddk.md) = 22, [HID_KEY_V](_hid_ddk.md) = 47, [HID_KEY_W](_hid_ddk.md) = 17, [HID_KEY_X](_hid_ddk.md) = 45,
[HID_KEY_Y](_hid_ddk.md) = 21, [HID_KEY_Z](_hid_ddk.md) = 44, [HID_KEY_ESC](_hid_ddk.md) = 1, [HID_KEY_0](_hid_ddk.md) = 11,
[HID_KEY_1](_hid_ddk.md) = 2, [HID_KEY_2](_hid_ddk.md) = 3, [HID_KEY_3](_hid_ddk.md) = 4, [HID_KEY_4](_hid_ddk.md) = 5,
[HID_KEY_5](_hid_ddk.md) = 6, [HID_KEY_6](_hid_ddk.md) = 7, [HID_KEY_7](_hid_ddk.md) = 8, [HID_KEY_8](_hid_ddk.md) = 9,
[HID_KEY_9](_hid_ddk.md) = 10, [HID_KEY_GRAVE](_hid_ddk.md) = 41, [HID_KEY_MINUS](_hid_ddk.md) = 12, [HID_KEY_EQUALS](_hid_ddk.md) = 13,
[HID_KEY_BACKSPACE](_hid_ddk.md) = 14, [HID_KEY_LEFT_BRACKET](_hid_ddk.md) = 26, [HID_KEY_RIGHT_BRACKET](_hid_ddk.md) = 27, [HID_KEY_ENTER](_hid_ddk.md) = 28,
[HID_KEY_LEFT_SHIFT](_hid_ddk.md) = 42, [HID_KEY_BACKSLASH](_hid_ddk.md) = 43, [HID_KEY_SEMICOLON](_hid_ddk.md) = 39, [HID_KEY_APOSTROPHE](_hid_ddk.md) = 40,
[HID_KEY_SPACE](_hid_ddk.md) = 57, [HID_KEY_SLASH](_hid_ddk.md) = 53, [HID_KEY_COMMA](_hid_ddk.md) = 51, [HID_KEY_PERIOD](_hid_ddk.md) = 52,
[HID_KEY_RIGHT_SHIFT](_hid_ddk.md) = 54, [HID_KEY_NUMPAD_0](_hid_ddk.md) = 82, [HID_KEY_NUMPAD_1](_hid_ddk.md) = 79, [HID_KEY_NUMPAD_2](_hid_ddk.md) = 80,
[HID_KEY_NUMPAD_3](_hid_ddk.md) = 81, [HID_KEY_NUMPAD_4](_hid_ddk.md) = 75, [HID_KEY_NUMPAD_5](_hid_ddk.md) = 76, [HID_KEY_NUMPAD_6](_hid_ddk.md) = 77,
[HID_KEY_NUMPAD_7](_hid_ddk.md) = 71, [HID_KEY_NUMPAD_8](_hid_ddk.md) = 72, [HID_KEY_NUMPAD_9](_hid_ddk.md) = 73, [HID_KEY_NUMPAD_DIVIDE](_hid_ddk.md) = 70,
[HID_KEY_NUMPAD_MULTIPLY](_hid_ddk.md) = 55, [HID_KEY_NUMPAD_SUBTRACT](_hid_ddk.md) = 74, [HID_KEY_NUMPAD_ADD](_hid_ddk.md) = 78, [HID_KEY_NUMPAD_DOT](_hid_ddk.md) = 83,
[HID_KEY_SYSRQ](_hid_ddk.md) = 99, [HID_KEY_MUTE](_hid_ddk.md) = 113, [HID_KEY_VOLUME_DOWN](_hid_ddk.md) = 114, [HID_KEY_VOLUME_UP](_hid_ddk.md) = 115,
[HID_KEY_BRIGHTNESS_DOWN](_hid_ddk.md) = 224, [HID_KEY_BRIGHTNESS_UP](_hid_ddk.md) = 225, [HID_BTN_0](_hid_ddk.md) = 0x100, [HID_BTN_1](_hid_ddk.md) = 0x101,
[HID_BTN_2](_hid_ddk.md) = 0x102, [HID_BTN_3](_hid_ddk.md) = 0x103, [HID_BTN_4](_hid_ddk.md) = 0x104, [HID_BTN_5](_hid_ddk.md) = 0x105,
[HID_BTN_6](_hid_ddk.md) = 0x106, [HID_BTN_7](_hid_ddk.md) = 0x107, [HID_BTN_8](_hid_ddk.md) = 0x108, [HID_BTN_9](_hid_ddk.md) = 0x109,
[HID_BTN_LEFT](_hid_ddk.md) = 0x110, [HID_BTN_RIGHT](_hid_ddk.md) = 0x111, [HID_BTN_MIDDLE](_hid_ddk.md) = 0x112, [HID_BTN_SIDE](_hid_ddk.md) = 0x113,
[HID_BTN_EXTRA](_hid_ddk.md) = 0x114, [HID_BTN_FORWARD](_hid_ddk.md) = 0x115, [HID_BTN_BACKWARD](_hid_ddk.md) = 0x116, [HID_BTN_TASK](_hid_ddk.md) = 0x117,
[HID_BTN_TOOL_PEN](_hid_ddk.md) = 0x140, [HID_BTN_TOOL_RUBBER](_hid_ddk.md) = 0x141, [HID_BTN_TOOL_BRUSH](_hid_ddk.md) = 0x142, [HID_BTN_TOOL_PENCIL](_hid_ddk.md) = 0x143,
[HID_BTN_TOOL_AIRBRUSH](_hid_ddk.md) = 0x144, [HID_BTN_TOOL_FINGER](_hid_ddk.md) = 0x145, [HID_BTN_TOOL_MOUSE](_hid_ddk.md) = 0x146, [HID_BTN_TOOL_LENS](_hid_ddk.md) = 0x147,
[HID_BTN_TOOL_QUINT_TAP](_hid_ddk.md) = 0x148, [HID_BTN_STYLUS3](_hid_ddk.md) = 0x149, [HID_BTN_TOUCH](_hid_ddk.md) = 0x14a, [HID_BTN_STYLUS](_hid_ddk.md) = 0x14b,
[HID_BTN_STYLUS2](_hid_ddk.md) = 0x14c, [HID_BTN_TOOL_DOUBLE_TAP](_hid_ddk.md) = 0x14d, [HID_BTN_TOOL_TRIPLE_TAP](_hid_ddk.md) = 0x14e, [HID_BTN_TOOL_QUAD_TAP](_hid_ddk.md) = 0x14f,
[HID_BTN_WHEEL](_hid_ddk.md) = 0x150
} | 键值编码。 | +| [Hid_AbsAxes](_hid_ddk.md#hid_absaxes) {
[HID_ABS_X](_hid_ddk.md) = 0x00, [HID_ABS_Y](_hid_ddk.md) = 0x01, [HID_ABS_Z](_hid_ddk.md) = 0x02, [HID_ABS_RX](_hid_ddk.md) = 0x03,
[HID_ABS_RY](_hid_ddk.md) = 0x04, [HID_ABS_RZ](_hid_ddk.md) = 0x05, [HID_ABS_THROTTLE](_hid_ddk.md) = 0x06, [HID_ABS_RUDDER](_hid_ddk.md) = 0x07,
[HID_ABS_WHEEL](_hid_ddk.md) = 0x08, [HID_ABS_GAS](_hid_ddk.md) = 0x09, [HID_ABS_BRAKE](_hid_ddk.md) = 0x0a, [HID_ABS_HAT0X](_hid_ddk.md) = 0x10,
[HID_ABS_HAT0Y](_hid_ddk.md) = 0x11, [HID_ABS_HAT1X](_hid_ddk.md) = 0x12, [HID_ABS_HAT1Y](_hid_ddk.md) = 0x13, [HID_ABS_HAT2X](_hid_ddk.md) = 0x14,
[HID_ABS_HAT2Y](_hid_ddk.md) = 0x15, [HID_ABS_HAT3X](_hid_ddk.md) = 0x16, [HID_ABS_HAT3Y](_hid_ddk.md) = 0x17, [HID_ABS_PRESSURE](_hid_ddk.md) = 0x18,
[HID_ABS_DISTANCE](_hid_ddk.md) = 0x19, [HID_ABS_TILT_X](_hid_ddk.md) = 0x1a, [HID_ABS_TILT_Y](_hid_ddk.md) = 0x1b, [HID_ABS_TOOL_WIDTH](_hid_ddk.md) = 0x1c,
[HID_ABS_VOLUME](_hid_ddk.md) = 0x20, [HID_ABS_MISC](_hid_ddk.md) = 0x28
} | 绝对坐标编码。 | +| [Hid_RelAxes](_hid_ddk.md#hid_relaxes) {
[HID_REL_X](_hid_ddk.md) = 0x00, [HID_REL_Y](_hid_ddk.md) = 0x01, [HID_REL_Z](_hid_ddk.md) = 0x02, [HID_REL_RX](_hid_ddk.md) = 0x03,
[HID_REL_RY](_hid_ddk.md) = 0x04, [HID_REL_RZ](_hid_ddk.md) = 0x05, [HID_REL_HWHEEL](_hid_ddk.md) = 0x06, [HID_REL_DIAL](_hid_ddk.md) = 0x07,
[HID_REL_WHEEL](_hid_ddk.md) = 0x08, [HID_REL_MISC](_hid_ddk.md) = 0x09, [HID_REL_RESERVED](_hid_ddk.md) = 0x0a, [HID_REL_WHEEL_HI_RES](_hid_ddk.md) = 0x0b,
[HID_REL_HWHEEL_HI_RES](_hid_ddk.md) = 0x0c
} | 相对坐标编码。 | +| [Hid_MscEvent](_hid_ddk.md#hid_mscevent) {
[HID_MSC_SERIAL](_hid_ddk.md) = 0x00, [HID_MSC_PULSE_LED](_hid_ddk.md) = 0x01, [HID_MSC_GESTURE](_hid_ddk.md) = 0x02, [HID_MSC_RAW](_hid_ddk.md) = 0x03,
[HID_MSC_SCAN](_hid_ddk.md) = 0x04, [HID_MSC_TIMESTAMP](_hid_ddk.md) = 0x05
} | 不适合其它类型的输入事件编码。 | +| [Hid_DdkErrCode](_hid_ddk.md#hid_ddkerrcode) {
[HID_DDK_SUCCESS](_hid_ddk.md) = 0, [HID_DDK_FAILURE](_hid_ddk.md) = -1, [HID_DDK_INVALID_PARAMETER](_hid_ddk.md) = -2, [HID_DDK_INVALID_OPERATION](_hid_ddk.md) = -3,
[HID_DDK_NULL_PTR](_hid_ddk.md) = -4, [HID_DDK_TIMEOUT](_hid_ddk.md) = -5, [HID_DDK_NO_PERM](_hid_ddk.md) = -6
} | HID DDK错误码定义。 | diff --git a/zh-cn/application-dev/reference/native-apis/native__audiocapturer_8h.md b/zh-cn/application-dev/reference/native-apis/native__audiocapturer_8h.md index 0782fb79baf765b51d34baa1a8bc715ca0f27d34..586df987872e2fd3c9b7ea3a45b962ed60e38bc3 100644 --- a/zh-cn/application-dev/reference/native-apis/native__audiocapturer_8h.md +++ b/zh-cn/application-dev/reference/native-apis/native__audiocapturer_8h.md @@ -3,7 +3,7 @@ ## 概述 -声明输入类型的输入音频流相关接口。 +声明输入类型的音频流相关接口。 **系统能力:** SystemCapability.Multimedia.Audio.Core diff --git a/zh-cn/application-dev/reference/native-apis/native__audiorenderer_8h.md b/zh-cn/application-dev/reference/native-apis/native__audiorenderer_8h.md index 6995ba231b7734cae4183c6de33edc62c12cf141..f0ebe76ae729abab0f91ef0595ba69141dc3f4d9 100644 --- a/zh-cn/application-dev/reference/native-apis/native__audiorenderer_8h.md +++ b/zh-cn/application-dev/reference/native-apis/native__audiorenderer_8h.md @@ -3,7 +3,7 @@ ## 概述 -声明输出类型的输出音频流相关接口。 +声明输出类型的音频流相关接口。 **系统能力:** SystemCapability.Multimedia.Audio.Core diff --git a/zh-cn/application-dev/security/accesstoken-guidelines.md b/zh-cn/application-dev/security/accesstoken-guidelines.md index 1ab2e8c00a975c15c5a616bcc809a79611a65e89..9e566864c2103691479d04aaf975f0881b48625c 100644 --- a/zh-cn/application-dev/security/accesstoken-guidelines.md +++ b/zh-cn/application-dev/security/accesstoken-guidelines.md @@ -24,8 +24,8 @@ | 标签 | 是否必填 | 说明 | | --------- | -------- | ------------------------------------------------------------ | | name | 是 | 权限名称。 | -| reason | 否 | 描述申请权限的原因,可参考[权限使用理由的文案内容规范](#权限使用理由的文案内容规范)。
> **说明**:当申请的权限为user_grant权限时,此字段必填。 | -| usedScene | 否 | 描述权限使用的场景和时机。
> **说明**:当申请的权限为user_grant权限时,此字段必填。 | +| reason | 否 | 描述申请权限的原因,可参考[权限使用理由的文案内容规范](#权限使用理由的文案内容规范)。
> **说明**:该字段用于应用上架校验,当申请的权限为user_grant权限时,此字段必填。 | +| usedScene | 否 | 描述权限使用的场景和时机。
> **说明**:该字段用于应用上架校验,当申请的权限为user_grant权限时,此字段必填。 | | abilities | 否 | 标识需要使用到该权限的Ability,标签为数组形式。
**适用模型**:Stage模型 | | ability | 否 | 标识需要使用到该权限的Ability,标签为数组形式。
**适用模型**:FA模型 | | when | 否 | 标识权限使用的时机,值为`inuse/always`。
- inuse:表示为仅允许前台使用。
- always:表示前后台都可使用。 | diff --git a/zh-cn/application-dev/security/dlp-guidelines.md b/zh-cn/application-dev/security/dlp-guidelines.md index ec1316b7128b288ab7c4f87bdd09e7a6bbb0846e..05d566d17bdecafe3c0ff16961c4a1a994e6f1d2 100644 --- a/zh-cn/application-dev/security/dlp-guidelines.md +++ b/zh-cn/application-dev/security/dlp-guidelines.md @@ -44,6 +44,8 @@ |setSandboxAppConfig(configInfo: string): Promise<void>|设置沙箱应用配置信息| |getSandboxAppConfig(): Promise<string>|查询沙箱应用配置信息| |cleanSandboxAppConfig(): Promise<void>|清理沙箱应用配置信息| +| startDLPManagerForResult(context: common.UIAbilityContext, want: Want): Promise<DLPManagerResult>
| 在当前UIAbility界面以无边框形式打开DLP权限管理应用(只支持Stage模式) | + ## 开发步骤 开发步骤 @@ -228,4 +230,27 @@ console.error('error', (err as BusinessError).code, (err as BusinessError).message); // 失败报错 } } + ``` + +13. 以无边框形式打开DLP权限管理应用。此方法只能在UIAbility上下文中调用,只支持Stage模式。 + + ```ts + import common from '@ohos.app.ability.common'; + + async func() { + try { + let context = getContext(this) as common.UIAbilityContext; // 获取当前UIAbilityContext + let want = { + "uri": "file://docs/storage/Users/currentUser/Desktop/1.txt", + "parameters": { + "displayName": "1.txt" + } + }; // 请求参数 + let res: dlpPermission.DLPManagerResult = await dlpPermission.startDLPManagerForResult(context, want); // 打开DLP权限管理应用 + console.info('res.resultCode', res.resultCode); + console.info('res.want', JSON.stringifg(res.want)); + } catch (err) { + console.error('error', err.code, err.message); // 失败报错 + } + } ``` \ No newline at end of file diff --git a/zh-cn/application-dev/ui/arkts-graphics-display.md b/zh-cn/application-dev/ui/arkts-graphics-display.md index f82095b6cdfb9ce0a3e132492927733734036640..3e66b65e7a28b1919a241d5ed0d1f3eeb9605c29 100644 --- a/zh-cn/application-dev/ui/arkts-graphics-display.md +++ b/zh-cn/application-dev/ui/arkts-graphics-display.md @@ -176,7 +176,8 @@ PixelMap是图片解码后的像素图,具体用法请参考[图片开发指 ```ts let code: http.ResponseCode | number = OutData.responseCode if (ResponseCode.ResponseCode.OK === code) { - let imageSource: image.ImageSource = image.createImageSource(OutData.result.toString()); + let imageData: ArrayBuffer = OutData.result as ArrayBuffer; + let imageSource: image.ImageSource = image.createImageSource(imageData); class tmp { height: number = 100 diff --git a/zh-cn/application-dev/ui/arkts-layout-development-create-list.md b/zh-cn/application-dev/ui/arkts-layout-development-create-list.md index c796abab59283efd84ef6713085ae3d859e61a15..593149a12b24b7de56854f5410ecff901b55f39d 100644 --- a/zh-cn/application-dev/ui/arkts-layout-development-create-list.md +++ b/zh-cn/application-dev/ui/arkts-layout-development-create-list.md @@ -729,7 +729,7 @@ ListItem的swipeAction属性可用于实现列表项的左右滑动功能。swip markedIndex: (index === 1 ? 1 : 0) }) } - .swipeAction({ end: this.itemRnd.bind(this, index) }) // 设置侧滑属性. + .swipeAction({ end: this.itemEnd.bind(this, index) }) // 设置侧滑属性. } }, (item:Person) => item.id.toString()) } diff --git a/zh-cn/application-dev/ui/arkts-layout-development-relative-layout.md b/zh-cn/application-dev/ui/arkts-layout-development-relative-layout.md index 5f644132ea615ab93d2b8845c4637d247a8da229..28c37802b529a0acf92e78af2515a2c68c56f096 100644 --- a/zh-cn/application-dev/ui/arkts-layout-development-relative-layout.md +++ b/zh-cn/application-dev/ui/arkts-layout-development-relative-layout.md @@ -41,33 +41,51 @@ } let AlignRue:Record> = { 'top': { 'anchor': '__container__', 'align': VerticalAlign.Top }, - 'left': { 'anchor': '__container__', 'align': HorizontalAlign.End } + 'right': { 'anchor': '__container__', 'align': HorizontalAlign.End } } + let Mleft:Record = { 'left': 20 } + let BWC:Record = { 'width': 2, 'color': '#6699FF' } RelativeContainer() { - Row() - // 添加其他属性 + Row().width(100).height(100) + .backgroundColor("#FF3333") .alignRules(AlignRus) .id("row1") - Row() - ... + Row().width(100).height(100) + .backgroundColor("#FFCC00") .alignRules(AlignRue) .id("row2") - } + }.width(300).height(300) + .margin(Mleft) + .border(BWC) ``` ![zh-cn_image_0000001562820901](figures/zh-cn_image_0000001562820901.png) -- 以子元素为锚点。 +- 以兄弟元素为锚点。 ```ts + let AlignRus:Record> = { + 'top': { 'anchor': '__container__', 'align': VerticalAlign.Top }, + 'left': { 'anchor': '__container__', 'align': HorizontalAlign.Start } + } let RelConB:Record> = { - 'top': { 'anchor': 'row1', 'align': VerticalAlign.Bottom } + 'top': { 'anchor': 'row1', 'align': VerticalAlign.Bottom }, + 'left' : { 'anchor': 'row1', 'align': HorizontalAlign.Start } } let Mleft:Record = { 'left': 20 } let BWC:Record = { 'width': 2, 'color': '#6699FF' } - RelativeContainer() {RelConB} - .width(300).height(300) + RelativeContainer() { + Row().width(100).height(100) + .backgroundColor("#FF3333") + .alignRules(AlignRus) + .id("row1") + + Row().width(100).height(100) + .backgroundColor("#FFCC00") + .alignRules(RelConB) + .id("row2") + }.width(300).height(300) .margin(Mleft) .border(BWC) ``` diff --git a/zh-cn/application-dev/ui/arkts-shared-element-transition.md b/zh-cn/application-dev/ui/arkts-shared-element-transition.md index 14f6d1579805ca25302a6da4cac64246e247ecb8..59593ab368b69da1db56da0d003f42e6c798f15e 100644 --- a/zh-cn/application-dev/ui/arkts-shared-element-transition.md +++ b/zh-cn/application-dev/ui/arkts-shared-element-transition.md @@ -10,74 +10,75 @@ 1. 构建需要展开的页面,并通过状态变量构建好普通状态和展开状态的界面。 - ```ts - class Tmp{ - set(item:CradData):CradData{ - return item - } - } - // 通过状态变量的判断,在同一个组件内构建普通状态和展开状态的界面 - @Component - export struct MyExtendView { - // 声明与父组件进行交互的是否展开状态变量 - @Link isExpand: boolean; - @State cardList: Array = xxxx; - - build() { - List() { - // 根据需要定制展开后的组件 - if (this.isExpand) { - Text('expand') - .transition(TransitionEffect.translate(y:300).animation({ curve: curves.springMotion(0.6, 0.8) })) + ```ts + class Tmp{ + set(item:CradData):CradData{ + return item } - - ForEach(this.cardList, (item: CradData) => { - let Item:Tmp = new Tmp() - let Imp:Tmp = Item.set(item) - let Mc:Record = {'cardData':Imp} - MyCard(Mc) - }) } - .width(this.isExpand ? 200 : 500) // 根据组要定义展开后的组件的属性 - .animation({ curve: curves.springMotion() }) // 为组件属性绑定动画 - } - } - ``` + // 通过状态变量的判断,在同一个组件内构建普通状态和展开状态的界面 + @Component + export struct MyExtendView { + // 声明与父组件进行交互的是否展开状态变量 + @Link isExpand: boolean; + @State cardList: Array = xxxx; + + build() { + List() { + // 根据需要定制展开后的组件 + if (this.isExpand) { + Text('expand') + .transition(TransitionEffect.translate({y:300}).animation({ curve: curves.springMotion(0.6, 0.8) })) + } + + ForEach(this.cardList, (item: CradData) => { + let Item:Tmp = new Tmp() + let Imp:Tmp = Item.set(item) + let Mc:Record = {'cardData':Imp} + MyCard(Mc) // 封装的卡片组件,需自行实现 + }) + } + .width(this.isExpand ? 200 : 500) // 根据需要定义展开后组件的属性 + .animation({ curve: curves.springMotion() }) // 为组件属性绑定动画 + } + } + ... + ``` 2. 将需要展开的页面展开,通过状态变量控制兄弟组件消失或出现,并通过绑定出现消失转场实现兄弟组件转场效果。 - ```ts - class Tmp{ - isExpand: boolean = false; - set(){ - this.isExpand = !this.isExpand; - } - } - let Exp:Record = {'isExpand': false} - @State isExpand: boolean = false - - ... - List() { - // 通过是否展开状态变量控制兄弟组件的出现或者消失,并配置出现消失转场动画 - if (!this.isExpand) { - Text('收起') - .transition(TransitionEffect.translate(y:300).animation({ curve: curves.springMotion(0.6, 0.9) })) - } - - MyExtendView(Exp) - .onClick(() => { - let Epd:Tmp = new Tmp() - Epd.set() - }) - - // 通过是否展开状态变量控制兄弟组件的出现或者消失,并配置出现消失转场动画 - if (this.isExpand) { - Text('展开') - .transition(TransitionEffect.translate(y:300).animation({ curve: curves.springMotion() })) + ```ts + class Tmp{ + isExpand: boolean = false; + set(){ + this.isExpand = !this.isExpand; + } } - } - ... - ``` + let Exp:Record = {'isExpand': false} + @State isExpand: boolean = false + + ... + List() { + // 通过是否展开状态变量控制兄弟组件的出现或者消失,并配置出现消失转场动画 + if (!this.isExpand) { + Text('收起') + .transition(TransitionEffect.translate({y:300}).animation({ curve: curves.springMotion(0.6, 0.9) })) + } + + MyExtendView(Exp) + .onClick(() => { + let Epd:Tmp = new Tmp() + Epd.set() + }) + + // 通过是否展开状态变量控制兄弟组件的出现或者消失,并配置出现消失转场动画 + if (this.isExpand) { + Text('展开') + .transition(TransitionEffect.translate({y:300}).animation({ curve: curves.springMotion() })) + } + } + ... + ``` 完整示例和效果如下。 diff --git a/zh-cn/device-dev/subsystems/figures/hiappevent_extend_so_inited.png b/zh-cn/device-dev/subsystems/figures/hiappevent_extend_so_inited.png new file mode 100644 index 0000000000000000000000000000000000000000..aa440d51e0cc2b1c06edeb8555b6a7730774521f Binary files /dev/null and b/zh-cn/device-dev/subsystems/figures/hiappevent_extend_so_inited.png differ diff --git a/zh-cn/device-dev/subsystems/figures/hiappevent_extend_so_report.png b/zh-cn/device-dev/subsystems/figures/hiappevent_extend_so_report.png new file mode 100644 index 0000000000000000000000000000000000000000..ec422bf97ce7788131250a4841ba63a58eb74d76 Binary files /dev/null and b/zh-cn/device-dev/subsystems/figures/hiappevent_extend_so_report.png differ diff --git a/zh-cn/device-dev/subsystems/figures/hiappevent_extend_so_stream.png b/zh-cn/device-dev/subsystems/figures/hiappevent_extend_so_stream.png new file mode 100644 index 0000000000000000000000000000000000000000..04662dedecfa8fb5da8df6e21d21d090902bcf0a Binary files /dev/null and b/zh-cn/device-dev/subsystems/figures/hiappevent_extend_so_stream.png differ diff --git a/zh-cn/device-dev/subsystems/figures/hiappevent_extend_so_verify.png b/zh-cn/device-dev/subsystems/figures/hiappevent_extend_so_verify.png new file mode 100644 index 0000000000000000000000000000000000000000..9b89b70e625f46e667fb5b8f4f9eb124dec9414e Binary files /dev/null and b/zh-cn/device-dev/subsystems/figures/hiappevent_extend_so_verify.png differ diff --git a/zh-cn/device-dev/subsystems/subsys-dfx-hiappevent-extend-so.md b/zh-cn/device-dev/subsystems/subsys-dfx-hiappevent-extend-so.md new file mode 100644 index 0000000000000000000000000000000000000000..81b96c7333c589578221814475dd200f668fa1d7 --- /dev/null +++ b/zh-cn/device-dev/subsystems/subsys-dfx-hiappevent-extend-so.md @@ -0,0 +1,149 @@ +# HiAppEvent数据处理者lib库概述 + + +## 简介 + +HiAppEvent是面向OpenHarmony应用开发者提供的打点功能,数据处理者lib库为HiAppEvent提供事件处理能力,lib库需要数据处理者开发方在设备开发时提供。 + +HiAppEvent数据处理者lib库处理流程图如下图所示: + + **图1** HiAppEvent数据处理者lib库处理流程图 + + ![处理流程图](../subsystems/figures/hiappevent_extend_so_stream.png) + +## 使用场景 + +开发者使用HiAppEvent接口添加处理者并提交应用事件时,事件将会分发给事件处理者,由处理者对事件进行相应处理,例如上报。 + +## 功能说明 + +HiAppEvent数据处理者lib库为HiAppEvent事件处理者提供事件处理能力,功能介绍如下: + +- 初始化注册:提供了数据处理者lib库加载时初始化so的逻辑,以及向HiAppEvent进行处理者注册。初始化注册功能如下图所示: + + **图2** 初始化注册 + + ![初始化注册](../subsystems/figures/hiappevent_extend_so_inited.png) + + +- 事件上报:提供了事件打点的相关接口能力,支持对打点事件进行上报。事件上报功能如下图所示: + + **图3** 事件上报 + + ![事件上报](../subsystems/figures/hiappevent_extend_so_report.png) + +- 校验UserId:提供了校验UserId的相关接口能力,支持对UserId合法性进行校验。校验UserId功能如图4所示。 + +- 校验UserProperty:提供了校验UserProperty的相关接口能力,支持对UserProperty合法性进行校验。校验UserProperty功能如图4所示。 + +- 校验Event:提供了校验Event的相关接口能力,支持对Event合法性进行校验。校验Event功能如图4所示。 + + **图4** 校验数据 + + ![校验数据](../subsystems/figures/hiappevent_extend_so_verify.png) + +## 开发指导 + +#### 接口说明 + +**表1** 数据处理者lib库需调用的API接口功能介绍 + +| 接口名 | 描述 | +| ---------------------------------------------------------------------------------------------- | ---------------------------- | +| int RegisterProcessor(const std::string& name, std::shared_ptr\ processor) | 向HiAppEvent注册数据处理者。 | + +**表2** 数据处理者lib库需实现的API接口功能介绍 + +| 接口名 | 描述 | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------ | +| int OnReport(int64_t processorSeq, const std::vector\& userIds, const std::vector\& userProperties, const std::vector\& events) | 事件上报。 | +| int ValidateUserId(const UserId& userId) | 校验UserId。 | +| int ValidateUserProperty(const UserProperty& userProperty) | 校验UserProperty。 | +| int ValidateEvent(const AppEventInfo& event) | 校验Event。 | + +#### 开发步骤 + +1. 在`processor_init.cpp`添加以下so初始化的方法,并进行初始化注册: + + ```c++ + #include "app_event_processor_mgr.h" + + using namespace OHOS::HiviewDFX::HiAppEvent; + + void __attribute__((constructor)) x_init(void) + { + ... + int result = AppEventProcessorMgr::RegisterProcessor("processor_example", new ProcessorExample()); + printf("ProcessorExample OnReport\n"); + } + ``` + +2. 在`processor_example.h`定义`ProcessorExample`类,继承于处理者基类AppEventProcessor的处理者实现类: + + ```c++ + #include + #include "app_event_processor.h" + + using namespace OHOS::HiviewDFX::HiAppEvent; + + class ProcessorExample : public AppEventProcessor { + public: + int OnReport(int64_t processorSeq, const std::vector& userIds, const std::vector& userProperties, const std::vector& events) override; + int ValidateUserId(const UserId& userId) override; + int ValidateUserProperty(const UserProperty& userProperty) override; + int ValidateEvent(const AppEventInfo& event) override; + ... + }; + ``` + +3. 在`processor_example.cpp`实现`ProcessorExample`类,根据业务覆写实现相应的函数。 + + ```c++ + #include "processor_example.h" + + int ProcessorExample::OnReport(int64_t processorSeq, const std::vector& userIds, const std::vector& userProperties, const std::vector& events) + { + ... // 在事件上报函数中,可以对事件进行特定业务处理 + printf("ProcessorExample OnReport\n"); + return 0; + } + + int ProcessorExample::ValidateUserId(const UserId& userId) + { + ... // 在校验UserId函数中,可以对UserId进行校验 + printf("ProcessorExample ValidateUserId\n"); + return 0; + } + + int ProcessorExample::ValidateUserProperty(const UserProperty& userProperty) + { + ... // 在校验UserProperty函数中,可以对UserProperty进行校验 + printf("ProcessorExample ValidateUserProperty\n"); + return 0; + } + + int ProcessorExample::ValidateEvent(const AppEventInfo& event) + { + ... // 在校验Event函数中,可以对Event进行校验 + printf("ProcessorExample ValidateEvent\n"); + return 0; + } + ``` + +4. 将处理者类配置在build.gn文件中,随数据处理者lib库进行编译: + + ```conf + sources = [ + ... // 添加所需使用的源文件 + "./src/processor_init.cpp", + "./src/processor_example.cpp", + ] + external_deps = [ + ... // 添加所需使用的外部依赖库 + "hiappevent:hiappevent_innerapi", + ] + ``` + +## 参考 + +如果您想了解更多关于HiAppEvent特性的源码及使用信息,请参考[HiAppEvent代码仓](https://gitee.com/openharmony/hiviewdfx_hiappevent)。 \ No newline at end of file diff --git a/zh-cn/glossary.md b/zh-cn/glossary.md index 85f4dc0bba61a9ed05d6f97ed5b18bb0fd999bf7..e8e48d58c5c27ff27b6599270e8a385af0115f54 100644 --- a/zh-cn/glossary.md +++ b/zh-cn/glossary.md @@ -61,11 +61,8 @@ - ### HAP - OpenHarmony Ability Package,一个HAP文件包含应用的所有内容,由代码、资源、三方库及应用配置文件组成,其文件后缀名为.hap。 + Harmony Ability Package,一个HAP文件包含应用的所有内容,由代码、资源、三方库及应用配置文件组成,其文件后缀名为.hap。 -- ### HAR - - OpenHarmony Archive文件。包含代码、资源和配置文件的中间格式。 - ### HCS diff --git a/zh-cn/release-notes/OpenHarmony-v3.2.4-release.md b/zh-cn/release-notes/OpenHarmony-v3.2.4-release.md index 7f90f49df7232923f9bd88831c8c8dbbac098a74..702538a19888ee5f901822ea1a623ab1b82110e9 100644 --- a/zh-cn/release-notes/OpenHarmony-v3.2.4-release.md +++ b/zh-cn/release-notes/OpenHarmony-v3.2.4-release.md @@ -75,7 +75,7 @@ | Hi3861解决方案(二进制) | 3.2.4 Release | [站点](https://repo.huaweicloud.com/openharmony/os/3.2.4/hispark_pegasus.tar.gz) | [SHA256校验码](https://repo.huaweicloud.com/openharmony/os/3.2.4/hispark_pegasus.tar.gz.sha256) | | Hi3516解决方案-LiteOS(二进制) | 3.2.4 Release | [站点](https://repo.huaweicloud.com/openharmony/os/3.2.4/hispark_taurus_LiteOS.tar.gz) | [SHA256校验码](https://repo.huaweicloud.com/openharmony/os/3.2.4/hispark_taurus_LiteOS.tar.gz.sha256) | | Hi3516解决方案-Linux(二进制) | 3.2.4 Release | [站点](https://repo.huaweicloud.com/openharmony/os/3.2.4/hispark_taurus_Linux.tar.gz) | [SHA256校验码](https://repo.huaweicloud.com/openharmony/os/3.2.4/hispark_taurus_Linux.tar.gz.sha256) | -| RK3568标准系统解决方案(二进制) | 3.2.4 Release | [站点](https://repo.huaweicloud.com/openharmony/os/3.2.4/dayu200_standard_arm32.tar.gz) | [SHA256校验码](https://repo.huaweicloud.com/openharmony/os/3.2.4/dayu200_standard_arm32.tar.gz.sha256) | +| RK3568标准系统解决方案(二进制) | 3.2.4 Release | [站点](https://repo.huaweicloud.com/openharmony/os/3.2.4/dayu200_standard_arm32_20231129.tar.gz) | [SHA256校验码](https://repo.huaweicloud.com/openharmony/os/3.2.4/dayu200_standard_arm32_20231129.tar.gz.sha256) | | 标准系统Public SDK包(Mac) | 3.2.15.4 | [站点](https://repo.huaweicloud.com/openharmony/os/3.2.4/ohos-sdk-mac-public.tar.gz) | [SHA256校验码](https://repo.huaweicloud.com/openharmony/os/3.2.4/ohos-sdk-mac-public.tar.gz.sha256) | | 标准系统Public SDK包(Mac-M1) | 3.2.15.4 | [站点](https://repo.huaweicloud.com/openharmony/os/3.2.4/L2-SDK-MAC-M1-PUBLIC.tar.gz) | [SHA256校验码](https://repo.huaweicloud.com/openharmony/os/3.2.4/L2-SDK-MAC-M1-PUBLIC.tar.gz.sha256) | | 标准系统Public SDK包(Windows/Linux) | 3.2.15.4 | [站点](https://repo.huaweicloud.com/openharmony/os/3.2.4/ohos-sdk-windows_linux-public.tar.gz) | [SHA256校验码](https://repo.huaweicloud.com/openharmony/os/3.2.4/ohos-sdk-windows_linux-public.tar.gz.sha256) | diff --git a/zh-cn/release-notes/changelogs/OpenHarmony_4.1.2.5/changelogs-arkui.md b/zh-cn/release-notes/changelogs/OpenHarmony_4.1.2.5/changelogs-arkui.md new file mode 100644 index 0000000000000000000000000000000000000000..beb366c4e2f2e6538f135c89be9af467d5d476ce --- /dev/null +++ b/zh-cn/release-notes/changelogs/OpenHarmony_4.1.2.5/changelogs-arkui.md @@ -0,0 +1,31 @@ +# arkui子系统ChangeLog + +## cl.arkui.1 Flex组件padding接口变更 + +**访问级别** + +公开接口 + +**变更原因** + +在受到父组件布局大小约束增加padding过程中,flex容器组件设置的主轴或者交叉轴padding之和从不超过容器宽度到超过容器宽度,组件大小会有一个跳变。 + +**变更影响** + +该变更为兼容性变更。 + +API Version 11变更前:在padding逐渐增大过程中,设置的左右内边距之和从不超过容器宽度到超过容器宽度,子组件会有一个突然向右偏移的效果。(交叉轴方向上下边距场景同理) + +API Version 11变更后:在padding逐渐增大过程中,设置的左右内边距之和从不超过容器宽度到超过容器宽度,子组件是一点点向右移动后消失。(交叉轴方向同理) + +**变更发生版本** + +从OpenHarmony SDK 4.1.2.5开始。 + +**变更的接口/组件** + +Flex组件。 + +**适配指导** + +若设置的padding之和没有超过组件的约束宽高,则不受影响无需适配。从API Version 11开始,若设置的padding偏大使子组件不可见则需调大padding值保持相同效果。 \ No newline at end of file diff --git a/zh-cn/release-notes/changelogs/OpenHarmony_4.1.3.3/changelogs-arkui.md b/zh-cn/release-notes/changelogs/OpenHarmony_4.1.3.3/changelogs-arkui.md index cc99379cba154f7fb4f1ce0464948e90398b99ae..aadb8c43fe97c9e0d4db235fd8369e2a929fb329 100644 --- a/zh-cn/release-notes/changelogs/OpenHarmony_4.1.3.3/changelogs-arkui.md +++ b/zh-cn/release-notes/changelogs/OpenHarmony_4.1.3.3/changelogs-arkui.md @@ -80,4 +80,60 @@ Tabs组件的animationDuration属性。 **适配指导** 变更前,若希望点击TabBar页签切换TabContent无动画,可以不设置animationDuration属性值或设置animationDuration属性值为0。 -变更后,若希望点击TabBar页签切换TabContent无动画,API version 11及以后,需设置animationDuration属性值为0,API version 10及以前维持变更前规则,不会产生影响。 \ No newline at end of file +变更后,若希望点击TabBar页签切换TabContent无动画,API version 11及以后,需设置animationDuration属性值为0,API version 10及以前维持变更前规则,不会产生影响。 + +## cl.ArkUI.4 TextInput组件padding接口变更 + +**访问级别** + +公开接口 + +**变更原因** + +使用padding设置{left:10vp},未设置上下右内边距,上下右内边距实际效果为0,不是TextInput组件padding默认值。 + +**变更影响** + +该变更为非兼容性变更,在开发者设置padding{left:10vp}时,如果未指明上下右内边距,则上下内边距走默认值16vp,右内边距8vp。 + +**变更发生版本** + +缺陷修复, 所有版本生效。 + +**变更的接口/组件** + +TextInput组件的padding接口。 + +**适配指导** + +此次变更,若开发者希望TextInput组件左内边距为10vp,上下右内边距为0vp,需要显示指定{left:10vp, right:0vp, top:0vp, bottom:0vp}, 未指明的各方向内边距均走TextInput组件padding默认值。 + +## cl.ArkUI.5 Text组件换行高度规格明确 + +**访问级别** + +其他 + +**变更原因** + +Text组件换行高度应该和字号大小保持一致,非固定值14px。 + +**变更影响** + +该变更为非兼容性变更。 + +API Version 10及以前在开发者设置fontSize('20px')时,Text组件内容换行高度为14px, Text组件子组件Span换行高度也是固定值14px。 + +API Version 11及以后在开发者设置fontSize('20px')时,Text组件内容换行高度则为20px, Text组件子组件Span换行高度还是固定值14px。 + +**变更发生版本** + +从OpenHarmony SDK 4.1.3.3开始。 + +**变更的接口/组件** + +Text组件。 + +**适配指导** + +默认行为变更,不涉及适配。 \ No newline at end of file diff --git a/zh-cn/release-notes/changelogs/OpenHarmony_4.1.3.5/changelogs-multimedia.md b/zh-cn/release-notes/changelogs/OpenHarmony_4.1.3.5/changelogs-multimedia.md new file mode 100644 index 0000000000000000000000000000000000000000..bbae2cec0591a78550c1bc350d72d5e7f30db928 --- /dev/null +++ b/zh-cn/release-notes/changelogs/OpenHarmony_4.1.3.5/changelogs-multimedia.md @@ -0,0 +1,41 @@ +# multimedia子系统变更说明 + +## cl.multimedia.1 getValidCommandsSync接口变更 + +**访问级别** + +公开接口 + +**变更原因** + +接口原实现返回类型为int数组,不利于开发者理解。修改实现返回字符串数组,类型为AVControlCommandType,更便于开发者的理解与使用。 + +**变更影响** + +该变更为非兼容性变更,需要开发者进行适配。 + +**变更发生版本** + +从OpenHarmony SDK 4.1.3.5 开始。 + +**变更的接口/组件** + +getValidCommandsSync(): Array + +**适配指导** + +变更前: + +使用已创建的AVSession,获取controller支持的指令,返回值为int数组 + +let validCommands = avsession.getController().getValidCommandsSync(); + +例如若应用只注册了play指令回调,validCommands[0]就等于0 + +变更后: + +使用已创建的AVSession,获取controller支持的指令,返回值为AVControlCommandType类型的string数组 + +let validCommands = avsession.getController().getValidCommandsSync(); + +例如若应用只注册了play指令回调,validCommands[0]就等于'play' \ No newline at end of file diff --git a/zh-cn/release-notes/changelogs/OpenHarmony_4.1.5.1/changelogs-arkui.md b/zh-cn/release-notes/changelogs/OpenHarmony_4.1.5.1/changelogs-arkui.md index 4c3e5bbb0bc041e01c4c4d036c83c542cbd98169..0644f6d1f421cb6053c5f161f04fb24e2996e934 100644 --- a/zh-cn/release-notes/changelogs/OpenHarmony_4.1.5.1/changelogs-arkui.md +++ b/zh-cn/release-notes/changelogs/OpenHarmony_4.1.5.1/changelogs-arkui.md @@ -142,4 +142,25 @@ try { console.error(`showActionMenu args error code is ${code}, message is ${message}`); }; ``` +## cl.arkui.3 RelativeContainer组件尺寸计算优先级变更 + +**访问级别** + +公开接口 + +**变更原因** + +当同时设置了组件尺寸和约束条件时,优先使用开发者设置的尺寸来表示组件大小。同时在API version 11上,增加了bias属性用于设置组件在约束条件下的偏移,上述约定也更便于开发者理解bias的含义。 + +**变更影响** + +变更前,当组件的尺寸和约束条件同时设置时,优先采用约束条件来决定组件大小;变更后优先采用用户设置的尺寸来决定组件大小。 + +**变更发生版本** + +从OpenHarmony SDK 4.1.5.1 开始(API version 11及以上)。 + +**变更的接口/组件** + +受影响的组件有:RelativeContainer。 diff --git a/zh-cn/third-party-cases/Editing-with-the-navigation-bar.md b/zh-cn/third-party-cases/Editing-with-the-navigation-bar.md new file mode 100644 index 0000000000000000000000000000000000000000..30647f7d2f6a29913e70b8b65dc9561836fb807f --- /dev/null +++ b/zh-cn/third-party-cases/Editing-with-the-navigation-bar.md @@ -0,0 +1,364 @@ +# 导航栏的使用编辑 +## 场景描述 +在大部分应用中导航栏的使用是非常普遍的,用户可以通过拖拽导航栏里的页签标题变换位置来调整导航栏的顺序。本文即为大家介绍导航栏的使用编辑。 + +## 效果呈现 +本例最终效果图如下: + +![](figures/Navigation.gif) + +## 运行环境 + +本例基于以下环境开发,开发者也可以基于其他适配的版本进行开发: +- IDE: DevEco Studio 4.0 Release +- SDK: Ohos_sdk_public 4.0.10.13 (API Version 10 Release) + +## 实现思路 + +本例包含的关键操作及其实现方案如下: +1. 自定义弹窗的展示:通过点击分类实现自定义弹窗的弹出 +2. 自定义弹窗内部元素的排列、拖拽和换位:通过Grid()和GridItem()显示页签标题的网格排列,通过onItemDragStart、onItemDrop、onDrag事件完成拖拽换位。 +3. Tabs页签的顺序与网格元素顺序同步:通过@State与@Link父子组件双向同步。 + +## 开发步骤 +本例详细开发步骤如下,开发步骤仅展示相关步骤代码,全量代码请参考完整代码章节的内容。 +1. UI框架的构建:通过Stack、Tabs、Row等关键组件将UI框架搭建起来。具体代码如下: + ```ts + ... + Stack({ alignContent: Alignment.TopEnd }) { + Tabs() { + ForEach(this.tabBarArray, (item: string, index: number) => { + TabContent() { + }.tabBar(this.TabBuilder(index)) + }, (item: string) => JSON.stringify(item)) + TabContent() { + } + .tabBar(this.TabBuilder2(8)) + } + .fadingEdge(true) + .barHeight('7.2%') + .barMode(BarMode.Scrollable) + .barWidth('100%') + .onChange((index: number) => { + this.currentIndex = index; + }) + .vertical(false) + + Row() { + Divider() + .vertical(true) + .width(1) + .height(18) + .color(Color.Black) + Image($r('app.media.ic_public_more')) + .width(16) + .height(16) + .objectFit(ImageFit.Contain) + .margin({ left: 4 }) + Text('分类') + .fontSize(18) + .opacity(0.8) + .fontColor(Color.Black) + .margin({ left: 2 }) + }.width('17%').height('7.2%').backgroundColor(Color.White) + ... + ``` +2. 自定义弹窗的构建:首先将自定义弹窗样式设置为true,设置自定义弹窗的高度、显示位置、偏移量等。具体代码块如下: + ```ts + @CustomDialog + struct CustomDialogExample{ + controller?:CustomDialogController + @Link tabBarArray:Array + build(){ + Column(){ + Row({space:180}){ + Text('导航') + .fontSize(30) + .fontColor(Color.Black) + Text('完成') + .fontSize(20) + .fontColor(Color.Green) + .onClick(()=>{ + this.controller.close() + }) + } + Divider() + .width('100%') + .height(5) + .color(Color.Black) + Text('我的频道') + .fontSize(20) + .fontColor(Color.Black) + .fontWeight(500) + .textAlign(TextAlign.Start) + Grid1({items:$tabBarArray}) + }.width('80%').height('100%').backgroundColor(Color.White).padding({top:60}) + } + } + ... + dialogController:CustomDialogController|null = new CustomDialogController({ + builder:CustomDialogExample({tabBarArray:$tabBarArray}), + // 允许点击遮蔽层退出 + autoCancel:true, + // 弹窗在竖直方向上的对齐方式:右中对齐 + alignment:DialogAlignment.CenterEnd, + offset:{dx:35,dy:16}, + // 弹窗容器样式允许自定义 + customStyle:true, + backgroundColor:Color.White, + cornerRadius:0 + }) + ``` +3. 自定义弹窗内的拖拽和换位:设置属性editMode(true)设置Grid进入编辑模式,进入编辑模式可以进行拖拽Grid组件内部GridItem。在onItemDragStart回调中设置拖拽过程中显示的图片。在onItemDrop中获取拖拽起始位置,和拖入位置,在onDrag回调中完成交换数组位置逻辑。具体代码块如下: + ```ts + @Component + export struct Grid1{ + @Link items:Array + @State text:string= 'drag' + + @Builder pixelMapBuilder(){ + Column(){ + Text(this.text) + .fontSize(16) + .backgroundColor(0xF9CF93) + .width(80) + .height(80) + .textAlign(TextAlign.Center) + } + } + + changeIndex(index1:number,index2:number){ + let temp :Resource|string; + temp = this.items[index1]; + this.items[index1] = this.items[index2]; + this.items[index2] = temp; + } + build(){ + Column({space:5}){ + Grid(){ + ForEach(this.items,(name:string,index:number)=>{ + GridItem(){ + Text(name) + .fontSize(16) + .backgroundColor(0xF9CF93) + .width(80) + .height(80) + .textAlign(TextAlign.Center) + } + }) + } + .columnsTemplate('1fr 1fr 1fr') + .columnsGap(10) + .rowsGap(10) + .onScrollIndex((first:number)=>{ + console.info(first.toString()) + }) + .width('90%') + .backgroundColor(Color.White) + .height('100%') + .editMode(true) + .onItemDragStart((event:ItemDragInfo,itemIndex:number)=>{ + this.text = this.items[itemIndex] + return this.pixelMapBuilder() + }) + .onItemDrop((event:ItemDragInfo,itemIndex:number,insertIndex:number,isSuccess:boolean)=>{ + if(insertIndex < this.items.length){ + this.changeIndex(itemIndex,insertIndex) + } + }) + }.width('100%') + .margin({top:5}) + } + } + ``` + +## 完整代码 +完整示例代码如下: +```ts +// Index.ets +import {Grid1} from './Grid' + +@CustomDialog +struct CustomDialogExample{ + controller?:CustomDialogController + @Link tabBarArray:Array + build(){ + Column(){ + Row({space:180}){ + Text('导航') + .fontSize(30) + .fontColor(Color.Black) + Text('完成') + .fontSize(20) + .fontColor(Color.Green) + .onClick(()=>{ + this.controller.close() + }) + } + Divider() + .width('100%') + .height(5) + .color(Color.Black) + Text('我的频道') + .fontSize(20) + .fontColor(Color.Black) + .fontWeight(500) + .textAlign(TextAlign.Start) + Grid1({items:$tabBarArray}) + }.width('80%').height('100%').backgroundColor(Color.White).padding({top:60}) + } +} + +@Entry +@Component +struct TabBar { + dialogController:CustomDialogController|null = new CustomDialogController({ + builder:CustomDialogExample({tabBarArray:$tabBarArray}), + autoCancel:true, + offset:{dx:0,dy:0}, + alignment:DialogAlignment.CenterEnd, + customStyle:true, + backgroundColor:Color.White, + cornerRadius:0 + }) + @State currentIndex:number = 0; + @State tabBarArray:Array = ['关注','推荐','男生','女生','历史','传记','人性','动漫'] + + @Builder TabBuilder(index:number){ + Column(){ + Text(this.tabBarArray[index]) + .height('100%') + .padding({left:'5%',right:'5%'}) + .fontSize(this.currentIndex === index ? 24 : 18) + .fontWeight(this.currentIndex === index ? 700 : 400) + .fontColor(Color.Black) + } + } + @Builder TabBuilder2(index:number){ + Column(){ + Text('') + .height('100%') + .padding({left:'5%',right:'10%'}) + .fontSize(this.currentIndex === index ? 24 : 18) + .fontWeight(this.currentIndex === index ? 700 : 400) + .fontColor(Color.Black) + } + } + + build() { + Stack({ alignContent: Alignment.TopEnd }) { + Tabs() { + ForEach(this.tabBarArray, (item: string, index: number) => { + TabContent() { + } + .tabBar(this.TabBuilder(index)) + }, (item: string) => JSON.stringify(item)) + TabContent() { + } + .tabBar(this.TabBuilder2(8)) + } + .fadingEdge(true) + .barHeight('7.2%') + .barMode(BarMode.Scrollable) + .barWidth('100%') + .onChange((index: number) => { + this.currentIndex = index; + }) + .vertical(false) + + Row() { + Divider() + .vertical(true) + .width(1) + .height(18) + .color(Color.Black) + Image($r('app.media.ic_public_more')) + .width(16) + .height(16) + .objectFit(ImageFit.Contain) + .margin({ left: 4 }) + Text('分类') + .fontSize(18) + .opacity(0.8) + .fontColor(Color.Black) + .margin({ left: 2 }) + }.width('17%').height('7.2%').backgroundColor(Color.White) + .onClick(() => { + if (this.dialogController != null) { + this.dialogController.open() + } + }) + }.width('100%') + } +} +``` +```ts +// Grid.ets +@Component +export struct Grid1{ + @Link items:Array + @State text:string= 'drag' + + @Builder pixelMapBuilder(){ + Column(){ + Text(this.text) + .fontSize(16) + .backgroundColor(0xF9CF93) + .width(80) + .height(80) + .textAlign(TextAlign.Center) + } + } + + changeIndex(index1:number,index2:number){ + let temp :Resource|string; + temp = this.items[index1]; + this.items[index1] = this.items[index2]; + this.items[index2] = temp; + } + build(){ + Column({space:5}){ + Grid(){ + ForEach(this.items,(name:string,index:number)=>{ + GridItem(){ + Text(name) + .fontSize(16) + .backgroundColor(0xF9CF93) + .width(80) + .height(80) + .textAlign(TextAlign.Center) + } + }) + } + .columnsTemplate('1fr 1fr 1fr') + .columnsGap(10) + .rowsGap(10) + .onScrollIndex((first:number)=>{ + console.info(first.toString()) + }) + .width('90%') + .backgroundColor(Color.White) + .height('100%') + .editMode(true) + .onItemDragStart((event:ItemDragInfo,itemIndex:number)=>{ + this.text = this.items[itemIndex] + return this.pixelMapBuilder() + }) + .onItemDrop((event:ItemDragInfo,itemIndex:number,insertIndex:number,isSuccess:boolean)=>{ + if(insertIndex < this.items.length){ + this.changeIndex(itemIndex,insertIndex) + } + }) + }.width('100%') + .margin({top:5}) + } +} +``` +## 参考 +[Tabs](../application-dev/reference/arkui-ts/ts-container-tabs.md) + +[Grid](../application-dev/reference/arkui-ts/ts-container-grid.md) + +[自定义弹窗](../application-dev/reference/arkui-ts/ts-methods-custom-dialog-box.md) + +[@Link装饰器:父子双向同步](../application-dev/quick-start/arkts-link.md) \ No newline at end of file diff --git a/zh-cn/third-party-cases/Readme-CN.md b/zh-cn/third-party-cases/Readme-CN.md index 8831d15f329e7916746e8612103ac883debf36c0..1a49c386392eee4f1d2dd854167bc4244a536c4c 100644 --- a/zh-cn/third-party-cases/Readme-CN.md +++ b/zh-cn/third-party-cases/Readme-CN.md @@ -32,7 +32,11 @@ - [转场动画](transition-animation.md) - [如何为组件的不同触摸区域添加不同交互动作](different-touch-target-event.md) - [组件布局中相对定位的分类和使用](relative-position.md) - +- [导航栏的使用编辑](Editing-with-the-navigation-bar.md) +- [搜索框与文字轮播的巧用](Search-box-and-text-carousel.md) +- [如何控制循环动画的播放停止](how-to-control-the-pause-of-playback-of-looping-animations.md) +- [自定义输入框](customize-the-input-box.md) +- [导航栏的使用编辑](Editing-with-the-navigation-bar.md) ### 装饰器 - [控制页面刷新范围](overall-and-part-refresh.md) - [如何监听多层状态变化](observed-and-objectlink.md) diff --git a/zh-cn/third-party-cases/Search-box-and-text-carousel.md b/zh-cn/third-party-cases/Search-box-and-text-carousel.md new file mode 100644 index 0000000000000000000000000000000000000000..4615089ed0c7f5117e16d01cd2f4caff7634957c --- /dev/null +++ b/zh-cn/third-party-cases/Search-box-and-text-carousel.md @@ -0,0 +1,189 @@ +# 搜索框与文字轮播的巧用 +## 背景介绍 +一般情况下,许多应用的搜索框在无输入时的提示文本为“请输入文字”、“请输入”等等,现在为了进行引流以及流量推送,将热搜词条通过轮播的方式在“假搜索框”进行循环播放。本例即为大家这类场景的开发。 + +## 效果呈现 +![](figures/Swiper-Search.gif) + +## 运行环境 +本例基于以下环境开发,开发者也可以基于其他适配的版本进行开发: +- IDE: DevEco Studio 4.0 Release +- SDK: Ohos_sdk_public 4.0.10.13 (API Version 10 Release) + +## 实现思路 +本例包含的关键操作及其实现方案: +- 构建假搜索框与文字轮播列表:假搜索框是由一个搜索图标和文字列表轮播构成放置于Row组件中。 +- 点击假搜索框进入真正的搜索框,并将当时点击时所显示的文字作为真正搜索框的提示文本进行搜索。 + +## 开发步骤 +1. 建立假的搜索框:通过搜索图标与纵向文字轮播组成。具体代码块如下: + ```ts + ... + Row(){ + Image($r('app.media.ic_public_search_filled')) + .objectFit(ImageFit.Contain) + .width(20) + .aspectRatio(1) + .margin({left:15}) + Swiper(){ + ForEach(arr,(item:SearchTextModel)=>{ + Column(){ + Text(item.searchText) + .opacity(0.6) + .fontSize(14) + .fontColor(Color.Gray) + }.width('100%').alignItems(HorizontalAlign.Start) + },(item:SearchTextModel)=>item.id.toString()) + } + ... + .loop(true).autoPlay(true).vertical(true).interval(3000).margin(12).indicator(false) + }.zIndex(2).width('100%').justifyContent(FlexAlign.Start).margin({left:12,right:12}) + ... + ``` +2. 点击假搜索框时所展示的文字传递到真正的搜索框并将其作为真正搜索框的提示文本:由于onChange()只有在轮播切换时才会触发回调并获取轮播文字,因此通过点击事件将获取文字传递进入真正的搜索框页面。具体代码块如下: + ```ts + .onChange((index:number)=>{ + this.ind = arr[index].searchText + console.info('foo change'+JSON.stringify(this.ind)) + }) + ... + .onClick(()=>{ + router.pushUrl({url:'pages/Next',params:{data:this.ind}}) + }) + ``` +3. 进入到真正的搜索框界面:通过router.getParams()获取发起跳转的页面往当前页面传入的数据。具体代码块如下: + ```ts + aboutToAppear(){ + let params:Params_Type = router.getParams() as Params_Type; + this.par=params.data + console.log('foo'+ JSON.stringify(router.getParams())); + } + ... + Search({placeholder:this.par ,controller:this.controller}) + .searchButton("搜索") + .placeholderColor(this.color) + .width("85%") + .height(40) + .onSubmit((value:string)=>{ + this.submitValue=value + }) + ``` + +## 完整代码 +完整示例代码如下: +```ts +// Content.ets +export class SearchTextModel{ + id:number + searchText:Resource + + constructor(id:number,searchText:Resource) { + this.id = id + this.searchText =searchText + } +} +export class Topic_DATA{ + id:number= 0 + searchText:Resource|undefined =undefined +} +export const arr :Topic_DATA[]=[ + {id:0,searchText:$r('app.string.topic1')}, + {id:1,searchText:$r('app.string.topic2')}, + {id:2,searchText:$r('app.string.topic3')} +] +export class Params_Type{ + data:Resource|undefined =undefined +} + +... + +// Index.ets +import router from '@ohos.router'; +import {SearchTextModel,arr} from '../common/constants/Constants' + +@Entry +@Component +struct SearchComponent { + @State isStop:boolean =true + @State ind:Resource|undefined=undefined + + build() { + Column() { + Row(){ + Image($r('app.media.ic_public_search_filled')) + .objectFit(ImageFit.Contain) + .width(20) + .aspectRatio(1) + .margin({left:15}) + Swiper(){ + ForEach(arr,(item:SearchTextModel)=>{ + Column(){ + Text(item.searchText) + .opacity(0.6) + .fontSize(14) + .fontColor(Color.Gray) + }.width('100%').alignItems(HorizontalAlign.Start) + },(item:SearchTextModel)=>item.id.toString()) + } + .onChange((index:number)=>{ + this.ind = arr[index].searchText + console.info('foo change'+JSON.stringify(this.ind)) + }) + .loop(true).autoPlay(true).vertical(true).interval(3000).margin(12).indicator(false) + + }.zIndex(2).width('100%').justifyContent(FlexAlign.Start).margin({left:12,right:12}) + .onClick(()=>{ + router.pushUrl({url:'pages/Next',params:{data:this.ind}}) + }) + }.backgroundColor(Color.White).border({width:2,color:Color.Black,radius:40}).margin({top:15}) + } +} + +... + +// Next.ets +import router from '@ohos.router'; +import {Params_Type} from '../common/constants/Constants'; + +@Entry +@Component +struct SearchExample { + controller:SearchController = new SearchController() + @State submitValue:string=""; + @State par :Resource|undefined = undefined + private color = Color.Gray + + aboutToAppear(){ + let params:Params_Type = router.getParams() as Params_Type; + this.par=params.data + console.log('foo'+ JSON.stringify(router.getParams())); + } + build() { + Column(){ + Row(){ + Image($r('app.media.ic_public_back')) + .width('10%') + .height(35).margin({left:10}) + .onClick(()=>{ + router.back() + }) + + Search({placeholder:this.par ,controller:this.controller}) + .searchButton("搜索") + .placeholderColor(this.color) + .width("85%") + .height(40) + .onSubmit((value:string)=>{ + this.submitValue=value + }) + } + }.margin({top:15}) + } +} +``` + + +## 参考 +[Search](../application-dev/reference/arkui-ts/ts-basic-components-search.md) + +[Swiper](../application-dev/reference/arkui-ts/ts-container-swiper.md) diff --git a/zh-cn/third-party-cases/customize-the-input-box.md b/zh-cn/third-party-cases/customize-the-input-box.md new file mode 100644 index 0000000000000000000000000000000000000000..435927dee8ffd048e4a02c322c9bdb4ae31f836f --- /dev/null +++ b/zh-cn/third-party-cases/customize-the-input-box.md @@ -0,0 +1,202 @@ +# 自定义输入框 +## 场景介绍 +输入框是一种常见的场景,开发者为了丰富其多样性,在输入框中的占位符、下划线做了相关处理。本文几位大家介绍如何开发自定义输入框。 +## 效果呈现 +效果图如下: + +![](figures/custom-textinput.gif) + +## 运行环境 +本例基于以下环境开发,开发者也可以给予其他适配的版本进行开发: +- IDE: DevEco Studio 3.2 Release +- SDK: Ohos_sdk_public 3.2.12.5 (API Version 9 Release) +## 实现思路 +- 点击输入框,提示文字向上浮动并同时改变文字颜色,输入框底线进行匀速放缩:通过监听输入框状态(onEditChange)发生变化时,提示文字向上浮动以及底部线进行放缩,同时改变文字和底部线的颜色。 +- 在输入文本时,输入框右侧显示“清除”图标。点击“清空”图标,清空输入文本:通过监听输入框中有文本输入(onChange)时,右侧显示“清除”图标。 +## 开发步骤 +1. 封装TextInput组件去监听onEditChange事件(输入状态的变化)和onchange事件(输入内容的变化)。具体代码块如下: + ```ts + TextInput({text:this.textValue}) + .width('100%') + .height('100%') + .borderRadius(0) + .borderColor('#86C7CC') + .borderWidth({bottom: 1}) + .backgroundColor(Color.Transparent) + .type(this.typeInput) + .showPasswordIcon(false) + // 输入内容发生变化 + .onEditChange((isEditing)=>{ + this.isEditing = isEditing + this.isFloatHint = this.isEditing || this.textValue !=='' + }) + // 输入状态变化时 + .onChange((value)=>{ + this.textValue = value + this.isFloatHint = this.isEditing || this.textValue !== '' + }) + ``` +2. 输入状态发生变化(onEditChange)时,提示文字向上浮动并同时改变颜色;输入框底线匀速放缩并改变颜色。具体代码如下: + ```ts + // 提示文本(占位符) + Text(this.placeholder) + .enabled(false) + .fontColor(this.isFloatHint ? '#5D7DB3' : '#E1E4EA') + .position({x: 0, y: this.isFloatHint ? 0 : '50%'}) + .translate({x: 15, y: '-50%'}) + .animation({duration:100, curve: Curve.Linear}) + + // 底部线 + Line() + .width('100%') + .height(1) + .backgroundColor('#5D7DB3') + .position({x: 0, y: 44}) + .scale({x: this.isFloatHint ? 1 : 0, centerX: 0}) + .animation({duration: 300, curve: Curve.Linear}) + ``` +3. 输入内容发生变化(onChange)时,输入框右侧显示“清除”图标,点击该图标清空输入框内容。具体代码块如下: + ```ts + if (this.textValue){ + Image($r("app.media.canel")) + .width(15) + .height(15) + .border({width: 1, radius: 15, color: '#fffffff'}) + .position({x: '90%', y: '50%'}) + .translate({y: '-50%'}) + .onClick(()=>{ + this.textValue = '' + }) + } + ``` +4. 构建界面UI。具体代码块如下: + ```ts + @Entry + @Component + struct InputFloatHintPage{ + build(){ + Column(){ + Text('欢迎使用') + .fontSize(50) + .fontColor('#91B5A9') + Column(){ + InputFloatHint({placeholder: '请输入用户名'}) + Blank().height(30) + InputFloatHint({placeholder: '请输入密码'}) + Column() { + Row() { + Checkbox() + .select(false) + .selectedColor(0x39a2db) + .padding({left:1}) + Text('免密登录') + Blank().width(150) + Text('忘记密码') + .fontColor('#5C9DBA') + } + }.justifyContent(FlexAlign.SpaceBetween) + Blank().height(50) + Button('登录').width(150) + } + .width('90%') + .padding(30) + .backgroundColor(Color.White) + .border({radius: 10}) + .shadow({radius: 10, color: '#5C9DBA' }) + }.width('100%') + .height('100%') + .justifyContent(FlexAlign.Center) + } + } + ``` +## 完整代码 +完整示例代码如下: +```ts +@Component +struct InputFloatHint{ + @State isFloatHint: boolean = false + @State textValue: string = '' + isEditing = false + placeholder: string + typeInput:InputType = InputType.Normal + + build(){ + Stack(){ + TextInput({text:this.textValue}) + .width('100%') + .height('100%') + .borderRadius(0) + .borderColor('#86C7CC') + .borderWidth({bottom: 1}) + .backgroundColor(Color.Transparent) + .type(this.typeInput) + .showPasswordIcon(false) + .onEditChange((isEditing)=>{ + this.isEditing = isEditing + this.isFloatHint = this.isEditing || this.textValue !=='' + }) + .onChange((value)=>{ + this.textValue = value + this.isFloatHint = this.isEditing || this.textValue !== '' + }) + Text(this.placeholder) + .enabled(false) + .fontColor(this.isFloatHint ? '#5D7DB3' : '#E1E4EA') + .position({x: 0, y: this.isFloatHint ? 0 : '50%'}) + .translate({x: 15, y: '-50%'}) + .animation({duration:100, curve: Curve.Linear}) + + Line() + .width('100%') + .height(1) + .backgroundColor('#5D7DB3') + .position({x: 0, y: 44}) + .scale({x: this.isFloatHint ? 1 : 0, centerX: 0}) + .animation({duration: 300, curve: Curve.Linear}) + + if (this.textValue){ + Image($r("app.media.canel")) + .width(15) + .height(15) + .border({width: 1, radius: 15, color: '#fffffff'}) + .position({x: '90%', y: '50%'}) + .translate({y: '-50%'}) + .onClick(()=>{ + this.textValue = '' + }) + } + }.width('100%').height(45) + } +} + +@Entry +@Component +struct InputFloatHintPage{ + build(){ + Column(){ + Text('欢迎使用') + .fontSize(50) + .fontColor('#91B5A9') + Column(){ + InputFloatHint({placeholder: '账号'}) + Blank().height(30) + InputFloatHint({placeholder: '密码'}) + Blank().height(50) + Button('登录').width(150) + } + .width('90%') + .padding(30) + .backgroundColor(Color.White) + .border({radius: 10}) + .shadow({radius: 10, color: '#5C9DBA' }) + }.width('100%') + .height('100%') + .justifyContent(FlexAlign.Center) + } +} +``` + +## 参考 +[图形变化](../application-dev/reference/arkui-ts/ts-universal-attributes-transformation.md) + +[TextInput](../application-dev/reference/arkui-ts/ts-basic-components-textinput.md) diff --git a/zh-cn/third-party-cases/figures/Flex.gif b/zh-cn/third-party-cases/figures/Flex.gif new file mode 100644 index 0000000000000000000000000000000000000000..c7bb7e71dee7fef9536bcdc0475081596ce4e4e3 Binary files /dev/null and b/zh-cn/third-party-cases/figures/Flex.gif differ diff --git a/zh-cn/third-party-cases/figures/Navigation.gif b/zh-cn/third-party-cases/figures/Navigation.gif new file mode 100644 index 0000000000000000000000000000000000000000..9d6d7e9e58490a692f7a45de25bc11d4f26f3ffa Binary files /dev/null and b/zh-cn/third-party-cases/figures/Navigation.gif differ diff --git a/zh-cn/third-party-cases/figures/Swiper-Search.gif b/zh-cn/third-party-cases/figures/Swiper-Search.gif new file mode 100644 index 0000000000000000000000000000000000000000..2e4db151c4ac2a8a9a0a186fa3a679e3622a515d Binary files /dev/null and b/zh-cn/third-party-cases/figures/Swiper-Search.gif differ diff --git a/zh-cn/third-party-cases/figures/custom-textinput.gif b/zh-cn/third-party-cases/figures/custom-textinput.gif new file mode 100644 index 0000000000000000000000000000000000000000..e71fe3df05957684b6f378081170b1a195169a1c Binary files /dev/null and b/zh-cn/third-party-cases/figures/custom-textinput.gif differ diff --git a/zh-cn/third-party-cases/figures/play-stop1.gif b/zh-cn/third-party-cases/figures/play-stop1.gif new file mode 100644 index 0000000000000000000000000000000000000000..eb35b987c31b572ea3228fcf593c5f02cde14c51 Binary files /dev/null and b/zh-cn/third-party-cases/figures/play-stop1.gif differ diff --git a/zh-cn/third-party-cases/figures/play-stop2.gif b/zh-cn/third-party-cases/figures/play-stop2.gif new file mode 100644 index 0000000000000000000000000000000000000000..c58c8fb7ba8b1f1967bd2337474609e41bdff5c0 Binary files /dev/null and b/zh-cn/third-party-cases/figures/play-stop2.gif differ diff --git a/zh-cn/third-party-cases/how-to-control-the-pause-of-playback-of-looping-animations.md b/zh-cn/third-party-cases/how-to-control-the-pause-of-playback-of-looping-animations.md new file mode 100644 index 0000000000000000000000000000000000000000..540d5f50db538d79a677df9caa893128cecfca9c --- /dev/null +++ b/zh-cn/third-party-cases/how-to-control-the-pause-of-playback-of-looping-animations.md @@ -0,0 +1,127 @@ +# 如何控制循环动画的播放停止 +## 场景介绍 +由于循环动画无限播放的效果是通过配置animateTo接口中的iterations属性值为-1实现的。为了控制循环动画的播放,开发者通过添加定时器和通过递归函数方法实现播放停止。本文即为大家介绍该方法如何控制循环动画的播放停止。 + +## 运行环境 +本例基于以下环境开发,开发者也可以基于其他适配的版本进行开发: +- IDE: DevEco Studio 4.0 Release +- SDK: Ohos_sdk_public 4.0.10.13 (API Version 10 Release) +## 实现方案 +方案一:将循环动画放到定时其中执行,通过清除定时器实现停止动画。 +创建一个播放一次的animateTo()并通过onFinish()回调,然后通过setIntervalc重复调用animateTo(),以达到循环动画的播放,最后通过clearInterval清除定时器完成循环播放的停止。具体代码如下: +```ts +class A { + x:number=0 + y:number=0 +} +@Entry +@Component +struct AnimateToStop{ + private Timer: number=0 + @State doScale: A = {x:1,y:1} + build(){ + Column(){ + Row().width(150).height(150).backgroundColor("#41A8A8").scale(this.doScale) + Button('播放动画',{type:ButtonType.Normal,stateEffect:true}) + .borderRadius(8) + .margin(5) + .backgroundColor('#86C7CC').onClick(() => { + animateTo({ duration: 400, iterations: 1, onFinish: () => { + animateTo({ duration: 400, onFinish: () => { + } }, () => { + this.doScale = { x: 1, y: 1 } + }) + } }, () => { + this.doScale = { x: 0.5, y: 0.5 } + }) + + this.Timer = setInterval(()=>{ + animateTo({ duration: 400, iterations: 1, onFinish: () => { + animateTo({duration:400, onFinish:()=>{ + } }, ()=>{ + this.doScale ={x:1, y:1} + }) + } }, ()=>{ + this.doScale={x:0.5,y:0.5} + }) + },900) + }) + Button('停止播放',{type:ButtonType.Normal,stateEffect:true}) + .borderRadius(8) + .margin(5) + .backgroundColor('#86C7CC') + .onClick(() => { + clearInterval(this.Timer) + }) + }.width('100%') + .height('100%') + .justifyContent(FlexAlign.Center) + } +} +``` +效果图如下: + +![](figures/play_stop1.gif) + +方案二:通过递归函数使得循环动画无限播放,终止递归函数实现停止循环动画。 +doAnimate函数去一直调用animateTo函数,从而实现动画无限循环; +```ts +class A{ + x:number=0 + y:number=0 +} +@Entry +@Component +struct AnimateToStop { + @State doStop: boolean = false + @State doScale: A = { x: 0.5, y: 0.5 } + + doAnimate(x: number) { + if (this.doStop) { + return + } + animateTo({ duration: 400, iterations: 1, onFinish: () => { + if (x == 0.5) { + this.doAnimate(1) + } else { + this.doAnimate(0.5) + } + } }, () => { + this.doScale = { x: x, y: x } + }) + } + + build() { + Column() { + Row().width(150).height(150).backgroundColor("#41A8A8").scale(this.doScale) + Button('播放动画', { type: ButtonType.Normal, stateEffect: true }) + .borderRadius(8) + .margin(5) + .backgroundColor('#5C9DBA') + .onClick(() => { + this.doStop = false + this.doAnimate(0.5) + }) + Button('停止动画', { type: ButtonType.Normal, stateEffect: true }) + .borderRadius(8) + .margin(5) + .backgroundColor('#5C9DBA') + .onClick(() => { + this.doStop = true + }) + }.width('100%') + .height('100%') + .justifyContent(FlexAlign.Center) + } +} +``` + +效果图如下: + +![](figures/play_stop2.gif) + +## 参考 +[显示动画](../application-dev/reference/arkui-ts/ts-explicit-animation.md) + +[定时器](../application-dev/reference/apis/js-apis-system-timer.md) + diff --git a/zh-cn/third-party-cases/how-to-implement-fluid-layout.md b/zh-cn/third-party-cases/how-to-implement-fluid-layout.md new file mode 100644 index 0000000000000000000000000000000000000000..ee85156b459fa49ce89532de345eb68c74b7fe10 --- /dev/null +++ b/zh-cn/third-party-cases/how-to-implement-fluid-layout.md @@ -0,0 +1,132 @@ +# 如何实现流式布局 +## 场景介绍 +流式布局是一种自适应布局,在一些无法确定界面元素尺寸的布局中,根据各个元素的尺寸进行自适应布局。 + +## 效果呈现 +本例效果呈现如下: +![](figures/Flex.gif) +## 运行环境 +本例基于以下环境开发,开发者也可以基于其他适配的版本进行开发: +- IDE: DevEco Studio 4.0 Release +- SDK: Ohos_sdk_public 4.0.10.13 (API Version 10 Release) + +## 实现思路 +本例包含的关键操作及其实现方案如下: +- 输入和添加文本数据:通过TextInput组件实现文本的输入和通过UNshift()方法实现文本的添加。 +- 实现流式布局:通过Flex组件实现。 + +## 开发步骤 +1. 在输入框输入文本:在主界面中自定义一个SearchInput的子组件,使用Flex作为容器组件,默认水平排列,通过TextInput作为输入组件。定义一个变量Input,存储输入框的内容,定义一个变量searchArr,表示FlexLayout要显示输入的新增文本内容。在通过onClick()事件将Input的值通过unshift()方法存放带searchArr的首位(trim())。具体代码如下: + ```ts + @Component + export default struct SearchInput{ + @State input:string = ''; + @Link searchArr:Array + + build(){ + Flex({alignItems:ItemAlign.Center}){ + TextInput({ + placeholder:'请输入...', + text:this.input + }) + .placeholderColor('#787F87') + .placeholderFont({size:'12fp'}) + .height('5.1%') + .width('81.1%') + .backgroundColor(Color.White) + .margin({left:'12vp',right:'15vp',top:'8vp',bottom:'8vp'}) + .border({width:'1vp',color:'#33182431',radius:'20vp',style:BorderStyle.Solid}) + .onChange((value:string)=>{ + this.input = value; + }) + Text('添加') + .fontSize('16fp') + .fontColor('#007DFF') + .height('5.1%') + .onClick(()=>{ + if (this.input !== ''&& this.input.trim().length>0){ + this.searchArr.unshift(this.input.trim()); + } + this.input = ''; + }) + } + .width('100%') + } + } + ``` +2. 流失布局的实现:自定义一个FlexLayou的子组件,Flex作为容器组件,Flex.Wrap自适应布局,通过ForEach遍历变量searchArr使其显示。具体代码如下: + ```ts + @Component + export default struct FlexLayout { + @Link searchArr :Array; + build(){ + Scroll(){ + Flex({justifyContent:FlexAlign.Start,wrap:FlexWrap.Wrap}){ + if (this.searchArr.length>0){ + ForEach(this.searchArr,(item:string)=>{ + Text(`${item}`) + .fontSize("12fp") + .borderStyle(BorderStyle.Solid) + .borderWidth('1vp') + .borderColor('#E5E8EA') + .borderRadius('20vp') + .backgroundColor('#E5E8EA') + .padding({top:'0.8%',bottom:'0.8%',left:'4.4%',right:'4.4%'}) + .margin({top:'10vp',right:'10vp'}) + .textOverflow({overflow:TextOverflow.Ellipsis}) + .maxLines(2) + },(item:string)=>JSON.stringify(item)) + } + } + .margin({left:'12vp',right:'12vp'}) + .padding({bottom:'12vp'}) + } + } + } + ``` + +3. 主页面添加文本数据:调用FlexLayout组件、SearchInput组件,定义数组变量searchArr用来存放默认文本和输入的文本,使用$将父组件的变量与添加的文本数组关联起来。具体代码如下: + ```ts + import SearchInput from '../view/SearchInput'; + import FlexLayout from '../view/FlexLayout'; + import SearchViewModel from '../viewmodel/SearchViewModel' + + @Entry + @Component + struct HomePage { + @State searchArr:Array=SearchViewModel.getSearchArrData() + build() { + Column(){ + SearchInput({searchArr:$searchArr}) + FlexLayout({searchArr:$searchArr}) + } + .height('100%') + .width('100%') + .alignItems(HorizontalAlign.Center) + .backgroundColor('#F1F3f5') + } + } + ``` + +4. 原数据建立:定义获取原数据的函数getSearchArrData()。具体代码如下: + ```ts + export class SearchViewModel{ + getSearchArrData(){ + let listItems:Array=[ + 'Flex','Swiper','Slider','Image', + 'Switch','Checkbox','ScrollView', + 'Row','Column' + ]; + return listItems; + } + } + export default new SearchViewModel(); + ``` + +## 完整代码 +上述开发步骤的具体示例代码即为本场景的全部代码 + +## 参考 +[Flex](../application-dev/reference/arkui-ts/ts-container-flex.md) + +[TextInput](../application-dev/reference/arkui-ts/ts-basic-components-textinput.md) \ No newline at end of file