diff --git a/en/application-dev/Readme-EN.md b/en/application-dev/Readme-EN.md index 0363d1f89ac76ca3c8187637a46b3b4230d3dab6..206b69d6dc613a4e9434bbbf161f2d33c99c1b1c 100644 --- a/en/application-dev/Readme-EN.md +++ b/en/application-dev/Readme-EN.md @@ -16,6 +16,7 @@ - [Data Management](database/Readme-EN.md) - [USB Service](usb/Readme-EN.md) - [DFX](dfx/Readme-EN.md) +- [WebGL](webgl/Readme-EN.md) - [Development References](reference/Readme-EN.md) - [JavaScript-based Web-like Development Paradigm](reference/arkui-js/Readme-EN.md) - [TypeScript-based Declarative Development Paradigm](reference/arkui-ts/Readme-EN.md) diff --git a/en/application-dev/reference/apis/js-apis-audio.md b/en/application-dev/reference/apis/js-apis-audio.md index eb6fbc82775e1631bd852319de66b4318a1c28de..80ac13c01931162680670633ac374864c8a24101 100644 --- a/en/application-dev/reference/apis/js-apis-audio.md +++ b/en/application-dev/reference/apis/js-apis-audio.md @@ -16,7 +16,9 @@ None getAudioManager\(\): AudioManager -Obtains an **AudioManager** instance. +Obtains an **AudioManager** instance. + +**System capabilities**: SystemCapability.Multimedia.Audio.Core **Return value** @@ -44,14 +46,16 @@ var audioManager = audio.getAudioManager(); ## audioRenderer -createAudioRenderer(volumeType: AudioVolumeType): AudioRenderer +createAudioRenderer(options: AudioRendererOptions): AudioRenderer Obtains an **AudioRenderer** instance. +**System capabilities**: SystemCapability.Multimedia.Audio.Renderer + **Parameters** -| Name | Type | Mandatory | Description | -| :--------- | :-------------- | :-------- | :----------------- | -| volumeType | AudioVolumeType | Yes | Audio stream type. | +| Name | Type | Mandatory | Description | +| :--------- | :------------------- | :-------- | :---------------------- | +| options | AudioRendererOptions | Yes | Renderer configurations | **Return value** @@ -125,28 +129,28 @@ Enumerates audio stream types.

0

-

Audio stream for voice calls.

+

Audio stream for voice calls.
System capabilities: SystemCapability.Multimedia.Audio.Volume

RINGTONE

2

-

Audio stream for ringtones.

+

Audio stream for ringtones.
System capabilities: SystemCapability.Multimedia.Audio.Volume

MEDIA

3

-

Audio stream for media purpose.

+

Audio stream for media purpose.
System capabilities: SystemCapability.Multimedia.Audio.Volume

VOICE_ASSISTANT

9

-

Audio stream for voice assistant.

+

Audio stream for voice assistant.
System capabilities: SystemCapability.Multimedia.Audio.Volume

@@ -170,21 +174,21 @@ Enumerates audio device flags.

1

-

Output device.

+

Output device.
System capabilities: SystemCapability.Multimedia.Audio.Device

INPUT_DEVICES_FLAG

2

-

Input device.

+

Input device.
System capabilities: SystemCapability.Multimedia.Audio.Device

ALL_DEVICES_FLAG

3

-

All devices.

+

All devices.
System capabilities: SystemCapability.Multimedia.Audio.Device

@@ -208,14 +212,14 @@ Enumerates audio device roles.

1

-

Input role.

+

Input role.
System capabilities: SystemCapability.Multimedia.Audio.Device

OUTPUT_DEVICE

2

-

Output role.

+

Output role.
System capabilities: SystemCapability.Multimedia.Audio.Device

@@ -239,42 +243,42 @@ Enumerates audio device types.

0

-

Invalid device.

+

Invalid device.
System capabilities: SystemCapability.Multimedia.Audio.Device

SPEAKER

2

-

Speaker.

+

Speaker.
System capabilities: SystemCapability.Multimedia.Audio.Device

WIRED_HEADSET

3

-

Wired headset.

+

Wired headset.
System capabilities: SystemCapability.Multimedia.Audio.Device

BLUETOOTH_SCO

7

-

Bluetooth device using the synchronous connection oriented (SCO) link.

+

Bluetooth device using the synchronous connection oriented (SCO) link.
System capabilities: SystemCapability.Multimedia.Audio.Device

BLUETOOTH_A2DP

8

-

Bluetooth device using the advanced audio distribution profile (A2DP).

+

Bluetooth device using the advanced audio distribution profile (A2DP).
System capabilities: SystemCapability.Multimedia.Audio.Device

MIC

15

-

Microphone.

+

Microphone.
System capabilities: SystemCapability.Multimedia.Audio.Device

@@ -298,21 +302,21 @@ Enumerates ringer modes.

0

-

Silence mode.

+

Silence mode.
System capabilities: SystemCapability.Multimedia.Audio.Communication

RINGER_MODE_VIBRATE

1

-

Vibration mode.

+

Vibration mode.
System capabilities: SystemCapability.Multimedia.Audio.Communication

RINGER_MODE_NORMAL

2

-

Normal mode.

+

Normal mode.
System capabilities: SystemCapability.Multimedia.Audio.Communication

@@ -322,71 +326,71 @@ Enumerates ringer modes. ## AudioSampleFormat8+ Enumerates the audio sample formats. -| Name | Default Value | Description | -| :------------ | :------------ | :------------------------------------ | -| INVALID_WIDTH | -1 | Invalid format. | -| SAMPLE_U8 | 0 | Unsigned 8 bit integer. | -| SAMPLE_S16LE | 1 | Signed 16 bit integer, little endian. | -| SAMPLE_S24LE | 2 | Signed 24 bit integer, little endian. | -| SAMPLE_S32LE | 3 | Signed 32 bit integer, little endian. | +| Name | Default Value | Description | +| :-------------------- | :------------ | :----------------------------------------------------------------------------------------------------- | +| SAMPLE_FORMAT_INVALID | -1 | Invalid format.
System capabilities: SystemCapability.Multimedia.Audio.Core | +| SAMPLE_FORMAT_U8 | 0 | Unsigned 8 bit integer.
System capabilities: SystemCapability.Multimedia.Audio.Core | +| SAMPLE_FORMAT_S16LE | 1 | Signed 16 bit integer, little endian.
System capabilities: SystemCapability.Multimedia.Audio.Core | +| SAMPLE_FORMAT_S24LE | 2 | Signed 24 bit integer, little endian.
System capabilities: SystemCapability.Multimedia.Audio.Core | +| SAMPLE_FORMAT_S32LE | 3 | Signed 32 bit integer, little endian.
System capabilities: SystemCapability.Multimedia.Audio.Core | ## AudioChannel8+ Enumerates the audio channels. -| Name | Default Value | Description | -| :----- | :------------ | :--------------- | -| CHANNEL_1 | 0x1 << 0 | Channel count 1. | -| CHANNEL_2 | 0x1 << 1 | Channel count 2. | +| Name | Default Value | Description | +| :----- | :------------ | :-------------------------------------------------------------------------------- | +| CHANNEL_1 | 0x1 << 0 | Channel count 1.
System capabilities: SystemCapability.Multimedia.Audio.Core | +| CHANNEL_2 | 0x1 << 1 | Channel count 2.
System capabilities: SystemCapability.Multimedia.Audio.Core | ## AudioSamplingRate8+ Enumerates the audio sampling rates. -| Name | Default Value | Description | -| :---------------- | :------------ | :------------------- | -| SAMPLE_RATE_8000 | 8000 | Sampling rate 8000. | -| SAMPLE_RATE_11025 | 11025 | Sampling rate 11025. | -| SAMPLE_RATE_12000 | 12000 | Sampling rate 12000. | -| SAMPLE_RATE_16000 | 16000 | Sampling rate 16000. | -| SAMPLE_RATE_22050 | 22050 | Sampling rate 22050. | -| SAMPLE_RATE_24000 | 24000 | Sampling rate 24000. | -| SAMPLE_RATE_32000 | 32000 | Sampling rate 32000. | -| SAMPLE_RATE_44100 | 44100 | Sampling rate 44100. | -| SAMPLE_RATE_48000 | 48000 | Sampling rate 48000. | -| SAMPLE_RATE_64000 | 64000 | Sampling rate 64000. | -| SAMPLE_RATE_96000 | 96000 | Sampling rate 96000. | +| Name | Default Value | Description | +| :---------------- | :------------ | :------------------------------------------------------------------------------------ | +| SAMPLE_RATE_8000 | 8000 | Sampling rate 8000.
System capabilities: SystemCapability.Multimedia.Audio.Core | +| SAMPLE_RATE_11025 | 11025 | Sampling rate 11025.
System capabilities: SystemCapability.Multimedia.Audio.Core | +| SAMPLE_RATE_12000 | 12000 | Sampling rate 12000.
System capabilities: SystemCapability.Multimedia.Audio.Core | +| SAMPLE_RATE_16000 | 16000 | Sampling rate 16000.
System capabilities: SystemCapability.Multimedia.Audio.Core | +| SAMPLE_RATE_22050 | 22050 | Sampling rate 22050.
System capabilities: SystemCapability.Multimedia.Audio.Core | +| SAMPLE_RATE_24000 | 24000 | Sampling rate 24000.
System capabilities: SystemCapability.Multimedia.Audio.Core | +| SAMPLE_RATE_32000 | 32000 | Sampling rate 32000.
System capabilities: SystemCapability.Multimedia.Audio.Core | +| SAMPLE_RATE_44100 | 44100 | Sampling rate 44100.
System capabilities: SystemCapability.Multimedia.Audio.Core | +| SAMPLE_RATE_48000 | 48000 | Sampling rate 48000.
System capabilities: SystemCapability.Multimedia.Audio.Core | +| SAMPLE_RATE_64000 | 64000 | Sampling rate 64000.
System capabilities: SystemCapability.Multimedia.Audio.Core | +| SAMPLE_RATE_96000 | 96000 | Sampling rate 96000.
System capabilities: SystemCapability.Multimedia.Audio.Core | ## AudioEncodingType8+ Enumerates the audio encoding types. -| Name | Default Value | Description | -| :-------------------- | :------------ | :---------------- | -| ENCODING_TYPE_INVALID | -1 | Invalid. | -| ENCODING_TYPE_RAW | 0 | PCM encoding. | +| Name | Default Value | Description | +| :-------------------- | :------------- | :------------------------------------------------------------------------------- | +| ENCODING_TYPE_INVALID | -1 | Invalid.
System capabilities: SystemCapability.Multimedia.Audio.Core | +| ENCODING_TYPE_RAW | 0 | PCM encoding.
System capabilities: SystemCapability.Multimedia.Audio.Core | ## ContentType8+ Enumerates the content types. -| Name | Default Value | Description | -| :------------------------ | :------------ | :-------------------- | -| CONTENT_TYPE_UNKNOWN | 0 | Unknown content. | -| CONTENT_TYPE_SPEECH | 1 | Speech content. | -| CONTENT_TYPE_MUSIC | 2 | Music content. | -| CONTENT_TYPE_MOVIE | 3 | Movie content. | -| CONTENT_TYPE_SONIFICATION | 4 | Notification content. | -| CONTENT_TYPE_RINGTONE | 5 | Ringtone content. | +| Name | Default Value | Description | +| :------------------------ | :------------ | :------------------------------------------------------------------------------------- | +| CONTENT_TYPE_UNKNOWN | 0 | Unknown content.
System capabilities: SystemCapability.Multimedia.Audio.Core | +| CONTENT_TYPE_SPEECH | 1 | Speech content.
System capabilities: SystemCapability.Multimedia.Audio.Core | +| CONTENT_TYPE_MUSIC | 2 | Music content.
System capabilities: SystemCapability.Multimedia.Audio.Core | +| CONTENT_TYPE_MOVIE | 3 | Movie content.
System capabilities: SystemCapability.Multimedia.Audio.Core | +| CONTENT_TYPE_SONIFICATION | 4 | Notification content.
System capabilities: SystemCapability.Multimedia.Audio.Core | +| CONTENT_TYPE_RINGTONE | 5 | Ringtone content.
System capabilities: SystemCapability.Multimedia.Audio.Core | ## StreamUsage8+ Enumerates the stream usage. -| Name | Default Value | Description | -| :--------------------------------- | :------------ | :------------------------------ | -| STREAM_USAGE_UNKNOWN | 0 | Unknown usage. | -| STREAM_USAGE_MEDIA | 1 | Media usage. | -| STREAM_USAGE_VOICE_COMMUNICATION | 2 | Voice communication usage. | -| STREAM_USAGE_NOTIFICATION_RINGTONE | 3 | Notification or ringtone usage. | +| Name | Default Value | Description | +| :--------------------------------- | :------------ | :----------------------------------------------------------------------------------------------- | +| STREAM_USAGE_UNKNOWN | 0 | Unknown usage.
System capabilities: SystemCapability.Multimedia.Audio.Core | +| STREAM_USAGE_MEDIA | 1 | Media usage.
System capabilities: SystemCapability.Multimedia.Audio.Core | +| STREAM_USAGE_VOICE_COMMUNICATION | 2 | Voice communication usage.
System capabilities: SystemCapability.Multimedia.Audio.Core | +| STREAM_USAGE_NOTIFICATION_RINGTONE | 3 | Notification or ringtone usage.
System capabilities: SystemCapability.Multimedia.Audio.Core | ## AudioState8+ @@ -394,54 +398,54 @@ Enumerates the audio states. | Name | Default Value | Description | | :------------- | :------------ | :------------------------- | -| STATE_INVALID | -1 | Invalid state. | -| STATE_NEW | 0 | Create New instance state. | -| STATE_PREPARED | 1 | Prepared state. | -| STATE_RUNNING | 2 | Running state. | -| STATE_STOPPED | 3 | Stopped state. | -| STATE_RELEASED | 4 | Released state. | -| STATE_PAUSED | 5 | Paused state. | +| STATE_INVALID | -1 | Invalid state.
System capabilities: SystemCapability.Multimedia.Audio.Core | +| STATE_NEW | 0 | Create New instance state.
System capabilities: SystemCapability.Multimedia.Audio.Core | +| STATE_PREPARED | 1 | Prepared state.
System capabilities: SystemCapability.Multimedia.Audio.Core | +| STATE_RUNNING | 2 | Running state.
System capabilities: SystemCapability.Multimedia.Audio.Core | +| STATE_STOPPED | 3 | Stopped state.
System capabilities: SystemCapability.Multimedia.Audio.Core | +| STATE_RELEASED | 4 | Released state.
System capabilities: SystemCapability.Multimedia.Audio.Core | +| STATE_PAUSED | 5 | Paused state.
System capabilities: SystemCapability.Multimedia.Audio.Core | ## AudioRendererRate8+ Enumerates the audio renderer rates. -| Name | Default Value | Description | -| :----------------- | :------------ | :----------- | -| RENDER_RATE_NORMAL | 0 | Normal rate. | -| RENDER_RATE_DOUBLE | 1 | Double rate. | -| RENDER_RATE_HALF | 2 | Half rate. | +| Name | Default Value | Description | +| :----------------- | :------------ | :-------------------------------------------------------------------------------- | +| RENDER_RATE_NORMAL | 0 | Normal rate.
System capabilities: SystemCapability.Multimedia.Audio.Renderer | +| RENDER_RATE_DOUBLE | 1 | Double rate.
System capabilities: SystemCapability.Multimedia.Audio.Renderer | +| RENDER_RATE_HALF | 2 | Half rate.
System capabilities: SystemCapability.Multimedia.Audio.Renderer | ## InterruptType8+ Enumerates the interrupt types. -| Name | Default Value | Description | -| :------------------- | :------------ | :----------------------------------- | -| INTERRUPT_TYPE_BEGIN | 1 | Audio playback interruption started. | -| INTERRUPT_TYPE_END | 2 | Audio playback interruption ended. | +| Name | Default Value | Description | +| :------------------- | :------------ | :-------------------------------------------------------------------------------------------------------- | +| INTERRUPT_TYPE_BEGIN | 1 | Audio playback interruption started.
System capabilities: SystemCapability.Multimedia.Audio.Renderer | +| INTERRUPT_TYPE_END | 2 | Audio playback interruption ended.
System capabilities: SystemCapability.Multimedia.Audio.Renderer | ## InterruptForceType8+ Enumerates the interrupt force types. -| Name | Default Value | Description | -| :-------------- | :------------ | :--------------------------------------- | -| INTERRUPT_FORCE | 0 | Forced action taken by system. | -| INTERRUPT_SHARE | 1 | App can choose to take action or ignore. | +| Name | Default Value | Description | +| :-------------- | :------------ | :------------------------------------------------------------------------------------------------------------ | +| INTERRUPT_FORCE | 0 | Forced action taken by system.
System capabilities: SystemCapability.Multimedia.Audio.Renderer | +| INTERRUPT_SHARE | 1 | App can choose to take action or ignore.
System capabilities: SystemCapability.Multimedia.Audio.Renderer | ## InterruptHint8+ Enumerates the interrupt hints. -| Name | Default Value | Description | -| :-------------------- | :------------ | :------------------------- | -| INTERRUPT_HINT_NONE | 0 | None. | -| INTERRUPT_HINT_RESUME | 1 | Resume the playback. | -| INTERRUPT_HINT_PAUSE | 2 | Paused/Pause the playback. | -| INTERRUPT_HINT_STOP | 3 | Stopped/Stop the playback. | -| INTERRUPT_HINT_DUCK | 4 | Ducked the playback. | -| INTERRUPT_HINT_UNDUCK | 5 | Unducked the playback. | +| Name | Default Value | Description | +| :-------------------- | :------------ | :---------------------------------------------------------------------------------------------- | +| INTERRUPT_HINT_NONE | 0 | None.
System capabilities: SystemCapability.Multimedia.Audio.Renderer | +| INTERRUPT_HINT_RESUME | 1 | Resume the playback.
System capabilities: SystemCapability.Multimedia.Audio.Renderer | +| INTERRUPT_HINT_PAUSE | 2 | Paused/Pause the playback.
System capabilities: SystemCapability.Multimedia.Audio.Renderer | +| INTERRUPT_HINT_STOP | 3 | Stopped/Stop the playback.
System capabilities: SystemCapability.Multimedia.Audio.Renderer | +| INTERRUPT_HINT_DUCK | 4 | Ducked the playback.
System capabilities: SystemCapability.Multimedia.Audio.Renderer | +| INTERRUPT_HINT_UNDUCK | 5 | Unducked the playback.
System capabilities: SystemCapability.Multimedia.Audio.Renderer | ## RingtoneType8+ @@ -455,6 +459,8 @@ Enumerates the ringtone types. ## AudioStreamInfo8+ Describes audio stream information. +**System capabilities**: SystemCapability.Multimedia.Audio.Core + **Parameters** | Name | Type | Mandatory | Description | @@ -467,6 +473,8 @@ Describes audio stream information. ## AudioRendererInfo8+ Describes audio renderer information. +**System capabilities**: SystemCapability.Multimedia.Audio.Core + **Parameters** | Name | Type | Mandatory | Description | @@ -475,10 +483,23 @@ Describes audio renderer information. | usage | StreamUsage | Yes | Stream usage. | | rendererFlags | number | Yes | Audio renderer flags. | +## AudioRendererOptions8+ +Describes audio renderer configuration options. + +**System capabilities**: SystemCapability.Multimedia.Audio.Renderer + +**Parameters** + +| Name | Type | Mandatory | Description | +| :------------ | :---------------- | :-------- | :-------------------- | +| streamInfo | AudioStreamInfo | Yes | Stream information. | +| rendererInfo | AudioRendererInfo | Yes | Renderer information. | ## InterruptEvent8+ Describes the interrupt event received by the app when playback is interrupted. +**System capabilities**: SystemCapability.Multimedia.Audio.Renderer + **Parameters** | Name | Type | Mandatory | Description | @@ -491,6 +512,8 @@ Describes the interrupt event received by the app when playback is interrupted. ## VolumeEvent8+ Describes the volume event received by the app when the volume is changed. +**System capabilities**: SystemCapability.Multimedia.Audio.Volume + **Parameters** | Name | Type | Mandatory | Description | @@ -515,12 +538,16 @@ Describes ringtone options. Implements audio volume and audio device management. +**System capabilities**: SystemCapability.Multimedia.Audio.Core + ## audioManager.setVolume setVolume\(volumeType: AudioVolumeType, volume: number, callback: AsyncCallback\): void Sets the volume for a stream. This method uses an asynchronous callback to return the result. +**System capabilities**: SystemCapability.Multimedia.Audio.Volume + **Parameters** @@ -585,6 +612,8 @@ setVolume\(volumeType: AudioVolumeType, volume: number\): Promise @@ -650,6 +679,8 @@ getVolume\(volumeType: AudioVolumeType, callback: AsyncCallback\): void Obtains the volume of a stream. This method uses an asynchronous callback to return the query result. +**System capabilities**: SystemCapability.Multimedia.Audio.Volume + **Parameters** @@ -707,6 +738,8 @@ getVolume\(volumeType: AudioVolumeType\): Promise @@ -764,6 +797,8 @@ getMinVolume\(volumeType: AudioVolumeType, callback: AsyncCallback\): v Obtains the minimum volume allowed for a stream. This method uses an asynchronous callback to return the query result. +**System capabilities**: SystemCapability.Multimedia.Audio.Volume + **Parameters** @@ -821,6 +856,8 @@ getMinVolume\(volumeType: AudioVolumeType\): Promise @@ -878,6 +915,8 @@ getMaxVolume\(volumeType: AudioVolumeType, callback: AsyncCallback\): v Obtains the maximum volume allowed for a stream. This method uses an asynchronous callback to return the query result. +**System capabilities**: SystemCapability.Multimedia.Audio.Volume + **Parameters** @@ -935,6 +974,8 @@ getMaxVolume\(volumeType: AudioVolumeType\): Promise @@ -991,6 +1032,8 @@ mute\(volumeType: AudioVolumeType, mute: boolean, callback: AsyncCallback Mutes a stream. This method uses an asynchronous callback to return the result. +**System capabilities**: SystemCapability.Multimedia.Audio.Volume + **Parameters** @@ -1057,6 +1100,8 @@ mute\(volumeType: AudioVolumeType, mute: boolean\): Promise7+< Mutes a stream. This method uses a promise to return the result. +**System capabilities**: SystemCapability.Multimedia.Audio.Volume + **Parameters** @@ -1123,6 +1168,8 @@ isMute\(volumeType: AudioVolumeType, callback: AsyncCallback\): void @@ -1180,6 +1227,8 @@ isMute\(volumeType: AudioVolumeType\): Promise7+ @@ -1237,6 +1286,8 @@ isActive\(volumeType: AudioVolumeType, callback: AsyncCallback\): void Checks whether a stream is active. This method uses an asynchronous callback to return the query result. +**System capabilities**: SystemCapability.Multimedia.Audio.Volume + **Parameters** @@ -1294,6 +1345,8 @@ isActive\(volumeType: AudioVolumeType\): Promise7+ @@ -1351,6 +1404,8 @@ setRingerMode\(mode: AudioRingMode, callback: AsyncCallback\): void7 Sets the ringer mode. This method uses an asynchronous callback to return the result. +**System capabilities**: SystemCapability.Multimedia.Audio.Communication + **Parameters** @@ -1408,6 +1463,8 @@ setRingerMode\(mode: AudioRingMode\): Promise7+ @@ -1465,6 +1522,8 @@ getRingerMode\(callback: AsyncCallback\): void7+ @@ -1513,6 +1572,8 @@ getRingerMode\(\): Promise7+ @@ -1615,6 +1678,8 @@ setAudioParameter\(key: string, value: string\): Promise7+ @@ -1681,6 +1746,8 @@ getAudioParameter\(key: string, callback: AsyncCallback\): void7+< Obtains the value of an audio parameter. This method uses an asynchronous callback to return the query result. +**System capabilities**: SystemCapability.Multimedia.Audio.Core + **Parameters** @@ -1738,6 +1805,8 @@ getAudioParameter\(key: string\): Promise7+ @@ -1795,6 +1864,8 @@ getDevices\(deviceFlag: DeviceFlag, callback: AsyncCallback @@ -1853,6 +1924,8 @@ getDevices\(deviceFlag: DeviceFlag\): Promise @@ -1910,6 +1983,8 @@ setDeviceActive\(deviceType: DeviceType, active: boolean, callback: AsyncCallbac Sets a device to the active state. This method uses an asynchronous callback to return the result. +**System capabilities**: SystemCapability.Multimedia.Audio.Device + **Parameters** @@ -1977,6 +2052,8 @@ setDeviceActive\(deviceType: DeviceType, active: boolean\): Promise7 Sets a device to the active state. This method uses a promise to return the result. +**System capabilities**: SystemCapability.Multimedia.Audio.Device + **Parameters** @@ -2043,6 +2120,8 @@ isDeviceActive\(deviceType: DeviceType, callback: AsyncCallback\): voi Checks whether a device is active. This method uses an asynchronous callback to return the query result. +**System capabilities**: SystemCapability.Multimedia.Audio.Device + **Parameters** @@ -2100,6 +2179,8 @@ isDeviceActive\(deviceType: DeviceType\): Promise7+ @@ -2157,6 +2238,8 @@ setMicrophoneMute\(mute: boolean, callback: AsyncCallback\): void7+< Mutes or unmutes the microphone. This method uses an asynchronous callback to return the result. +**System capabilities**: SystemCapability.Multimedia.Audio.Device + **Parameters** @@ -2214,6 +2297,8 @@ setMicrophoneMute\(mute: boolean\): Promise7+ @@ -2271,6 +2356,8 @@ isMicrophoneMute\(callback: AsyncCallback\): void7+ @@ -2319,6 +2406,8 @@ isMicrophoneMute\(\): Promise7+ Describes an audio device. +**System capabilities**: SystemCapability.Multimedia.Audio.Device + ## AudioDeviceDescriptors type AudioDeviceDescriptors = Array\> : void\
Array of AudioDeviceDescriptors, which is read-only. +**System capabilities**: SystemCapability.Multimedia.Audio.Device + ## audioDeviceDescriptor.deviceRole readonly deviceRole: DeviceRole @@ -2459,6 +2556,7 @@ promise.then(async function (audioDeviceDescriptors) { # AudioRenderer Provides audio playback APIs. +**System capabilities**: SystemCapability.Multimedia.Audio.Renderer ## audioRenderer.state @@ -2466,6 +2564,8 @@ readonly state: AudioState 8+ Defines the current render state. +**System capabilities**: SystemCapability.Multimedia.Audio.Renderer + | Name | Type | Readable | Writable | Description | | :---- | :--------- | :------- | :------- | :------------------ | | state | AudioState | Yes | No | Audio render state. | @@ -2482,12 +2582,13 @@ getRendererInfo(callback: AsyncCallback): void8+< Gets the renderer information provided while creating a renderer instance. This method uses an asynchronous callback to return the result. +**System capabilities**: SystemCapability.Multimedia.Audio.Renderer + **Parameters** | Name | Type | Mandatory | Description | | :------- | :--------------------------------- | :-------- | :------------------------------------------------ | | callback | AsyncCallback | Yes | Callback used to return the renderer information. | -| | | | | **Return value** @@ -2511,6 +2612,8 @@ getParams(): Promise8+ | Promise used to return the stream information. | +| Type | Description | +| :---------------------------- | :--------------------------------------------- | +| Promise | Promise used to return the stream information. | **Example** @@ -2593,6 +2699,8 @@ start(callback: AsyncCallback): void8+8+ Starts the renderer. This method uses a promise to return the result. +**System capabilities**: SystemCapability.Multimedia.Audio.Renderer + **Parameters** None @@ -2646,6 +2756,8 @@ pause(callback: AsyncCallback): void8+ Pauses rendering. This method uses a promise to return the result. +**System capabilities**: SystemCapability.Multimedia.Audio.Renderer + **Parameters** None @@ -2701,6 +2815,8 @@ drain(callback: AsyncCallback): void8+ Drains the playback buffer. This method uses a promise to return the result. +**System capabilities**: SystemCapability.Multimedia.Audio.Renderer + **Parameters** None @@ -2754,6 +2872,8 @@ stop(callback: AsyncCallback): void8+ Stops rendering. This method uses a promise to return the result. +**System capabilities**: SystemCapability.Multimedia.Audio.Renderer + **Parameters** None @@ -2807,6 +2929,8 @@ release(callback: AsyncCallback): void8+ Releases the renderer. This method uses a promise to return the result. +**System capabilities**: SystemCapability.Multimedia.Audio.Renderer + **Parameters** None @@ -2862,6 +2988,8 @@ write(buffer: ArrayBuffer, callback: AsyncCallback): void8+< Writes the buffer. This method uses an asynchronous callback to return the result. +**System capabilities**: SystemCapability.Multimedia.Audio.Renderer + **Parameters** | Name | Type | Mandatory | Description | @@ -2896,6 +3024,8 @@ write(buffer: ArrayBuffer): Promise8+): void8+ Obtains the timestamp. This method uses a promise to return the result. +**System capabilities**: SystemCapability.Multimedia.Audio.Renderer + **Parameters** None @@ -2978,6 +3112,8 @@ getBufferSize(callback: AsyncCallback): void8+): void | Yes | Callback used to return the result. | -| | | | | +| Name | Type | Mandatory | Description | +| :------- | :------------------- | :-------- | :------------------------------------ | +| rate | AudioRendererRate | Yes | Audio render rate. | +| callback | AsyncCallback | Yes | Callback used to return the result. | **Return value** @@ -3064,6 +3203,8 @@ setRenderRate(rate: AudioRendererRate): Promise8+): void8+ @@ -1336,7 +1338,7 @@ Sets the **DataAbilityPredicates** to filter out duplicate records. ``` let predicates = new dataAbility.DataAbilityPredicates("EMPLOYEE") predicates.equalTo("NAME", "Rose").distinct("NAME") - let resultSet = await rdbStore.query(predicates, ["NAME"]) + rdbStore.query(predicates, ["NAME"]) ``` diff --git a/en/application-dev/reference/apis/js-apis-data-rdb.md b/en/application-dev/reference/apis/js-apis-data-rdb.md index eaac5db78abccd54c058d2443ef8a5f81a26f8e9..e3fc6ff3f954b818b57c59366ebe98987cca9c6c 100644 --- a/en/application-dev/reference/apis/js-apis-data-rdb.md +++ b/en/application-dev/reference/apis/js-apis-data-rdb.md @@ -750,7 +750,7 @@ Sets the **RdbPredicates** to filter out duplicate records. ``` let predicates = new data_rdb.RdbPredicates("EMPLOYEE") predicates.equalTo("NAME", "Rose").distinct("NAME") - let resultSet = await rdbStore.query(predicates, ["NAME"]) + rdbStore.query(predicates, ["NAME"]) ``` diff --git a/en/application-dev/reference/apis/js-apis-data-resultset.md b/en/application-dev/reference/apis/js-apis-data-resultset.md index 7e72ca266d54f2f9267a4c47f14da2693c81ff4f..c672898f18348a1fcf2f7302e31b8168162c2968 100644 --- a/en/application-dev/reference/apis/js-apis-data-resultset.md +++ b/en/application-dev/reference/apis/js-apis-data-resultset.md @@ -3,6 +3,9 @@ >![](../../public_sys-resources/icon-note.gif) **NOTE:** >The initial APIs of this module are supported since API version 7. Newly added APIs will be marked with a superscript to indicate their earliest API version. +## System Capabilities +SystemCapability.DistributedDataManager.RelationalStore.Core + ## Usage The **resultSet** object is obtained by using [**RdbStore.query\(\)**](js-apis-data-rdb.md#section6231155031814). @@ -13,8 +16,8 @@ let predicates = new dataRdb.RdbPredicates("EMPLOYEE") predicates.equalTo("AGE", 18) let promise = rdbStore.query(predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"]) promise.then((resultSet) => { - await console.log(TAG + "resultSet columnNames:" + resultSet.columnNames); - await console.log(TAG + "resultSet columnCount:" + resultSet.columnCount);}) + console.log("resultSet columnNames:" + resultSet.columnNames); + console.log("resultSet columnCount:" + resultSet.columnCount); ``` ## Required Permissions @@ -291,10 +294,11 @@ Moves the cursor to the row based on the specified offset. ``` let predicates = new dataRdb.RdbPredicates("EMPLOYEE") - let resultSet = await rdbStore.query(predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"]) - resultSet.goTo(1) - resultSet.close() - resultSet = null + rdbStore.query(predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"]).then((resultSet) => { + resultSet.goTo(1); + resultSet.close(); + resultSet = null; + }) ``` @@ -351,10 +355,11 @@ Moves the cursor to the specified row in the result set. ``` let predicates = new dataRdb.RdbPredicates("EMPLOYEE") - let resultSet = await rdbStore.query(predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"]) - resultSet.goToRow(1) - resultSet.close() - resultSet = null + rdbStore.query(predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"]).then((resultSet) => { + resultSet.goToRow(1); + resultSet.close(); + resultSet = null + }) ``` @@ -385,10 +390,11 @@ Moves the cursor to the first row of the result set. ``` let predicates = new dataRdb.RdbPredicates("EMPLOYEE") - let resultSet = await rdbStore.query(predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"]) - resultSet.goToFirstRow() - resultSet.close() - resultSet = null; + rdbStore.query(predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"]).then((resultSet) => { + resultSet.goToFirstRow(); + resultSet.close(); + resultSet = null; + }) ``` @@ -419,10 +425,11 @@ Moves the cursor to the last row of the result set. ``` let predicates = new dataRdb.RdbPredicates("EMPLOYEE") - let resultSet = await rdbStore.query(predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"]) - resultSet.goToLastRow() - resultSet.close() - resultSet = null; + rdbStore.query(predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"]).then((resultSet) => { + resultSet.goToLastRow(); + resultSet.close(); + resultSet = null; + }) ``` @@ -453,10 +460,11 @@ Moves the cursor to the next row in the result set. ``` let predicates = new dataRdb.RdbPredicates("EMPLOYEE") - let resultSet = await rdbStore.query(predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"]) - resultSet.goToNextRow() - resultSet.close() - resultSet = null; + rdbStore.query(predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"]).then((resultSet) => { + resultSet.goToNextRow() + resultSet.close() + resultSet = null; + }) ``` @@ -487,10 +495,11 @@ Moves the cursor to the previous row in the result set. ``` let predicates = new dataRdb.RdbPredicates("EMPLOYEE") - let resultSet = await rdbStore.query(predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"]) - resultSet.goToPreviousRow() - resultSet.close() - resultSet = null + rdbStore.query(predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"]).then((resultSet) => { + resultSet.goToPreviousRow(); + resultSet.close(); + resultSet = null + }) ``` @@ -780,9 +789,10 @@ Closes the result set. ``` let predicates = new dataRdb.RdbPredicates("EMPLOYEE") - let resultSet = await rdbStore.query(predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"]) - resultSet.close() - resultSet = null + rdbStore.query(predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"]).then((resultSet) => { + resultSet.close(); + resultSet = null + }) ``` diff --git a/en/application-dev/reference/apis/js-apis-data-storage.md b/en/application-dev/reference/apis/js-apis-data-storage.md index e236b61478026960f226f367e4ecf3105c5f9e12..f58bf8d37324b73d3b9b143ecec10a538730bc59 100644 --- a/en/application-dev/reference/apis/js-apis-data-storage.md +++ b/en/application-dev/reference/apis/js-apis-data-storage.md @@ -11,6 +11,9 @@ Lightweight storage provides applications with data processing capability and al import dataStorage from '@ohos.data.storage' ``` +## System Capabilities +SystemCapability.DistributedDataManager.Preference.Core + ## Required Permissions None @@ -109,11 +112,13 @@ Reads a specified file and loads the data to the **Storage** instance for data import dataStorage from '@ohos.data.storage' import featureAbility from '@ohos.ability.featureAbility' - var context = featureAbility.getContext() - var path = await context.getFilesDir() - let storage = dataStorage.getStorageSync(path + '/mystore') - storage.putSync('startup', 'auto') - storage.flushSync() + (async () => { + var context = featureAbility.getContext() + var path = await context.getFilesDir() + let storage = dataStorage.getStorageSync(path + '/mystore') + storage.putSync('startup', 'auto') + storage.flushSync() + })() ``` @@ -163,9 +168,10 @@ Reads a specified file and loads the data to the **Storage** instance for data import dataStorage from '@ohos.data.storage' import featureAbility from '@ohos.ability.featureAbility' - var context = featureAbility.getContext() - var path = await context.getFilesDir() - dataStorage.getStorage(path + '/mystore', function (err, storage) { + (async () => { + var context = featureAbility.getContext() + var path = await context.getFilesDir() + dataStorage.getStorage(path + '/mystore', function (err, storage) { if (err) { console.info("Get the storage failed, path: " + path + '/mystore') return; @@ -173,6 +179,7 @@ Reads a specified file and loads the data to the **Storage** instance for data storage.putSync('startup', 'auto') storage.flushSync() }) + })() ``` @@ -230,15 +237,17 @@ Reads a specified file and loads the data to the **Storage** instance for data import dataStorage from '@ohos.data.storage' import featureAbility from '@ohos.ability.featureAbility' - var context = featureAbility.getContext() - var path = await context.getFilesDir() - let promise = dataStorage.getStorage(path + '/mystore') - promise.then((storage) => { + (async () => { + var context = featureAbility.getContext() + var path = await context.getFilesDir() + let promise = dataStorage.getStorage(path + '/mystore') + promise.then((storage) => { storage.putSync('startup', 'auto') storage.flushSync() }).catch((err) => { console.info("Get the storage failed, path: " + path + '/mystore') }) + }() ``` diff --git a/en/application-dev/reference/apis/js-apis-distributed-data.md b/en/application-dev/reference/apis/js-apis-distributed-data.md index 00c4c58a74518ac30199dc98c66f275017fa25a6..30de34fd1d670b79965c5affa2139ec963999eb8 100644 --- a/en/application-dev/reference/apis/js-apis-distributed-data.md +++ b/en/application-dev/reference/apis/js-apis-distributed-data.md @@ -8,10 +8,9 @@ ``` import distributedData from '@ohos.data.distributedData'; ``` +## System Capabilities +SystemCapability.DistributedDataManager.KVStore.DistributedKVStore -## Required Permissions - -None ## distributedData.createKVManager diff --git a/en/application-dev/reference/apis/js-apis-i18n.md b/en/application-dev/reference/apis/js-apis-i18n.md index 0763a1598728414c51ec8036cbe2243235d012b0..27dc8eb464f9615f0b61462a5f7f81d71195d1f1 100644 --- a/en/application-dev/reference/apis/js-apis-i18n.md +++ b/en/application-dev/reference/apis/js-apis-i18n.md @@ -1,7 +1,6 @@ -# Internationalization (i18n) +# Internationalization \(i18n\) - ->![](../../public_sys-resources/icon-note.gif) **NOTE:** +>![](public_sys-resources/icon-note.gif) **NOTE:** >- The initial APIs of this module are supported since API version 7. Newly added APIs will be marked with a superscript to indicate their earliest API version. >- This module contains enhanced i18n APIs, which are not defined in ECMA 402. @@ -21,10 +20,9 @@ getDisplayLanguage\(language: string, locale: string, sentenceCase?: boolean\): Obtains the localized script for the specified language. -- Parameters +- Parameters - - diff --git a/en/application-dev/reference/arkui-ts/figures/loadingProgress.png b/en/application-dev/reference/arkui-ts/figures/loadingProgress.png new file mode 100644 index 0000000000000000000000000000000000000000..afc52b1a469c858e3029282e193b684114803db0 Binary files /dev/null and b/en/application-dev/reference/arkui-ts/figures/loadingProgress.png differ diff --git a/en/application-dev/reference/arkui-ts/public_sys-resources/icon-caution.gif b/en/application-dev/reference/arkui-ts/public_sys-resources/icon-caution.gif new file mode 100644 index 0000000000000000000000000000000000000000..6e90d7cfc2193e39e10bb58c38d01a23f045d571 Binary files /dev/null and b/en/application-dev/reference/arkui-ts/public_sys-resources/icon-caution.gif differ diff --git a/en/application-dev/reference/arkui-ts/public_sys-resources/icon-danger.gif b/en/application-dev/reference/arkui-ts/public_sys-resources/icon-danger.gif new file mode 100644 index 0000000000000000000000000000000000000000..6e90d7cfc2193e39e10bb58c38d01a23f045d571 Binary files /dev/null and b/en/application-dev/reference/arkui-ts/public_sys-resources/icon-danger.gif differ diff --git a/en/application-dev/reference/arkui-ts/public_sys-resources/icon-note.gif b/en/application-dev/reference/arkui-ts/public_sys-resources/icon-note.gif new file mode 100644 index 0000000000000000000000000000000000000000..6314297e45c1de184204098efd4814d6dc8b1cda Binary files /dev/null and b/en/application-dev/reference/arkui-ts/public_sys-resources/icon-note.gif differ diff --git a/en/application-dev/reference/arkui-ts/public_sys-resources/icon-notice.gif b/en/application-dev/reference/arkui-ts/public_sys-resources/icon-notice.gif new file mode 100644 index 0000000000000000000000000000000000000000..86024f61b691400bea99e5b1f506d9d9aef36e27 Binary files /dev/null and b/en/application-dev/reference/arkui-ts/public_sys-resources/icon-notice.gif differ diff --git a/en/application-dev/reference/arkui-ts/public_sys-resources/icon-tip.gif b/en/application-dev/reference/arkui-ts/public_sys-resources/icon-tip.gif new file mode 100644 index 0000000000000000000000000000000000000000..93aa72053b510e456b149f36a0972703ea9999b7 Binary files /dev/null and b/en/application-dev/reference/arkui-ts/public_sys-resources/icon-tip.gif differ diff --git a/en/application-dev/reference/arkui-ts/public_sys-resources/icon-warning.gif b/en/application-dev/reference/arkui-ts/public_sys-resources/icon-warning.gif new file mode 100644 index 0000000000000000000000000000000000000000..6e90d7cfc2193e39e10bb58c38d01a23f045d571 Binary files /dev/null and b/en/application-dev/reference/arkui-ts/public_sys-resources/icon-warning.gif differ diff --git a/en/application-dev/reference/arkui-ts/ts-basic-components-loadingprogress.md b/en/application-dev/reference/arkui-ts/ts-basic-components-loadingprogress.md new file mode 100644 index 0000000000000000000000000000000000000000..c7e5d0022e7b90ef0fa6a4755bbd3e7a4cdd8b47 --- /dev/null +++ b/en/application-dev/reference/arkui-ts/ts-basic-components-loadingprogress.md @@ -0,0 +1,51 @@ +# LoadingProgress + +> ![icon-note.gif](public_sys-resources/icon-note.gif) **NOTE** +> This component is supported since API version 8. Updates will be marked with a superscript to indicate their earliest API version. + +The **** component is used to display the loading progress. + + +## Required Permissions + +None + + +## Child Components + +None + + +## APIs + +LoadingProgress() + +Creates a **LoadingProgress** instance. + + + +## Attributes + +| Name| Type| Default Value| Description| +| -------- | -------- | -------- | -------- | +| color | Color | - | Foreground color of the loading progress bar.| + + + +## Example + +``` +@Entry +@Component +struct LoadingProgressExample { + build() { + Column({ space: 5 }) { + Text('Orbital LoadingProgress ').fontSize(9).fontColor(0xCCCCCC).width('90%') + LoadingProgress() + .color(Color.Blue) + }.width('100%').margin({ top: 5 }) + } +} +``` + +![zh-cn_image_0000001198839004](figures/loadingProgress.png) diff --git a/en/application-dev/ui/figures/en-us_image_0000001174104404.png b/en/application-dev/ui/figures/en-us_image_0000001174104404.png new file mode 100644 index 0000000000000000000000000000000000000000..e370a44cf043fc34bd8891f57faad2cd2ca05707 Binary files /dev/null and b/en/application-dev/ui/figures/en-us_image_0000001174104404.png differ diff --git a/en/application-dev/ui/figures/en-us_image_0000001174264376.png b/en/application-dev/ui/figures/en-us_image_0000001174264376.png new file mode 100644 index 0000000000000000000000000000000000000000..dfcb0c5e259b3f8d7375c21712249c1e847edd67 Binary files /dev/null and b/en/application-dev/ui/figures/en-us_image_0000001174264376.png differ diff --git a/en/application-dev/ui/figures/en-us_image_0000001174422914.png b/en/application-dev/ui/figures/en-us_image_0000001174422914.png new file mode 100644 index 0000000000000000000000000000000000000000..bc28f5056c679e189543c8ad6fba67fb56db7655 Binary files /dev/null and b/en/application-dev/ui/figures/en-us_image_0000001174422914.png differ diff --git a/en/application-dev/ui/figures/en-us_image_0000001174582864.png b/en/application-dev/ui/figures/en-us_image_0000001174582864.png new file mode 100644 index 0000000000000000000000000000000000000000..b54dbc2391d1a8f16312dd02dc3d65a35ea2626f Binary files /dev/null and b/en/application-dev/ui/figures/en-us_image_0000001174582864.png differ diff --git a/en/application-dev/ui/figures/en-us_image_0000001174582866.png b/en/application-dev/ui/figures/en-us_image_0000001174582866.png new file mode 100644 index 0000000000000000000000000000000000000000..56d32d4cd371c5374b133cb81c9c077aaf7b110d Binary files /dev/null and b/en/application-dev/ui/figures/en-us_image_0000001174582866.png differ diff --git a/en/application-dev/ui/figures/en-us_image_0000001219662661.png b/en/application-dev/ui/figures/en-us_image_0000001219662661.png new file mode 100644 index 0000000000000000000000000000000000000000..9c43caf5fdfd466eafc37b793f509a6bde2b885d Binary files /dev/null and b/en/application-dev/ui/figures/en-us_image_0000001219662661.png differ diff --git a/en/application-dev/ui/figures/en-us_image_0000001219662663.png b/en/application-dev/ui/figures/en-us_image_0000001219662663.png new file mode 100644 index 0000000000000000000000000000000000000000..5c5e360f249a2002ba68ad9b94bd7f66f5d6aab1 Binary files /dev/null and b/en/application-dev/ui/figures/en-us_image_0000001219662663.png differ diff --git a/en/application-dev/ui/figures/en-us_image_0000001219662665.png b/en/application-dev/ui/figures/en-us_image_0000001219662665.png new file mode 100644 index 0000000000000000000000000000000000000000..309d1c46f8bc396df5eaed381a5ffa2f0389d602 Binary files /dev/null and b/en/application-dev/ui/figures/en-us_image_0000001219662665.png differ diff --git a/en/application-dev/ui/figures/en-us_image_0000001219744201.png b/en/application-dev/ui/figures/en-us_image_0000001219744201.png new file mode 100644 index 0000000000000000000000000000000000000000..0d22570503febc7a7dcba0d1e870f49f32fe489a Binary files /dev/null and b/en/application-dev/ui/figures/en-us_image_0000001219744201.png differ diff --git a/en/application-dev/ui/figures/en-us_image_0000001219864153.png b/en/application-dev/ui/figures/en-us_image_0000001219864153.png new file mode 100644 index 0000000000000000000000000000000000000000..58293d5e874f2aa36ecaf7282ca9e4736318092f Binary files /dev/null and b/en/application-dev/ui/figures/en-us_image_0000001219864153.png differ diff --git a/en/application-dev/ui/figures/datatype.png b/en/application-dev/ui/figures/en-us_image_0000001219982719.png similarity index 100% rename from en/application-dev/ui/figures/datatype.png rename to en/application-dev/ui/figures/en-us_image_0000001219982719.png diff --git a/en/application-dev/ui/ts-types.md b/en/application-dev/ui/ts-types.md index 41b4e8f0a838e1e469834fd97ee057c444f70a0c..b9882c03421a34ac5196a24c54400d80baddf15c 100644 --- a/en/application-dev/ui/ts-types.md +++ b/en/application-dev/ui/ts-types.md @@ -1,202 +1,106 @@ -# Types - -## Length Type - - -

Name

Type

@@ -85,8 +83,8 @@ Obtains the localized script for the specified language. - Example ``` - i18n.getDisplayLanguage("zh", "en-GB", true); - i18n.getDisplayLanguage("zh", "en-GB"); + I18n.getDisplayLanguage("zh", "en-GB", true); + I18n.getDisplayLanguage("zh", "en-GB"); ``` @@ -159,8 +157,8 @@ Obtains the localized script for the specified country. - Example ``` - i18n.getDisplayCountry("zh-CN", "en-GB", true); - i18n.getDisplayCountry("zh-CN", "en-GB"); + I18n.getDisplayCountry("zh-CN", "en-GB", true); + I18n.getDisplayCountry("zh-CN", "en-GB"); ``` @@ -242,7 +240,7 @@ Obtains the system language. - Example ``` - i18n.getSystemLanguage(); + I18n.getSystemLanguage(); ``` @@ -272,7 +270,7 @@ Obtains the system region. - Example ``` - i18n.getSystemRegion(); + I18n.getSystemRegion(); ``` @@ -302,7 +300,7 @@ Obtains the system locale. - Example ``` - i18n.getSystemLocale(); + I18n.getSystemLocale(); ``` @@ -366,7 +364,7 @@ Obtains a **Calendar** object. - Example ``` - i18n.getCalendar("zh-Hans", "gregory"); + I18n.getCalendar("zh-Hans", "gregory"); ``` @@ -532,7 +530,7 @@ Sets the year, month, day, hour, minute, and second for this **Calendar** obje - Example ``` - var calendar = i18n.getCalendar("zh-Hans"); + var calendar = I18n.getCalendar("zh-Hans"); calendar.setTime(2021, 10, 1, 8, 0, 0); // set time to 2021.10.1 08:00:00 ``` @@ -571,7 +569,7 @@ Sets the time zone of this **Calendar** object. - Example ``` - var calendar = i18n.getCalendar("zh-Hans"); + var calendar = I18n.getCalendar("zh-Hans"); calendar.setTimeZone("Asia/Shanghai"); ``` @@ -602,7 +600,7 @@ Obtains the time zone of this **Calendar** object. - Example ``` - var calendar = i18n.getCalendar("zh-Hans"); + var calendar = I18n.getCalendar("zh-Hans"); calendar.setTimeZone("Asia/Shanghai"); calendar.getTimeZone(); // Asia/Shanghai" ``` @@ -674,7 +672,7 @@ Sets the start day of a week for this **Calendar** object. - Example ``` - var calendar = i18n.getCalendar("zh-Hans"); + var calendar = I18n.getCalendar("zh-Hans"); calendar.setFirstDayOfWeek(0); ``` @@ -705,7 +703,7 @@ Obtains the minimum number of days in the first week of a year. - Example ``` - var calendar = i18n.getCalendar("zh-Hans"); + var calendar = I18n.getCalendar("zh-Hans"); calendar.getMinimalDaysInFirstWeek(); ``` @@ -800,7 +798,7 @@ Obtains the value of the specified field in the **Calendar** object. - Example ``` - var calendar = i18n.getCalendar("zh-Hans"); + var calendar = I18n.getCalendar("zh-Hans"); calendar.setTime(2021, 10, 1, 8, 0, 0); // set time to 2021.10.1 08:00:00 calendar.get("hour_of_day"); // 8 ``` @@ -857,7 +855,7 @@ Obtains the name of the **Calendar** object displayed for the specified locale - Example ``` - var calendar = i18n.getCalendar("en-US", "buddhist"); + var calendar = I18n.getCalendar("en-US", "buddhist"); calendar.getDisplayName("zh"); // Obtain the name of the Buddhist calendar in zh. ``` @@ -913,7 +911,7 @@ Checks whether the specified date in this **Calendar** object is a weekend. - Example ``` - var calendar = i18n.getCalendar("zh-Hans"); + var calendar = I18n.getCalendar("zh-Hans"); calendar.setTime(2021, 11, 11, 8, 0, 0); // Set the time to 2021.11.11 08:00:00. calendar.isWeekend(); // false var date = new Date(2011, 11, 6, 9, 0, 0); @@ -966,7 +964,7 @@ Parameters - Example ``` - var phoneNumberFormat= new i18n.PhoneNumberFormat("CN", {"type": "E164"}); + var phoneNumberFormat= new I18n.PhoneNumberFormat("CN", {"type": "E164"}); ``` @@ -1022,7 +1020,7 @@ Checks whether the format of the specified phone number is valid. - Example ``` - var phonenumberfmt = new i18n.PhoneNumberFormat("CN"); + var phonenumberfmt = new I18n.PhoneNumberFormat("CN"); phonenumberfmt.isValidNumber("15812312312"); ``` @@ -1079,7 +1077,7 @@ Formats a phone number. - Example ``` - var phonenumberfmt = new i18n.PhoneNumberFormat("CN"); + var phonenumberfmt = new I18n.PhoneNumberFormat("CN"); phonenumberfmt.format("15812312312"); ``` @@ -1303,7 +1301,7 @@ Creates an **IndexUtil** object. - Example ``` - var indexUtil= i18n.getInstance("zh-CN"); + var indexUtil= I18n.getInstance("zh-CN"); ``` @@ -1444,7 +1442,7 @@ Obtains the index of a **text** object. isDigit\(char: string\): boolean -Checks whether the input character string is comprised of digits. +Checks whether the input character is a digit. - Parameters @@ -1500,7 +1498,7 @@ Checks whether the input character string is comprised of digits. isSpaceChar\(char: string\): boolean -Checks whether the input character is comprised of space. +Checks whether the input character is a space. - Parameters @@ -1556,7 +1554,7 @@ Checks whether the input character is comprised of space. isWhitespace\(char: string\): boolean -Checks whether the input character is comprised of white space. +Checks whether the input character is a white space. - Parameters @@ -1612,7 +1610,7 @@ Checks whether the input character is comprised of white space. isRTL\(char: string\): boolean -Checks whether the input character string is of the right to left \(RTL\) language. +Checks whether the input character is of the right to left \(RTL\) language. - Parameters @@ -1668,7 +1666,7 @@ Checks whether the input character string is of the right to left \(RTL\) langua isIdeograph\(char: string\): boolean -Checks whether the input character string is comprised of ideographic characters. +Checks whether the input character is an ideographic character. - Parameters @@ -1724,7 +1722,7 @@ Checks whether the input character string is comprised of ideographic characters isLetter\(char: string\): boolean -Checks whether the input character string is comprised of letters. +Checks whether the input character is a letter. - Parameters @@ -1780,7 +1778,7 @@ Checks whether the input character string is comprised of letters. isLowerCase\(char: string\): boolean -Checks whether the input character is comprised of lowercase letters. +Checks whether the input character is a lowercase letter. - Parameters @@ -1836,7 +1834,7 @@ Checks whether the input character is comprised of lowercase letters. isUpperCase\(char: string\): boolean -Checks whether the input character is comprised of uppercase letters. +Checks whether the input character is an uppercase letter. - Parameters @@ -1995,7 +1993,7 @@ Obtains a [BreakIterator](#section1312302611613) object for text segmentation. - Example ``` - i18n.getLineInstance("en"); + I18n.getLineInstance("en"); ``` @@ -2036,8 +2034,8 @@ Sets the text to be processed by the [BreakIterator](#section1312302611613) ob - Example ``` - iterator = I18n.getLineInstance("en"); - iterator.setLineBreakText("Apple is my favorite fruit."); + var iterator = I18n.getLineInstance("en"); + var iterator.setLineBreakText("Apple is my favorite fruit."); ``` @@ -2068,7 +2066,7 @@ Obtains the text being processed by the [BreakIterator](#section1312302611613) - Example ``` - iterator = I18n.getLineInstance("en"); + var iterator = I18n.getLineInstance("en"); iterator.setLineBreakText("Apple is my favorite fruit."); iterator.getLineBreakText(); // Apple is my favorite fruit. ``` @@ -2101,7 +2099,7 @@ Obtains the position of the [BreakIterator](#section1312302611613) object in t - Example ``` - iterator = I18n.getLineInstance("en"); + var iterator = I18n.getLineInstance("en"); iterator.setLineBreakText("Apple is my favorite fruit."); breakIter.current(); // 0 ``` @@ -2167,7 +2165,7 @@ Puts the [BreakIterator](#section1312302611613) object to the last text bounda - Example ``` - iterator = I18n.getLineInstance("en"); + var iterator = I18n.getLineInstance("en"); iterator.setLineBreakText("Apple is my favorite fruit."); iterator.last(); // 27 ``` @@ -2226,7 +2224,7 @@ Moves the [BreakIterator](#section1312302611613) object backward by the specif - Example ``` - iterator = I18n.getLineInstance("en"); + var iterator = I18n.getLineInstance("en"); iterator.setLineBreakText("Apple is my favorite fruit."); iterator.first(); // 0 iterator.next(); // 6 @@ -2261,7 +2259,7 @@ Moves the [BreakIterator](#section1312302611613) object to the previous text b - Example ``` - iterator = I18n.getLineInstance("en"); + var iterator = I18n.getLineInstance("en"); iterator.setLineBreakText("Apple is my favorite fruit."); iterator.first(); // 0 iterator.next(3); // 12 @@ -2322,7 +2320,7 @@ Moves the [BreakIterator](#section1312302611613) object to the text boundary a - Example ``` - iterator = I18n.getLineInstance("en"); + var iterator = I18n.getLineInstance("en"); iterator.setLineBreakText("Apple is my favorite fruit."); iterator.following(0); // 6 iterator.following(100); // -1 @@ -2383,9 +2381,285 @@ Checks whether the position specified by the offset is a text boundary. If **tr - Example ``` - iterator = I18n.getLineInstance("en"); + var iterator = I18n.getLineInstance("en"); iterator.setLineBreakText("Apple is my favorite fruit."); iterator.isBoundary(0); // true; iterator.isBoundary(5); // false; ``` + +## i18n.is24HourClock8+ + +is24HourClock\(\): boolean + +Checks whether the 24-hour clock is used. + +- Return values + + + + + + + + + + +

Type

+

Description

+

boolean

+

The value true indicates that the 24-hour clock is used, and value false indicates the opposite.

+
+ + +- Example + + ``` + var is24HourClock = i18n.is24HourClock(); + ``` + + +## i18n.set24HourClock8+ + +set24HourClock\(option: boolean\): boolean + +Sets the 24-hour clock. + +- Parameters + + + + + + + + + + + + + + +

Name

+

Type

+

Mandatory

+

Description

+

option

+

boolean

+

Yes

+

Whether to enable the 24-hour clock. The value true means to enable the 24-hour clock, and value false means the opposite.

+
+ +- Return values + + + + + + + + + + +

Type

+

Description

+

boolean

+

The value true indicates that the 24-hour clock is enabled, and value false indicates the opposite.

+
+ + +- Example + + ``` + // Set the system time to the 24-hour format. + var success = I18n.set24HourClock(true); + ``` + + +## i18n.addPreferredLanguage8+ + +addPreferredLanguage\(language: string, index?: number\): boolean + +Adds a preferred language to the specified position on the preferred language list. + +- Parameters + + + + + + + + + + + + + + + + + + + +

Name

+

Type

+

Mandatory

+

Description

+

language

+

string

+

Yes

+

Preferred language to add.

+

index

+

number

+

No

+

Position to which the preferred language is added.

+
+ +- Return values + + + + + + + + + + +

Type

+

Description

+

boolean

+

The value true indicates that the preferred language is added, and value false indicates the opposite.

+
+ + +- Example + + ``` + // Add zh-CN to the preferred language list. + var language = 'zh-CN'; + var index = 0; + var success = i18n.addPreferredLanguage(langauge, index); + ``` + + +## i18n.removePreferredLanguage8+ + +removePreferredLanguage\(index: number\): boolean + +Deletes a preferred language from the specified position on the preferred language list. + +- Parameters + + + + + + + + + + + + + + +

Name

+

Type

+

Mandatory

+

Description

+

index

+

number

+

Yes

+

Position of the preferred language to delete.

+
+ +- Return values + + + + + + + + + + +

Type

+

Description

+

boolean

+

The value true indicates that the preferred language is deleted, and value false indicates the opposite.

+
+ + +- Example + + ``` + // Delete the first preferred language from the preferred language list. + var index = 0; + var success = i18n.removePreferredLanguage(index); + ``` + + +## i18n.getPreferredLanguageList8+ + +getPreferredLanguageList\(\): Array + +Obtains the preferred language list. + +- Return values + + + + + + + + + + +

Type

+

Description

+

Array<string>

+

Preferred language list.

+
+ + +- Example + + ``` + var preferredLanguageList = i18n.getPreferredLanguageList(); + ``` + + +## i18n.getFirstPreferredLanguage8+ + +getFirstPreferredLanguage\(\): string + +Obtains the preferred language that best matches the HAP resource. + +- Return values + + + + + + + + + + +

Type

+

Description

+

string

+

Preferred language that best matches the HAP resource.

+
+ + +- Example + + ``` + var firstPreferredLangauge = i18n.getFirstPreferredLangauge(); + ``` + diff --git a/en/application-dev/reference/apis/js-apis-statfs.md b/en/application-dev/reference/apis/js-apis-statfs.md index 2befeb9b4a0d82b1abc0ce8664f9c88ca830ceb6..487903b87178466ff990eea4a8518a8fe58242ce 100644 --- a/en/application-dev/reference/apis/js-apis-statfs.md +++ b/en/application-dev/reference/apis/js-apis-statfs.md @@ -6,7 +6,7 @@ ## Modules to Import ```js -import statfs from '@ohos.statfs' +import statfs from '@ohos.statfs'; ``` ## Note @@ -18,7 +18,7 @@ Absolute file or directory path = Application directory + File name or directory For example, if the application directory obtained by using **getOrCreateLocalDir** is **dir** and the file name is **xxx.txt**, the absolute path of the file is as follows: ```js -let path = dir + "xxx.txt" +let path = dir + "xxx.txt"; ``` ## System Capabilities @@ -46,7 +46,12 @@ Obtains the number of free bytes of the specified file system in asynchronous mo - Example ```js - let num = await statfs.getFreeBytes(path); + let path = "/data"; + statfs.getFreeBytes(path).then(function (number){ + console.info("getFreeBytes successfully:"+ number); + }).catch(function(err){ + console.info("getFreeBytes failed with error:"+ err); + }); ``` ## statfs.getFreeBytes @@ -91,7 +96,12 @@ Obtains the total number of bytes of the specified file system in asynchronous m - Example ```js - let num = await statfs.getTotalBytes(path); + let path = "/data"; + statfs.getTotalBytes(path).then(function (number){ + console.info("getTotalBytes successfully:"+ number); + }).catch(function(err){ + console.info("getTotalBytes failed with error:"+ err); + }); ``` ## statfs.getTotalBytes diff --git a/en/application-dev/reference/apis/js-apis-update.md b/en/application-dev/reference/apis/js-apis-update.md index c3bf1d9d3047dd4dc8bd9001b4a61fc497fe8021..b9f9de86cacd44575f7105c82e0715eec3f622a6 100644 --- a/en/application-dev/reference/apis/js-apis-update.md +++ b/en/application-dev/reference/apis/js-apis-update.md @@ -1,6 +1,6 @@ # Update -The update module applies to updates throughout the entire OpenHarmony system, including built-in resources and preset applications, but not third-party applications. +The update module applies to updates throughout the entire system, including built-in resources and preset applications, but not third-party applications. There are two types of updates: SD card update and over the air (OTA) update. diff --git a/en/application-dev/reference/apis/js-apis-uri.md b/en/application-dev/reference/apis/js-apis-uri.md index c3eb105e1c4a8b56a4de085d61c4d9abd76c9fae..da74b02fb1d645b8eb9de101f421e2ee0ba3beba 100644 --- a/en/application-dev/reference/apis/js-apis-uri.md +++ b/en/application-dev/reference/apis/js-apis-uri.md @@ -41,7 +41,7 @@ None

Protocol in the URI.

userinfo

+

userInfo

string

- - - - - - - - - -

Name

-

Type

-

Description

-

Length

-

string | number

-

Length unit. If the input is a number, use vp. If the input is a string, explicitly specify the unit, for example, 10px, or specify the length in percentage, for example, 100%.

-
- -## Angle Type - - - - - - - - - - - - -

Name

-

Type

-

Description

-

Angle

-

string | number

-

Angle unit. If the input is a number, use deg. If the input is a string, use either of the following angle units:

-
  • deg, for example, 100deg.
  • rad, for example, 3.14rad.
-
- -## Point Type - - - - - - - - - - - - -

Name

-

Type

-

Description

-

Point

-

[Length, Length]

-

Coordinates of a point. The first value is the x-axis coordinate, and the second value is the y-axis coordinate.

-
- -## Color Type - -The **Color** used by the component attribute method is described as follows: - - - - - - - - - - - - -

Name

-

Type

-

Description

-

Color

-

string | number | Color

-

Color information. If the input is a string, use rgb or rgba to describe the color. If the input is a number, describe the color in HEX format. If the input is of a color type, use a color value.

-

Example:

-
  • rgb(255, 255, 255)
  • rgba(255, 255, 255, 1.0)
  • HEX format: 0xrrggbb, 0xaarrggbb, or #FFFFFF
  • Enumerated color format: Color.Black or Color.White
-
- -The following colors are supported. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Color

-

Value

-

Illustration

-

Black

-

0x000000

-

-

Blue

-

0x0000ff

-

-

Brown

-

0xa52a2a

-

-

Gray

-

0x808080

-

-

Green

-

0x008000

-

-

Orange

-

0xffa500

-

-

Pink

-

0xffc0cb

-

-

Red

-

0xff0000

-

-

White

-

0xffffff

-

-

Yellow

-

0xffff00

-

-
- -## ColorStop Type - -**ColorStop** is used to describe the progressive color stop. - - - - - - - - - - - - -

Name

-

Type

-

Description

-

ColorStop

-

[Color, number]

-

Type of the progressive color stop. The first parameter specifies the color value, and the second parameter specifies the ratio of 0 to 1.

-
- -## Example +# Types + +## Length Type + +| Name| Type| Description| +| -------- | -------- | -------- | +| Length | string \| number | Length unit. If the input is a number, use **vp**. If the input is a string, explicitly specify the unit, for example, **'10px'**, or specify the length in percentage, for example, **'100%'**.| + + +## Angle Type + +| Name| Type| Description| +| -------- | -------- | -------- | +| Angle | string \| number | Angle unit. If the input is a number, use **deg**. If the input is a string, explicitly specify the unit, which can be either of the following:
- deg, as in **'100deg'**
- rad, as in **'3.14rad'** | + + +## Point Type + +| Name| Type| Description| +| -------- | -------- | -------- | +| Point | [Length, Length] | Coordinates of a point. The first value is the x-axis coordinate, and the second value is the y-axis coordinate.| + + +## Color Type + +The **Color** used by the component attribute method is described as follows: + +| Name| Type| Description| +| -------- | -------- | -------- | +| Color | string \| number \| Color | Color information. If the input is a string, use **rgb** or **rgba** to specify the color. If the input is a number, use Hex format to specify the color. If the input is a **Color" enum, use a color value to specify the color.
- 'rgb(255, 255, 255)'
- 'rgba(255, 255, 255, 1.0)'
- Hex format: 0xrrggbb, 0xaarrggbb, '\#FFFFFF'
- Enum: Color.Black, Color.White| + + +The supported **Color** enums are described as follows: + + +| Color| Value| Illustration| +| -------- | -------- | -------- | +| Black | 0x000000 | ![en-us_image_0000001219864153](figures/en-us_image_0000001219864153.png) | +| Blue | 0x0000ff | ![en-us_image_0000001174104404](figures/en-us_image_0000001174104404.png) | +| Brown | 0xa52a2a | ![en-us_image_0000001219744201](figures/en-us_image_0000001219744201.png) | +| Gray | 0x808080 | ![en-us_image_0000001174264376](figures/en-us_image_0000001174264376.png) | +| Green | 0x008000 | ![en-us_image_0000001174422914](figures/en-us_image_0000001174422914.png) | +| Orange | 0xffa500 | ![en-us_image_0000001219662661](figures/en-us_image_0000001219662661.png) | +| Pink | 0xffc0cb | ![en-us_image_0000001219662663](figures/en-us_image_0000001219662663.png) | +| Red | 0xff0000 | ![en-us_image_0000001219662665](figures/en-us_image_0000001219662665.png) | +| White | 0xffffff | ![en-us_image_0000001174582866](figures/en-us_image_0000001174582866.png) | +| Yellow | 0xffff00 | ![en-us_image_0000001174582864](figures/en-us_image_0000001174582864.png) | + + +## ColorStop Type + +**ColorStop** is used to describe the progressive color stop. + +| Name| Type| Description| +| -------- | -------- | -------- | +| ColorStop | [Color, number] | Type of the progressive color stop. The first parameter specifies the color value, and the second parameter specifies the ratio of 0 to 1.| + + +## Resource Type + +Resource reference type, which is used to set the value of a component attribute. + +You can use **$r** or **$rawfile** to create a **Resource** object. For details, see [Resource Access](ts-media-resource-type.md). + +- $r('belonging.type.name') + **belonging**: system or application resource. The value can be **'sys'** or **'app'**. + + **type**: resource type, which can be **'color'**, **'float'**, **'string'**, or **'media'**. + + **name**: resource name, which is determined during resource definition. + +- $rawfile('filename') + **filename**: name of the file in **resources/rawfile** of the project. + +| Name| Type| Description| +| -------- | -------- | -------- | +| Resource | {
readonly id: [number];
readonly type: [number];
readonly params?: any[];
} | **id**: resource ID.
**type**: resource type (enumerated value).
**params**: optional parameters.
After a **Resource** object is created using **$r** or **$rawfile**, modifying attribute values of the object is prohibited.| + + +## ResourceStr8+ + +| Name| Type| Description| +| -------- | -------- | -------- | +| ResourceStr | string \| [Resource](#resource type)| Resource string.| + + +## Resource Color8+ + +| Name| Type| Description| +| -------- | -------- | -------- | +| ResourceColor | Color \| number \| string \| [Resource](#resource type)| Resource color.| + + +## Custom Builder8+ + +You can use **CustomBuilder** to define custom UI descriptions in component attribute methods. + +| Name| Type| Description| +| -------- | -------- | -------- | +| CustomBuilder | () => any | Builder of component attribute methods for defining custom UI descriptions. This type of method must be decorated by **@Builder**. For details, see [@Builder](ts-component-based-builder.md).| + + +## Example ``` @Entry @@ -254,5 +158,4 @@ struct dataTypeExample { } ``` -![](figures/datatype.png) - +![en-us_image_0000001219982719](figures/en-us_image_0000001219982719.png) diff --git a/en/application-dev/webgl/Readme-EN.md b/en/application-dev/webgl/Readme-EN.md new file mode 100644 index 0000000000000000000000000000000000000000..06be1865f19400714bfbaaf1d49386ee6a3341fc --- /dev/null +++ b/en/application-dev/webgl/Readme-EN.md @@ -0,0 +1,4 @@ +# WebGL + +- [WebGL Overview](webgl-overview.md) +- [WebGL Development](webgl-guidelines.md) diff --git a/en/application-dev/webgl/figures/en-us_image_0000001192269746.gif b/en/application-dev/webgl/figures/en-us_image_0000001192269746.gif new file mode 100644 index 0000000000000000000000000000000000000000..e4c7ed66998e8c6b4b87c587edb5986cc547d9dc Binary files /dev/null and b/en/application-dev/webgl/figures/en-us_image_0000001192269746.gif differ diff --git a/en/application-dev/webgl/figures/en-us_image_0000001192429306.gif b/en/application-dev/webgl/figures/en-us_image_0000001192429306.gif new file mode 100644 index 0000000000000000000000000000000000000000..2297841f49ed784fbe4ecd131df8965202e1c14c Binary files /dev/null and b/en/application-dev/webgl/figures/en-us_image_0000001192429306.gif differ diff --git a/en/application-dev/webgl/figures/en-us_image_0000001238544451.png b/en/application-dev/webgl/figures/en-us_image_0000001238544451.png new file mode 100644 index 0000000000000000000000000000000000000000..7e95598c6f204f9e9165ad183e2b33b7adcadca4 Binary files /dev/null and b/en/application-dev/webgl/figures/en-us_image_0000001238544451.png differ diff --git a/en/application-dev/webgl/public_sys-resources/icon-caution.gif b/en/application-dev/webgl/public_sys-resources/icon-caution.gif new file mode 100644 index 0000000000000000000000000000000000000000..6e90d7cfc2193e39e10bb58c38d01a23f045d571 Binary files /dev/null and b/en/application-dev/webgl/public_sys-resources/icon-caution.gif differ diff --git a/en/application-dev/webgl/public_sys-resources/icon-danger.gif b/en/application-dev/webgl/public_sys-resources/icon-danger.gif new file mode 100644 index 0000000000000000000000000000000000000000..6e90d7cfc2193e39e10bb58c38d01a23f045d571 Binary files /dev/null and b/en/application-dev/webgl/public_sys-resources/icon-danger.gif differ diff --git a/en/application-dev/webgl/public_sys-resources/icon-note.gif b/en/application-dev/webgl/public_sys-resources/icon-note.gif new file mode 100644 index 0000000000000000000000000000000000000000..6314297e45c1de184204098efd4814d6dc8b1cda Binary files /dev/null and b/en/application-dev/webgl/public_sys-resources/icon-note.gif differ diff --git a/en/application-dev/webgl/public_sys-resources/icon-notice.gif b/en/application-dev/webgl/public_sys-resources/icon-notice.gif new file mode 100644 index 0000000000000000000000000000000000000000..86024f61b691400bea99e5b1f506d9d9aef36e27 Binary files /dev/null and b/en/application-dev/webgl/public_sys-resources/icon-notice.gif differ diff --git a/en/application-dev/webgl/public_sys-resources/icon-tip.gif b/en/application-dev/webgl/public_sys-resources/icon-tip.gif new file mode 100644 index 0000000000000000000000000000000000000000..93aa72053b510e456b149f36a0972703ea9999b7 Binary files /dev/null and b/en/application-dev/webgl/public_sys-resources/icon-tip.gif differ diff --git a/en/application-dev/webgl/public_sys-resources/icon-warning.gif b/en/application-dev/webgl/public_sys-resources/icon-warning.gif new file mode 100644 index 0000000000000000000000000000000000000000..6e90d7cfc2193e39e10bb58c38d01a23f045d571 Binary files /dev/null and b/en/application-dev/webgl/public_sys-resources/icon-warning.gif differ diff --git a/en/application-dev/webgl/webgl-guidelines.md b/en/application-dev/webgl/webgl-guidelines.md new file mode 100644 index 0000000000000000000000000000000000000000..2d6f0f756ac3f3e27c2a016f47bbec89ce4f51cf --- /dev/null +++ b/en/application-dev/webgl/webgl-guidelines.md @@ -0,0 +1,715 @@ +# WebGL Development + +## When to Use + +WebGL helps you process graphics at the frontend, for example, drawing color graphics. + + +## Available APIs + +To use WebGL, you must import the following module: + + +``` +import webgl from "@ohos.webglnapi"; +``` + + **Table 1** WebGL APIs + +| API | Description | +| -------- | -------- | +| canvas.getContext | Obtains the canvas context. | +| webgl.createBuffer(): WebGLBuffer \| null | Creates and initializes a WebGL buffer. | +| webgl.bindBuffer(target: GLenum, buffer: WebGLBuffer \| null): void | Binds the WebGL buffer to the target. | +| webgl.bufferData(target: GLenum, srcData: ArrayBufferView, usage: GLenum, srcOffset: GLuint, length?: GLuint): void | Creates and initializes the WebGL buffer object's data store. | +| webgl.getAttribLocation(program: WebGLProgram, name: string): GLint | Obtains the address of the **attribute** variable in the shader from the given WebGLProgram. | +| webgl.vertexAttribPointer(index: GLuint, size: GLint, type: GLenum, normalized: GLboolean, stride: GLsizei, offset: GLintptr): void | Assigns a **Buffer** object to a variable. | +| webgl.enableVertexAttribArray(index: GLuint): void | Connects a variable to the **Buffer** object allocated to it. | +| webgl.clearColor(red: GLclampf, green: GLclampf, blue: GLclampf, alpha: GLclampf): void | Clears the specified color on the **<canvas>** component. | +| webgl.clear(mask: GLbitfield): void | Clears the **<canvas>** component. | +| webgl.drawArrays(mode: GLenum, first: GLint, count: GLsizei): void | Draws data. | +| webgl.flush(): void | Flushes data to the GPU and clears the buffer. | +| webgl.createProgram(): WebGLProgram \| null | Creates a **WebGLProgram** object. | + + +## How to Develop + +The following describes how to draw a 2D image without using shaders and how to draw a color triangle using shaders. + +> ![icon-note.gif](public_sys-resources/icon-note.gif) **Note:** +> When using WebGL for development, use a real device to ensure the GUI display effect. + + +### Drawing a 2D Image Without Using Shaders + +To draw a 2D image without using WebGL, that is, to implement CPU rather than GPU drawing, perform the following steps: + +1. Create a page layout in the **index.hml** file. The following is an example of the file content: + + ``` +
+ + +
+ ``` + +2. Set the page style in the **index.css** file. The following is an example of the file content: + + ``` + .container { + flex-direction: column; + justify-content: center; + align-items: center; + } + .btn-button { + margin: 1px; + height: 40px; + width: 220px; + background-color: lightblue; + font-size: 20px; + text-color: blue; + } + ``` + +3. Edit the **index.js** file to add the 2D drawing logic code. The following is an example of the file content: + + ``` + //index.js + export default { // Native API interaction code + data: { + title: "DEMO BY TEAMOL", + fit:"cover", + fits: ["cover", "contain", "fill", "none", "scale-down"] + }, + onInit() { + this.title = this.$t('strings.world'); + }, + BtnDraw2D(){ + // Obtain the component. + const canvas = this.$refs.canvas1; + // Obtain the 2D context. + const ctx = canvas.getContext('2d'); + + // Execute the CPU drawing function. + // Set the line width. + ctx.lineWidth = 10; + // Wall + ctx.strokeRect(75, 140, 150, 110); + // Door + ctx.fillRect(130, 190, 40, 60); + // Roof + ctx.beginPath(); + ctx.moveTo(50, 140); + ctx.lineTo(150, 60); + ctx.lineTo(250, 140); + ctx.closePath(); + ctx.stroke(); + } + } + ``` + + **Figure 1** Effect of clicking the button to draw a 2D image + +![en-us_image_0000001192269746](figures/en-us_image_0000001192269746.gif) + + +### Drawing a Color Triangle Using Shaders + +To use WebGL to draw a color triangle (GPU drawing), perform the following steps: + + +1. Create a page layout. The following is an example of the **index.hml** file: + + ``` +
+ + +
+ ``` + +2. Set the page style. The following is an example of the **index.css** file: + + ``` + .container { + flex-direction: column; + justify-content: center; + align-items: center; + } + .btn-button { + margin: 1px; + height: 40px; + width: 220px; + background-color: lightblue; + font-size: 20px; + text-color: blue; + } + ``` + +3. Edit the JavaScript code file to add the logic code for drawing a color triangle. The following is an example of the **index.js** file: + + ``` + //index.js + import webgl from "@ohos.webglnapi"; // Import the WebGL module. + + // WebGL-related predefinition + var gl = { + DEPTH_BUFFER_BIT: 0x00000100, + STENCIL_BUFFER_BIT: 0x00000400, + COLOR_BUFFER_BIT: 0x00004000, + POINTS: 0x0000, + LINES: 0x0001, + LINE_LOOP: 0x0002, + LINE_STRIP: 0x0003, + TRIANGLES: 0x0004, + TRIANGLE_STRIP: 0x0005, + TRIANGLE_FAN: 0x0006, + ZERO: 0, + ONE: 1, + SRC_COLOR: 0x0300, + ONE_MINUS_SRC_COLOR: 0x0301, + SRC_ALPHA: 0x0302, + ONE_MINUS_SRC_ALPHA: 0x0303, + DST_ALPHA: 0x0304, + ONE_MINUS_DST_ALPHA: 0x0305, + DST_COLOR: 0x0306, + ONE_MINUS_DST_COLOR: 0x0307, + SRC_ALPHA_SATURATE: 0x0308, + FUNC_ADD: 0x8006, + BLEND_EQUATION: 0x8009, + BLEND_EQUATION_RGB: 0x8009, + BLEND_EQUATION_ALPHA: 0x883D, + FUNC_SUBTRACT: 0x800A, + FUNC_REVERSE_SUBTRACT: 0x800B, + BLEND_DST_RGB: 0x80C8, + BLEND_SRC_RGB: 0x80C9, + BLEND_DST_ALPHA: 0x80CA, + BLEND_SRC_ALPHA: 0x80CB, + CONSTANT_COLOR: 0x8001, + ONE_MINUS_CONSTANT_COLOR: 0x8002, + CONSTANT_ALPHA: 0x8003, + ONE_MINUS_CONSTANT_ALPHA: 0x8004, + BLEND_COLOR: 0x8005, + ARRAY_BUFFER: 0x8892, + ELEMENT_ARRAY_BUFFER: 0x8893, + ARRAY_BUFFER_BINDING: 0x8894, + ELEMENT_ARRAY_BUFFER_BINDING: 0x8895, + STREAM_DRAW: 0x88E0, + STATIC_DRAW: 0x88E4, + DYNAMIC_DRAW: 0x88E8, + BUFFER_SIZE: 0x8764, + BUFFER_USAGE: 0x8765, + CURRENT_VERTEX_ATTRIB: 0x8626, + FRONT: 0x0404, + BACK: 0x0405, + FRONT_AND_BACK: 0x0408, + CULL_FACE: 0x0B44, + BLEND: 0x0BE2, + DITHER: 0x0BD0, + STENCIL_TEST: 0x0B90, + DEPTH_TEST: 0x0B71, + SCISSOR_TEST: 0x0C11, + POLYGON_OFFSET_FILL: 0x8037, + SAMPLE_ALPHA_TO_COVERAGE: 0x809E, + SAMPLE_COVERAGE: 0x80A0, + NO_ERROR: 0, + INVALID_ENUM: 0x0500, + INVALID_VALUE: 0x0501, + INVALID_OPERATION: 0x0502, + OUT_OF_MEMORY: 0x0505, + CW: 0x0900, + CCW: 0x0901, + LINE_WIDTH: 0x0B21, + ALIASED_POINT_SIZE_RANGE: 0x846D, + ALIASED_LINE_WIDTH_RANGE: 0x846E, + CULL_FACE_MODE: 0x0B45, + FRONT_FACE: 0x0B46, + DEPTH_RANGE: 0x0B70, + DEPTH_WRITEMASK: 0x0B72, + DEPTH_CLEAR_VALUE: 0x0B73, + DEPTH_FUNC: 0x0B74, + STENCIL_CLEAR_VALUE: 0x0B91, + STENCIL_FUNC: 0x0B92, + STENCIL_FAIL: 0x0B94, + STENCIL_PASS_DEPTH_FAIL: 0x0B95, + STENCIL_PASS_DEPTH_PASS: 0x0B96, + STENCIL_REF: 0x0B97, + STENCIL_VALUE_MASK: 0x0B93, + STENCIL_WRITEMASK: 0x0B98, + STENCIL_BACK_FUNC: 0x8800, + STENCIL_BACK_FAIL: 0x8801, + STENCIL_BACK_PASS_DEPTH_FAIL: 0x8802, + STENCIL_BACK_PASS_DEPTH_PASS: 0x8803, + STENCIL_BACK_REF: 0x8CA3, + STENCIL_BACK_VALUE_MASK: 0x8CA4, + STENCIL_BACK_WRITEMASK: 0x8CA5, + VIEWPORT: 0x0BA2, + SCISSOR_BOX: 0x0C10, + COLOR_CLEAR_VALUE: 0x0C22, + COLOR_WRITEMASK: 0x0C23, + UNPACK_ALIGNMENT: 0x0CF5, + PACK_ALIGNMENT: 0x0D05, + MAX_TEXTURE_SIZE: 0x0D33, + MAX_VIEWPORT_DIMS: 0x0D3A, + SUBPIXEL_BITS: 0x0D50, + RED_BITS: 0x0D52, + GREEN_BITS: 0x0D53, + BLUE_BITS: 0x0D54, + ALPHA_BITS: 0x0D55, + DEPTH_BITS: 0x0D56, + STENCIL_BITS: 0x0D57, + POLYGON_OFFSET_UNITS: 0x2A00, + POLYGON_OFFSET_FACTOR: 0x8038, + TEXTURE_BINDING_2D: 0x8069, + SAMPLE_BUFFERS: 0x80A8, + SAMPLES: 0x80A9, + RGBA8: 0x8058, + SAMPLE_COVERAGE_VALUE: 0x80AA, + SAMPLE_COVERAGE_INVERT: 0x80AB, + COMPRESSED_TEXTURE_FORMATS: 0x86A3, + DONT_CARE: 0x1100, + FASTEST: 0x1101, + NICEST: 0x1102, + GENERATE_MIPMAP_HINT: 0x8192, + BYTE: 0x1400, + UNSIGNED_BYTE: 0x1401, + SHORT: 0x1402, + UNSIGNED_SHORT: 0x1403, + INT: 0x1404, + UNSIGNED_INT: 0x1405, + FLOAT: 0x1406, + DEPTH_COMPONENT: 0x1902, + ALPHA: 0x1906, + RGB: 0x1907, + RGBA: 0x1908, + LUMINANCE: 0x1909, + LUMINANCE_ALPHA: 0x190A, + UNSIGNED_SHORT_4_4_4_4: 0x8033, + UNSIGNED_SHORT_5_5_5_1: 0x8034, + UNSIGNED_SHORT_5_6_5: 0x8363, + FRAGMENT_SHADER: 0x8B30, + VERTEX_SHADER: 0x8B31, + MAX_VERTEX_ATTRIBS: 0x8869, + MAX_VERTEX_UNIFORM_VECTORS: 0x8DFB, + MAX_VARYING_VECTORS: 0x8DFC, + MAX_COMBINED_TEXTURE_IMAGE_UNITS: 0x8B4D, + MAX_VERTEX_TEXTURE_IMAGE_UNITS: 0x8B4C, + MAX_TEXTURE_IMAGE_UNITS: 0x8872, + MAX_FRAGMENT_UNIFORM_VECTORS: 0x8DFD, + SHADER_TYPE: 0x8B4F, + DELETE_STATUS: 0x8B80, + LINK_STATUS: 0x8B82, + VALIDATE_STATUS: 0x8B83, + ATTACHED_SHADERS: 0x8B85, + ACTIVE_UNIFORMS: 0x8B86, + ACTIVE_ATTRIBUTES: 0x8B89, + SHADING_LANGUAGE_VERSION: 0x8B8C, + CURRENT_PROGRAM: 0x8B8D, + NEVER: 0x0200, + LESS: 0x0201, + EQUAL: 0x0202, + LEQUAL: 0x0203, + GREATER: 0x0204, + NOTEQUAL: 0x0205, + GEQUAL: 0x0206, + ALWAYS: 0x0207, + KEEP: 0x1E00, + REPLACE: 0x1E01, + INCR: 0x1E02, + DECR: 0x1E03, + INVERT: 0x150A, + INCR_WRAP: 0x8507, + DECR_WRAP: 0x8508, + VENDOR: 0x1F00, + RENDERER: 0x1F01, + VERSION: 0x1F02, + NEAREST: 0x2600, + LINEAR: 0x2601, + NEAREST_MIPMAP_NEAREST: 0x2700, + LINEAR_MIPMAP_NEAREST: 0x2701, + NEAREST_MIPMAP_LINEAR: 0x2702, + LINEAR_MIPMAP_LINEAR: 0x2703, + TEXTURE_MAG_FILTER: 0x2800, + TEXTURE_MIN_FILTER: 0x2801, + TEXTURE_WRAP_S: 0x2802, + TEXTURE_WRAP_T: 0x2803, + TEXTURE_2D: 0x0DE1, + TEXTURE: 0x1702, + TEXTURE_CUBE_MAP: 0x8513, + TEXTURE_BINDING_CUBE_MAP: 0x8514, + TEXTURE_CUBE_MAP_POSITIVE_X: 0x8515, + TEXTURE_CUBE_MAP_NEGATIVE_X: 0x8516, + TEXTURE_CUBE_MAP_POSITIVE_Y: 0x8517, + TEXTURE_CUBE_MAP_NEGATIVE_Y: 0x8518, + TEXTURE_CUBE_MAP_POSITIVE_Z: 0x8519, + TEXTURE_CUBE_MAP_NEGATIVE_Z: 0x851A, + MAX_CUBE_MAP_TEXTURE_SIZE: 0x851C, + TEXTURE0: 0x84C0, + TEXTURE1: 0x84C1, + TEXTURE2: 0x84C2, + TEXTURE3: 0x84C3, + TEXTURE4: 0x84C4, + TEXTURE5: 0x84C5, + TEXTURE6: 0x84C6, + TEXTURE7: 0x84C7, + TEXTURE8: 0x84C8, + TEXTURE9: 0x84C9, + TEXTURE10: 0x84CA, + TEXTURE11: 0x84CB, + TEXTURE12: 0x84CC, + TEXTURE13: 0x84CD, + TEXTURE14: 0x84CE, + TEXTURE15: 0x84CF, + TEXTURE16: 0x84D0, + TEXTURE17: 0x84D1, + TEXTURE18: 0x84D2, + TEXTURE19: 0x84D3, + TEXTURE20: 0x84D4, + TEXTURE21: 0x84D5, + TEXTURE22: 0x84D6, + TEXTURE23: 0x84D7, + TEXTURE24: 0x84D8, + TEXTURE25: 0x84D9, + TEXTURE26: 0x84DA, + TEXTURE27: 0x84DB, + TEXTURE28: 0x84DC, + TEXTURE29: 0x84DD, + TEXTURE30: 0x84DE, + TEXTURE31: 0x84DF, + ACTIVE_TEXTURE: 0x84E0, + REPEAT: 0x2901, + CLAMP_TO_EDGE: 0x812F, + MIRRORED_REPEAT: 0x8370, + FLOAT_VEC2: 0x8B50, + FLOAT_VEC3: 0x8B51, + FLOAT_VEC4: 0x8B52, + INT_VEC2: 0x8B53, + INT_VEC3: 0x8B54, + INT_VEC4: 0x8B55, + BOOL: 0x8B56, + BOOL_VEC2: 0x8B57, + BOOL_VEC3: 0x8B58, + BOOL_VEC4: 0x8B59, + FLOAT_MAT2: 0x8B5A, + FLOAT_MAT3: 0x8B5B, + FLOAT_MAT4: 0x8B5C, + SAMPLER_2D: 0x8B5E, + SAMPLER_CUBE: 0x8B60, + VERTEX_ATTRIB_ARRAY_ENABLED: 0x8622, + VERTEX_ATTRIB_ARRAY_SIZE: 0x8623, + VERTEX_ATTRIB_ARRAY_STRIDE: 0x8624, + VERTEX_ATTRIB_ARRAY_TYPE: 0x8625, + VERTEX_ATTRIB_ARRAY_NORMALIZED: 0x886A, + VERTEX_ATTRIB_ARRAY_POINTER: 0x8645, + VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: 0x889F, + IMPLEMENTATION_COLOR_READ_TYPE: 0x8B9A, + IMPLEMENTATION_COLOR_READ_FORMAT: 0x8B9B, + COMPILE_STATUS: 0x8B81, + LOW_FLOAT: 0x8DF0, + MEDIUM_FLOAT: 0x8DF1, + HIGH_FLOAT: 0x8DF2, + LOW_INT: 0x8DF3, + MEDIUM_INT: 0x8DF4, + HIGH_INT: 0x8DF5, + FRAMEBUFFER: 0x8D40, + RENDERBUFFER: 0x8D41, + RGBA4: 0x8056, + RGB5_A1: 0x8057, + RGB565: 0x8D62, + DEPTH_COMPONENT16: 0x81A5, + STENCIL_INDEX8: 0x8D48, + DEPTH_STENCIL: 0x84F9, + RENDERBUFFER_WIDTH: 0x8D42, + RENDERBUFFER_HEIGHT: 0x8D43, + RENDERBUFFER_INTERNAL_FORMAT: 0x8D44, + RENDERBUFFER_RED_SIZE: 0x8D50, + RENDERBUFFER_GREEN_SIZE: 0x8D51, + RENDERBUFFER_BLUE_SIZE: 0x8D52, + RENDERBUFFER_ALPHA_SIZE: 0x8D53, + RENDERBUFFER_DEPTH_SIZE: 0x8D54, + RENDERBUFFER_STENCIL_SIZE: 0x8D55, + FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: 0x8CD0, + FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: 0x8CD1, + FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: 0x8CD2, + FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: 0x8CD3, + COLOR_ATTACHMENT0: 0x8CE0, + DEPTH_ATTACHMENT: 0x8D00, + STENCIL_ATTACHMENT: 0x8D20, + DEPTH_STENCIL_ATTACHMENT: 0x821A, + NONE: 0, + FRAMEBUFFER_COMPLETE: 0x8CD5, + FRAMEBUFFER_INCOMPLETE_ATTACHMENT: 0x8CD6, + FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: 0x8CD7, + FRAMEBUFFER_INCOMPLETE_DIMENSIONS: 0x8CD9, + FRAMEBUFFER_UNSUPPORTED: 0x8CDD, + FRAMEBUFFER_BINDING: 0x8CA6, + RENDERBUFFER_BINDING: 0x8CA7, + MAX_RENDERBUFFER_SIZE: 0x84E8, + INVALID_FRAMEBUFFER_OPERATION: 0x0506, + UNPACK_FLIP_Y_WEBGL: 0x9240, + UNPACK_PREMULTIPLY_ALPHA_WEBGL: 0x9241, + CONTEXT_LOST_WEBGL: 0x9242, + UNPACK_COLORSPACE_CONVERSION_WEBGL: 0x9243, + BROWSER_DEFAULT_WEBGL: 0x9244, + TEXTURE_MAX_LOD: 0x813B, + TEXTURE_BASE_LEVEL: 0x813C, + TEXTURE_IMMUTABLE_FORMAT: 0x912F, + UNIFORM_BLOCK_BINDING: 0x8A3F, + UNIFORM_BLOCK_DATA_SIZE: 0x8A40, + UNIFORM_BLOCK_ACTIVE_UNIFORMS: 0x8A42, + UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES: 0x8A43, + UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER: 0x8A44, + UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER: 0x8A46, + RED: 0x1903, + PIXEL_UNPACK_BUFFER: 0x88EC, + RGB8: 0x8051, + R16F: 0x822D, + COPY_WRITE_BUFFER: 0x8F37, + TEXTURE_3D: 0x806F, + COMPRESSED_R11_EAC: 0x9270, + COPY_READ_BUFFER: 0x8F36, + TRANSFORM_FEEDBACK_BUFFER: 0x8C8E, + TRANSFORM_FEEDBACK_BUFFER_BINDING: 0x8C8F, + TRANSFORM_FEEDBACK_BUFFER_SIZE: 0x8C85, + TRANSFORM_FEEDBACK_BUFFER_START: 0x8C84, + UNIFORM_BUFFER_BINDING: 0x8A28, + UNIFORM_BUFFER_SIZE: 0x8A2A, + UNIFORM_BUFFER_START: 0x8A29, + DYNAMIC_READ: 0x88E9, + READ_FRAMEBUFFER: 0x8CA8, + COLOR_ATTACHMENT1: 0x8CE1, + INTERLEAVED_ATTRIBS: 0x8C8C, + UNIFORM_OFFSET: 0x8A3B, + UNIFORM_TYPE: 0x8A37, + UNIFORM_SIZE: 0x8A38, + UNIFORM_BLOCK_INDEX: 0x8A3A, + UNIFORM_ARRAY_STRIDE: 0x8A3C, + UNIFORM_MATRIX_STRIDE: 0x8A3D, + UNIFORM_IS_ROW_MAJOR: 0x8A3E, + TEXTURE_MAX_ANISOTROPY_EXT: 0x84FE + } + + // Vertex shader + var VSHADER_SOURCE = + 'attribute vec4 a_Position;\n' + // Attribute variable + 'attribute vec4 a_Color;\n' + + 'varying vec4 v_Color;\n' + + 'void main() {\n' + + ' gl_Position = a_Position;\n' + // Set the vertex coordinates of the point. + ' v_Color = a_Color;\n' + + '}\n'; + + // Fragment shader + var FSHADER_SOURCE = + 'precision mediump float;\n' + + 'varying vec4 v_Color;\n' + + 'void main() {\n' + + ' gl_FragColor = v_Color;\n' + + '}\n'; + + function initVertexBuffers(gl) { + // Vertex coordinates and colors + var verticesColors = new Float32Array([ + 0.0, -0.5, 1.0, 0.0, 0.0, + -0.5, -0.8, 0.0, 1.0, 0.0, + 0.5, -0.8, 0.0, 0.0, 1.0, + ]); + + var n = 3; // Number of vertices + var FSIZE = verticesColors.BYTES_PER_ELEMENT; // Number of bytes of each element in the array + + // Create a Buffer object. + var vertexBuffer = gl.createBuffer(); + if (!vertexBuffer) { + console.log('Failed to create the buffer object'); + return -1; + } + + // Bind the Buffer object to the target. + gl.bindBuffer(gl.ARRAY_BUFFER, vertexBuffer); + // Write data to the Buffer object. + gl.bufferData(gl.ARRAY_BUFFER, verticesColors.buffer, gl.STATIC_DRAW); + + // Obtain the address of the attribute variable a_Position in the shader. + var a_Position = gl.getAttribLocation(gl.program, 'a_Position'); + if (a_Position < 0) { + console.log('Failed to get the storage location of a_Position'); + return -1; + } + // Allocate the Buffer object to the a_Position variable. + gl.vertexAttribPointer(a_Position, 2, gl.FLOAT, false, 5 * FSIZE, 0); + + // Connect the a_Position variable to the Buffer object allocated to it. + gl.enableVertexAttribArray(a_Position); + + // Obtain the address of the attribute variable a_Color in the shader. + var a_Color = gl.getAttribLocation(gl.program, 'a_Color'); + if (a_Color < 0) { + console.log('Failed to get the storage location of a_Color'); + return -1; + } + // Allocate the Buffer object to the a_Color variable. + gl.vertexAttribPointer(a_Color, 3, gl.FLOAT, false, FSIZE * 5, FSIZE * 2); + + // Connect the a_Color variable to the Buffer object allocated to it. + gl.enableVertexAttribArray(a_Color); + + // Unbind the Buffer object. + gl.bindBuffer(gl.ARRAY_BUFFER, null); + + return n; + } + + /** + * Creates a program object and makes it as the current object. + * @param gl Indicates the WebGL context. + * @param vshader Indicates a vertex shader program (string). + * @param fshader Indicates a fragment shader program (string). + * @return Returns true if the WebGLProgram object was created and successfully made as the current object; returns false otherwise. + */ + function initShaders(gl, vshader, fshader) { + var program = createProgram(gl, vshader, fshader); + console.log("======createProgram program: " + program); + + if (!program) { + console.log('Failed to create program'); + return false; + } + gl.useProgram(program); + gl.program = program; + + return true; + } + + /** + * Creates a linked program object. + * @param gl Indicates the WebGL context. + * @param vshader Indicates a vertex shader program (string). + * @param fshader Indicates a fragment shader program (string). + * @return Returns the created program object if the operation is successful; returns null otherwise. + */ + function createProgram(gl, vshader, fshader) { + console.log("======createProgram start======"); + // Create shader object + var vertexShader = loadShader(gl, gl.VERTEX_SHADER, vshader); + console.log("======vertexShader: " + vertexShader); + var fragmentShader = loadShader(gl, gl.FRAGMENT_SHADER, fshader); + if (!vertexShader || !fragmentShader) { + return null; + } + + // Create a program object. + var program = gl.createProgram(); + console.log("======createProgram program: " + program); + + if (!program) { + return null; + } + + // Attach the shader objects. + gl.attachShader(program, vertexShader); + gl.attachShader(program, fragmentShader); + + // Link the program object. + gl.linkProgram(program); + + // Check the result of linking. + var linked = gl.getProgramParameter(program, 0x8B82); + console.log("======getProgramParameter linked: " + linked); + + if (!linked) { + var error = gl.getProgramInfoLog(program); + console.log('Failed to link the program: ' + error); + gl.deleteProgram(program); + gl.deleteShader(fragmentShader); + gl.deleteShader(vertexShader); + return null; + } + return program; + } + + /** + * Creates a shader object. + * @param gl Indicates the WebGL context. + * @param type Indicates the type of the shader object to be created. + * @param source Indicates the shader program (string). + * @return Returns the created shader object if the operation is successful; returns false otherwise. + */ + function loadShader(gl, type, source) { + console.log("======into loadShader===="); + // Create shader object + var shader = gl.createShader(type); + if (shader == null) { + console.log('Failed to create the shader.'); + return null; + } + + // Set the shader program. + gl.shaderSource(shader, source); + + // Compile the shader. + gl.compileShader(shader); + + // Check the result of compilation. + var compiled = gl.getShaderParameter(shader, gl.COMPILE_STATUS); + if (!compiled) { + var error = gl.getShaderInfoLog(shader); + console.log('Failed to compile the shader: ' + error); + gl.deleteShader(shader); + return null; + } + + return shader; + } + + export default { + data: { + title: "DEMO BY TEAMOL", + fit:"cover", + fits: ["cover", "contain", "fill", "none", "scale-down"] + } + ,onInit() { + this.title = this.$t('strings.world'); + } + ,BtnColorTriangle() { + // Obtain the component. + const el = this.$refs.canvas1; + // Obtain the WebGL context. + var gl = el.getContext('webgl'); + + if (!gl) { + console.log('Failed to get the rendering context for WebGL'); + return; + } + + // Initialize the shader. + if (!initShaders(gl, VSHADER_SOURCE, FSHADER_SOURCE)) { + console.log('Failed to intialize shaders.'); + return; + } + + // Set the vertex position. + var n = initVertexBuffers(gl); + if (n < 0) { + console.log('Failed to set the positions of the vertices'); + return; + } + + // Specify the color of to be cleared. + gl.clearColor(0.0, 0.0, 0.0, 1.0); + + // Clear . + gl.clear(gl.COLOR_BUFFER_BIT); + + // Draw a triangle. + gl.drawArrays(gl.TRIANGLES, 0, n); + + // Clear the buffer. + gl.flush(); + } + } + ``` + + + **Figure 2** Effect of clicking the button to draw a color triangle + +![en-us_image_0000001192429306](figures/en-us_image_0000001192429306.gif) diff --git a/en/application-dev/webgl/webgl-overview.md b/en/application-dev/webgl/webgl-overview.md new file mode 100644 index 0000000000000000000000000000000000000000..0dabbaf506edc1d7218d11ddd7eb64efe541fb9b --- /dev/null +++ b/en/application-dev/webgl/webgl-overview.md @@ -0,0 +1,47 @@ +# WebGL Overview + +Web Graphic Library (WebGL) is used for rendering interactive 2D and 3D graphics. WebGL used in OpenHarmony is based on OpenGL for Embedded Systems (OpenGL ES). It can be used in the **<canvas>** object of HTML5 without using plug-ins and supports cross-platform. WebGL is programmed by JavaScript code. Its APIs can implement graphics rendering and acceleration by using GPU hardware provided by the user equipment. + + +## Basic Concepts + + +### Shader + +Shaders are instructions and data that run in a graphics card. In WebGL, shaders are written in the OpenGL Shading Language (GLSL). + +There are vertex shaders and fragment shaders. The interaction between vertex shaders and fragment shaders involves rasterization. + +- The vertex shader is mainly used to receive the coordinates of a point in a 3D space, process the coordinates into coordinates in a 2D space, and output the coordinates. + +- The fragment shader is mainly used to output a color value for each pixel being processed. + +- Rasterization is the process of converting the coordinates output by the vertex shader into pixels to be processed and passing the pixels to the fragment shader. + + +### Buffer + +The buffer is a JavaScript object that resides in memory and stores the **attribute** object to be pushed to the shader. + + +### WebGLProgram + +The WebGLProgram is a JavaScript object responsible for associating the shader with the buffer. A **WebGLProgram** object consists of two compiled WebGL shaders: a vertex shader and a fragment shader. + + +## Working Principles + + **Figure 1** WebGL working principles + +![en-us_image_0000001238544451](figures/en-us_image_0000001238544451.png) + + +- An application draws UI components using HTML5 at the foreground. + +- Native APIs complete the interaction between JavaScript and C++ code. + +- QuickJS and V8 are graphics frameworks that provide the **Surface** object for the WebGL module. + +- The WebGL module exposes the GPU drawing APIs of OpenGL ES. + +- The Embedded Graphics Library (EGL) implements adaptation to different platforms. diff --git "a/en/device-dev/security/figure/6-1-\351\232\220\347\247\201\345\243\260\346\230\216\346\222\244\351\224\200.png" b/en/device-dev/security/figure/consent-withdrawal-1.png similarity index 100% rename from "en/device-dev/security/figure/6-1-\351\232\220\347\247\201\345\243\260\346\230\216\346\222\244\351\224\200.png" rename to en/device-dev/security/figure/consent-withdrawal-1.png diff --git "a/en/device-dev/security/figure/6-2-\351\232\220\347\247\201\345\243\260\346\230\216\346\222\244\351\224\200.png" b/en/device-dev/security/figure/consent-withdrawal-2.png similarity index 100% rename from "en/device-dev/security/figure/6-2-\351\232\220\347\247\201\345\243\260\346\230\216\346\222\244\351\224\200.png" rename to en/device-dev/security/figure/consent-withdrawal-2.png diff --git "a/en/device-dev/security/figure/2-\345\272\224\347\224\250\345\220\257\345\212\250\351\242\204\346\216\210\346\235\203.png" b/en/device-dev/security/figure/privacy-notice.png similarity index 100% rename from "en/device-dev/security/figure/2-\345\272\224\347\224\250\345\220\257\345\212\250\351\242\204\346\216\210\346\235\203.png" rename to en/device-dev/security/figure/privacy-notice.png diff --git "a/en/device-dev/security/figure/5-\345\272\224\347\224\250\351\232\220\347\247\201\345\243\260\346\230\216\345\205\245\345\217\243.png" b/en/device-dev/security/figure/privacy-statement-entry.png similarity index 100% rename from "en/device-dev/security/figure/5-\345\272\224\347\224\250\351\232\220\347\247\201\345\243\260\346\230\216\345\205\245\345\217\243.png" rename to en/device-dev/security/figure/privacy-statement-entry.png diff --git "a/en/device-dev/security/figure/4-\351\232\220\347\247\201\345\243\260\346\230\216\345\217\230\346\233\264\351\200\232\347\237\245.png" b/en/device-dev/security/figure/privacy-statement-update.png similarity index 100% rename from "en/device-dev/security/figure/4-\351\232\220\347\247\201\345\243\260\346\230\216\345\217\230\346\233\264\351\200\232\347\237\245.png" rename to en/device-dev/security/figure/privacy-statement-update.png diff --git "a/en/device-dev/security/figure/3-\345\272\224\347\224\250\351\232\220\347\247\201\345\243\260\346\230\216.png" b/en/device-dev/security/figure/privacy-statement.png similarity index 100% rename from "en/device-dev/security/figure/3-\345\272\224\347\224\250\351\232\220\347\247\201\345\243\260\346\230\216.png" rename to en/device-dev/security/figure/privacy-statement.png diff --git "a/en/device-dev/security/figure/1-\346\225\217\346\204\237\346\235\203\351\231\220\345\274\271\347\252\227.png" b/en/device-dev/security/figure/sensitive-permission-request.png similarity index 100% rename from "en/device-dev/security/figure/1-\346\225\217\346\204\237\346\235\203\351\231\220\345\274\271\347\252\227.png" rename to en/device-dev/security/figure/sensitive-permission-request.png diff --git a/en/device-dev/subsystems/subsys-dfx-hisysevent-listening.md b/en/device-dev/subsystems/subsys-dfx-hisysevent-listening.md index 2d2157fbd5bf70104df7f443f3f2e68cde429be6..f36ae618c2045e592f208f64a8fd35e4d6ea91a2 100644 --- a/en/device-dev/subsystems/subsys-dfx-hisysevent-listening.md +++ b/en/device-dev/subsystems/subsys-dfx-hisysevent-listening.md @@ -15,7 +15,7 @@ HiSysEvent supports listening for events across processes. You can register a li -

int HiSysEventManager::AddEventListener(std::shared_ptr<HiSysEventSubscribeCallBackBase> listener, std::vector<struct ListenerRule>& rules)

+

bool HiSysEventManager::AddEventListener(std::shared_ptr<HiSysEventSubscribeCallBack> listener, std::vector<struct ListenerRule>& rules)

Registers a listener for system events. You can listen for certain events by specifying rules.

Input arguments:

@@ -24,7 +24,7 @@ HiSysEvent supports listening for events across processes. You can register a li
  • 0: Repeated registration is successful.
  • 1: Initial registration is successful.
  • Other values: Registration has failed.
-

void HiSysEventManager::RemoveListener(std::shared_ptr<HiSysEventSubscribeCallBackBase> listener)

+

bool HiSysEventManager::RemoveListener(std::shared_ptr<HiSysEventSubscribeCallBack> listener)

Removes the listener for system events.

Input arguments:

@@ -72,7 +72,7 @@ HiSysEvent supports listening for events across processes. You can register a li -

void HiSysEventSubscribeCallBackBase::OnHandle(const std::string& domain, const std::string& eventName, const int eventType, const std::string& eventDetail)

+

void HiSysEventSubscribeCallBack::OnHandle(const std::string& domain, const std::string& eventName, const int eventType, const std::string& eventDetail)

Callback object for system events.

Input arguments:

@@ -97,11 +97,11 @@ In this example, you'll be instructed to register a listener for all system even - Implement the callback API. - HiSysEventSubscribeCallBackBase::OnHandle\(const std::string& domain, const std::string& eventName, const int eventType, const std::string& eventDetail\) + HiSysEventSubscribeCallBack::OnHandle\(const std::string& domain, const std::string& eventName, const int eventType, const std::string& eventDetail\) - Register a callback object. - HiSysEventManager::AddEventListener\(std::shared\_ptr listener, std::vector& rules\) + HiSysEventManager::AddEventListener\(std::shared\_ptr listener, std::vector& rules\) ``` diff --git a/en/device-dev/subsystems/subsys-dfx-hisysevent-query.md b/en/device-dev/subsystems/subsys-dfx-hisysevent-querying.md similarity index 95% rename from en/device-dev/subsystems/subsys-dfx-hisysevent-query.md rename to en/device-dev/subsystems/subsys-dfx-hisysevent-querying.md index cf233db0bfb41596b81a841c994d30037934a8e1..ba64df110c2db87e2c3aa35bb5824d7d6bc82fcc 100644 --- a/en/device-dev/subsystems/subsys-dfx-hisysevent-query.md +++ b/en/device-dev/subsystems/subsys-dfx-hisysevent-querying.md @@ -15,7 +15,7 @@ HiSysEvent provides an API for you to query system events. You can query concern -

bool HiSysEventManager::QueryHiSysEvent(struct QueryArg& queryArg, std::vector<struct QueryRule>& queryRules, std::shared_ptr<HiSysEventQueryCallBackBase> queryCallBack)

+

bool HiSysEventManager::QueryHiSysEvent(struct QueryArg& queryArg, std::vector<struct QueryRule>& queryRules, std::shared_ptr<HiSysEventQueryCallBack> queryCallBack)

Queries system events by specifying search criteria such as the time segment, event domain, and event name.

Input arguments:

@@ -90,7 +90,7 @@ HiSysEvent provides an API for you to query system events. You can query concern -

void HiSysEventQueryCallBackBase::OnQuery(const ::std::vector<std::string>& sysEvent, const ::std::vector<int64_t>& seq)

+

void HiSysEventQueryCallBack::OnQuery(const ::std::vector<std::string>& sysEvent, const ::std::vector<int64_t>& seq)

Callback object for event query.

Input arguments:

@@ -98,7 +98,7 @@ HiSysEvent provides an API for you to query system events. You can query concern

Return value: none

-

void HiSysEventQueryCallBackBase::OnComplete(int32_t reason, int32_t total)

+

void HiSysEventQueryCallBack::OnComplete(int32_t reason, int32_t total)

Callback object for completion of event query.

Input arguments:

@@ -123,13 +123,13 @@ In this example, you'll be instructed to query all system events. - Implement the callback API. - void HiSysEventQueryCallBackBase::OnQuery\(const ::std::vector& sysEvent, const ::std::vector& seq\) + void HiSysEventQueryCallBack::OnQuery\(const ::std::vector& sysEvent, const ::std::vector& seq\) - void HiSysEventQueryCallBackBase::OnComplete\(int32\_t reason, int32\_t total\) + void HiSysEventQueryCallBack::OnComplete\(int32\_t reason, int32\_t total\) - Invoke the query API in the corresponding service logic. - HiSysEventManager::QueryHiSysEvent\(struct QueryArg& queryArg, std::vector& queryRules, std::shared\_ptr queryCallBack\) + HiSysEventManager::QueryHiSysEvent\(struct QueryArg& queryArg, std::vector& queryRules, std::shared\_ptr queryCallBack\) ``` diff --git a/en/device-dev/subsystems/subsys-dfx-hisysevent.md b/en/device-dev/subsystems/subsys-dfx-hisysevent.md index e03fc3a05c9a4367c3b3bb46bd2e23771f21e7de..38fe0b8f890fd05ed7a00ec15a5b5c538af49646 100644 --- a/en/device-dev/subsystems/subsys-dfx-hisysevent.md +++ b/en/device-dev/subsystems/subsys-dfx-hisysevent.md @@ -4,7 +4,7 @@ - **[HiSysEvent Listening](subsys-dfx-hisysevent-listening.md)** -- **[HiSysEvent Query](subsys-dfx-hisysevent-query.md)** +- **[HiSysEvent Query](subsys-dfx-hisysevent-querying.md)** - **[HiSysEvent Tool Usage](subsys-dfx-hisysevent-tool.md)** diff --git a/zh-cn/application-dev/Readme-CN.md b/zh-cn/application-dev/Readme-CN.md index 112dabfdd80ad86b9e50e1e6ee9b54eca5ffc991..e91b5d97f37a5254720235875d1a4d78b9bf29d6 100644 --- a/zh-cn/application-dev/Readme-CN.md +++ b/zh-cn/application-dev/Readme-CN.md @@ -16,5 +16,6 @@ - [数据管理](database/Readme-CN.md) - [USB服务](usb/Readme-CN.md) - [DFX](dfx/Readme-CN.md) +- [WebGL](webgl/Readme-CN.md) - [开发参考](reference/Readme-CN.md) diff --git a/zh-cn/application-dev/ability/Readme-CN.md b/zh-cn/application-dev/ability/Readme-CN.md index 202dc4ca4253a99c5cb7a91f724b85cd2656fcdf..ae4403f9cf0425e51eccd71df27651e875911c79 100644 --- a/zh-cn/application-dev/ability/Readme-CN.md +++ b/zh-cn/application-dev/ability/Readme-CN.md @@ -5,4 +5,6 @@ * [基于Native的Data Ability创建与访问](data-ability-creating-accessing.md) * [CommonEvent开发指南](common-event.md) * [Notification开发指南](notification.md) +* [应用迁移开发指导](ability-continuation.md) +* [Ability助手使用指导](ability-assistant-guidelines.md) diff --git a/zh-cn/application-dev/ability/ability-assistant-guidelines.md b/zh-cn/application-dev/ability/ability-assistant-guidelines.md new file mode 100644 index 0000000000000000000000000000000000000000..6db0306ab489467b9e7b39065c2117822fc2c8e2 --- /dev/null +++ b/zh-cn/application-dev/ability/ability-assistant-guidelines.md @@ -0,0 +1,103 @@ +# Ability助手使用指导 + +Ability assistant(Ability助手,简称为aa)是实现应用、原子化服务及测试用例启动功能,为开发者提供基本的调试及测试应用的工具。通过该工具,开发者可以在hdc shell中,发出命令以执行各种系统操作,比如启动Ability、强制停止进程、打印Ability相关信息等。 + +## 开发指导 + +工具已在设备环境预置,开发者可直接通过命令行调用。 + +### 查询相关 + +- **help** + + 用于显示aa相关的帮助信息。 + + **返回值:** + + 返回对应的帮助信息。 + + **使用方法:** + + ``` + aa help + ``` + +### Ability相关 + +- **start** + + 用于启动一个ability。 + + | 参数 | 参数说明 | + | --------- | ---------------------- | + | -h/--help | 帮助信息。 | + | -d | 可选参数,device id | + | -a | 必选参数,ability name | + | -b | 必选参数,bundle name | + | -D | 可选参数,调试模式 | + + **返回值:** + + 当成功启动Ability时,返回“start ability successfully.”;当启动失败时,返回“error: failed to start ability.”。 + + 使用方法: + + ``` +aa start [-d ] -a -b [-D] + ``` + +- **stop-service** + + 用于停止Service Ability。 + + | 参数 | 参数说明 | + | --------- | ------------------------ | + | -h/--help | 帮助信息。 | + | -d | 可选参数,device id。 | + | -a | 必选参数,ability name。 | + | -b | 必选参数,bundle name。 | + + **返回值:** + + 当成功停止Service Ability时,返回“stop service ability successfully.”;当停止失败时,返回“error: failed to stop service ability.”。 + + 使用方法: + + ``` +aa stop-service [-d ] -a -b + ``` + +- **dump** + + 用于打印Ability的相关信息。 + + | 参数 | 参数说明 | + | ---------------------- | -------------------------------------- | + | -h/--help | 帮助信息。 | + | -a/--all | 打印所有mission内的Ability。 | + | -s/--stack \ | 打印指定mission stack内的Ability。 | + | -m/--mission \ | 打印指定mission内的Ability。 | + | -l/--stack-list | 打印每个mission stack内的mission列表。 | + | -u/--ui | 打印system ui Ability。 | + | -e/--serv | 打印Service Ability。 | + | -d/--data | 打印Data Ability。 | + + **使用方法:** + + ``` + aa dump -a + ``` + +- **force-stop** + + 通过bundle name强制停止一个进程。 + + **返回值:** + + 当成功强制停止该进程时,返回“force stop process successfully.”;当强制停止失败时,返回“error: failed to force stop process.”。 + + **使用方法:** + + ``` + aa force-stop + ``` \ No newline at end of file diff --git a/zh-cn/application-dev/connectivity/ipc-rpc.md b/zh-cn/application-dev/connectivity/ipc-rpc.md deleted file mode 100644 index b28f4d1c71d5cfa7c7d09ca22ca904cb8fa85ca3..0000000000000000000000000000000000000000 --- a/zh-cn/application-dev/connectivity/ipc-rpc.md +++ /dev/null @@ -1,8 +0,0 @@ -# IPC与RPC通信 - - -- **[IPC与RPC通信概述](ipc-rpc-overview.md)** - -- **[IPC与RPC通信开发指导](ipc-rpc-development-guideline.md)** - -- **[远端状态订阅开发实例](subscribe-remote-state.md)** \ No newline at end of file diff --git a/zh-cn/application-dev/dfx/Readme-CN.md b/zh-cn/application-dev/dfx/Readme-CN.md index 4962e5b9907be3cf6a11db0b10aa6fccb5c4858a..3743ff1aa3c06330bd6a720f55fd0e0c8b9e8b78 100644 --- a/zh-cn/application-dev/dfx/Readme-CN.md +++ b/zh-cn/application-dev/dfx/Readme-CN.md @@ -3,4 +3,10 @@ - 应用事件打点 - [应用事件打点概述](hiappevent-overview.md) - [应用事件打点开发指导](hiappevent-guidelines.md) +- 性能打点跟踪 + - [性能打点跟踪概述](hitracemeter-overview.md) + - [性能打点跟踪开发指导](hitracemeter-guidelines.md) +- 分布式跟踪 + - [分布式跟踪概述](hitracechain-overview.md) + - [分布式跟踪开发指导](hitracechain-guidelines.md) diff --git a/zh-cn/application-dev/dfx/hitracechain-guidelines.md b/zh-cn/application-dev/dfx/hitracechain-guidelines.md new file mode 100644 index 0000000000000000000000000000000000000000..4d0b1759fa649cbaf5f02b46f50034353ed00444 --- /dev/null +++ b/zh-cn/application-dev/dfx/hitracechain-guidelines.md @@ -0,0 +1,58 @@ +# 分布式跟踪开发指导 + +## 场景介绍 + +HiTraceChain为开发者提供业务流程调用链跟踪的维测接口,帮助开发者迅速获取指定业务流程调用链的运行日志,定位跨设备/跨进程/跨线程的故障问题。 + +## 接口说明 + +分布式跟踪接口由hiTraceChain模块提供,详细API请参考[分布式跟踪API参考](../reference/apis/js-apis-hitracechain.md)。 + +**分布式跟踪接口功能介绍:** + +| 接口名 | 返回值 | 描述 | +| ------------------------------------------------------------------------------------------------------------------- | -------------- | ------------ | +| hiTraceChain.begin(name: string, flags: number = HiTraceFlag.DEFAULT) | HiTraceId | 开始跟踪。 | +| hiTraceChain.tracepoint(mode: HiTraceCommunicationMode, type: HiTraceTracepointType, id: HiTraceId, msg?: string) | void | 信息埋点。 | +| hiTraceChain.end(id: HiTraceId) | void | 结束跟踪。 | + +## 开发步骤 + +在应用启动执行页面加载后,开始分布式跟踪,完成业务之后,停止分布式跟踪。 + +1. 新建一个JS应用工程,在“Project”窗口点击“entry > src > main > js > default > pages > index”,打开工程中的“index.js”文件,在页面执行加载后,在实际业务逻辑中调用hiTraceChain的API,进行分布式跟踪,示例代码如下: + + ``` + import hiTraceChain from '@ohos.hiTraceChain' + + export default { + data: { + title: "" + }, + onInit() { + this.title = this.$t('strings.world'); + + // 1、开启分布式跟踪 + let asyncTraceId = hiTraceChain.begin("business", hiTraceChain.HiTraceFlag.INCLUDE_ASYNC | hiTraceChain.HiTraceFlag.DONOT_CREATE_SPAN); + + // 2、业务流程开始 + console.log(`business start`); + + // 3、埋点操作 + hiTraceChain.tracepoint(hiTraceChain.HiTraceCommunicationMode.THREAD, hiTraceChain.HiTraceTracepointType.SS, asyncTraceId, "Just a example"); + + // 4、业务流程执行中 + console.log(`business running`); + + // 5、业务流程结束 + console.log(`business end`); + + // 6、停止跟踪 + hiTraceChain.end(asyncTraceId); + } + } + ``` + +2. 运行项目,点击应用界面上的运行按钮,即可通过日志信息分析实际业务。 + + diff --git a/zh-cn/application-dev/dfx/hitracechain-overview.md b/zh-cn/application-dev/dfx/hitracechain-overview.md new file mode 100644 index 0000000000000000000000000000000000000000..a95750b019e8c20a7043a44f5cce6fde290727b4 --- /dev/null +++ b/zh-cn/application-dev/dfx/hitracechain-overview.md @@ -0,0 +1,17 @@ +# 分布式跟踪概述 + +hiTraceChain是基于云计算分布式跟踪调用链思想,在端侧业务流程(涉及跨线程、跨进程、跨设备)中的一种轻量级实现。 + +## 基本概念 + +- **chainId** + + 分布式跟踪标识,属于HiTraceId的一部分,用于标识当前跟踪的业务流程。 + +## 运作机制 + +hiTraceChain在业务控制面流程中,生成和传递唯一跟踪标识,在业务流程中输出的各类信息中(包括应用事件、系统时间、日志等)记录该跟踪标识。在调试、问题定位过程中,开发者可以通过该唯一跟踪标识将本次业务流程端到端的各类信息快速关联起来。 + +## 约束与限制 + +hiTraceChain API提供的相关接口全部为同步接口。 \ No newline at end of file diff --git a/zh-cn/application-dev/dfx/hitracemeter-guidelines.md b/zh-cn/application-dev/dfx/hitracemeter-guidelines.md new file mode 100644 index 0000000000000000000000000000000000000000..fa287bd515c28516dbb8715c4259fcfed83bd48d --- /dev/null +++ b/zh-cn/application-dev/dfx/hitracemeter-guidelines.md @@ -0,0 +1,73 @@ +# 性能打点跟踪开发指导 + +## 场景介绍 + +HiTraceMeter为开发者提供系统性能打点接口。开发者通过在自己的业务逻辑中的关键代码位置调用HiTraceMeter接口提供的API接口,能够有效追踪进程轨迹、查看系统性能。 + +## 接口说明 + +性能打点跟踪接口由hiTraceMeter模块提供,详细API请参考[性能打点跟踪API参考](../reference/apis/js-apis-hitracemeter.md)。 + +**性能打点跟踪接口功能介绍:** + +| 接口名 | 返回值 | 描述 | +| ---------------------------------------------------------------------------- | --------- | ------------ | +| hiTraceMeter.startTrace(name: string, taskId: number, expectedTime?: number) | void | 标记一个预追踪耗时任务的开始。如果有多个相同name的任务需要追踪或者对同一个任务要追踪多次,并且任务同时被执行,则每次调用startTrace的taskId不相同。如果具有相同name的任务是串行执行的,则taskId可以相同。 | +| hiTraceMeter.finishTrace(name: string, taskId: number) | void | name和taskId必须与流程开始的hiTraceMeter.startTrace对应参数值保持一致。 | +| hiTraceMeter.traceByValue(name: string, value: number) | void | 用来标记一个预追踪的数值变量,该变量的数值会不断变化。| + +## 开发步骤 + +在应用启动执行页面加载后,开始分布式跟踪,完成业务之后,停止分布式跟踪。 + +1. 新建一个JS应用工程,在“Project”窗口点击“entry > src > main > js > default > pages > index”,打开工程中的“index.js”文件,在页面执行加载后,在自己的业务中调用hiTraceMeter的接口,进行性能打点追踪,示例代码如下: + + ```js + import hiTraceMeter from '@ohos.hiTraceMeter' + + export default { + data: { + title: "" + }, + onInit() { + this.title = this.$t('strings.world'); + + //从startTrace到finishTrace流程的耗时期望为5ms + hiTraceMeter.startTrace("business", 1); + hiTraceMeter.startTrace("business", 1, 5); + + //追踪并行执行的同名任务 + hiTraceMeter.startTrace("business", 1); + //业务流程 + console.log(`business running`); + hiTraceMeter.startTrace("business", 2); //第二个追踪的任务开始,同时第一个追踪的同名任务还没结束,出现了并行执行,对应接口的taskId需要不同。 + //业务流程 + console.log(`business running`); + hiTraceMeter.finishTrace("business", 1); + //业务流程 + console.log(`business running`); + hiTraceMeter.finishTrace("business", 2); + + //追踪串行执行的同名任务 + hiTraceMeter.startTrace("business", 1); + //业务流程 + console.log(`business running`); + hiTraceMeter.finishTrace("business", 1); //第一个追踪的任务结束 + //业务流程 + console.log(`business running`); + hiTraceMeter.startTrace("business", 1); //第二个追踪的同名任务开始,同名的待追踪任务串行执行。 + //业务流程 + console.log(`business running`); + + let traceCount = 3; + hiTraceMeter.traceByValue("myTestCount", traceCount); + traceCount = 4; + hiTraceMeter.traceByValue("myTestCount", traceCount); + hiTraceMeter.finishTrace("business", 1); + } + } + ``` + +2. 运行项目,点击应用界面上的运行按钮,即可通过日志信息分析实际业务。 + + diff --git a/zh-cn/application-dev/dfx/hitracemeter-overview.md b/zh-cn/application-dev/dfx/hitracemeter-overview.md new file mode 100644 index 0000000000000000000000000000000000000000..a6144101ad710c69bf7a8833580c2a4142438df0 --- /dev/null +++ b/zh-cn/application-dev/dfx/hitracemeter-overview.md @@ -0,0 +1,18 @@ +# 性能打点跟踪概述 + +hiTraceMeter是开发者用于追踪进程轨迹,度量程序执行性能的一种工具,基于内核的ftrace机制,提供给用户态应用代码执行时长度量打点的能力。开发者通过使用hiTraceMeter API在程序中打点,并使用hiTraceMeter提供的命令行工具采集跟踪数据。 + +## 基本概念 + +- **hiTraceMeter Tag** + + 跟踪数据使用类别分类,称作hiTraceMeter Tag或hiTraceMeter Category,一般每个软件子系统对应一个Tag,该Tag在打点API中以类别TAg参数传入。hiTraceMeter命令行工具采集跟踪数据时,只采集给定的Tag类别选项指定的跟踪数据。 + +## 运作机制 + +- 应用程序通过hiTraceMeter函数接口进行打点,hiTraceMeter函数将跟踪数据通过内核sysfs文件接口输出到内核的ftrace数据缓冲区。 +- hiTraceMeter命令行工具读取内核ftrace缓冲区中的跟踪数据,将文本格式的跟踪数据保存到设备侧的文件中。 + +## 约束与限制 + +- 由于JS程序的异步IO特性,现在hiTraceMeter只提供了异步接口。 \ No newline at end of file diff --git a/zh-cn/application-dev/quick-start/package-structure.md b/zh-cn/application-dev/quick-start/package-structure.md index fa6b27f5a92b36d8bd2ce9f80f9905e975c1c4ea..ec612e6e390a83481a4f3332f368baa742183e25 100644 --- a/zh-cn/application-dev/quick-start/package-structure.md +++ b/zh-cn/application-dev/quick-start/package-structure.md @@ -231,7 +231,7 @@ module对象包含HAP包的配置信息,内部结构说明参见表11。 | shortcuts | 表示应用的快捷方式信息。采用对象数组格式,其中的每个元素表示一个快捷方式对象。参考表25。 | 对象数组 | 可缺省,缺省值为空 | | reqPermissions | 表示应用运行时向系统申请的权限。参考表21。 | 对象数组 | 可缺省,缺省值为空 | | colorMode | 表示应用自身的颜色模式。
dark:表示按照深色模式选取资源。
light:表示按照浅色模式选取资源。
auto:表示跟随系统的颜色模式值选取资源。
该标签仅适用于手机、平板、智慧屏、车机、智能穿戴。 | 字符串 | 可缺省,缺省值为"auto" | -| distroFilter | 表示应用的分发规则。
该标签用于定义HAP包对应的细分设备规格的分发策略,以便在应用市场进行云端分发应用包时做精准匹配。该标签可配置的分发策略维度包括API Verion、屏幕形状、屏幕分辨率。在进行分发时,通过deviceType与这三个属性的匹配关系,唯一确定一个用于分发到设备的HAP。参考表21。 | 对象数组 | 可缺省,缺省值为空。但当应用中包含多个entry模块时,必须配置该标签。 | +| distroFilter | 表示应用的分发规则。
该标签用于定义HAP包对应的细分设备规格的分发策略,以便在应用市场进行云端分发应用包时做精准匹配。该标签可配置的分发策略维度包括API Verion、屏幕形状、屏幕分辨率。在进行分发时,通过deviceType与这三个属性的匹配关系,唯一确定一个用于分发到设备的HAP。参考表29。 | 对象数组 | 可缺省,缺省值为空。但当应用中包含多个entry模块时,必须配置该标签。 | | reqCapabilities | 表示运行应用程序所需的设备能力 | 字符串数组 | 可缺省,缺省为空 | | commonEvents | 静态广播,参考表33。 | 对象数组 | 可缺省,缺省为空 | | allowClassMap | HAP的元信息。标记值为true或false。如果标记值为true,则hap使用OpenHarmony框架提供的Java对象代理机制。默认值为false。 | 布尔值 | 不可缺省,缺省值为false | @@ -669,19 +669,19 @@ forms示例: | policy | 表示该子属性取值的黑白名单规则。配置为“exclude”或“include”。“include”表示该字段取值为白名单,满足value枚举值匹配规则的表示匹配该属性。 | 字符串 | 可缺省,缺省值为空。 | | value | 支持的取值为API Version存在的整数值,例如4、5、6。场景示例:某应用,针对相同设备型号,同时在网的为使用API 5和API 6开发的两个软件版本,则允许上架2个entry类型的安装包,分别支持到对应设备侧软件版本的分发。 | 数组 | 可缺省,缺省值为空。 | -表31 screenShape对象的内部结构说明 +表31 screenShape对象的内部结构说明 | 属性名称 | 含义 | 数据类型 | 是否可缺省 | | -------- | ------------------------------------------------------------ | -------- | -------------------- | | policy | 表示该子属性取值的黑白名单规则。配置为“exclude”或“include”。“include”表示该字段取值为白名单,满足value枚举值匹配规则的表示匹配该属性。 | 字符串 | 可缺省,缺省值为空。 | -| value | 支持的取值为API Version存在的整数值,例如4、5、6。场景示例:某应用,针对相同设备型号,同时在网的为使用API 5和API 6开发的两个软件版本,则允许上架2个entry类型的安装包,分别支持到对应设备侧软件版本的分发。 | 数组 | 可缺省,缺省值为空。 | +| value | 支持的取值为circle(圆形)、rect(矩形)。场景示例:针对智能穿戴设备,可为圆形表盘和矩形表盘分别提供不同的HAP。 | 数组 | 可缺省,缺省值为空。 | 表32 screenWindow对象的内部结构说明 | 属性名称 | 含义 | 数据类型 | 是否可缺省 | | -------- | ------------------------------------------------------------ | -------- | -------------------- | | policy | 表示该子属性取值的黑白名单规则。配置为“exclude”或“include”。“include”表示该字段取值为白名单,满足value枚举值匹配规则的表示匹配该属性。 | 字符串 | 可缺省,缺省值为空。 | -| value | 支持的取值为API Version存在的整数值,例如4、5、6。场景示例:某应用,针对相同设备型号,同时在网的为使用API 5和API 6开发的两个软件版本,则允许上架2个entry类型的安装包,分别支持到对应设备侧软件版本的分发。 | 数组 | 可缺省,缺省值为空。 | +| value | 单个字符串的取值格式为:“宽 * 高”,取值为整数像素值,例如“454 * 454”。 | 数组 | 可缺省,缺省值为空。 | distroFilter示例: diff --git a/zh-cn/application-dev/reference/apis/Readme-CN.md b/zh-cn/application-dev/reference/apis/Readme-CN.md index 6de6ed329ebd40cebb034a9a80dfa66b8ca8aa46..837523f1a20f18fed4ab7fb79c4aa21929dda1e5 100644 --- a/zh-cn/application-dev/reference/apis/Readme-CN.md +++ b/zh-cn/application-dev/reference/apis/Readme-CN.md @@ -18,9 +18,11 @@ - 媒体 - [音频管理](js-apis-audio.md) - [媒体服务](js-apis-media.md) + - [图片处理](js-apis-image.md) - 安全 - [用户认证](js-apis-useriam-userauth.md) - [访问控制](js-apis-abilityAccessCtrl.md) + - [通用密钥库系统](js-apis-huks.md) - 数据管理 - [轻量级存储](js-apis-data-preferences.md) - [轻量级存储(废弃 since 8)](js-apis-data-storage.md) @@ -46,6 +48,7 @@ - [SIM卡管理](js-apis-sim.md) - [网络搜索](js-apis-radio.md) - [observer](js-apis-observer.md) + - [蜂窝数据](js-apis-telephony-data.md) - 网络与连接 - [WLAN](js-apis-wifi.md) - [Bluetooth](js-apis-bluetooth.md) @@ -55,6 +58,7 @@ - [屏幕亮度](js-apis-brightness.md) - [电量信息](js-apis-battery-info.md) - [系统电源管理](js-apis-power.md) + - [热管理](js-apis-thermal.md) - [Runninglock锁](js-apis-runninglock.md) - [设备信息](js-apis-device-info.md) - [系统属性](js-apis-system-parameter.md) @@ -74,6 +78,7 @@ - [动画](js-apis-basic-features-animator.md) - [WebGL](js-apis-webgl.md) - [WebGL2](js-apis-webgl2.md) + - [屏幕截图](js-apis-screenshot.md) - DFX - [应用打点](js-apis-hiappevent.md) - [性能打点](js-apis-hitracemeter.md) diff --git a/zh-cn/application-dev/reference/apis/js-apis-ability-context.md b/zh-cn/application-dev/reference/apis/js-apis-ability-context.md index 020beeb11908edf8cb8f32d6671add43815ba698..e55c684dc866fad4c8df94b1229cae6301b72f94 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-ability-context.md +++ b/zh-cn/application-dev/reference/apis/js-apis-ability-context.md @@ -1,12 +1,48 @@ # AbilityContext +- [使用说明](#使用说明) +- [属性](#属性) +- [startAbility](#startAbility) +- [startAbility](#startAbility) +- [startAbility](#startAbility) +- [startAbilityForResult](#startAbilityForResult) +- [startAbilityForResult](#startAbilityForResult) +- [startAbilityForResult](#startAbilityForResult) +- [terminateSelf](#terminateSelf) +- [terminateSelf](#terminateSelf) +- [terminateSelfWithResult](#terminateSelfWithResult) +- [terminateSelfWithResult](#terminateSelfWithResult) +- [startAbilityByCall](#startAbilityByCall) +- [requestPermissionsFromUser](#requestPermissionsFromUser) +- [requestPermissionsFromUser](#requestPermissionsFromUser) +- [setMissionLabel](#setMissionLabel) +- [setMissionLabel](#setMissionLabel) + + > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** -> 本模块首批接口从API 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 +> 本模块首批接口从API 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 Ability的上下文环境,继承自Context。 +## 使用说明 + + +​在使用AbilityContext的功能前,需要通过Ability子类实例获取。 + + + +``` +import Ability from '@ohos.application.Ability' +class MainAbility extends Ability { + onWindowStageCreate(windowStage) { + let context = this.context; + } +} +``` + + ## 属性 | 名称 | 参数类型 | 可读 | 可写 | 说明 | @@ -42,7 +78,37 @@ startAbility(want: Want, callback: AsyncCallback<void>): void ## startAbility -startAbility(want: Want): Promise<void>; +startAbility(want: Want, options: StartOptions, callback: AsyncCallback<void>): void + +启动Ability。 + +- 参数: + | 参数名 | 类型 | 必填 | 说明 | + | -------- | -------- | -------- | -------- | + | want | [Want](js-apis-featureAbility.md#Want类型说明) | 是 | 启动Ability的want信息。 | + | options | StartOptions | 是 | 启动Ability所携带的参数。 | + | callback | AsyncCallback<void> | 是 | callback形式返回启动结果。 | + +- 示例: + + ``` + var want = { + "deviceId": "", + "bundleName": "com.extreme.test", + "abilityName": "com.extreme.test.MainAbility" + }; + var options = { + windowMode: 0, + }; + this.context.startAbility(want, options, (error) => { + console.log("error.code = " + error.code) + }) + ``` + + +## startAbility + +startAbility(want: Want, options: StartOptions): Promise<void>; 启动Ability。通过Promise返回结果。 @@ -50,6 +116,7 @@ startAbility(want: Want): Promise<void>; | 参数名 | 类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | | want | [Want](js-apis-featureAbility.md#Want类型说明) | 是 | 启动Ability的want信息。 | + | options | StartOptions | 是 | 启动Ability所携带的参数。 | - 返回值: | 类型 | 说明 | @@ -63,7 +130,10 @@ startAbility(want: Want): Promise<void>; "bundleName": "com.extreme.test", "abilityName": "com.extreme.test.MainAbility" }; - this.context.startAbility(want) + var options = { + windowMode: 0, + }; + this.context.startAbility(want, options) .then((data) => { console.log('Operation successful.') }).catch((error) => { @@ -82,7 +152,7 @@ startAbilityForResult(want: Want, callback: AsyncCallback<AbilityResult>): | 参数名 | 类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | | want |[Want](js-apis-featureAbility.md#Want类型说明) | 是 | 启动Ability的want信息。 | - | callback | Callback<[AbilityResult](js-apis-featureAbility.md#abilityresult)> | 是 | 执行结果回调函数。 | + | callback | AsyncCallback<[AbilityResult](js-apis-featureAbility.md#abilityresult)> | 是 | 执行结果回调函数。 | - 示例: @@ -96,17 +166,47 @@ startAbilityForResult(want: Want, callback: AsyncCallback<AbilityResult>): ); ``` +## startAbilityForResult + +startAbilityForResult(want: Want, options: StartOptions, callback: AsyncCallback<AbilityResult>): void; + +启动Ability并在结束的时候返回执行结果。 + +- 参数: + | 参数名 | 类型 | 必填 | 说明 | + | -------- | -------- | -------- | -------- | + | want |[Want](js-apis-featureAbility.md#Want类型说明) | 是 | 启动Ability的want信息。 | + | options | StartOptions | 是 | 启动Ability所携带的参数。 | + | callback | AsyncCallback<[AbilityResult](js-apis-featureAbility.md#abilityresult)> | 是 | 执行结果回调函数。 | + + +- 示例: + ``` + var options = { + windowMode: 0, + }; + this.context.startAbilityForResult( + {bundleName: "com.extreme.myapplication", abilityName: "MainAbilityDemo2"}, options, + (error, result) => { + console.log("startAbilityForResult AsyncCallback is called, error.code = " + error.code) + console.log("startAbilityForResult AsyncCallback is called, result.resultCode = " + result.resultCode) + } + ); + ``` + ## startAbilityForResult -startAbilityForResult(want: Want): Promise<AbilityResult>; +startAbilityForResult(want: Want, options: StartOptions): Promise<AbilityResult>; 启动Ability并在结束的时候返回执行结果。 - 参数: | 参数名 | 类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | - | want | [Want](js-apis-featureAbility.md#Want类型说明) | 是 | 启动Ability的want信息。 | + | want | [Want](js-apis-featureAbility.md#Want类型说明) | 是 | 启动Ability的want信息。 | + | options | StartOptions | 是 | 启动Ability所携带的参数。 | + - 返回值 | 类型 | 说明 | @@ -115,7 +215,10 @@ startAbilityForResult(want: Want): Promise<AbilityResult>; - 示例: ``` - this.context.startAbilityForResult({bundleName: "com.extreme.myapplication", abilityName: "MainAbilityDemo2"}).then((result) => { + var options = { + windowMode: 0, + }; + this.context.startAbilityForResult({bundleName: "com.extreme.myapplication", abilityName: "MainAbilityDemo2"}, options).then((result) => { console.log("startAbilityForResult Promise.resolve is called, result.resultCode = " + result.resultCode) }, (error) => { console.log("startAbilityForResult Promise.Reject is called, error.code = " + error.code) @@ -132,7 +235,7 @@ terminateSelf(callback: AsyncCallback<void>): void; - 参数: | 参数名 | 类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | - | callback | AsyncCallback<void> | 否 | 回调函数,返回接口调用是否成功的结果。 | + | callback | AsyncCallback<void> | 是 | 回调函数,返回接口调用是否成功的结果。 | - 示例: ``` @@ -173,7 +276,7 @@ terminateSelfWithResult(parameter: AbilityResult, callback: AsyncCallback<voi | 参数名 | 类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | | parameter | [AbilityResult](js-apis-featureAbility.md#abilityresult) | 是 | 返回给调用startAbilityForResult 接口调用方的相关信息。 | - | callback | Callback<void> | 否 | callback形式返回停止结果 | + | callback | AsyncCallback<void> | 是 | callback形式返回停止结果。 | - 示例: ``` @@ -202,7 +305,7 @@ terminateSelfWithResult(parameter: AbilityResult): Promise<void>; - 返回值: | 类型 | 说明 | | -------- | -------- | - | Promise<void> | promise形式返回停止结果 | + | Promise<void> | promise形式返回停止结果。 | - 示例: ``` @@ -215,3 +318,138 @@ terminateSelfWithResult(parameter: AbilityResult): Promise<void>; } ) ``` + + +## startAbilityByCall + +startAbilityByCall(want: Want): Promise<Caller>; + +获取指定通用组件服务端的caller通信接口, 并且将指定通用组件服务端拉起并切换到后台。 + +- 参数: + | 参数名 | 类型 | 必填 | 说明 | + | -------- | -------- | -------- | -------- | + | want | [Want](js-apis-featureAbility.md#Want类型说明) | 是 | 传入需要启动的ability的信息,包含ability名称、包名、设备ID,设备ID缺省或为空表示启动本地ability。 | + +- 返回值: + | 类型 | 说明 | + | -------- | -------- | + | Promise<> | 获取要通讯的caller对象。 | + +- 示例: + + ``` + import Ability from '@ohos.application.Ability'; + var caller; + export default class MainAbility extends Ability { + onWindowStageCreate(windowStage) { + this.context.startAbilityByCall({ + bundleName: "com.example.myservice", + abilityName: "com.example.myservice.MainAbility", + deviceId: "" + }).then((obj) => { + caller = obj; + console.log('Caller GetCaller Get ' + call); + }).catch((e) => { + console.log('Caller GetCaller error ' + e); + }); + } + } + ``` + + +## requestPermissionsFromUser + +requestPermissionsFromUser(permissions: Array<string>, requestCallback: AsyncCallback<PermissionRequestResult>) : void; + +拉起弹窗请求用户授权。 + +- 参数: + | 参数名 | 类型 | 必填 | 说明 | + | -------- | -------- | -------- | -------- | + | permissions | Array<string> | 是 | 权限列表。 | + | callback | AsyncCallback<[PermissionRequestResult](js-apis-permissionrequestresult.md)> | 是 | 回调函数,返回接口调用是否成功的结果。 | + +- 示例: + + ``` + this.context.requestPermissionsFromUser(permissions,(result) => { + console.log('requestPermissionsFromUserresult:' + JSON.stringfy(result)); + }); + ``` + + +## requestPermissionsFromUser + +requestPermissionsFromUser(permissions: Array<string>) : Promise<PermissionRequestResult>; + +拉起弹窗请求用户授权。通过Promise返回结果。 + +- 参数: + | 参数名 | 类型 | 必填 | 说明 | + | -------- | -------- | -------- | -------- | + | permissions | Array<string> | 是 | 权限列表。 | + +- 返回值: + | 类型 | 说明 | + | -------- | -------- | + | Promise<[PermissionRequestResult](js-apis-permissionrequestresult.md)> | 返回一个Promise,包含接口的结果。 | + +- 示例: + + ``` + this.context.requestPermissionsFromUser(permissions).then((data) => { + console.log('success:' + JSON.stringfy(data)); + }).catch((error) => { + console.log('failed:' + JSON.stringfy(error)); + }); + ``` + + +## setMissionLabel + +setMissionLabel(label: string, callback:AsyncCallback<void>): void; + +设置ability在任务中显示的名称。 + +- 参数: + | 参数名 | 类型 | 必填 | 说明 | + | -------- | -------- | -------- | -------- | + | label | string | 是 | 显示名称。 | + | callback | AsyncCallback<void> | 是 | 回调函数,返回接口调用是否成功的结果。 | + +- 示例: + + ``` + this.context.setMissionLabel("test",(result) => { + console.log('requestPermissionsFromUserresult:' + JSON.stringfy(result)); + }); + ``` + + +## setMissionLabel + +setMissionLabel(label: string, callback:AsyncCallback<void>): void; + +设置ability在任务中显示的名称。 + +- 参数: + | 参数名 | 类型 | 必填 | 说明 | + | -------- | -------- | -------- | -------- | + | label | string | 是 | 显示名称。 | + +- 返回值: + | 类型 | 说明 | + | -------- | -------- | + | Promise<void> | 返回一个Promise,包含接口的结果。 | + +- 示例: + + ``` + this.context.setMissionLabel("test").then((data) => { + console.log('success:' + JSON.stringfy(data)); + }).catch((error) => { + console.log('failed:' + JSON.stringfy(error)); + }); + ``` + diff --git a/zh-cn/application-dev/reference/apis/js-apis-abilityrunninginfo.md b/zh-cn/application-dev/reference/apis/js-apis-abilityrunninginfo.md new file mode 100644 index 0000000000000000000000000000000000000000..d355f7b81a9450453072645310d519758b3a1ac3 --- /dev/null +++ b/zh-cn/application-dev/reference/apis/js-apis-abilityrunninginfo.md @@ -0,0 +1,52 @@ +# AbilityRunningInfo + +- [使用说明](#使用说明) +- [属性](#属性) +- [abilityManager.AbilityState](#abilityManagerAbilityState) + + +> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** +> 本模块首批接口从API 8开始支持。 + + +Ability运行相关信息。 + + +## 使用说明 + + +通过abilityManager中getAbilityRunningInfos方法获取。 + + + +``` +import abilitymanager from '@ohos.application.abilityManager'; +abilitymanager.getAbilityRunningInfos((err,data) => { + console.log("getAbilityRunningInfos err: " + err + " data: " + JSON.stringify(data)); +}); +``` + + +## 属性 + + | 名称 | 参数类型 | 可读 | 可写 | 说明 | +| -------- | -------- | -------- | -------- | -------- | +| ability | ElementName | 是 | 否 | Ability匹配信息。 | +| pid | number | 是 | 否 | 进程ID。 | +| uid | number | 是 | 否 | 用户ID。 | +| processName | string | 是 | 否 | 进程名称。 | +| startTime | number | 是 | 否 | Ability启动时间。 | +| abilityState | [abilityManager.AbilityState](#abilitymanager-abilitystate) | 是 | 否 | Ability状态。 | + + +## abilityManager.AbilityState + +Ability的状态信息。 + + | 名称 | 值 | 说明 | +| -------- | -------- | -------- | +| INITIAL | 0 | 表示ability为initial状态。 | +| FOREGROUND | 9 | 表示ability为foreground状态。 | +| BACKGROUND | 10 | 表示ability为background状态。 | +| FOREGROUNDING | 11 | 表示ability为foregrounding状态。 | +| BACKGROUNDING | 12 | 表示ability为backgrounding状态。 | diff --git a/zh-cn/application-dev/reference/apis/js-apis-abilitystagecontext.md b/zh-cn/application-dev/reference/apis/js-apis-abilitystagecontext.md new file mode 100644 index 0000000000000000000000000000000000000000..8018f3b36e3f696d2de71ac4f1b2ce7486cadfe0 --- /dev/null +++ b/zh-cn/application-dev/reference/apis/js-apis-abilitystagecontext.md @@ -0,0 +1,36 @@ +# AbilityStageContext + +- [使用说明](#使用说明) +- [属性](#属性) + + +> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** +> 本模块首批接口从API 9开始支持。 + + +AbilityStage的上下文环境,继承自[Context](js-apis-application-context.md)。 + + +## 使用说明 + + +通过AbilityStage实例来获取。 + + + +``` +import AbilityStage from '@ohos.application.AbilityStage'; +class MyAbilityStage extends AbilityStage { + onCreate() { + let abilityStageContext = this.context; + } +} +``` + + +## 属性 + + | 名称 | 参数类型 | 可读 | 可写 | 说明 | +| -------- | -------- | -------- | -------- | -------- | +| currentHapModuleInfo | HapModuleInfo | 是 | 否 | AbilityStage对应的ModuleInfo对象。 | +| config | [Configuration](js-apis-configuration.md) | 是 | 否 | 环境变化对象。 | diff --git a/zh-cn/application-dev/reference/apis/js-apis-application-ability.md b/zh-cn/application-dev/reference/apis/js-apis-application-ability.md new file mode 100644 index 0000000000000000000000000000000000000000..02f6373ad19beb503e915562a2ac976ac54275eb --- /dev/null +++ b/zh-cn/application-dev/reference/apis/js-apis-application-ability.md @@ -0,0 +1,522 @@ +# Ability + +- [导入模块](#导入模块) +- [属性](#属性) +- [onCreate](#onCreate) +- [onWindowStageCreate](#onWindowStageCreate) +- [onWindowStageDestroy](#onWindowStageDestroy) +- [onWindowStageRestore](#onWindowStageRestore) +- [onDestroy](#onDestroy) +- [onForeground](#onForeground) +- [onBackground](#onBackground) +- [onContinue](#onContinue) +- [onNewWant](#onNewWant) +- [onConfigurationUpdated](#onConfigurationUpdated) +- [Caller](#Caller) + - [call](#call) + - [callWithResult](#callWithResult) + - [release](#release) + - [onRelease](#onRelease) +- [Callee](#Callee) + - [on](#on) + - [off](#off) + + +> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** +> 从API Version 8 开始支持。 + + +Ability模块,提供对Ability生命周期、上下文环境等调用管理。 + + +## 导入模块 + + +``` +import Ability from '@ohos.application.Ability'; +``` + + +## 属性 + + | 名称 | 参数类型 | 可读 | 可写 | 说明 | +| -------- | -------- | -------- | -------- | -------- | +| context | [AbilityContext](js-apis-ability-context.md) | 是 | 否 | 上下文。 | +| launchWant | [Want](js-apis-featureAbility.md#Want类型说明) | 是 | 否 | Ability启动时的参数。 | +| lastRequestWant | [Want](js-apis-featureAbility.md#Want类型说明) | 是 | 否 | Ability最后请求时的参数。 | + + +## onCreate + +onCreate(want: Want,param:LaunchParam): void + +Ability创建时回调,执行初始化业务逻辑操作。 + +- 参数: + | 参数名 | 类型 | 必填 | 说明 | + | -------- | -------- | -------- | -------- | + | want | [Want](js-apis-featureAbility.md#Want类型说明) | 是 | 当前Ability的Want类型信息,包括ability名称、bundle名称等。 | + | param | LaunchParam | 是 | 创建 ability、上次异常退出的原因信息。 | + +- 示例: + + ``` + class myAbility extends Ability { + onCreate(want, param) { + console.log('onCreate, want:' + want.abilityName); + } + } + ``` + + +## onWindowStageCreate + +onWindowStageCreate(windowStage: window.WindowStage): void + +当WindowStage创建后调用。 + +- 参数: + | 参数名 | 类型 | 必填 | 说明 | + | -------- | -------- | -------- | -------- | + | windowStage | window.WindowStage | 是 | WindowStage相关信息。 | + +- 示例: + + ``` + class myAbility extends Ability { + onWindowStageCreate(windowStage) { + console.log('onWindowStageCreate'); + } + } + ``` + + +## onWindowStageDestroy + +onWindowStageDestroy(): void + +当WindowStage销毁后调用。 + +- 示例: + + ``` + class myAbility extends Ability { + onWindowStageDestroy() { + console.log('onWindowStageDestroy'); + } + } + ``` + + +## onWindowStageRestore + +onWindowStageRestore(windowStage: window.WindowStage): void + +当迁移多实例ability时,恢复WindowStage后调用。 + +- 参数: + | 参数名 | 类型 | 必填 | 说明 | + | -------- | -------- | -------- | -------- | + | windowStage | window.WindowStage | 是 | WindowStage相关信息。 | + +- 示例: + + ``` + class myAbility extends Ability { + onWindowStageRestore(windowStage) { + console.log('onWindowStageRestore'); + } + } + ``` + + +## onDestroy + +onDestroy(): void; + +Ability生命周期回调,在销毁时回调,执行资源清理等操作。 + +- 示例: + + ``` + class myAbility extends Ability { + onDestroy() { + console.log('onDestroy'); + } + } + ``` + + +## onForeground + +onForeground(): void; + +Ability生命周期回调,当应用处于前台时触发。 + +- 示例: + + ``` + class myAbility extends Ability { + onForeground() { + console.log('onForeground'); + } + } + ``` + + +## onBackground + +onBackground(): void; + +Ability生命周期回调,当应用处于后台时触发。 + +- 示例: + + ``` + class myAbility extends Ability { + onBackground() { + console.log('onBackground'); + } + } + ``` + + +## onContinue + +onContinue(wantParam : {[key: string]: any}): boolean; + +当ability迁移准备迁移时触发,保存数据。 + +- 参数: + | 参数名 | 类型 | 必填 | 说明 | + | -------- | -------- | -------- | -------- | + | wantParam | {[key: string]: any} | 是 | want相关参数。 | + +- 返回值: + | 类型 | 说明 | + | -------- | -------- | + | boolean | true表示同意迁移,false表示拒绝迁移。 | + +- 示例: + + ``` + class myAbility extends Ability { + onContinue(wantParams) { + console.log('onContinue'); + wantParams["myData"] = "my1234567"; + return true; + } + } + ``` + + +## onNewWant + +onNewWant(want: Want): void; + +当ability的启动模式设置为单例时回调会被调用。 + +- 参数: + | 参数名 | 类型 | 必填 | 说明 | + | -------- | -------- | -------- | -------- | + | want | [Want](js-apis-featureAbility.md#Want类型说明) | 是 | Want类型参数,如ability名称,包名等。 | + +- 示例: + + ``` + class myAbility extends Ability { + onNewWant(want) { + console.log('onNewWant, want:' + want.abilityName); + } + } + ``` + + +## onConfigurationUpdated + +onConfigurationUpdated(config: Configuration): void; + +当系统配置更新时调用。 + +- 参数: + | 参数名 | 类型 | 必填 | 说明 | + | -------- | -------- | -------- | -------- | + | config | [Configuration](#section188911144124715) | 是 | 表示需要更新的配置信息。 | + +- 示例: + + ``` + class myAbility extends Ability { + onConfigurationUpdated(config) { + console.log('onConfigurationUpdated, config:' + JSON.stringify(config)); + } + } + ``` + + +## Caller + +通用组件Caller通信客户端调用接口, 用来向通用组件服务端发送约定数据。 + + +### call + +call(method, data: rpc.Sequenceable): Promise<void>; + +向通用组件服务端发送约定序列化数据。 + +- 参数: + | 参数名 | 类型 | 必填 | 说明 | + | -------- | -------- | -------- | -------- | + | method | string | 是 | 约定的服务端注册事件字符串。 | + | data | rpc.Sequenceable | 是 | 由开发者实现的Sequenceable可序列化数据。 | + +- 返回值: + | 类型 | 说明 | + | -------- | -------- | + | Promise<void> | Promise形式返回应答。 | + +- 示例: + + ``` + import Ability from '@ohos.application.Ability'; + class MyMessageAble{ // 自定义的Sequenceable数据结构 + num: 0 + str: '' + constructor() {} + marshalling(messageParcel) { + messageParcel.writeInt(this.num); + messageParcel.writeString(this.str); + console.log('MyMessageAble marshalling num[' + this.num + '] str[' + this.str + ']'); + return true; + } + unmarshalling(messageParcel) { + this.num = messageParcel.readInt(); + this.str = messageParcel.readString(); + console.log('MyMessageAble unmarshalling num[' + this.num + '] str[' + this.str + ']'); + return true; + } + }; + var method = 'call_Function'; // 约定的通知消息字符串 + var caller; + export default class MainAbility extends Ability { + onWindowStageCreate(windowStage) { + caller = await this.context.startAbilityByCall({ + bundleName: "com.example.myservice", + abilityName: "com.example.myservice.MainAbility", + deviceId: "" + }); + let msg = new MyMessageAble(1, "world"); // 参考Sequenceable数据定义 + caller.call(method, msg) + .then(() => { + console.log('Caller call() called'); + }).catch((e) => { + console.log('Caller call() catch error ' + e); + }); + } + } + ``` + + +### callWithResult + +callWithResult(method, data: rpc.Sequenceable): Promise<rpc.MessageParcel>; + +向通用组件服务端发送约定序列化数据, 并将服务端返回的约定序列化数据带回。 + +- 参数: + | 参数名 | 类型 | 必填 | 说明 | + | -------- | -------- | -------- | -------- | + | method | string | 是 | 约定的服务端注册事件字符串。 | + | data | rpc.Sequenceable | 是 | 由开发者实现的Sequenceable可序列化数据。 | + +- 返回值: + | 类型 | 说明 | + | -------- | -------- | + | Promise<rpc.MessageParcel> | Promise形式返回通用组件服务端应答数据。 | + +- 示例: + + ``` + import Ability from '@ohos.application.Ability'; + class MyMessageAble{ + num: 0 + str: '' + constructor() {} + marshalling(messageParcel) { + messageParcel.writeInt(this.num); + messageParcel.writeString(this.str); + console.log('MyMessageAble marshalling num[' + this.num + '] str[' + this.str + ']'); + return true; + } + unmarshalling(messageParcel) { + this.num = messageParcel.readInt(); + this.str = messageParcel.readString(); + console.log('MyMessageAble unmarshalling num[' + this.num + '] str[' + this.str + ']'); + return true; + } + }; + var method = 'call_Function'; + var caller; + export default class MainAbility extends Ability { + onWindowStageCreate(windowStage) { + caller = await this.context.startAbilityByCall({ + bundleName: "com.example.myservice", + abilityName: "com.example.myservice.MainAbility", + deviceId: "" + }); + let msg = new MyMessageAble(1, "world"); + caller.callWithResult(method, msg) + .then((data) => { + console.log('Caller call() called'); + let retmsg = new MyMessageAble(0, ""); + data.readSequenceable(retmsg); + }).catch((e) => { + console.log('Caller call() catch error ' + e); + }); + } + } + ``` + + +### release + +release(): void; + +主动释放通用组件服务端的通信接口。 + +- 示例: + + ``` + import Ability from '@ohos.application.Ability'; + var caller; + export default class MainAbility extends Ability { + onWindowStageCreate(windowStage) { + caller = await this.context.startAbilityByCall({ + bundleName: "com.example.myservice", + abilityName: "com.example.myservice.MainAbility", + deviceId: "" + }); + try { + caller.release(); + } catch (e) { + console.log('Caller Release error ' + e); + } + } + } + ``` + + +### onRelease + +onRelease(callback: function): void; + +注册通用组件服务端Stub断开监听通知。 + +- 参数: + | 参数名 | 类型 | 必填 | 说明 | + | -------- | -------- | -------- | -------- | + | callback | function | 是 | 返回onRelease回调结果。 | + +- 示例: + + ``` + import Ability from '@ohos.application.Ability'; + var caller; + export default class MainAbility extends Ability { + onWindowStageCreate(windowStage) { + caller = await this.context.startAbilityByCall({ + bundleName: "com.example.myservice", + abilityName: "com.example.myservice.MainAbility", + deviceId: "" + }); + try { + caller.onRelease((str) => { + console.log(' Caller OnRelease CallBack is called ' + str); + }); + } catch (e) { + console.log('Caller Release error ' + e); + } + } + } + ``` + + +## Callee + +通用组件服务端注册和解除客户端caller通知送信的callback接口。 + + +### on + +on(method: string, callback: function): void; + +通用组件服务端注册消息通知callback。 + +- 参数: + | 参数名 | 类型 | 必填 | 说明 | + | -------- | -------- | -------- | -------- | + | method | string | 是 | 与客户端约定的通知消息字符串。 | + | callback | function | 是 | 一个rpc.MessageParcel类型入参的js通知同步回调函数, 回调函数至少要返回一个空的rpc.Sequenceable数据对象, 其他视为函数执行错误。 | + +- 示例: + + ``` + import Ability from '@ohos.application.Ability'; + class MyMessageAble{ + num: 0 + str: '' + constructor() {} + marshalling(messageParcel) { + messageParcel.writeInt(this.num); + messageParcel.writeString(this.str); + console.log('MyMessageAble marshalling num[' + this.num + '] str[' + this.str + ']'); + return true; + } + unmarshalling(messageParcel) { + this.num = messageParcel.readInt(); + this.str = messageParcel.readString(); + console.log('MyMessageAble unmarshalling num[' + this.num + '] str[' + this.str + ']'); + return true; + } + }; + var method = 'call_Function'; + function funcCallBack(pdata) { + console.log('Callee funcCallBack is called ' + pdata); + let msg = new MyMessageAble(0, ""); + pdata.readSequenceable(msg); + return new MyMessageAble(10, "Callee test"); + } + export default class MainAbility extends Ability { + onCreate(want, launchParam) { + console.log('Callee onCreate is called'); + this.callee.on(method, funcCallBack); + } + } + ``` + + +### off + +off(method: string): void; + +解除通用组件服务端注册消息通知callback。 + +- 参数: + | 参数名 | 类型 | 必填 | 说明 | + | -------- | -------- | -------- | -------- | + | method | string | 是 | 已注册的通知事件字符串。 | + +- 示例: + + ``` + import Ability from '@ohos.application.Ability'; + var method = 'call_Function'; + export default class MainAbility extends Ability { + onCreate(want, launchParam) { + console.log('Callee onCreate is called'); + this.callee.off(method); + } + } + ``` + diff --git a/zh-cn/application-dev/reference/apis/js-apis-application-abilitystage.md b/zh-cn/application-dev/reference/apis/js-apis-application-abilitystage.md new file mode 100644 index 0000000000000000000000000000000000000000..81409eb8908b0b0eb474c448bc3c706c42bc0b8e --- /dev/null +++ b/zh-cn/application-dev/reference/apis/js-apis-application-abilitystage.md @@ -0,0 +1,89 @@ +# AbilityStage + +- [导入模块](#导入模块) +- [onCreate](#onCreate) +- [onAcceptWant](#onAcceptWant) +- [onConfigurationUpdated](#onConfigurationUpdated) + + +> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** +> 本模块首批接口从API 9开始支持。 + + +AbilityStage是HAP包的运行时类。在HAP加载的时候,通知开发者,开发者可以在此进行该HAP的初始化(如资源预加载,线程创建等)。 + + +## 导入模块 + + +``` +import AbilityStage from '@ohos.application.AbilityStage'; +``` + + +## onCreate + +onCreate(): void + +当应用创建时调用。 + +- 示例 + + ``` + class MyAbilityStage extends AbilityStage { + onCreate() { + console.log("MyAbilityStage.onCreate is called") + } + } + ``` + + +## onAcceptWant + +onAcceptWant(want: Want): string; + +启动一个specified ability时触发的事件。 + +- 参数: + | 参数名 | 类型 | 必填 | 说明 | + | -------- | -------- | -------- | -------- | + | want | [Want](js-apis-featureAbility.md#Want类型说明) | 是 | Want类型参数,传入需要启动的ability的信息,如ability名称,包名等。 | + +- 返回值: + | 类型 | 说明 | + | -------- | -------- | + | string | 用户返回一个ability标识,如果之前启动过次标识的ability,不创建新的实例并拉回栈顶,否则创建新的实例并启动。 | + +- 示例 + + ``` + class MyAbilityStage extends AbilityStage { + onAcceptWant(want) { + console.log("MyAbilityStage.onAcceptWant called"); + return "com.example.test"; + } + } + ``` + + +## onConfigurationUpdated + +onConfigurationUpdated(config: Configuration): void; + +环境变化通知接口,发生全局配置变更时回调。 + +- 参数: + | 参数名 | 类型 | 必填 | 说明 | + | -------- | -------- | -------- | -------- | + | config | [Configuration](js-apis-configuration.md) | 是 | 发生全局配置变更时触发回调,当前全局配置包括系统语言、深浅色模式。 | + +- 示例: + + ``` + class MyAbilityStage extends AbilityStage { + onConfigurationUpdated(config) { + console.log('onConfigurationUpdated, language:' + config.language); + } + } + ``` + diff --git a/zh-cn/application-dev/reference/apis/js-apis-application-context.md b/zh-cn/application-dev/reference/apis/js-apis-application-context.md new file mode 100644 index 0000000000000000000000000000000000000000..ab48a6906570fd1a53415ae5e0add91269c97f85 --- /dev/null +++ b/zh-cn/application-dev/reference/apis/js-apis-application-context.md @@ -0,0 +1,78 @@ +# Context + +- [使用说明](#使用说明) +- [属性](#属性) +- [createBundleContext](#createBundleContext) +- [getApplicationContext](#getApplicationContext) + + +> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** +> 本模块首批接口从API version 9开始支持。 + + +提供开发者运行代码的上下文环境,包括应用信息、ResourceManager等信息。 + + +## 使用说明 + + +通过AbilityContext等集成实现。 + + +## 属性 + + | 名称 | 参数类型 | 可读 | 可写 | 说明 | +| -------- | -------- | -------- | -------- | -------- | +| resourceManager | ResourceManager | 是 | 否 | ResourceManager对象。 | +| applicationInfo | ApplicationInfo | 是 | 否 | 当前应用信息。 | +| cacheDir | string | 是 | 否 | 应用在内部存储上的缓存路径。 | +| tempDir | string | 是 | 否 | 应用的临时文件路径。 | +| filesDir | string | 是 | 否 | 应用在内部存储上的文件路径。 | +| databaseDir | string | 是 | 否 | 获取本地数据存储路径。 | +| storageDir | string | 是 | 否 | 获取轻量级数据存储路径。 | +| bundleCodeDir | string | 是 | 否 | 应用安装路径。 | +| distributedFilesDir | string | 是 | 否 | 应用的分布式文件路径。 | +| eventHub | [EventHub](js-apis-eventhub.md) | 是 | 否 | 事件中心信息。| + + +## createBundleContext + +createBundleContext(bundleName: string): Context; + +创建指定应用上下文。 + +- 参数: + | 参数名 | 类型 | 必填 | 说明 | + | -------- | -------- | -------- | -------- | + | bundleName | string | 是 | 应用bundle名。 | + +- 返回值: + | 类型 | 说明 | + | -------- | -------- | + | Context | 对应创建应用的上下文context。 | + +- 示例: + + ``` + let test = "com.huawei.test"; + let context = this.context.createBundleContext(test); + ``` + + +## getApplicationContext + +getApplicationContext(): Context; + +获取当前context。 + +- 返回值: + | 类型 | 说明 | + | -------- | -------- | + | Context | 当前Context 信息。 | + +- 示例: + + ``` + // 必选项。 + let context = this.context.getApplicationContext(); + ``` diff --git a/zh-cn/application-dev/reference/apis/js-apis-appmanager.md b/zh-cn/application-dev/reference/apis/js-apis-appmanager.md new file mode 100644 index 0000000000000000000000000000000000000000..795b19aa7713cb4479302563edbfe85e1e0c2ad9 --- /dev/null +++ b/zh-cn/application-dev/reference/apis/js-apis-appmanager.md @@ -0,0 +1,64 @@ +# appManager + +- [导入模块](#导入模块) +- [isRunningInStabilityTest](#isRunningInStabilityTest) +- [isRunningInStabilityTest](#isRunningInStabilityTest) + + +> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** +> 本模块首批接口从API 8开始支持。 + + +App运行相关信息。 + + +## 导入模块 + + +``` +import app from '@ohos.application.appManager'; +``` + + +## isRunningInStabilityTest + +static isRunningInStabilityTest(callback: AsyncCallback<boolean>): void + +查询当前用户是否是一个稳定性测试。 + +- 参数: + | 参数名 | 类型 | 必填 | 说明 | + | -------- | -------- | -------- | -------- | + | callback | AsyncCallback<boolean> | 否 | 返回当前是否处于稳定性测试场景。 | + +- 示例: + + ``` + import app from '@ohos.application.appManager'; + app.isRunningInStabilityTest((err, flag) => { + console.log('startAbility result:' + JSON.stringfy(err); + } + ``` + + +## isRunningInStabilityTest + +static isRunningInStabilityTest(): Promise<boolean> + +查询当前是否处于稳定性测试场景。 + +- 返回值: + | 类型 | 说明 | + | -------- | -------- | + | Promise<boolean> | 返回当前是否处于稳定性测试场景。 | + +- 示例: + + ``` + import app from '@ohos.application.appManager'; + app.isRunningInStabilityTest().then((flag) => { + console.log('success:' + JSON.stringfy(flag)); + )).catch((error) => { + console.log('failed:' + JSON.stringfy(error)); + }); + ``` diff --git a/zh-cn/application-dev/reference/apis/js-apis-bluetooth.md b/zh-cn/application-dev/reference/apis/js-apis-bluetooth.md old mode 100644 new mode 100755 index c843e0cb38b24a8c6d8f1ba36012a845716c0e4c..631329ebb3228fbb8a60293c7714fdd794bfee77 --- a/zh-cn/application-dev/reference/apis/js-apis-bluetooth.md +++ b/zh-cn/application-dev/reference/apis/js-apis-bluetooth.md @@ -1,3 +1,5 @@ +# 蓝牙 + > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** > 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 > @@ -155,7 +157,7 @@ pairDevice(deviceId: string): boolean | 参数名 | 类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | -| deviceId | string | 是 | 表示配对的远端设备地址,例如:"8F:8F:8E:8E:6D:6D"。 | +| deviceId | string | 是 | 表示配对的远端设备地址,例如:"XX:XX:XX:XX:XX:XX"。 | **返回值:** @@ -167,7 +169,82 @@ pairDevice(deviceId: string): boolean ``` // 实际的地址可由扫描流程获取 -let result = bluetooth.pairDevice("8F:8F:8E:8E:6D:6D"); +let result = bluetooth.pairDevice("XX:XX:XX:XX:XX:XX"); +``` + + +## bluetooth.cancelPairedDevice + +cancelPairedDevice(deviceId: string): boolean + +删除配对的远程设备。 + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | -------- | -------- | -------- | +| deviceId | string | 是 | 表示要删除的远程设备的地址,例如:"XX:XX:XX:XX:XX:XX"。 | + +**返回值:** + +| 类型 | 说明 | +| -------- | -------- | +| boolean | 启动取消配对,成功返回true,否则返回false。 | + +**示例:** + +``` +let result = bluetooth.cancelPairedDevice("XX:XX:XX:XX:XX:XX"); +``` + + +## bluetooth.getRemoteDeviceName + +getRemoteDeviceName(deviceId: string): string + +获取对端蓝牙设备的名称。 + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | -------- | -------- | -------- | +| deviceId | string | 是 | 表示远程设备的地址,例如:"XX:XX:XX:XX:XX:XX"。 | + +**返回值:** + +| 类型 | 说明 | +| -------- | -------- | +| string | 以字符串格式返回设备名称。 | + +**示例:** + +``` +let remoteDeviceName = bluetooth.getRemoteDeviceName("XX:XX:XX:XX:XX:XX"); +``` + + +## bluetooth.getRemoteDeviceClass + +getRemoteDeviceClass(deviceId: string): DeviceClass + +获取对端蓝牙设备的类别。 + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | -------- | -------- | -------- | +| deviceId | string | 是 | 表示远程设备的地址,例如:"XX:XX:XX:XX:XX:XX"。 | + +**返回值:** + +| 类型 | 说明 | +| -------- | -------- | +| [DeviceClass](#DeviceClass) | 远程设备的类别。 | + +**示例:** + +``` +let remoteDeviceClass = bluetooth.getRemoteDeviceClass("XX:XX:XX:XX:XX:XX"); ``` @@ -289,7 +366,7 @@ setDevicePairingConfirmation(device: string, accept: boolean): boolean | 参数名 | 类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | -| device | string | 是 | 表示远端设备地址,例如:"8F:8F:8E:8E:6D:6D"。 | +| device | string | 是 | 表示远端设备地址,例如:"XX:XX:XX:XX:XX:XX"。 | | accept | boolean | 是 | 接受配对请求设置为true,否则设置为false。 | **返回值:** @@ -600,7 +677,7 @@ sppConnect(device: string, option: SppOption, callback: AsyncCallback<number& | 参数名 | 类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | -| device | string | 是 | 对端设备地址,例如:"8F:8F:8E:8E:6D:6D"。 | +| device | string | 是 | 对端设备地址,例如:"XX:XX:XX:XX:XX:XX"。 | | option | [SppOption](#sppoption) | 是 | spp客户端连接配置参数。 | | callback | AsyncCallback<number> | 是 | 表示回调函数的入参,客户端socket的id。 | @@ -617,7 +694,7 @@ function clientSocket(code, number) { clientNumber = number; } let sppOption = {uuid: '00001810-0000-1000-8000-00805F9B34FB', secure: false, type: 0}; -bluetooth.sppConnect('8F:8F:8E:8E:6D:6D', sppOption, clientSocket); +bluetooth.sppConnect('XX:XX:XX:XX:XX:XX', sppOption, clientSocket); ``` @@ -780,7 +857,7 @@ createGattClientDevice(deviceId: string): GattClientDevice | 参数名 | 类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | -| deviceId | string | 是 | 对端设备地址, 例如:"8F:8F:8E:8E:6D:6D"。 | +| deviceId | string | 是 | 对端设备地址, 例如:"XX:XX:XX:XX:XX:XX"。 | **返回值:** @@ -791,7 +868,7 @@ createGattClientDevice(deviceId: string): GattClientDevice **示例:** ``` -let device = bluetooth.BLE.createGattClientDevice('8F:8F:8E:8E:6D:6D'); +let device = bluetooth.BLE.createGattClientDevice('XX:XX:XX:XX:XX:XX'); ``` @@ -840,7 +917,7 @@ function onReceiveEvent(data) { bluetooth.BLE.on("BLEDeviceFind", onReceiveEvent); bluetooth.BLE.startBLEScan( [{ - deviceId:"8F:8F:8E:8E:6D:6D", + deviceId:"XX:XX:XX:XX:XX:XX", name:"test", serviceUuid:"00001888-0000-1000-8000-00805f9b34fb" }], @@ -1117,7 +1194,7 @@ server端特征值发生变化时,主动通知已连接的client设备。 | 参数名 | 类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | -| deviceId | string | 是 | 接收通知的client端设备地址,例如“8F:8F:8E:8E:6D:6D”。 | +| deviceId | string | 是 | 接收通知的client端设备地址,例如“XX:XX:XX:XX:XX:XX”。 | | notifyCharacteristic | [NotifyCharacteristic](#notifycharacteristic) | 是 | 通知的特征值数据。 | **返回值:** @@ -1133,7 +1210,7 @@ server端特征值发生变化时,主动通知已连接的client设备。 let notifyCharacteristic = {serviceUuid: '00001810-0000-1000-8000-00805F9B34FB', characteristicUuid: '00001821-0000-1000-8000-00805F9B34FB', characteristicValue: notifyCcc.characteristicValue, confirm: false}; let server = bluetooth.BLE.createGattServer(); -server.notifyCharacteristicChanged('8F:8F:8E:8E:6D:6D', notifyCharacteristic); +server.notifyCharacteristicChanged('XX:XX:XX:XX:XX:XX', notifyCharacteristic); ``` @@ -1164,7 +1241,7 @@ let arrayBufferCCC = new ArrayBuffer(8); let cccValue = new Uint8Array(arrayBufferCCC); cccValue[0] = 1123; let serverResponse = { - "deviceId": "8F:8F:8E:8E:6D:6D", + "deviceId": "XX:XX:XX:XX:XX:XX", "transId": 0, "status": 0, "offset": 0, @@ -1538,7 +1615,7 @@ client端发起连接远端蓝牙低功耗设备。 **示例:** ``` -let device = bluetooth.BLE.createGattClientDevice('8F:8F:8E:8E:6D:6D'); +let device = bluetooth.BLE.createGattClientDevice('XX:XX:XX:XX:XX:XX'); let ret = device.connect(); ``` @@ -1558,7 +1635,7 @@ client端断开与远端蓝牙低功耗设备的连接。 **示例:** ``` -let device = bluetooth.BLE.createGattClientDevice('8F:8F:8E:8E:6D:6D'); +let device = bluetooth.BLE.createGattClientDevice('XX:XX:XX:XX:XX:XX'); let ret = device.disconnect(); ``` @@ -1578,7 +1655,7 @@ close(): boolean **示例:** ``` -let device = bluetooth.BLE.createGattClientDevice('8F:8F:8E:8E:6D:6D'); +let device = bluetooth.BLE.createGattClientDevice('XX:XX:XX:XX:XX:XX'); let ret = device.close(); ``` @@ -1617,7 +1694,7 @@ function getServices(code, gattServices) { } } -let device = bluetooth.BLE.createGattClientDevice('8F:8F:8E:8E:6D:6D'); +let device = bluetooth.BLE.createGattClientDevice('XX:XX:XX:XX:XX:XX'); device.connect(); device.getServices(getServices); ``` @@ -1641,7 +1718,7 @@ client端获取蓝牙低功耗设备的所有服务,即服务发现。 ``` // Promise 模式 -let device = bluetooth.BLE.createGattClientDevice('8F:8F:8E:8E:6D:6D'); +let device = bluetooth.BLE.createGattClientDevice('XX:XX:XX:XX:XX:XX'); device.connect(); let services = device.getServices(); console.log("bluetooth services size is ", services.length); @@ -1681,7 +1758,7 @@ function readCcc(code, BLECharacteristic) { console.log('bluetooth characteristic value: ' + value[0] +','+ value[1]+','+ value[2]+','+ value[3]); } -let device = bluetooth.BLE.createGattClientDevice('8F:8F:8E:8E:6D:6D'); +let device = bluetooth.BLE.createGattClientDevice('XX:XX:XX:XX:XX:XX'); let descriptors = []; let bufferDesc = new ArrayBuffer(8); let descV = new Uint8Array(bufferDesc); @@ -1724,7 +1801,7 @@ client端读取蓝牙低功耗设备特定服务的特征值。 **示例:** ``` -let device = bluetooth.BLE.createGattClientDevice('8F:8F:8E:8E:6D:6D'); +let device = bluetooth.BLE.createGattClientDevice('XX:XX:XX:XX:XX:XX'); let descriptors = []; let bufferDesc = new ArrayBuffer(8); let descV = new Uint8Array(bufferDesc); @@ -1774,7 +1851,7 @@ function readDesc(code, BLEDescriptor) { console.log('bluetooth descriptor value: ' + value[0] +','+ value[1]+','+ value[2]+','+ value[3]); } -let device = bluetooth.BLE.createGattClientDevice('8F:8F:8E:8E:6D:6D'); +let device = bluetooth.BLE.createGattClientDevice('XX:XX:XX:XX:XX:XX'); let bufferDesc = new ArrayBuffer(8); let descV = new Uint8Array(bufferDesc); descV[0] = 11; @@ -1807,7 +1884,7 @@ client端读取蓝牙低功耗设备特定的特征包含的描述符。 **示例:** ``` -let device = bluetooth.BLE.createGattClientDevice('8F:8F:8E:8E:6D:6D'); +let device = bluetooth.BLE.createGattClientDevice('XX:XX:XX:XX:XX:XX'); let bufferDesc = new ArrayBuffer(8); let descV = new Uint8Array(bufferDesc); descV[0] = 11; @@ -1839,7 +1916,7 @@ client端向低功耗蓝牙设备写入特定的特征值。 **示例:** ``` -let device = bluetooth.BLE.createGattClientDevice('8F:8F:8E:8E:6D:6D'); +let device = bluetooth.BLE.createGattClientDevice('XX:XX:XX:XX:XX:XX'); let descriptors = []; let bufferDesc = new ArrayBuffer(8); let descV = new Uint8Array(bufferDesc); @@ -1885,7 +1962,7 @@ client端向低功耗蓝牙设备特定的描述符写入二进制数据。 **示例:** ``` -let device = bluetooth.BLE.createGattClientDevice('8F:8F:8E:8E:6D:6D'); +let device = bluetooth.BLE.createGattClientDevice('XX:XX:XX:XX:XX:XX'); let bufferDesc = new ArrayBuffer(8); let descV = new Uint8Array(bufferDesc); descV[0] = 22; @@ -1922,7 +1999,7 @@ client协商远端蓝牙低功耗设备的最大传输单元(Maximum Transmiss **示例:** ``` -let device = bluetooth.BLE.createGattClientDevice('8F:8F:8E:8E:6D:6D'); +let device = bluetooth.BLE.createGattClientDevice('XX:XX:XX:XX:XX:XX'); device.setBLEMtuSize(128); ``` @@ -1949,7 +2026,7 @@ setNotifyCharacteristicChanged(characteristic: BLECharacteristic, enable: boolea **示例:** ``` -let device = bluetooth.BLE.createGattClientDevice('8F:8F:8E:8E:6D:6D'); +let device = bluetooth.BLE.createGattClientDevice('XX:XX:XX:XX:XX:XX'); device.setNotifyCharacteristicChanged(notifyCcc, false); ``` @@ -1979,7 +2056,7 @@ function CharacteristicChange(CharacteristicChangeReq) { let characteristicUuid = CharacteristicChangeReq.characteristicUuid; let value = new Uint8Array(CharacteristicChangeReq.characteristicValue); } -let device = bluetooth.BLE.createGattClientDevice('8F:8F:8E:8E:6D:6D'); +let device = bluetooth.BLE.createGattClientDevice('XX:XX:XX:XX:XX:XX'); device.on('BLECharacteristicChange', CharacteristicChange); ``` @@ -2004,7 +2081,7 @@ off(type: "BLECharacteristicChange", callback?: Callback<BLECharacteristic> **示例:** ``` -let device = bluetooth.BLE.createGattClientDevice('8F:8F:8E:8E:6D:6D'); +let device = bluetooth.BLE.createGattClientDevice('XX:XX:XX:XX:XX:XX'); device.off('BLECharacteristicChange'); ``` @@ -2033,7 +2110,7 @@ function ConnectStateChanged(state) { console.log('bluetooth connect state changed'); let connectState = state.state; } -let device = bluetooth.BLE.createGattClientDevice('8F:8F:8E:8E:6D:6D'); +let device = bluetooth.BLE.createGattClientDevice('XX:XX:XX:XX:XX:XX'); device.on('BLEConnectionStateChange', ConnectStateChanged); ``` @@ -2058,7 +2135,7 @@ off(type: "BLEConnectionStateChange", callback?: Callback<BLEConnectChangedSt **示例:** ``` -let device = bluetooth.BLE.createGattClientDevice('8F:8F:8E:8E:6D:6D'); +let device = bluetooth.BLE.createGattClientDevice('XX:XX:XX:XX:XX:XX'); device.off('BLEConnectionStateChange'); ``` @@ -2083,7 +2160,7 @@ client获取远端蓝牙低功耗设备名。 ``` // callback -let gattClient = bluetooth.BLE.createGattClientDevice("8F:8F:8E:8E:6D:6D"); +let gattClient = bluetooth.BLE.createGattClientDevice("XX:XX:XX:XX:XX:XX"); let deviceName = gattClient.getDeviceName((err, data)=> { console.info('device name err ' + JSON.stringify(err)); console.info('device name' + JSON.stringify(data)); @@ -2107,7 +2184,7 @@ client获取远端蓝牙低功耗设备名。 ``` // promise -let gattClient = bluetooth.BLE.createGattClientDevice("8F:8F:8E:8E:6D:6D"); +let gattClient = bluetooth.BLE.createGattClientDevice("XX:XX:XX:XX:XX:XX"); let ret = device.connect(); let deviceName = gattClient.getDeviceName().then((data) => { console.info('device name' + JSON.stringify(data)); @@ -2135,7 +2212,7 @@ client获取远端蓝牙低功耗设备的信号强度 (Received Signal Strength ``` // callback -let gattClient = bluetooth.BLE.createGattClientDevice("8F:8F:8E:8E:6D:6D"); +let gattClient = bluetooth.BLE.createGattClientDevice("XX:XX:XX:XX:XX:XX"); let ret = device.connect(); let rssi = gattClient.getRssiValue((err, data)=> { console.info('rssi err ' + JSON.stringify(err)); @@ -2160,7 +2237,7 @@ client获取远端蓝牙低功耗设备的信号强度 (Received Signal Strength ``` // promise -let gattClient = bluetooth.BLE.createGattClientDevice("8F:8F:8E:8E:6D:6D"); +let gattClient = bluetooth.BLE.createGattClientDevice("XX:XX:XX:XX:XX:XX"); let rssi = gattClient.getRssiValue().then((data) => { console.info('rssi' + JSON.stringify(data)); }) @@ -2266,7 +2343,7 @@ let rssi = gattClient.getRssiValue().then((data) => { | 名称 | 参数类型 | 可读 | 可写 | 说明 | | -------- | -------- | -------- | -------- | -------- | -| deviceId | string | 是 | 否 | 表示发送特征值读请求的远端设备地址,例如:"8F:8F:8E:8E:6D:6D"。 | +| deviceId | string | 是 | 否 | 表示发送特征值读请求的远端设备地址,例如:"XX:XX:XX:XX:XX:XX"。 | | transId | number | 是 | 否 | 表示读请求的传输ID,server端回复响应时需填写相同的传输ID。 | | offset | number | 是 | 否 | 表示读特征值数据的起始位置。例如:k表示从第k个字节开始读,server端回复响应时需填写相同的offset。 | | characteristicUuid | string | 是 | 否 | 特定特征(characteristic)的UUID,例如:00002a11-0000-1000-8000-00805f9b34fb。 | @@ -2279,7 +2356,7 @@ let rssi = gattClient.getRssiValue().then((data) => { | 名称 | 参数类型 | 可读 | 可写 | 说明 | | -------- | -------- | -------- | -------- | -------- | -| deviceId | string | 是 | 否 | 表示发送特征值写请求的远端设备地址,例如:"8F:8F:8E:8E:6D:6D"。 | +| deviceId | string | 是 | 否 | 表示发送特征值写请求的远端设备地址,例如:"XX:XX:XX:XX:XX:XX"。 | | transId | number | 是 | 否 | 表示写请求的传输ID,server端回复响应时需填写相同的传输ID。 | | offset | number | 是 | 否 | 表示写特征值数据的起始位置。例如:k表示从第k个字节开始写,server端回复响应时需填写相同的offset。 | | descriptorUuid | string | 是 | 否 | 表示描述符(descriptor)的UUID,例如:00002902-0000-1000-8000-00805f9b34fb。 | @@ -2293,7 +2370,7 @@ let rssi = gattClient.getRssiValue().then((data) => { | 名称 | 参数类型 | 可读 | 可写 | 说明 | | -------- | -------- | -------- | -------- | -------- | -| deviceId | string | 是 | 否 | 表示发送描述符读请求的远端设备地址,例如:"8F:8F:8E:8E:6D:6D"。 | +| deviceId | string | 是 | 否 | 表示发送描述符读请求的远端设备地址,例如:"XX:XX:XX:XX:XX:XX"。 | | transId | number | 是 | 否 | 表示读请求的传输ID,server端回复响应时需填写相同的传输ID。 | | offset | number | 是 | 否 | 表示读描述符数据的起始位置。例如:k表示从第k个字节开始读,server端回复响应时需填写相同的offset。 | | descriptorUuid | string | 是 | 否 | 表示描述符(descriptor)的UUID,例如:00002902-0000-1000-8000-00805f9b34fb。 | @@ -2307,7 +2384,7 @@ let rssi = gattClient.getRssiValue().then((data) => { | 名称 | 参数类型 | 可读 | 可写 | 说明 | | -------- | -------- | -------- | -------- | -------- | -| deviceId | string | 是 | 否 | 表示发送描述符写请求的远端设备地址,例如:"8F:8F:8E:8E:6D:6D"。 | +| deviceId | string | 是 | 否 | 表示发送描述符写请求的远端设备地址,例如:"XX:XX:XX:XX:XX:XX"。 | | transId | number | 是 | 否 | 表示写请求的传输ID,server端回复响应时需填写相同的传输ID。 | | offset | number | 是 | 否 | 表示写描述符数据的起始位置。例如:k表示从第k个字节开始写,server端回复响应时需填写相同的offset。 | | isPrep | boolean | 是 | 否 | 表示写请求是否立即执行。 | @@ -2324,7 +2401,7 @@ let rssi = gattClient.getRssiValue().then((data) => { | 名称 | 参数类型 | 可读 | 可写 | 说明 | | -------- | -------- | -------- | -------- | -------- | -| deviceId | string | 是 | 否 | 表示远端设备地址,例如:"8F:8F:8E:8E:6D:6D"。 | +| deviceId | string | 是 | 否 | 表示远端设备地址,例如:"XX:XX:XX:XX:XX:XX"。 | | transId | number | 是 | 否 | 表示请求的传输ID,与订阅的读/写请求事件携带的ID保持一致。 | | status | number | 是 | 否 | 表示响应的状态,设置为0即可,表示正常。 | | offset | number | 是 | 否 | 表示请求的读/写起始位置,与订阅的读/写请求事件携带的offset保持一致。 | @@ -2337,7 +2414,7 @@ let rssi = gattClient.getRssiValue().then((data) => { | 名称 | 参数类型 | 可读 | 可写 | 说明 | | -------- | -------- | -------- | -------- | -------- | -| deviceId | string | 是 | 否 | 表示远端设备地址,例如:"8F:8F:8E:8E:6D:6D"。 | +| deviceId | string | 是 | 否 | 表示远端设备地址,例如:"XX:XX:XX:XX:XX:XX"。 | | state | [ProfileConnectionState](#ProfileConnectionState) | 是 | 是 | 表示BLE连接状态的枚举。 | @@ -2359,7 +2436,7 @@ let rssi = gattClient.getRssiValue().then((data) => { | 名称 | 参数类型 | 可读 | 可写 | 说明 | | -------- | -------- | -------- | -------- | -------- | -| deviceId | string | 是 | 是 | 表示过滤的BLE设备地址,例如:"8F:8F:8E:8E:6D:6D"。 | +| deviceId | string | 是 | 是 | 表示过滤的BLE设备地址,例如:"XX:XX:XX:XX:XX:XX"。 | | name | string | 是 | 是 | 表示过滤的BLE设备名。 | | serviceUuid | string | 是 | 是 | 表示过滤包含该UUID服务的设备,例如:00001888-0000-1000-8000-00805f9b34fb。 | @@ -2402,7 +2479,7 @@ let rssi = gattClient.getRssiValue().then((data) => { | 名称 | 参数类型 | 可读 | 可写 | 说明 | | -------- | -------- | -------- | -------- | -------- | -| deviceId | string | 是 | 否 | 表示扫描到的设备地址,例如:"8F:8F:8E:8E:6D:6D"。 | +| deviceId | string | 是 | 否 | 表示扫描到的设备地址,例如:"XX:XX:XX:XX:XX:XX"。 | | rssi | number | 是 | 否 | 表示扫描到的设备的rssi值。 | | data | ArrayBuffer | 是 | 否 | 表示扫描到的设备发送的广播包。 | @@ -2472,3 +2549,127 @@ let rssi = gattClient.getRssiValue().then((data) => { | -------- | -------- | -------- | -------- | -------- | | deviceId | string | 是 | 否 | 表示要配对的设备ID。 | | pinCode | string | 是 | 否 | 表示要配对的密钥。 | + + +## DeviceClass + +描述蓝牙设备的类别。 + +| 名称 | 参数类型 | 可读 | 可写 | 说明 | +| -------- | -------- | -------- | -------- | -------- | +| majorClass | [MajorClass](#MajorClass) | 是 | 否 | 表示蓝牙设备主要类别的枚举。 | +| majorMinorClass | [MajorMinorClass](#MajorMinorClass) | 是 | 否 | 表示主要次要蓝牙设备类别的枚举。 | +| classOfDevice | number | 是 | 否 | 表示设备类别。 | + + +## MajorClass + +枚举,蓝牙设备主要类别。 + +| 名称 | 默认值 | 说明 | +| -------- | -------- | -------- | +| MAJOR_MISC | 0x0000 | 表示杂项设备。 | +| MAJOR_COMPUTER | 0x0100 | 表示计算机设备。 | +| MAJOR_PHONE | 0x0200 | 表示手机设备。 | +| MAJOR_NETWORKING | 0x0300 | 表示网络设备。 | +| MAJOR_AUDIO_VIDEO | 0x0400 | 表示音频和视频设备。 | +| MAJOR_PERIPHERAL | 0x0500 | 表示外围设备。 | +| MAJOR_IMAGING | 0x0600 | 表示成像设备。 | +| MAJOR_WEARABLE | 0x0700 | 表示可穿戴设备。 | +| MAJOR_TOY | 0x0800 | 表示玩具设备。 | +| MAJOR_HEALTH | 0x0900 | 表示健康设备。 | +| MAJOR_UNCATEGORIZED | 0x1F00 | 表示未分类设备。 | + + +## MajorMinorClass + +枚举,主要次要蓝牙设备类别。 + +| 名称 | 默认值 | 说明 | +| -------- | -------- | -------- | +| COMPUTER_UNCATEGORIZED | 0x0100 | 表示未分类计算机设备。 | +| COMPUTER_DESKTOP | 0x0104 | 表示台式计算机设备。 | +| COMPUTER_SERVER | 0x0108 | 表示服务器设备。 | +| COMPUTER_LAPTOP | 0x010C | 表示便携式计算机设备。 | +| COMPUTER_HANDHELD_PC_PDA | 0x0110 | 表示手持式计算机设备。 | +| COMPUTER_PALM_SIZE_PC_PDA | 0x0114 | 表示掌上电脑设备。 | +| COMPUTER_WEARABLE | 0x0118 | 表示可穿戴计算机设备。 | +| COMPUTER_TABLET | 0x011C | 表示平板电脑设备。 | +| PHONE_UNCATEGORIZED | 0x0200 | 表示未分类手机设备。 | +| PHONE_CELLULAR | 0x0204 | 表示便携式手机设备。 | +| PHONE_CORDLESS | 0x0208 | 表示无线电话设备。 | +| PHONE_SMART | 0x020C | 表示智能手机设备。 | +| PHONE_MODEM_OR_GATEWAY | 0x0210 | 表示调制解调器或网关手机设备。 | +| PHONE_ISDN | 0x0214 | 表示ISDN手机设备。 | +| NETWORK_FULLY_AVAILABLE | 0x0300 | 表示网络完全可用设备。 | +| NETWORK_1_TO_17_UTILIZED | 0x0320 | 表示使用网络1到17设备。 | +| NETWORK_17_TO_33_UTILIZED | 0x0340 | 表示使用网络17到33设备。 | +| NETWORK_33_TO_50_UTILIZED | 0x0360 | 表示使用网络33到50设备。 | +| NETWORK_60_TO_67_UTILIZED | 0x0380 | 表示使用网络60到67设备。 | +| NETWORK_67_TO_83_UTILIZED | 0x03A0 | 表示使用网络67到83设备。 | +| NETWORK_83_TO_99_UTILIZED | 0x03C0 | 表示使用网络83到99设备。 | +| NETWORK_NO_SERVICE | 0x03E0 | 表示网络无服务设备。 +| AUDIO_VIDEO_UNCATEGORIZED | 0x0400 | 表示未分类音频视频设备。 | +| AUDIO_VIDEO_WEARABLE_HEADSET | 0x0404 | 表示可穿戴式音频视频设备。 | +| AUDIO_VIDEO_HANDSFREE | 0x0408 | 表示免提音频视频设备。 | +| AUDIO_VIDEO_MICROPHONE | 0x0410 | 表示麦克风音频视频设备。 | +| AUDIO_VIDEO_LOUDSPEAKER | 0x0414 | 表示扬声器音频视频设备。 | +| AUDIO_VIDEO_HEADPHONES | 0x0418 | 表示头戴式音频视频设备。 | +| AUDIO_VIDEO_PORTABLE_AUDIO | 0x041C | 表示便携式音频视频设备。 | +| AUDIO_VIDEO_CAR_AUDIO | 0x0420 | 表示汽车音频视频设备。 | +| AUDIO_VIDEO_SET_TOP_BOX | 0x0424 | 表示机顶盒音频视频设备。 | +| AUDIO_VIDEO_HIFI_AUDIO | 0x0428 | 表示高保真音响设备。 | +| AUDIO_VIDEO_VCR| 0x042C | 表示录像机音频视频设备。 | +| AUDIO_VIDEO_VIDEO_CAMERA | 0x0430 | 表示照相机音频视频设备。 | +| AUDIO_VIDEO_CAMCORDER | 0x0434 | 表示摄像机音频视频设备。 | +| AUDIO_VIDEO_VIDEO_MONITOR | 0x0438 | 表示监视器音频视频设备。 | +| AUDIO_VIDEO_VIDEO_DISPLAY_AND_LOUDSPEAKER | 0x043C | 表示视频显示器和扬声器设备。 | +| AUDIO_VIDEO_VIDEO_CONFERENCING | 0x0440 | 表示音频视频会议设备。 | +| AUDIO_VIDEO_VIDEO_GAMING_TOY | 0x0448 | 表示游戏玩具音频视频设备。 | +| PERIPHERAL_NON_KEYBOARD_NON_POINTING | 0x0500 | 表示非键盘非指向外围设备。 | +| PERIPHERAL_KEYBOARD | 0x0540 | 表示外设键盘设备。 | +| PERIPHERAL_POINTING_DEVICE | 0x0580 | 表示定点装置外围设备。 | +| PERIPHERAL_KEYBOARD_POINTING| 0x05C0 | 表示键盘指向外围设备。 | +| PERIPHERAL_UNCATEGORIZED | 0x0500 | 表示未分类外围设备。 | +| PERIPHERAL_JOYSTICK | 0x0504 | 表示周边操纵杆设备。 | +| PERIPHERAL_GAMEPAD | 0x0508 | 表示周边游戏板设备。 | +| PERIPHERAL_REMOTE_CONTROL | 0x05C0 | 表示远程控制外围设备。 | +| PERIPHERAL_SENSING_DEVICE | 0x0510 | 表示外围传感设备设备。 | +| PERIPHERAL_DIGITIZER_TABLET | 0x0514 | 表示外围数字化仪平板电脑设备。 | +| PERIPHERAL_CARD_READER | 0x0518 | 表示外围读卡器设备。 | +| PERIPHERAL_DIGITAL_PEN | 0x051C | 表示外设数码笔设备。 | +| PERIPHERAL_SCANNER_RFID | 0x0520 | 表示射频识别扫描仪外围设备。 | +| PERIPHERAL_GESTURAL_INPUT | 0x0522 | 表示手势输入外围设备。 | +| IMAGING_UNCATEGORIZED | 0x0600 | 表示未分类的图像设备。 | +| IMAGING_DISPLAY | 0x0610 | 表示图像显示设备。 | +| IMAGING_CAMERA | 0x0620 | 表示成像照相机设备。 | +| IMAGING_SCANNER | 0x0640 | 表示成像扫描仪设备。 | +| IMAGING_PRINTER | 0x0680 | 表示成像打印机设备。 | +| WEARABLE_UNCATEGORIZED | 0x0700 | 表示未分类的可穿戴设备。 | +| WEARABLE_WRIST_WATCH | 0x0704 | 表示可穿戴腕表设备。 | +| WEARABLE_PAGER | 0x0708 | 表示可穿戴寻呼机设备。 | +| WEARABLE_JACKET | 0x070C | 表示夹克可穿戴设备。 | +| WEARABLE_HELMET | 0x0710 | 表示可穿戴头盔设备。 | +| WEARABLE_GLASSES | 0x0714 | 表示可穿戴眼镜设备。 | +| TOY_UNCATEGORIZED | 0x0800 | 表示未分类的玩具设备。 | +| TOY_ROBOT| 0x0804 | 表示玩具机器人设备。 | +| TOY_VEHICLE | 0x0808 | 表示玩具车设备。 | +| TOY_DOLL_ACTION_FIGURE | 0x080C | 表示人形娃娃玩具设备。 | +| TOY_CONTROLLER | 0x0810 | 表示玩具控制器设备。 | +| TOY_GAME | 0x0814 | 表示玩具游戏设备。 | +| HEALTH_UNCATEGORIZED | 0x0900 | 表示未分类健康设备。 | +| HEALTH_BLOOD_PRESSURE | 0x0904 | 表示血压健康设备。 | +| HEALTH_THERMOMETER | 0x0908 | 表示温度计健康设备。 | +| HEALTH_WEIGHING | 0x090C | 表示体重健康设备。 | +| HEALTH_GLUCOSE | 0x0910 | 表示葡萄糖健康设备。 | +| HEALTH_PULSE_OXIMETER | 0x0914 | 表示脉搏血氧仪健康设备。 | +| HEALTH_PULSE_RATE | 0x0918 | 表示脉搏率健康设备。 | +| HEALTH_DATA_DISPLAY | 0x091C | 表示数据显示健康设备。 | +| HEALTH_STEP_COUNTER | 0x0920 | 表示阶梯计数器健康设备。 | +| HEALTH_BODY_COMPOSITION_ANALYZER | 0x0924 | 表示身体成分分析仪健康设备。 | +| HEALTH_PEAK_FLOW_MOITOR | 0x0928 | 表示湿度计健康设备。 | +| HEALTH_MEDICATION_MONITOR | 0x092C | 表示药物监视仪健康设备。 | +| HEALTH_KNEE_PROSTHESIS | 0x0930 | 表示膝盖假肢健康设备。 | +| HEALTH_ANKLE_PROSTHESIS | 0x0934 | 表示脚踝假肢健康设备。 | +| HEALTH_GENERIC_HEALTH_MANAGER | 0x0938 | 表示通用健康管理设备。 | +| HEALTH_PERSONAL_MOBILITY_DEVICE | 0x093C | 表示个人移动健康设备。 | 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 ea4ea2cbf1b6e6dfdee82a01fb68d69a05ccacbe..2319264154c907ca625343e05a9478a3321886b5 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-call.md +++ b/zh-cn/application-dev/reference/apis/js-apis-call.md @@ -17,7 +17,9 @@ dial\(phoneNumber: string, callback: AsyncCallback\): void 拨打电话,使用callback方式作为异步方法。 -需要权限:ohos.permission.PLACE\_CALL权限,该权限为系统权限。 +**需要权限**:ohos.permission.PLACE\_CALL,该权限为系统权限 + +**系统能力**:SystemCapability.Telephony.CallManager **参数:** @@ -41,7 +43,9 @@ dial\(phoneNumber: string, options: DialOptions, callback: AsyncCallback 拨打电话,可设置通话参数,使用promise方式作为异步方法。 -需要权限:ohos.permission.PLACE\_CALL权限,该权限为系统权限。 +**需要权限**:ohos.permission.PLACE\_CALL,该权限为系统权限 + +**系统能力**:SystemCapability.Telephony.CallManager **参数:** @@ -102,6 +108,8 @@ hasCall\(callback: AsyncCallback\): void 判断是否存在通话,使用callback方式作为异步方法。 +**系统能力**:SystemCapability.Telephony.CallManager + **参数:** | 参数 | 类型 | 必填 | 说明 | @@ -123,6 +131,8 @@ hasCall\(\): Promise 判断是否存在通话,使用Promise方式作为异步方法。 +**系统能力**:SystemCapability.Telephony.CallManager + **返回值:** | 类型 | 说明 | @@ -147,6 +157,8 @@ getCallState\(callback: AsyncCallback\): void 获取通话状态,使用callback方式作为异步方法。 +**系统能力**:SystemCapability.Telephony.CallManager + **参数:** | 参数 | 类型 | 必填 | 说明 | @@ -168,6 +180,8 @@ getCallState\(\): Promise 获取通话状态,使用Promise方式作为异步方法。 +**系统能力**:SystemCapability.Telephony.CallManager + **返回值:** | 类型 | 说明 | @@ -191,6 +205,8 @@ isEmergencyPhoneNumber\(phoneNumber: string, callback: AsyncCallback\) 判断是否是紧急电话号码,使用callback方式作为异步方法。 +**系统能力**:SystemCapability.Telephony.CallManager + **参数:** | 参数 | 类型 | 必填 | 说明 | @@ -213,6 +229,8 @@ isEmergencyPhoneNumber\(phoneNumber: string, options: EmergencyNumberOptions, ca 判断是否是紧急电话号码,使用callback方式作为异步方法。 +**系统能力**:SystemCapability.Telephony.CallManager + **参数:** | 参数 | 类型 | 必填 | 说明 | @@ -236,6 +254,8 @@ isEmergencyPhoneNumber\(phoneNumber: string, options?: EmergencyNumberOptions\): 判断是否是紧急电话号码,使用promise方式作为异步方法。 +**系统能力**:SystemCapability.Telephony.CallManager + **参数:** | 参数 | 类型 | 必填 | 说明 | @@ -266,6 +286,8 @@ formatPhoneNumber\(phoneNumber: string, callback: AsyncCallback\): void 格式化电话号码,使用callback方式作为异步方法。 +**系统能力**:SystemCapability.Telephony.CallManager + **参数:** | 参数 | 类型 | 必填 | 说明 | @@ -288,6 +310,8 @@ formatPhoneNumber\(phoneNumber: string, options: NumberFormatOptions, callback: 格式化电话号码,可设置格式化参数,使用callback方式作为异步方法。 +**系统能力**:SystemCapability.Telephony.CallManager + **参数:** | 参数 | 类型 | 必填 | 说明 | @@ -313,6 +337,8 @@ formatPhoneNumber\(phoneNumber: string, options?: NumberFormatOptions\): Promise 格式化电话号码,可设置格式化参数,使用promise方式作为异步方法。 +**系统能力**:SystemCapability.Telephony.CallManager + **参数:** | 参数 | 类型 | 必填 | 说明 | @@ -349,6 +375,8 @@ formatPhoneNumberToE164\(phoneNumber: string, countryCode: string, callback: Asy 支持所有国家码。 +**系统能力**:SystemCapability.Telephony.CallManager + **参数:** | 参数 | 类型 | 必填 | 说明 | @@ -378,6 +406,8 @@ formatPhoneNumberToE164\(phoneNumber: string, countryCode: string\): Promise { ## DialOptions 拨打电话的可选参数。 + +**系统能力**:SystemCapability.Telephony.CallManager + | 参数 | 类型 | 必填 | 说明 | | ------ | ------- | ---- | ------------------------------------------------------------ | | extras | boolean | 否 | 根据extras的值判断是否为视频通话,默认为语音通话。
- true:视频通话。
- fasle:语音通话。 | @@ -414,16 +447,20 @@ promise.then(data => { ## CallState 通话状态码。 + | 变量 | 值 | 说明 | | ------------------ | ---- | ------------------------------------------------------------ | -| CALL_STATE_UNKNOWN | -1 | 无效状态,当获取呼叫状态失败时返回。 | -| CALL_STATE_IDLE | 0 | 表示没有正在进行的呼叫。 | -| CALL_STATE_RINGING | 1 | 表示来电正在振铃或等待。 | -| CALL_STATE_OFFHOOK | 2 | 表示至少有一个呼叫处于拨号、通话中或呼叫保持状态,并且没有新的来电振铃或等待。 | +| CALL_STATE_UNKNOWN | -1 | 无效状态,当获取呼叫状态失败时返回。
**系统能力**:SystemCapability.Telephony.CallManager | +| CALL_STATE_IDLE | 0 | 表示没有正在进行的呼叫。
**系统能力**:SystemCapability.Telephony.CallManager | +| CALL_STATE_RINGING | 1 | 表示来电正在振铃或等待。
**系统能力**:SystemCapability.Telephony.CallManager | +| CALL_STATE_OFFHOOK | 2 | 表示至少有一个呼叫处于拨号、通话中或呼叫保持状态,并且没有新的来电振铃或等待。
**系统能力**:SystemCapability.Telephony.CallManager | ## EmergencyNumberOptions7+ 判断是否是紧急电话号码的可选参数。 + +**系统能力**:SystemCapability.Telephony.CallManager + | 参数 | 类型 | 必填 | 说明 | | ------ | ------ | ---- | ------------------------------------------ | | slotId | number | 否 | 卡槽ID:
- 0:卡槽1。
- 1:卡槽2。 | @@ -431,6 +468,9 @@ promise.then(data => { ## NumberFormatOptions7+ 格式化号码的可选参数。 + +**系统能力**:SystemCapability.Telephony.CallManager + | 参数 | 类型 | 必填 | 说明 | | ----------- | ------ | ---- | ---------------------------------------------------------- | | countryCode | string | 否 | 国家码,支持所有国家的国家码,如:中国(CN)。默认为:CN。 | \ No newline at end of file diff --git a/zh-cn/application-dev/reference/apis/js-apis-configuration.md b/zh-cn/application-dev/reference/apis/js-apis-configuration.md new file mode 100644 index 0000000000000000000000000000000000000000..d35dfa4b321e40d8c028f07b78eb179f0cfb2291 --- /dev/null +++ b/zh-cn/application-dev/reference/apis/js-apis-configuration.md @@ -0,0 +1,30 @@ +# Configuration + +- [导入模块](#导入模块) +- [属性](#属性) + + +> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** +> 本模块首批接口从API version 8开始支持。 + + +环境变化信息。 + + +## 导入模块 + + +``` +import Configuration from '@ohos.application.Configuration'; +``` + + +## 属性 + + | 名称 | 参数类型 | 可读 | 可写 | 说明 | +| -------- | -------- | -------- | -------- | -------- | +| language | string | 是 | 是 | 表示应用程序的当前语言。 | +| colorMode | [ColorMode](js-apis-configurationconstant.md) | 是 | 是 | 表示深浅色模式,取值范围:浅色模式(COLOR_MODE_LIGHT),深色模式(COLOR_MODE_DARK)。默认为浅色。 | +| direction | Direction | 是 | 否 | 表示屏幕方向,取值范围:水平方向(DIRECTION_HORIZONTAL),垂直方向(DIRECTION_VERTICAL)。 | +| screenDensity | ScreenDensity | 是 | 否 | 表示屏幕分辨率,取值范围:SCREEN_DENSITY_SDPI(120)、SCREEN_DENSITY_MDPI(160)、SCREEN_DENSITY_LDPI(240)、SCREEN_DENSITY_XLDPI(320)、SCREEN_DENSITY_XXLDPI(480)、SCREEN_DENSITY_XXXLDPI(640)。 | +| displayId | number | 是 | 否 | 表示应用所在的displayId。 | diff --git a/zh-cn/application-dev/reference/apis/js-apis-configurationconstant.md b/zh-cn/application-dev/reference/apis/js-apis-configurationconstant.md new file mode 100644 index 0000000000000000000000000000000000000000..41a55a9f52860d13b74d0eac845ec499864848ac --- /dev/null +++ b/zh-cn/application-dev/reference/apis/js-apis-configurationconstant.md @@ -0,0 +1,61 @@ +# ConfigurationConstant + +- [导入模块](#导入模块) +- [ColorMode](#ColorMode) +- [Direction](#Direction) +- [ScreenDensity](#ScreenDensity) + + +> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** +> 本模块首批接口从API version 8开始支持。 + + +配置信息枚举值定义。 + + +## 导入模块 + + +``` +import ConfigurationConstant from '@ohos.application.ConfigurationConstant'; +``` + + +## ColorMode + +使用时通过ConfigurationConstant.ColorMode获取,示例:ConfigurationConstant.ColorMode.COLOR_MODE_LIGHT。 + + + | 名称 | 值 | 说明 | +| -------- | -------- | -------- | +| COLOR_MODE_NOT_SET | -1 | 未设置颜色模式。 | +| COLOR_MODE_DARK | 0 | 深色模式。 | +| COLOR_MODE_LIGHT | 1 | 浅色模式。 | + + +## Direction + +使用时通过ConfigurationConstant.Direction获取,示例:ConfigurationConstant.Direction.DIRECTION_VERTICAL。 + + + | 名称 | 值 | 说明 | +| -------- | -------- | -------- | +| DIRECTION_NOT_SET | -1 | 未设置方向。 | +| DIRECTION_VERTICAL | 0 | 垂直方向。 | +| DIRECTION_HORIZONTAL | 1 | 水平方向。 | + + +## ScreenDensity + +使用时通过ConfigurationConstant.ScreenDensity获取,示例:ConfigurationConstant.ScreenDensity.SCREEN_DENSITY_NOT_SET。 + + + | 名称 | 值 | 说明 | +| -------- | -------- | -------- | +| SCREEN_DENSITY_NOT_SET | 0 | 未设置屏幕分辨率。 | +| SCREEN_DENSITY_SDPI | 120 | 屏幕分辨率为"sdpi"。 | +| SCREEN_DENSITY_MDPI | 160 | 屏幕分辨率为"mdpi"。 | +| SCREEN_DENSITY_LDPI | 240 | 屏幕分辨率为"ldpi"。 | +| SCREEN_DENSITY_XLDPI | 320 | 屏幕分辨率为"xldpi"。 | +| SCREEN_DENSITY_XXLDPI | 480 | 屏幕分辨率为"xxldpi"。 | +| SCREEN_DENSITY_XXXLDPI | 640 | 屏幕分辨率为"xxxldpi"。 | 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 81b71545a7c3dd16a97281a52bd6818c5a0f386c..ffc1c7cf5f35674f95be38a44c4dcd42a663bef9 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-display.md +++ b/zh-cn/application-dev/reference/apis/js-apis-display.md @@ -1,7 +1,7 @@ # 显示设备属性 > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** -> 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本 +> 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 ## 导入模块 @@ -34,7 +34,7 @@ import display from '@ohos.display'; | id | number | 是 | 否 | 显示设备的id号。
**系统能力**:SystemCapability.WindowManager.WindowManager.Core | | name | string | 是 | 否 | 显示设备的名称。
**系统能力**:SystemCapability.WindowManager.WindowManager.Core | | alive | boolean | 是 | 否 | 显示设备是否启用。
**系统能力**:SystemCapability.WindowManager.WindowManager.Core | -| state | DisplayState | 是 | 否 | 显示设备的状态。
**系统能力**:SystemCapability.WindowManager.WindowManager.Core | +| state | [DisplayState](#DisplayState) | 是 | 否 | 显示设备的状态。
**系统能力**:SystemCapability.WindowManager.WindowManager.Core | | refreshRate | number | 是 | 否 | 显示设备的刷新率。
**系统能力**:SystemCapability.WindowManager.WindowManager.Core | | rotation | number | 是 | 否 | 显示设备的屏幕旋转角度。
**系统能力**:SystemCapability.WindowManager.WindowManager.Core | | width | number | 是 | 否 | 显示设备的宽度,单位为像素。
**系统能力**:SystemCapability.WindowManager.WindowManager.Core | @@ -52,10 +52,12 @@ getDefaultDisplay(callback: AsyncCallback<Display>): void 获取当前默认的display对象。 +**系统能力**:SystemCapability.WindowManager.WindowManager.Core + - 参数 | 参数名 | 类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | - | callback | AsyncCallback<Display> | 是 | 回调返回当前默认的display对象。 | + | callback | AsyncCallback<[Display](#Display)> | 是 | 回调返回当前默认的display对象。 | - 示例 ``` @@ -70,17 +72,44 @@ getDefaultDisplay(callback: AsyncCallback<Display>): void }); ``` +## display.getDefaultDisplay + +getDefaultDisplay(): Promise<Display> + +获取当前默认的display对象。 + +**系统能力**:SystemCapability.WindowManager.WindowManager.Core + +- 返回值 + + | 类型 | 说明 | + | ---------------------------------- | ---------------------------------------------- | + | Promise<[Display](#Display)> | 以Promise形式返回结果,返回默认的display对象。 | + +- 示例 + + ``` + let promise = display.getDefaultDisplay(); + promise.then(() => { + console.log('getDefaultDisplay success'); + }).catch((err) => { + console.log('getDefaultDisplay fail: ' + JSON.stringify(err)); + }); + ``` + ## display.getAllDisplay getAllDisplay(callback: AsyncCallback<Array<Display>>): void 获取当前所有的display对象。 +**系统能力**:SystemCapability.WindowManager.WindowManager.Core + - 参数 - | 参数名 | 类型 | 必填 | 说明 | - | -------- | ----------------------------------------- | ---- | ------------------------------- | - | callback | AsyncCallback<Array<Display>> | 是 | 回调返回当前所有的display对象。 | + | 参数名 | 类型 | 必填 | 说明 | + | -------- | ---------------------------------------------------- | ---- | ------------------------------- | + | callback | AsyncCallback<Array<[Display](Display)>> | 是 | 回调返回当前所有的display对象。 | - 示例 @@ -94,12 +123,39 @@ getAllDisplay(callback: AsyncCallback<Array<Display>>): void }); ``` +## display.getAllDisplay + +getAllDisplay(): Promise<Array<Display>> + +获取当前所有的display对象。 + +**系统能力**:SystemCapability.WindowManager.WindowManager.Core + +- 返回值 + + | 类型 | 说明 | + | ----------------------------------------------- | ------------------------------------------------------- | + | Promise<Array<[Display](#Display)>> | 以Promise形式返回结果,返回包含所有Display对象的Array。 | + +- 示例 + + ``` + let promise = display.getAllDisplay(); + promise.then(() => { + console.log('getAllDisplay success'); + }).catch((err) => { + console.log('getAllDisplay fail: ' + JSON.stringify(err)); + }); + ``` + ## display.on('add'|'remove'|'change') on(type: 'add'|'remove'|'change', callback: Callback<number>): void 开启监听。 +**系统能力**:SystemCapability.WindowManager.WindowManager.Core + - 参数 | 参数名 | 类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | @@ -122,6 +178,8 @@ off(type: 'add'|'remove'|'change', callback?: Callback<number>): void 关闭监听。 +**系统能力**:SystemCapability.WindowManager.WindowManager.Core + - 参数 | 参数名 | 类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | diff --git a/zh-cn/application-dev/reference/apis/js-apis-eventhub.md b/zh-cn/application-dev/reference/apis/js-apis-eventhub.md new file mode 100644 index 0000000000000000000000000000000000000000..265e5f01827e5b0b9a74747fcae4f6e1027396a3 --- /dev/null +++ b/zh-cn/application-dev/reference/apis/js-apis-eventhub.md @@ -0,0 +1,137 @@ +# EventHub + +- [使用说明](#使用说明) +- [on](#on) +- [off](#off) +- [emit](#emit) + + +> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** +> 本模块首批接口从API 9开始支持。 + + +事件中心。提供订阅、取消订阅、触发事件能力。 + + +## 使用说明 + + +​在使用eventHub的功能前,需要通过Ability实例的成员变量context获取。 + + + +``` +import Ability from '@ohos.application.Ability' +export default class MainAbility extends Ability { + onForeground() { + this.context.eventHub.on("123", this.func1); + } +} +``` + + +## on + +on(event: string, callback: Function): void; + +订阅指定事件。 + +- 参数: + | 参数名 | 类型 | 必填 | 说明 | + | -------- | -------- | -------- | -------- | + | event | string | 是 | 事件名称。 | + | callback | Function | 是 | 事件回调,事件触发后运行。 | + +- 示例: + + ``` + import Ability from '@ohos.application.Ability' + + export default class MainAbility extends Ability { + onForeground() { + this.context.eventHub.on("123", this.func1); + this.context.eventHub.on("123", () => { + console.log("call anonymous func 1"); + }); + // 结果: + // func1 is called + // call anonymous func 1 + this.context.eventHub.emit("123"); + } + func1() { + console.log("func1 is called"); + } + } + ``` + + +## off + +off(event: string, callback?: Function): void; + +取消订阅指定事件。当callback传值时,取消订阅指定的callback;未传值时,取消订阅该事件下所有callback。 + +- 参数: + | 参数名 | 类型 | 必填 | 说明 | + | -------- | -------- | -------- | -------- | + | event | string | 是 | 事件名称。 | + | callback | Function | 否 | 事件回调。如果不传callback,则取消订阅该事件下所有callback。 | + +- 示例: + + ``` + import Ability from '@ohos.application.Ability' + + export default class MainAbility extends Ability { + onForeground() { + this.context.eventHub.on("123", this.func1); + this.context.eventHub.off("123", this.func1); //取消订阅func1 + this.context.eventHub.on("123", this.func1); + this.context.eventHub.on("123", this.func2); + this.context.eventHub.off("123"); //取消订阅func1和func2 + } + func1() { + console.log("func1 is called"); + } + func2() { + console.log("func2 is called"); + } + } + ``` + + +## emit + +emit(event: string, ...args: Object[]): void; + +触发指定事件。 + +- 参数: + | 参数名 | 类型 | 必填 | 说明 | + | -------- | -------- | -------- | -------- | + | event | string | 是 | 事件名称。 | + | ...args | Object[] | 是 | 可变参数,事件触发时,传递给回调函数的参数。 | + +- 示例: + + ``` + import Ability from '@ohos.application.Ability' + + export default class MainAbility extends Ability { + onForeground() { + this.context.eventHub.on("123", this.func1); + // 结果: + // func1 is called,undefined,undefined + this.context.eventHub.emit("123"); + // 结果: + // func1 is called,1,undefined + this.context.eventHub.emit("123", 1); + // 结果: + // func1 is called,1,2 + this.context.eventHub.emit("123", 1, 2); + } + func1(a: string, b: string) { + console.log("func1 is called," + a + "," + b); + } + } + ``` diff --git a/zh-cn/application-dev/reference/apis/js-apis-extensionrunninginfo.md b/zh-cn/application-dev/reference/apis/js-apis-extensionrunninginfo.md new file mode 100644 index 0000000000000000000000000000000000000000..aede4031e5fad55e705dc0f382bf10387c18dd3e --- /dev/null +++ b/zh-cn/application-dev/reference/apis/js-apis-extensionrunninginfo.md @@ -0,0 +1,58 @@ +# ExtensionRunningInfo + +- [使用说明](#使用说明) + - [属性](#属性) +- [bundle.ExtensionAbilityType](#bundleExtensionAbilityType) + + +> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** +> 本模块首批接口从API 8开始支持。 + + +Extension运行相关信息。 + + +## 使用说明 + + +通过abilityManager中方法获取。 + + + +``` +import abilitymanager from '@ohos.application.abilityManager'; +abilitymanager.getExtensionRunningInfos(upperLimit, (err,data) => { + console.log("getExtensionRunningInfos err: " + err + " data: " + JSON.stringify(data)); +}); +``` + + +### 属性 + + | 名称 | 参数类型 | 可读 | 可写 | 说明 | +| -------- | -------- | -------- | -------- | -------- | +| extension | ElementName | 是 | 否 | Extension匹配信息。 | +| pid | number | 是 | 否 | 进程ID。 | +| uid | number | 是 | 否 | 用户ID。 | +| processName | string | 是 | 否 | 进程名称。 | +| startTime | number | 是 | 否 | Extension启动时间。 | +| clientPackage | Array<String> | 是 | 否 | 连接客户端包名。 | +| type | [bundle.ExtensionAbilityType](#bundle-extensionabilitytype) | 是 | 否 | Extension类型。 | + + +## bundle.ExtensionAbilityType + +Extension类型。 + + | 名称 | 值 | 说明 | +| -------- | -------- | -------- | +| FORM | 0 | 表示带有form类型的扩展信息。 | +| WORK_SCHEDULER | 1 | 表示带有work schedule类型的扩展信息。 | +| INPUT_METHOD | 2 | 表示用输入法类型的扩展信息。 | +| SERVICE | 3 | 表示带有service类型的扩展信息。 | +| ACCESSIBILITY | 4 | 表示具有可访问性类型的扩展信息。 | +| DATA_SHARE | 5 | 表示带有datashare类型的扩展信息。 | +| FILE_SHARE | 6 | 表示带有fileshare类型的扩展信息。 | +| STATIC_SUBSCRIBER | 7 | 表示带有静态订阅者类型的扩展信息。 | +| WALLPAPER | 8 | 表示带有wallpaper类型的扩展信息。 | +| UNSPECIFIED | 9 | 表示未指定类型信息。 | diff --git a/zh-cn/application-dev/reference/apis/js-apis-formextension.md b/zh-cn/application-dev/reference/apis/js-apis-formextension.md index 83e27c049babb7e0a1cc420efac1a2efd80190bd..09f2654fea910026f745adb226f9ca0c192c1670 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-formextension.md +++ b/zh-cn/application-dev/reference/apis/js-apis-formextension.md @@ -42,14 +42,16 @@ onCreate(want: Want): formBindingData.FormBindingData - 示例: ``` - onCreate(want) { - console.log('FormExtension onCreate, want:' + want.abilityName); - let dataObj1 = { - temperature:"11c", - "time":"11:00" - }; - let obj1 = formBindingData.createFormBindingData(dataObj1); - return obj1; + export default class MyFormExtension extends FormExtension { + onCreate(want) { + console.log('FormExtension onCreate, want:' + want.abilityName); + let dataObj1 = { + temperature:"11c", + "time":"11:00" + }; + let obj1 = formBindingData.createFormBindingData(dataObj1); + return obj1; + } } ``` @@ -68,8 +70,10 @@ onCastToNormal(formId: string): void - 示例: ``` - onCastToNormal(formId) { - console.log('FormExtension onCastToNormal, formId:' + formId); + export default class MyFormExtension extends FormExtension { + onCastToNormal(formId) { + console.log('FormExtension onCastToNormal, formId:' + formId); + } } ``` @@ -88,14 +92,16 @@ onUpdate(formId: string): void - 示例: ``` - onUpdate(formId) { - console.log('FormExtension onUpdate, formId:' + formId); - let obj2 = formBindingData.createFormBindingData({temperature:"22c", time:"22:00"}); - this.context.updateForm(formId, obj2) - .then((data)=>{ - console.log('FormExtension context updateForm, data:' + data); - }).catch((error) => { - console.error('Operation updateForm failed. Cause: ' + error);}); + export default class MyFormExtension extends FormExtension { + onUpdate(formId) { + console.log('FormExtension onUpdate, formId:' + formId); + let obj2 = formBindingData.createFormBindingData({temperature:"22c", time:"22:00"}); + this.context.updateForm(formId, obj2) + .then((data)=>{ + console.log('FormExtension context updateForm, data:' + data); + }).catch((error) => { + console.error('Operation updateForm failed. Cause: ' + error);}); + } } ``` @@ -114,17 +120,19 @@ onVisibilityChange(newStatus: { [key: string]: number }): void - 示例: ``` - onVisibilityChange(newStatus) { - console.log('FormExtension onVisibilityChange, newStatus:' + newStatus); - let obj2 = formBindingData.createFormBindingData({temperature:"22c", time:"22:00"}); - - for (let key in newStatus) { - console.log('FormExtension onVisibilityChange, key:' + key + ", value=" + newStatus[key]); - this.context.updateForm(key, obj2) - .then((data)=>{ - console.log('FormExtension context updateForm, data:' + data); - }).catch((error) => { - console.error('Operation updateForm failed. Cause: ' + error);}); + export default class MyFormExtension extends FormExtension { + onVisibilityChange(newStatus) { + console.log('FormExtension onVisibilityChange, newStatus:' + newStatus); + let obj2 = formBindingData.createFormBindingData({temperature:"22c", time:"22:00"}); + + for (let key in newStatus) { + console.log('FormExtension onVisibilityChange, key:' + key + ", value=" + newStatus[key]); + this.context.updateForm(key, obj2) + .then((data)=>{ + console.log('FormExtension context updateForm, data:' + data); + }).catch((error) => { + console.error('Operation updateForm failed. Cause: ' + error);}); + } } } ``` @@ -145,8 +153,10 @@ onEvent(formId: string, message: string): void - 示例: ``` - onEvent(formId, message) { - console.log('FormExtension onEvent, formId:' + formId + ", message:" + message); + export default class MyFormExtension extends FormExtension { + onEvent(formId, message) { + console.log('FormExtension onEvent, formId:' + formId + ", message:" + message); + } } ``` @@ -165,7 +175,9 @@ onDestroy(formId: string): void - 示例: ``` - onDestroy(formId) { - console.log('FormExtension onDestroy, formId:' + formId); + export default class MyFormExtension extends FormExtension { + onDestroy(formId) { + console.log('FormExtension onDestroy, formId:' + formId); + } } ``` \ No newline at end of file diff --git a/zh-cn/application-dev/reference/apis/js-apis-huks.md b/zh-cn/application-dev/reference/apis/js-apis-huks.md new file mode 100755 index 0000000000000000000000000000000000000000..6efd2885bf3807dd7337ddc920aeb38ed42aab11 --- /dev/null +++ b/zh-cn/application-dev/reference/apis/js-apis-huks.md @@ -0,0 +1,1116 @@ +# 通用密钥库系统 + +向应用提供密钥库能力,包括密钥管理及密钥的密码学操作等功能。 + +HUKS所管理的密钥可以由应用导入或者由应用调用HUKS接口生成。 + +## 导入模块 + +```js +import huks from '@ohos.security.huks' +``` +## HuksErrorCode + +表示错误码的枚举。 + +| 名称 | 值 | 说明 | +| -------------------------- | ----- | ---- | +| HUKS_SUCCESS | 0 |表示成功。表示当前设备连接的充电器类型。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_FAILURE | -1 |表示失败。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_BAD_STATE | -2 |表示错误的状态。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_INVALID_ARGUMENT | -3 |表示无效的数据。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_NOT_SUPPORTED | -4 |表示不支持。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_NO_PERMISSION | -5 |表示没有许可。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_INSUFFICIENT_DATA | -6 |表示数据不足。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_BUFFER_TOO_SMALL | -7 |表示缓冲区太小。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_INSUFFICIENT_MEMORY | -8 |表示内存不足。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_COMMUNICATION_FAILURE | -9 |表示通讯失败。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_STORAGE_FAILURE | -10 |表示存储故障。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_HARDWARE_FAILURE | -11 |表示硬件故障。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_ALREADY_EXISTS | -12 |表示已经存在。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_NOT_EXIST | -13 |表示不存在。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_NULL_POINTER | -14 |表示空指针。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_FILE_SIZE_FAIL | -15 |表示文件大小失败。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_READ_FILE_FAIL | -16 |表示读取文件失败。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_INVALID_PUBLIC_KEY | -17 |表示无效的公钥。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_INVALID_PRIVATE_KEY | -18 |表示无效的私钥。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_INVALID_KEY_INFO | -19 |表示无效的密钥信息。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_HASH_NOT_EQUAL | -20 |表示哈希不相等。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_MALLOC_FAIL | -21 |表示MALLOC 失败。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_WRITE_FILE_FAIL | -22 |表示写文件失败。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_REMOVE_FILE_FAIL | -23 |表示删除文件失败。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_OPEN_FILE_FAIL | -24 |表示打开文件失败。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_CLOSE_FILE_FAIL | -25 |表示关闭文件失败。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_MAKE_DIR_FAIL | -26 |表示创建目录失败。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_INVALID_KEY_FILE | -27 |表示无效的密钥文件。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_IPC_MSG_FAIL | -28 |表示IPC 信息失败。**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_REQUEST_OVERFLOWS | -29 |表示请求溢出。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_PARAM_NOT_EXIST | -30 |表示参数不存在。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_CRYPTO_ENGINE_ERROR | -31 |表示CRYPTO ENGINE错误。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_COMMUNICATION_TIMEOUT | -32 |表示通讯超时。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_IPC_INIT_FAIL | -33 |表示IPC 初始化失败。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_IPC_DLOPEN_FAIL | -34 |表示IPC DLOPEN 失败。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_EFUSE_READ_FAIL | -35 |表示EFUSE 读取失败。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_NEW_ROOT_KEY_MATERIAL_EXIST | -36 |表示存在新的根密钥材料。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_UPDATE_ROOT_KEY_MATERIAL_FAIL | -37 |表示更新根密钥材料失败。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_VERIFICATION_FAILED | -38 |表示验证证书链失败。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_CHECK_GET_ALG_FAIL | -100 |表示检查获取 ALG 失败。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_CHECK_GET_KEY_SIZE_FAIL | -101 |表示检查获取密钥大小失败。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_CHECK_GET_PADDING_FAIL | -102 |表示检查获取填充失败。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_CHECK_GET_PURPOSE_FAIL | -103 |表示检查获取目的失败。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_CHECK_GET_DIGEST_FAIL | -104 |表示检查获取摘要失败。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_CHECK_GET_MODE_FAIL | -105 |表示检查获取模式失败。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_CHECK_GET_NONCE_FAIL | -106 |表示检查获取随机数失败。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_CHECK_GET_AAD_FAIL | -107 |表示检查获取 AAD 失败。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_CHECK_GET_IV_FAIL | -108 |表示检查 GET IV 失败。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_CHECK_GET_AE_TAG_FAIL | -109 |表示检查获取 AE 标记失败。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_CHECK_GET_SALT_FAIL | -110 |表示检查获取SALT失败。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_CHECK_GET_ITERATION_FAIL | -111 |表示检查获取迭代失败。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_INVALID_ALGORITHM | -112 |表示无效的算法。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_INVALID_KEY_SIZE | -113 |表示无效的密钥大小。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_INVALID_PADDING | -114 |表示无效的填充。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_INVALID_PURPOSE | -115 |表示无效的目的。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_INVALID_MODE | -116 |表示无效模式。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_INVALID_DIGEST | -117 |表示无效的摘要。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_INVALID_SIGNATURE_SIZE | -118 |表示签名大小无效。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_INVALID_IV | -119 |表示无效的 IV。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_INVALID_AAD | -120 |表示无效的 AAD。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_INVALID_NONCE | -121 |表示无效的随机数。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_INVALID_AE_TAG | -122 |表示无效的 AE 标签。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_INVALID_SALT | -123 |表示无效SALT。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_INVALID_ITERATION | -124 |表示无效的迭代。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_INVALID_OPERATION | -125 |表示无效操作。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_INTERNAL_ERROR | -999 |表示内部错误。
**系统能力**:SystemCapability.Security.Huks| +| HUKS_ERROR_UNKNOWN_ERROR | -1000 |表示未知错误。
**系统能力**:SystemCapability.Security.Huks| + + +## HuksKeyPurpose + +表示密钥(密钥对)用途。 + +| 名称 | 值 | 说明 | +| ------------------------ | ---- | ------------------------------------------------------------ | +| HUKS_KEY_PURPOSE_ENCRYPT | 1 | 表示密钥(密钥对)用于对明文进行加密操作。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_KEY_PURPOSE_DECRYPT | 2 | 表示密钥(密钥对)用于对密文进行解密操作。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_KEY_PURPOSE_SIGN | 4 | 表示密钥对用于对数据进行签名。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_KEY_PURPOSE_VERIFY | 8 | 表示密钥对用于验证签名后的数据。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_KEY_PURPOSE_DERIVE | 16 | 表示密钥用于派生密钥。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_KEY_PURPOSE_WRAP | 32 | 表示密钥用于加密导入。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_KEY_PURPOSE_UNWRAP | 64 | 表示密钥加密导出。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_KEY_PURPOSE_MAC | 128 | 表示密钥用于生成mac消息验证码。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_KEY_PURPOSE_AGREE | 256 | 表示密钥对用于进行密钥协商。
**系统能力**:SystemCapability.Security.Huks | + +## HuksKeyDigest + +表示摘要算法。 + +| 名称 | 值 | 说明 | +| ---------------------- | ---- | ---------------------------------------- | +| HUKS_DIGEST_NONE | 0 | 表示无摘要算法。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_DIGEST_MD5 | 1 | 表示MD5摘要算法。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_DIGEST_SHA1 | 10 | 表示SHA1摘要算法。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_DIGEST_SHA224 | 11 | 表示SHA224摘要算法。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_DIGEST_SHA256 | 12 | 表示SHA256摘要算法。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_DIGEST_SHA384 | 13 | 表示SHA384摘要算法。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_DIGEST_SHA512 | 14 | 表示SHA512摘要算法。
**系统能力**:SystemCapability.Security.Huks | + +## HuksKeyPadding + +表示补齐算法。 + +| 名称 | 值 | 说明 | +| ---------------------- | ---- | ---------------------------------------- | +| HUKS_PADDING_NONE | 0 | 表示不使用补齐算法。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_PADDING_OAEP | 1 | 表示使用OAEP补齐算法。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_PADDING_PSS | 2 | 表示使用PSS补齐算法。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_PADDING_PKCS1_V1_5 | 3 | 表示使用PKCS1_V1_5补齐算法。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_PADDING_PKCS5 | 4 | 表示使用PKCS5补齐算法。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_PADDING_PKCS7 | 5 | 表示使用PKCS7补齐算法。
**系统能力**:SystemCapability.Security.Huks | + +## HuksCipherMode + +表示加密模式。 + +| 名称 | 值 | 说明 | +| ------------- | ---- | ------------------------------------------------------------ | +| HUKS_MODE_ECB | 1 | 表示使用ECB加密模式。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_MODE_CBC | 2 | 表示使用CBC加密模式。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_MODE_CTR | 3 | 表示使用CTR加密模式。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_MODE_OFB | 4 | 表示使用OFB加密模式。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_MODE_CCM | 31 | 表示使用CCM加密模式。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_MODE_GCM | 32 | 表示使用GCM加密模式。
**系统能力**:SystemCapability.Security.Huks | + +## HuksKeySize + +表示密钥(密钥对)长度。 + +| 名称 | 值 | 说明 | +| ---------------------------- | ---- | ------------------------------------------------------------ | +| HUKS_RSA_KEY_SIZE_512 | 512 | 表示使用RSA算法的密钥对长度为512bit。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_RSA_KEY_SIZE_768 | 768 | 表示使用RSA算法的密钥对长度为768bit。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_RSA_KEY_SIZE_1024 | 1024 | 表示使用RSA算法的密钥对长度为1024bit。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_RSA_KEY_SIZE_2048 | 2048 | 表示使用RSA算法的密钥对长度为2048bit。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_RSA_KEY_SIZE_3072 | 3072 | 表示使用RSA算法的密钥对长度为3072bit。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_RSA_KEY_SIZE_4096 | 4096 | 表示使用RSA算法的密钥对长度为4096bit。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_ECC_KEY_SIZE_224 | 224 | 表示使用ECC算法的密钥对长度为224bit。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_ECC_KEY_SIZE_256 | 256 | 表示使用ECC算法的密钥对长度为256bit。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_ECC_KEY_SIZE_384 | 384 | 表示使用ECC算法的密钥对长度为384bit。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_ECC_KEY_SIZE_521 | 521 | 表示使用ECC算法的密钥对长度为521bit。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_AES_KEY_SIZE_128 | 128 | 表示使用AES算法的密钥长度为128bit。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_AES_KEY_SIZE_192 | 196 | 表示使用AES算法的密钥长度为196bit。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_AES_KEY_SIZE_256 | 256 | 表示使用AES算法的密钥长度为256bit。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_AES_KEY_SIZE_512 | 512 | 表示使用AES算法的密钥长度为512bit。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_CURVE25519_KEY_SIZE_256 | 256 | 表示使用CURVE25519算法的密钥对长度为256bit。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_DH_KEY_SIZE_2048 | 2048 | 表示使用DH算法的密钥对长度为2048bit。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_DH_KEY_SIZE_3072 | 3072 | 表示使用DH算法的密钥对长度为3072bit。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_DH_KEY_SIZE_4096 | 4096 | 表示使用DH算法的密钥对长度为4096bit。
**系统能力**:SystemCapability.Security.Huks | + +## HuksKeyAlg + +表示密钥使用的算法。 + +| 名称 | 值 | 说明 | +| ---------------- | ---- | ------------------------------------------------------------ | +| HUKS_ALG_RSA | 1 | 表示使用RSA算法。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_ALG_ECC | 2 | 表示使用ECC算法。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_ALG_DSA | 3 | 表示使用DSA算法。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_ALG_AES | 20 | 表示使用AES算法。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_ALG_HMAC | 50 | 表示使用HMAC算法。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_ALG_HKDF | 51 | 表示使用HKDF算法。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_ALG_PBKDF2 | 52 | 表示使用PBKDF2算法。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_ALG_ECDH | 100 | 表示使用ECDH算法。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_ALG_X25519 | 101 | 表示使用X25519算法。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_ALG_ED25519 | 102 | 表示使用ED25519算法。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_ALG_DH | 103 | 表示使用DH算法。
**系统能力**:SystemCapability.Security.Huks | + +## HuksKeyGenerateType + +表示生成密钥的类型。 + +| 名称 | 值 | 说明 | +| ------------------------------ | ---- | ------------------------------------------------------------ | +| HUKS_KEY_GENERATE_TYPE_DEFAULT | 0 | 默认生成的密钥。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_KEY_GENERATE_TYPE_DERIVE | 1 | 派生生成的密钥。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_KEY_GENERATE_TYPE_AGREE | 2 | 协商生成的密钥。
**系统能力**:SystemCapability.Security.Huks | + +## HuksKeyFlag + +表示密钥的产生方式。 + +| 名称 | 值 | 说明 | +| -------------------------- | ---- | ------------------------------ | +| HUKS_KEY_FLAG_IMPORT_KEY | 1 | 表示通过导入公钥接口导入的密钥。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_KEY_FLAG_GENERATE_KEY | 2 | 表示通过生成密钥接口生成的密钥。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_KEY_FLAG_AGREE_KEY | 3 | 表示通过生成密钥协商接口生成的密钥。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_KEY_FLAG_DERIVE_KEY | 4 | 表示通过生成密钥派生接口生成的密钥。
**系统能力**:SystemCapability.Security.Huks | + +## HuksKeyStorageType + +表示密钥存储方式。 + +| 名称 | 值 | 说明 | +| ----------------------- | ---- | ------------------------------------------------------------ | +| HUKS_STORAGE_TEMP | 0 | 表示通过本地直接管理密钥。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_STORAGE_PERSISTENT | 1 | 表示通过HUKS service管理密钥。
**系统能力**:SystemCapability.Security.Huks | + +## HuksSendType + +| 名称 | 值 | 说明 | +| -------------------- | ---- | ------------------------------------------------------------ | +| HUKS_SEND_TYPE_ASYNC | 0 | 表示异步发送TAG。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_SEND_TYPE_SYNC | 1 | 表示同步发送TAG。
**系统能力**:SystemCapability.Security.Huks | + +## HuksTagType + +表示Tag的数据类型。 + +| 名称 | 值 | 说明 | +| --------------------- | ------- | ------------------------------------------------------------ | +| HUKS_TAG_TYPE_INVALID | 0 << 28 | 表示非法的Tag类型。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_TAG_TYPE_INT | 1 << 28 | 表示该Tag的数据类型为number。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_TAG_TYPE_UINT | 2 << 28 | 表示该Tag的数据类型为number。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_TAG_TYPE_ULONG | 3 << 28 | 表示该Tag的数据类型为bigint。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_TAG_TYPE_BOOL | 4 << 28 | 表示该Tag的数据类型为boolean。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_TAG_TYPE_BYTES | 5 << 28 | 表示该Tag的数据类型为Uint8Array。
**系统能力**:SystemCapability.Security.Huks | + +## HuksTag + +表示调用参数的Tag。 + +| 名称 | 值 | 说明 | +| -------------------------------------- | ---------------------------------------- | ------------------------------------------------------------ | +| HUKS_TAG_INVALID | HuksTagType.HUKS_TAG_TYPE_INVALID \| 0 | 表示非法的Tag。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_TAG_ALGORITHM | HUKS_TAG_TYPE_UINT \| 1 | 表示算法的Tag。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_TAG_PURPOSE | HuksTagType.HUKS_TAG_TYPE_UINT \| 2 | 表示密钥(密钥对)用途的Tag。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_TAG_KEY_SIZE | HuksTagType.HUKS_TAG_TYPE_UINT \| 3 | 表示密钥(密钥对)长度的Tag。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_TAG_DIGEST | HuksTagType.HUKS_TAG_TYPE_UINT \| 4 | 表示摘要算法的Tag。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_TAG_PADDING | HuksTagType.HUKS_TAG_TYPE_UINT \| 5 | 表示补齐算法的Tag。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_TAG_BLOCK_MODE | HuksTagType.HUKS_TAG_TYPE_UINT \| 6 | 表示加密模式的Tag。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_TAG_KEY_TYPE | HuksTagType.HUKS_TAG_TYPE_UINT \| 7 | 表示密钥类型的Tag。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_TAG_ASSOCIATED_DATA | HuksTagType.HUKS_TAG_TYPE_BYTES \| 8 | 表示表示附加身份验证数据的Tag。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_TAG_NONCE | HuksTagType.HUKS_TAG_TYPE_BYTES \| 9 | 表示表示密钥偏移量的Tag。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_TAG_IV | HuksTagType.HUKS_TAG_TYPE_BYTES \| 10 | 表示表示密钥偏移量的Tag。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_TAG_INFO | HuksTagType.HUKS_TAG_TYPE_BYTES \| 11 | 表示密钥派生时的info。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_TAG_SALT | HuksTagType.HUKS_TAG_TYPE_BYTES \| 12 | 表示密钥派生时的盐值。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_TAG_PWD | HuksTagType.HUKS_TAG_TYPE_BYTES \| 13 | 表示密钥派生时的password。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_TAG_ITERATION | HuksTagType.HUKS_TAG_TYPE_UINT \| 14 | 表示密钥派生时的迭代次数。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_TAG_KEY_GENERATE_TYPE | HuksTagType.HUKS_TAG_TYPE_UINT \| 15 | 表示生成密钥类型的Tag。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_TAG_DERIVE_MAIN_KEY | HuksTagType.HUKS_TAG_TYPE_BYTES \| 16 | 表示密钥派生时的主密钥。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_TAG_DERIVE_FACTOR | HuksTagType.HUKS_TAG_TYPE_BYTES \| 17 | 表示密钥派生时的派生因子。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_TAG_DERIVE_ALG | HuksTagType.HUKS_TAG_TYPE_UINT \| 18 | 表示密钥派生时的算法类型。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_TAG_AGREE_ALG | HuksTagType.HUKS_TAG_TYPE_UINT \| 19 | 表示密钥协商时的算法类型。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_TAG_AGREE_PUBLIC_KEY_IS_KEY_ALIAS | HuksTagType.HUKS_TAG_TYPE_BOOL \| 20 | 表示密钥协商时的公钥别名
**系统能力**:SystemCapability.Security.Huks | +| HUKS_TAG_AGREE_PRIVATE_KEY_ALIAS | HuksTagType.HUKS_TAG_TYPE_BYTES \| 21 | 表示密钥协商时的私钥别名
**系统能力**:SystemCapability.Security.Huks | +| HUKS_TAG_AGREE_PUBLIC_KEY | HuksTagType.HUKS_TAG_TYPE_BYTES \| 22 | 表示密钥协商时的公钥
**系统能力**:SystemCapability.Security.Huks | +| HUKS_TAG_KEY_ALIAS | HuksTagType.HUKS_TAG_TYPE_BYTES \| 23 | 表示密钥别名。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_TAG_DERIVE_KEY_SIZE | HuksTagType.HUKS_TAG_TYPE_UINT \| 24 | 表示派生密钥的大小。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_TAG_ACTIVE_DATETIME | HuksTagType.HUKS_TAG_TYPE_ULONG \| 201 | 预留。 | +| HUKS_TAG_ORIGINATION_EXPIRE_DATETIME | HuksTagType.HUKS_TAG_TYPE_ULONG \| 202 | 预留。 | +| HUKS_TAG_USAGE_EXPIRE_DATETIME | HuksTagType.HUKS_TAG_TYPE_ULONG \| 203 | 预留。 | +| HUKS_TAG_CREATION_DATETIME | HuksTagType.HUKS_TAG_TYPE_ULONG \| 204 | 预留。 | +| HUKS_TAG_ALL_USERS | ksTagType.HUKS_TAG_TYPE_BOOL \| 301 | 预留。 | +| HUKS_TAG_USER_ID | HuksTagType.HUKS_TAG_TYPE_UINT \| 302 | 预留。 | +| HUKS_TAG_NO_AUTH_REQUIRED | HuksTagType.HUKS_TAG_TYPE_BOOL \| 303 | 预留。 | +| HUKS_TAG_USER_AUTH_TYPE | HuksTagType.HUKS_TAG_TYPE_UINT \| 304 | 预留。 | +| HUKS_TAG_AUTH_TIMEOUT | HuksTagType.HUKS_TAG_TYPE_UINT \| 305 | 预留。 | +| HUKS_TAG_AUTH_TOKEN | HuksTagType.HUKS_TAG_TYPE_BYTES \| 306 | 预留。 | +| HUKS_TAG_ATTESTATION_CHALLENGE | HuksTagType.HUKS_TAG_TYPE_BYTES \| 501 | 表示attestation时的挑战值。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_TAG_ATTESTATION_APPLICATION_ID | HuksTagType.HUKS_TAG_TYPE_BYTES \| 502 | 表示attestation时的application Id。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_TAG_ATTESTATION_ID_BRAND | HuksTagType.HUKS_TAG_TYPE_BYTES \| 503 | 表示设备的brand。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_TAG_ATTESTATION_ID_DEVICE | HuksTagType.HUKS_TAG_TYPE_BYTES \| 504 | 表示设备的device。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_TAG_ATTESTATION_ID_PRODUCT | HuksTagType.HUKS_TAG_TYPE_BYTES \| 505 | 表示设备的product。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_TAG_ATTESTATION_ID_SERIAL | HuksTagType.HUKS_TAG_TYPE_BYTES \| 506 | 表示设备的SN号。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_TAG_ATTESTATION_ID_IMEI | HuksTagType.HUKS_TAG_TYPE_BYTES \| 507 | 表示设备的IMEI号。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_TAG_ATTESTATION_ID_MEID | HuksTagType.HUKS_TAG_TYPE_BYTES \| 508 | 表示设备的MEID号。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_TAG_ATTESTATION_ID_MANUFACTURER | HuksTagType.HUKS_TAG_TYPE_BYTES \| 509 | 表示设备的制造商。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_TAG_ATTESTATION_ID_MODEL | HuksTagType.HUKS_TAG_TYPE_BYTES \| 510 | 表示设备的型号。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_TAG_ATTESTATION_ID_ALIAS | HuksTagType.HUKS_TAG_TYPE_BYTES \| 511 | 表示attestation时的密钥别名。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_TAG_ATTESTATION_ID_SOCID | HuksTagType.HUKS_TAG_TYPE_BYTES \| 512 | 表示设备的SOCID。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_TAG_ATTESTATION_ID_UDID | HuksTagType.HUKS_TAG_TYPE_BYTES \| 513 | 表示设备的UDID。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_TAG_ATTESTATION_ID_SEC_LEVEL_INFO | HuksTagType.HUKS_TAG_TYPE_BYTES \| 514 | 表示attestation时的安全凭据。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_TAG_ATTESTATION_ID_VERSION_INFO | HuksTagType.HUKS_TAG_TYPE_BYTES \| 515 | 表示attestation时的版本号。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_TAG_IS_KEY_ALIAS | HuksTagType.HUKS_TAG_TYPE_BOOL \| 1001 | 表示是否使用生成key时传入的别名的Tag。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_TAG_KEY_STORAGE_FLAG | HuksTagType.HUKS_TAG_TYPE_UINT \| 1002 | 表示密钥存储方式的Tag。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_TAG_IS_ALLOWED_WRAP | HuksTagType.HUKS_TAG_TYPE_BOOL \| 1003 | 预留。 | +| HUKS_TAG_KEY_WRAP_TYPE | HuksTagType.HUKS_TAG_TYPE_UINT \| 1004 | 预留。 | +| HUKS_TAG_KEY_AUTH_ID | HuksTagType.HUKS_TAG_TYPE_BYTES \| 1005 | 预留。 | +| HUKS_TAG_KEY_ROLE | HuksTagType.HUKS_TAG_TYPE_UINT \| 1006 | 预留。 | +| HUKS_TAG_KEY_FLAG | HuksTagType.HUKS_TAG_TYPE_UINT \| 1007 | 表示密钥标志的Tag。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_TAG_IS_ASYNCHRONIZED | HuksTagType.HUKS_TAG_TYPE_UINT \| 1008 | 预留。 | +| HUKS_TAG_SECURE_KEY_ALIAS | HuksTagType.HUKS_TAG_TYPE_BOOL \| 1009 | 预留。 | +| HUKS_TAG_SECURE_KEY_UUID | HuksTagType.HUKS_TAG_TYPE_BYTES \| 1010 | 预留。 | +| HUKS_TAG_KEY_DOMAIN | HuksTagType.HUKS_TAG_TYPE_UINT \| 1011 | 预留。 | +| HUKS_TAG_PROCESS_NAME | HuksTagType.HUKS_TAG_TYPE_BYTES \| 10001 | 表示进程名称的Tag。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_TAG_PACKAGE_NAME | HuksTagType.HUKS_TAG_TYPE_BYTES \| 10002 | 预留。 | +| HUKS_TAG_ACCESS_TIME | HuksTagType.HUKS_TAG_TYPE_UINT \| 10003 | 预留。 | +| HUKS_TAG_USES_TIME | HuksTagType.HUKS_TAG_TYPE_UINT \| 10004 | 预留。 | +| HUKS_TAG_CRYPTO_CTX | HuksTagType.HUKS_TAG_TYPE_ULONG \| 10005 | 预留。 | +| HUKS_TAG_KEY | HuksTagType.HUKS_TAG_TYPE_BYTES \| 10006 | 预留。 | +| HUKS_TAG_KEY_VERSION | HuksTagType.HUKS_TAG_TYPE_UINT \| 10007 | 表示密钥版本的Tag。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_TAG_PAYLOAD_LEN | HuksTagType.HUKS_TAG_TYPE_UINT \| 10008 | 预留。 | +| HUKS_TAG_AE_TAG | HuksTagType.HUKS_TAG_TYPE_BYTES \| 10009 | 预留。 | +| HUKS_TAG_IS_KEY_HANDLE | HuksTagType.HUKS_TAG_TYPE_ULONG \| 10010 | 预留。 | +| HUKS_TAG_OS_VERSION | HuksTagType.HUKS_TAG_TYPE_UINT \| 10101 | 表示操作系统版本的Tag。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_TAG_OS_PATCHLEVEL | HuksTagType.HUKS_TAG_TYPE_UINT \| 10102 | 表示操作系统补丁级别的Tag。
**系统能力**:SystemCapability.Security.Huks | +| HUKS_TAG_SYMMETRIC_KEY_DATA | HuksTagType.HUKS_TAG_TYPE_BYTES \| 20001 | 预留。 | +| HUKS_TAG_ASYMMETRIC_PUBLIC_KEY_DATA | HuksTagType.HUKS_TAG_TYPE_BYTES \| 20002 | 预留。 | +| HUKS_TAG_ASYMMETRIC_PRIVATE_KEY_DATA | HuksTagType.HUKS_TAG_TYPE_BYTES \| 20003 | 预留。 | + +## huks.generateKey + +generateKey(keyAlias: string, options: HuksOptions, callback: AsyncCallback\) : void + +通过Callback方法生成密钥(密钥对)。 + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ----------------------------------------- | ---- | ------------------------------------------------------------ | +| keyAlias | string | 是 | 别名。
**系统能力**:SystemCapability.Security.Huks | +| options | [HuksOptions](#huksoptions) | 是 | 用于存放生成key所需TAG。
**系统能力**:SystemCapability.Security.Huks | +| callback | AsyncCallback\<[HuksResult](#huksresult)> | 是 | 返回HUKS_SUCCESS时表示接口使用成功,其余结果请参考HuksResult进行错误码查询。
**系统能力**:SystemCapability.Security.Huks | + +**示例:** + +```js +var alias = 'alias; +var properties = new Array(); +properties[0] = { + tag: huks.HuksTag.HUKS_TAG_ALGORITHM, + value: huksHukssKeyAlg.HUKS_ALG_RSA +}; +properties[1] = { + tag: huks.HuksTag.HUKS_TAG_KEY_SIZE, + value: huks.HuksKeySize.HUKS_RSA_KEY_SIZE_512 +}; +properties[2] = { + tag: huks.HuksTag.HUKS_TAG_PURPOSE, + value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT | huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_DECRYPT +}; +properties[3] = { + tag: huks.HuksTag.HUKS_TAG_PADDING, + value: huks.HuksKeyPadding.HUKS_PADDING_NONE +}; +properties[4] = { + tag: huks.HuksTag.HUKS_TAG_BLOCK_MODE, + value: huks.HuksCipherMode.HUKS_MODE_ECB +}; +properties[5] = { + tag: huks.HuksTag.HUKS_TAG_DIGEST, + value: huks.HuksKeyDigest.HUKS_DIGEST_NONE +}; +var options = { + properties: properties +}; +huks.generateKey(alias, options, function (err, data){}); +``` + +## huks.generateKey + +generateKey(keyAlias: string, options: HuksOptions) : Promise\ + +通过Promise方法生成密钥(密钥对)。 + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | --------------------------- | ---- | ------------------------------------------------------------ | +| keyAlias | string | 是 | 密钥别名。
**系统能力**:SystemCapability.Security.Huks | +| options | [HuksOptions](#huksoptions) | 是 | 用于存放生成key所需TAG。
**系统能力**:SystemCapability.Security.Huks | + +**返回值**:(可选,如不涉及可删除) + +| 类型 | 说明 | +| ----------------------------------- | ------------------------------------------------------------ | +| Promise\<[HuksResult](#huksresult)> | 返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。
**系统能力**:SystemCapability.Security.Huks | + +**示例:** + +```js +var alias = 'alias'; +var properties = new Array(); +properties[0] = { + tag: huks.HuksTag.HUKS_TAG_ALGORITHM, + value: huksHuksKeyAlg.HUKS_ALG_RSA +}; +properties[1] = { + tag: huks.HuksTag.HUKS_TAG_KEY_SIZE, + value: huks.HuksKeySize.HUKS_RSA_KEY_SIZE_512 +}; +properties[2] = { + tag: huks.HuksTag.HUKS_TAG_PURPOSE, + value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT | huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_DECRYPT +}; +properties[3] = { + tag: huks.HuksTag.HUKS_TAG_PADDING, + value: huks.HuksKeyPadding.HUKS_PADDING_NONE +}; +properties[4] = { + tag: huks.HuksTag.HUKS_TAG_BLOCK_MODE, + value: huks.HuksCipherMode.HUKS_MODE_ECB +}; +properties[5] = { + tag: huks.HuksTag.HUKS_TAG_DIGEST, + value: huks.HuksKeyDigest.HUKS_DIGEST_NONE +}; +var options = { + properties: properties +}; +var result = await huks.generateKey(alias, options); +``` + +## huks.deleteKey + +deleteKey(keyAlias: string, options: HuksOptions, callback: AsyncCallback\) : void + +针对Callback生成的密钥进行删除。 + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ----------------------------------------- | ---- | ------------------------------------------------------------ | +| keyAlias | string | 是 | 密钥别名,应为生成key时传入的别名。
**系统能力**:SystemCapability.Security.Huks | +| options | [HuksOptions](#huksoptions) | 是 | 空对象(此处传空即可)。
**系统能力**:SystemCapability.Security.Huks | +| callback | AsyncCallback\<[HuksResult](#huksresult)> | 是 | 返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。
**系统能力**:SystemCapability.Security.Huks | + +**示例:** + +```js +var alias = 'alias'; +var emptyOptions = { + properties: [] +}; +huks.deleteKey(alias, emptyOptions, function (err, data) {}); +``` + +## huks.deleteKey + +deleteKey(keyAlias: string, options: HuksOptions) : Promise\ + +针对Promise生成的密钥进行删除。 + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ----------- | ---- | ----------------------------------------------------- | +| keyAlias | string | 是 | 密钥别名,应为生成key时传入的别名。
**系统能力**:SystemCapability.Security.Huks | +| options | [HuksOptions](#huksoptions) | 是 | 空对象(此处传空即可)。
**系统能力**:SystemCapability.Security.Huks | + +**返回值:** + +| 类型 | 说明 | +| ----------------------------------- | ------------------------------------------------------------ | +| Promise\<[HuksResult](#huksresult)> | 返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。
**系统能力**:SystemCapability.Security.Huks | + +**示例:** + +```js +var alias = 'alias'; +var emptyOptions = { + properties: [] +}; +var result = await huks.deleteKey(alias, emptyOptions); +``` + +## huks.getSdkVersion + +getSdkVersion(options: HuksOptions) : string + +获取当前系统sdk版本。 + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ------- | ---------- | ---- | ------------------------- | +| options | [HuksOptions](#huksoptions) | 是 | 空对象,用于存放sdk版本。
**系统能力**:SystemCapability.Security.Huks | + +**返回值:** + +| 类型 | 说明 | +| ------ | ------------------------------------------------------------ | +| string | 返回sdk版本。
**系统能力**:SystemCapability.Security.Huks | + +**示例:** + +```js +var emptyOptions = { + properties: [] +}; +var result = await huks.getSdkVersion(emptyOptions); +``` + +## huks.importKey + +importKey(keyAlias: string, options: HuksOptions, callback: AsyncCallback\) : void + +导入Callback方法生成的密钥对 。 + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------------------ | ---- | ------------------------------------------------- | +| keyAlias | string | 是 | 密钥别名,用于存放所需密钥。
**系统能力**:SystemCapability.Security.Huks | +| options | [HuksOptions](#huksoptions) | 是 | 用于导入时所需TAG和需要导入的密钥。
**系统能力**:SystemCapability.Security.Huks | +| callback | AsyncCallback\<[HuksResult](#huksresult)> | 是 | 返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。
**系统能力**:SystemCapability.Security.Huks | + +**示例:** + +```js +var keyAlias = 'keyAlias'; +var properties = new Array(); +properties[0] = { + tag: huks.HuksTag.HUKS_TAG_ALGORITHM, + value: huks.HuksKeyAlg.HUKS_ALG_DSA +}; +properties[1] = { + tag: huks.HuksTag.HUKS_TAG_KEY_SIZE, + value: 1024 +}; +properties[2] = { + tag: huks.HuksTag.HUKS_TAG_PURPOSE, + value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_VERIFY +}; +properties[3] = { + tag: huks.HuksTag.HUKS_TAG_PADDING, + value: huks.HuksKeyPadding.HUKS_PADDING_NONE +}; +properties[4] = { + tag: huks.HuksTag.HUKS_TAG_DIGEST, + value: HUKS_DIGEST_SHA1 +}; +var options = { + properties: properties, + inData: importText +}; +huks.importKey(keyAlias, options, function (err, data){}); +``` + +## huks.importKey + +importKey(keyAlias: string, options: HuksOptions) : Promise\ + +导入Promise方法生成的密钥对。 + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ----------- | ---- | ------------------------------------ | +| keyAlias | string | 是 | 密钥别名,用于存放所需密钥。
**系统能力**:SystemCapability.Security.Huks | +| options | [HuksOptions](#huksoptions) | 是 | 用于导入时所需TAG和需要导入的密钥。
**系统能力**:SystemCapability.Security.Huks | + +**返回值:** + +| 类型 | 说明 | +| ----------------------------------- | ------------------------------------------------------------ | +| Promise\<[HuksResult](#huksresult)> | 返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。
**系统能力**:SystemCapability.Security.Huks | + +**示例:** + +```js +var keyAlias = 'keyAlias'; +var properties = new Array(); +properties[0] = { + tag: huks.HuksTag.HUKS_TAG_ALGORITHM, + value: huks.HuksKeyAlg.HUKS_ALG_DSA +}; +properties[1] = { + tag: huks.HuksTag.HUKS_TAG_KEY_SIZE, + value: 1024 +}; +properties[2] = { + tag: huks.HuksTag.HUKS_TAG_PURPOSE, + value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_VERIFY +}; +properties[3] = { + tag: huks.HuksTag.HUKS_TAG_PADDING, + value: huks.HuksKeyPadding.HUKS_PADDING_NONE +}; +properties[4] = { + tag: huks.HuksTag.HUKS_TAG_DIGEST, + value: HUKS_DIGEST_SHA1 +}; +var options = { + properties: properties, + inData: importText +}; +var result = await huks.importKey(keyAlias, options); +``` + +## huks.exportKey + +exportKey(keyAlias: string, options: HuksOptions, callback: AsyncCallback\) : void + +导出Callback方法生成的密钥对。 + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ----------------------------------------- | ---- | ------------------------------------------------------------ | +| keyAlias | string | 是 | 密钥别名,应与所用密钥生成时使用的别名相同。
**系统能力**:SystemCapability.Security.Huks | +| options | [HuksOptions](#huksoptions) | 是 | 空对象(此处传空即可)。
**系统能力**:SystemCapability.Security.Huks | +| callback | AsyncCallback\<[HuksResult](#huksresult)> | 是 | 返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。outData:返回从密钥中导出的公钥。
**系统能力**:SystemCapability.Security.Huks | + +**示例:** + +```js +var keyAlias = 'keyAlias'; +var emptyOptions = { + properties: [] +}; +huks.exportKey(keyAlias, emptyOptions, function (err, data){}); +``` + +## huks.exportKey + +exportKey(keyAlias: string, options: HuksOptions) : Promise\ + +导出Promise方法生成的密钥对。 + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ----------- | ---- | ------------------------------------------------------------ | +| keyAlias | string | 是 | 密钥别名,应与所用密钥生成时使用的别名相同。
**系统能力**:SystemCapability.Security.Huks | +| options | [HuksOptions](#huksoptions) | 是 | 空对象(此处传空即可)。
**系统能力**:SystemCapability.Security.Huks | + +**返回值:** + +| 类型 | 说明 | +| ----------------------------------- | ------------------------------------------------------------ | +| Promise\<[HuksResult](#huksresult)> | 返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。outData:返回从密钥中导出的公钥。
**系统能力**:SystemCapability.Security.Huks | + +**示例:** + +```js +var keyAlias = 'keyAlias'; +var emptyOptions = { + properties: [] +}; +var result = await huks.exportKey(keyAlias, emptyOptions); +``` + +## huks.getKeyProperties + +getKeyProperties(keyAlias: string, options: HuksOptions, callback: AsyncCallback\) : void + +获取Callback方法生成的密钥属性。 + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ----------------------------------------- | ---- | ------------------------------------------------------------ | +| keyAlias | string | 是 | 密钥别名,应与所用密钥生成时使用的别名相同。
**系统能力**:SystemCapability.Security.Huks | +| options | [HuksOptions](#huksoptions) | 是 | 空对象(此处传空即可)。
**系统能力**:SystemCapability.Security.Huks | +| callback | AsyncCallback\<[HuksResult](#huksresult)> | 是 | errorCode:返回HUKS_SUCCESS时表示接口使用成功,其他时为错误properties:返回值为从生成key时传入的别名。中导出的生成密钥时所需参数。
**系统能力**:SystemCapability.Security.Huks | + +**示例:** + +```js +var keyAlias = 'keyAlias'; +var emptyOptions = { + properties: [] +}; +huks.getKeyProperties(keyAlias, emptyOptions, function (err, data){}); +``` + +## huks.getKeyProperties + +getKeyProperties(keyAlias: string, options: HuksOptions) : Promise\ + +获取Promise方法生成的密钥属性。 + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ----------- | ---- | ------------------------------------------------------------ | +| keyAlias | string | 是 | 密钥别名,应与所用密钥生成时使用的别名相同。
**系统能力**:SystemCapability.Security.Huks | +| options | [HuksOptions](#huksoptions) | 是 | 空对象(此处传空即可)。
**系统能力**:SystemCapability.Security.Huks | + +**返回值:** + +| 类型 | 说明 | +| ------------------ | ------------------------------------------------------------ | +| Promise\<[HuksResult](#huksoptions)> | errorCode:返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。properties:返回值为从生成key时传入的别名。中导出的生成密钥时所需参数。
**系统能力**:SystemCapability.Security.Huks | + +**示例:** + +```js +var keyAlias = 'keyAlias'; +var emptyOptions = { + properties: [] +}; +var result = await huks.getKeyProperties(keyAlias, emptyOptions); +``` + +## huks.isKeyExist + +isKeyExist(keyAlias: string, options: HuksOptions, callback: AsyncCallback\) : void + +判断Callback方法生成的密钥是否存在 。 + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------- | ---- | ------------------------------------- | +| keyAlias | string | 是 | 所需查找的密钥的别名。
**系统能力**:SystemCapability.Security.Huks | +| options | [HuksOptions](#huksoptions) | 是 | 空对象(此处传空即可)。
**系统能力**:SystemCapability.Security.Huks | +| callback | AsyncCallback\ | 是 | FALSE代表密钥不存在,TRUE代表密钥存在。
**系统能力**:SystemCapability.Security.Huks | + +**示例:** + +```js +var keyAlias = 'keyAlias'; +var emptyOptions = { + properties: [] +}; +huks.isKeyExist(keyAlias, emptyOptions, function (err, data){}); +``` + +## huks.isKeyExist + +isKeyExist(keyAlias: string, options: HuksOptions) : Promise\ + +判断Promise方法生成的密钥是否存在 。 + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ----------- | ---- | -------------------------------- | +| keyAlias | string | 是 | 所需查找的密钥的别名。
**系统能力**:SystemCapability.Security.Huks | +| options | [HuksOptions](#huksoptions) | 是 | 空对象(此处传空即可)。
**系统能力**:SystemCapability.Security.Huks | + +**返回值:** + +| 类型 | 说明 | +| ----------------- | ------------------------------------------------------------ | +| Promise\ | FALSE代表密钥不存在,TRUE代表密钥存在。
**系统能力**:SystemCapability.Security.Huks | + +**示例:** + +```js +var keyAlias = 'keyAlias'; +var emptyOptions = { + properties: [] +}; +var result = await huks.isKeyExist(keyAlias, emptyOptions); +``` + + +## huks.init + +init(keyAlias: string, options: HuksOptions, callback: AsyncCallback\) : void + +init操作接口,使用callback回调异步返回结果 。 + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------- | ---- | ------------------------------------- | +| keyAlias | string | 是 | Init操作密钥的别名。
**系统能力**:SystemCapability.Security.Huks | +| options | [HuksOptions](#huksoptions) | 是 | Init操作的参数集合。
**系统能力**:SystemCapability.Security.Huks | +| callback | AsyncCallback\<[HuksHandle](#hukshandle)> | 是 | 将Init操作操作返回的handle添加到密钥管理系统的回调。
**系统能力**:SystemCapability.Security.Huks | + +**示例:** + +```js +var alias = 'test001' +var properties = new Array(); +properties[0] = { + tag: huks.HuksTag.HUKS_TAG_ALGORITHM, + value: huks.HksKeyAlg.HKS_ALG_DH +}; +properties[1] = { + tag: huks.HksTag.HKS_TAG_PURPOSE, + value: huks.HksKeyPurpose.HKS_KEY_PURPOSE_AGREE +}; +properties[2] = { + tag: huks.HksTag.HKS_TAG_KEY_SIZE + value: huks.HksKeySize.HKS_DH_KEY_SIZE_4096 +}; +var options = { + properties: properties +}; +huks.init(alias, options, function(err, data) { + if (err.code !== 0) { + console.log("test init err information: " + JSON.stringify(err)); + } else { + console.log(`test init data: ${JSON.stringify(data)}`); + } +}) +``` + +## huks.init + +init(keyAlias: string, options: HuksOptions) : Promise\ + +init操作接口,使用Promise方式异步返回结果。 + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------- | ---- | ------------------------------------- | +| keyAlias | string | 是 | Init操作密钥的别名。
**系统能力**:SystemCapability.Security.Huks | +| options | [HuksOptions](#huksoptions) | 是 | Init参数集合。
**系统能力**:SystemCapability.Security.Huks | +| promise | Promise\<[HuksHandle](#hukshandle)> | 是 | 将Init操作返回的handle添加到密钥管理系统的回调。
**系统能力**:SystemCapability.Security.Huks | + +**示例:** + +```js +var alias = 'test001' +var properties = new Array(); +properties[0] = { + tag: huks.HuksTag.HUKS_TAG_ALGORITHM, + value: huks.HksKeyAlg.HKS_ALG_DH +}; +properties[1] = { + tag: huks.HksTag.HKS_TAG_PURPOSE, + value: huks.HksKeyPurpose.HKS_KEY_PURPOSE_AGREE +}; +properties[2] = { + tag: huks.HksTag.HKS_TAG_KEY_SIZE + value: huks.HksKeySize.HKS_DH_KEY_SIZE_4096 +}; + value: huks.HuksKeyDigest.HUKS_DIGEST_NONE +}; +var options = { + properties: properties +}; +huks.init(alias, options).then((data) => { + console.log(`test init data: ${JSON.stringify(data)}`); + handle1 = data.handle1; + handle2 = data.handle2; + handle = { + "handle1": handle1, + "handle2": handle2 + }; +}).catch((err) => { + console.log("test init err information: " + JSON.stringify(err)) +}) +``` + + +## huks.update + +update(handle: number, token?: Uint8Array, options: HuksOptions, callback: AsyncCallback\) : void + +update操作接口,使用callback回调异步返回结果 。 + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------- | ---- | ------------------------------------- | +| handle | number | 是 | Update操作的handle。
**系统能力**:SystemCapability.Security.Huks | +| token | Uint8Array | 否 | Update操作的token。
**系统能力**:SystemCapability.Security.Huks | +| options | [HuksOptions](#huksoptions) | 是 | Update的参数集合。
**系统能力**:SystemCapability.Security.Huks | +| callback | AsyncCallback\<[HksResult](#hksresult)> | 是 | 将Update操作的结果添加到密钥管理系统的回调。
**系统能力**:SystemCapability.Security.Huks | + +**示例:** + +```js +var properties = new Array(); +properties[0] = { + tag: huks.HuksTag.HUKS_TAG_ALGORITHM, + value: huks.HksKeyAlg.HKS_ALG_DH +}; +properties[1] = { + tag: huks.HksTag.HKS_TAG_PURPOSE, + value: huks.HksKeyPurpose.HKS_KEY_PURPOSE_AGREE +}; +properties[2] = { + tag: huks.HksTag.HKS_TAG_KEY_SIZE + value: huks.HksKeySize.HKS_DH_KEY_SIZE_4096 +}; +var options = { + properties: properties +}; +huks.update(handle, options, function (err, data){}); +``` + +## huks.update + +update(handle: number, token?: Uint8Array, options: HuksOptions) : Promis + +update操作接口,使用Promise方式异步返回结果。 + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------- | ---- | ------------------------------------- | +| handle | number | 是 | Update操作的handle。
**系统能力**:SystemCapability.Security.Huks | +| token | Uint8Array | 否 | Update操作的token。
**系统能力**:SystemCapability.Security.Huks | +| options | [HuksOptions](#huksoptions) | 是 | Update操作的参数集合。
**系统能力**:SystemCapability.Security.Huks | +| promise | Promise\<[HuksResult](#huksresult)> | 是 | 将Update操作的结果添加到密钥管理系统的回调。
**系统能力**:SystemCapability.Security.Huks | + +**示例:** + +```js +var properties = new Array(); +properties[0] = { + tag: huks.HuksTag.HUKS_TAG_ALGORITHM, + value: huks.HksKeyAlg.HKS_ALG_DH +}; +properties[1] = { + tag: huks.HksTag.HKS_TAG_PURPOSE, + value: huks.HksKeyPurpose.HKS_KEY_PURPOSE_AGREE +}; +properties[2] = { + tag: huks.HksTag.HKS_TAG_KEY_SIZE + value: huks.HksKeySize.HKS_DH_KEY_SIZE_4096 +}; + value: huks.HuksKeyDigest.HUKS_DIGEST_NONE +}; +var options = { + properties: properties +}; +var result = huks.update(handle, options) +``` + +## huks.finish + +finish(handle: number, options: HuksOptions, callback: AsyncCallback\) : void + +finish操作接口,使用callback回调异步返回结果 。 + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------- | ---- | ------------------------------------- | +| handle | number | 是 | Finish操作的handle。
**系统能力**:SystemCapability.Security.Huks | +| options | [HuksOptions](#huksoptions) | 是 | Finish的参数集合。
**系统能力**:SystemCapability.Security.Huks | +| callback | AsyncCallback\<[HksResult](#hksresult)> | 是 | 将Finish操作的结果添加到密钥管理系统的回调。
**系统能力**:SystemCapability.Security.Huks | + +**示例:** + +```js +var properties = new Array(); +properties[0] = { + tag: huks.HuksTag.HUKS_TAG_ALGORITHM, + value: huks.HksKeyAlg.HKS_ALG_DH +}; +properties[1] = { + tag: huks.HksTag.HKS_TAG_PURPOSE, + value: huks.HksKeyPurpose.HKS_KEY_PURPOSE_AGREE +}; +properties[2] = { + tag: huks.HksTag.HKS_TAG_KEY_SIZE + value: huks.HksKeySize.HKS_DH_KEY_SIZE_4096 +}; +var options = { + properties: properties +}; +huks.finish(handle, options, function (err, data){}); +``` + +## huks.finish + +finish(handle: number, options: HuksOptions) : Promise\ + +finish操作接口,使用Promise方式异步返回结果。 + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------- | ---- | ------------------------------------- | +| handle | number | 是 | Finish操作的handle。
**系统能力**:SystemCapability.Security.Huks | +| options | [HuksOptions](#huksoptions) | 是 | Finish操作的参数集合。
**系统能力**:SystemCapability.Security.Huks | +| promise | Promise\<[HuksResult](#HuksResult)> | 是 | promise实例,用于获取异步返回结果。
**系统能力**:SystemCapability.Security.Huks | + +**示例:** + +```js +var properties = new Array(); +properties[0] = { + tag: huks.HuksTag.HUKS_TAG_ALGORITHM, + value: huks.HksKeyAlg.HKS_ALG_DH +}; +properties[1] = { + tag: huks.HksTag.HKS_TAG_PURPOSE, + value: huks.HksKeyPurpose.HKS_KEY_PURPOSE_AGREE +}; +properties[2] = { + tag: huks.HksTag.HKS_TAG_KEY_SIZE + value: huks.HksKeySize.HKS_DH_KEY_SIZE_4096 +}; + value: huks.HuksKeyDigest.HUKS_DIGEST_NONE +}; +var options = { + properties: properties +}; +var result = huks.finish(handle, options) +``` + + +## huks.abort + +abort(handle: number, options: HuksOptions, callback: AsyncCallback\) : void + +abort操作接口,使用callback回调异步返回结果 。 + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------- | ---- | ------------------------------------- | +| handle | number | 是 | Abort操作的handle。
**系统能力**:SystemCapability.Security.Huks | +| options | [HuksOptions](#huksoptions) | 是 | Abort操作的参数集合。
**系统能力**:SystemCapability.Security.Huks | +| callback | AsyncCallback\<[HksResult](#hksresult)> | 是 | 将Abort操作的结果添加到密钥管理系统的回调。
**系统能力**:SystemCapability.Security.Huks | + +**示例:** + +```js +var properties = new Array(); +properties[0] = { + tag: huks.HuksTag.HUKS_TAG_ALGORITHM, + value: huks.HksKeyAlg.HKS_ALG_DH +}; +properties[1] = { + tag: huks.HksTag.HKS_TAG_PURPOSE, + value: huks.HksKeyPurpose.HKS_KEY_PURPOSE_AGREE +}; +properties[2] = { + tag: huks.HksTag.HKS_TAG_KEY_SIZE + value: huks.HksKeySize.HKS_DH_KEY_SIZE_4096 +}; +var options = { + properties: properties +}; +huks.abort(handle, options, function (err, data){}); +``` + +## huks.abort + +abort(handle: number, options: HuksOptions) : Promise\; + +abort操作接口,使用Promise方式异步返回结果。 + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------- | ---- | ------------------------------------- | +| handle | number | 是 | Abort操作的handle。
**系统能力**:SystemCapability.Security.Huks | +| options | [HuksOptions](#huksoptions) | 是 | Abort操作的参数集合。
**系统能力**:SystemCapability.Security.Huks | +| promise | Promise\<[HuksResult](#huksresult)> | 是 | 将Abort操作的结果添加到密钥管理系统的回调。
**系统能力**:SystemCapability.Security.Huks | + +**示例:** + +```js +var properties = new Array(); +properties[0] = { + tag: huks.HuksTag.HUKS_TAG_ALGORITHM, + value: huks.HksKeyAlg.HKS_ALG_DH +}; +properties[1] = { + tag: huks.HksTag.HKS_TAG_PURPOSE, + value: huks.HksKeyPurpose.HKS_KEY_PURPOSE_AGREE +}; +properties[2] = { + tag: huks.HksTag.HKS_TAG_KEY_SIZE + value: huks.HksKeySize.HKS_DH_KEY_SIZE_4096 +}; + value: huks.HuksKeyDigest.HUKS_DIGEST_NONE +}; +var options = { + properties: properties +}; +var result = huks.abort(handle, options); +``` + +## HuksParam + +调用接口使用的options中的properties数组中的param。 + +| 参数名 | 类型 | 必填 | 说明 | +| ------ | ----------------------------------- | ---- | ----------------------------------------------------------- | +| tag | HuksTag | 是 | 标签
**系统能力**:SystemCapability.Security.Huks | +| value | boolean\|number\|bigint\|Uint8Array | 是 | 标签对应值
**系统能力**:SystemCapability.Security.Huks | + +## HuksOptions + +调用接口使用的options。 + +| 参数名 | 类型 | 必填 | 说明 | +| ---------- | ----------------- | ---- | ------------------------------------------------------------ | +| properties | Array\ | 否 | 属性,存HuksParam的数组。
**系统能力**:SystemCapability.Security.Huks | +| inData | Uint8Array | 否 | 输入数据。
**系统能力**:SystemCapability.Security.Huks | + +## HuksHandle + +huks Handle结构体。 + +| 参数名 | 类型 | 必填 | 说明 | +| ---------- | ---------------- | ---- | -------- | +| errorCode | number | 是 | 错误码
**系统能力**:SystemCapability.Security.Huks | +| handle | number | 是 | handle值
**系统能力**:SystemCapability.Security.Huks | +| token | Uint8Array | 否 | 预留字段
**系统能力**:SystemCapability.Security.Huks | + + +## HuksResult + +调用接口返回的result。 + +| 参数名 | 类型 | 必填 | 说明 | +| ---------- | ----------------- | ---- | --------------------------------------------------------- | +| errorCode | number | 是 | 错误码
**系统能力**:SystemCapability.Security.Huks | +| outData | Uint8Array | 否 | 输出数据
**系统能力**:SystemCapability.Security.Huks | +| properties | Array\ | 否 | 属性
**系统能力**:SystemCapability.Security.Huks | +| certChains | Array\ | 否 | 证书链
**系统能力**:SystemCapability.Security.Huks | + diff --git a/zh-cn/application-dev/reference/apis/js-apis-image.md b/zh-cn/application-dev/reference/apis/js-apis-image.md new file mode 100644 index 0000000000000000000000000000000000000000..6795829a272ad08c3d072ed2db9dd6b4c2ca9c87 --- /dev/null +++ b/zh-cn/application-dev/reference/apis/js-apis-image.md @@ -0,0 +1,1382 @@ +图片处理 +========== + + 导入模块 +--------- + +``` +import image from './@ohos.multimedia.image'; +``` + +## image.createPixelMap +createPixelMap(colors: ArrayBuffer, opts: InitializetionOptions): Promise\ + +通过colors和opts创建pixelmap。 + +**系统能力:** SystemCapability.Multimedia.Image + +**参数:** + +| 名称 | 类型 | 必填 | 说明 | +| ------ | ----------------------------------------------- | ---- | ------------------------------------------------------------ | +| colors | ArrayBuffer | 是 | 颜色数组。 | +| opts | [InitializetionOptions](#InitializationOptions) | 是 | 创建像素的属性,包括透明度,尺寸,缩略值,像素格式和是否可编辑。 | + +**返回值:** + +| 类型 | 说明 | +| ------------------ | -------------- | +| Promise\ | 返回pixelmap。 | + +**示例:** + +```js +image.createPixelMap(Color, opts) + .then((pixelmap) => { + expect(pixelmap !== null).assertTrue() + done() + }) +``` + +## image.createPixelMap + +createPixelMap(colors: ArrayBuffer, opts: InitializetionOptions) callback: AsyncCallback\): void + +通过属性创建pixelmap。 + +**系统能力:** SystemCapability.Multimedia.Image + +**参数:** + +| 名称 | 类型 | 必填 | 说明 | +| -------- | ----------------------------------------------- | ---- | -------------------- | +| colors | ArrayBuffer | 是 | 颜色数组。 | +| opts | [InitializetionOptions](#InitializationOptions) | 是 | 属性。 | +| callback | AsyncCallback\ | 是 | 回调表示成功或失败。 | + +**示例:** + +```js +image.createPixelMap(Color, opts, (pixelmap) => { + expect(pixelmap !== null).assertTrue() + done() + }) +``` + +## PixelMap + +图像像素类,用于读取或写入图像数据以及获取图像信息。在调用PixelMap的方法前,需要先通过createPixelMap创建一个PixelMap实例。 + + ### 属性 + +| 名称 | 类型 | 可读 | 可写 | 说明 | +| ---------- | ------- | ---- | ---- | ------------------------------------------------------------ | +| isEditable | boolean | 是 | 否 | 设定是否图像像素可被编辑。
**系统能力:** SystemCapability.Multimedia.Image | + +### readPixelsToBuffer + +``` +readPixelsToBuffer(dst: ArrayBuffer): Promise +``` + +读取图像像素数据,结果写入ArrayBuffer里,使用Promise形式返回。 + +**系统能力:** SystemCapability.Multimedia.Image + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ------ | ----------- | ---- | ------------------------------------------------------------ | +| dst | ArrayBuffer | 是 | 缓冲区,函数执行结束后获取的图像像素数据写入到该内存区域内。 | + +**返回值:** + +| 类型 | 说明 | +| :------------- | :---------------------------------------------- | +| Promise\ | Promise实例,用于获取结果,失败时返回错误信息。 | + +**示例:** + +```js +pixelmap.readPixelsToBuffer(readBuffer).then(() => { + var bufferArr = new Uint8Array(readBuffer) + var res = true + for (var i = 0; i < bufferArr.length; i++) { + if (res) { + if (bufferArr[i] !== 0) { + res = false + console.info('TC_020 Success') + expect(true).assertTrue() + done() + break + } + } + } + if (res) { + console.info('TC_020 buffer is all empty') + expect(false).assertTrue() + done() + } + }) +``` + +### readPixelsToBuffer + +readPixelsToBuffer(dst: ArrayBuffer, callback: AsyncCallback\): void + +读取图像像素数据,结果写入ArrayBuffer里,使用callback形式返回。 + +**系统能力:** SystemCapability.Multimedia.Image + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | -------------------- | ---- | ------------------------------------------------------------ | +| dst | ArrayBuffer | 是 | 缓冲区,函数执行结束后获取的图像像素数据写入到该内存区域内。 | +| callback | AsyncCallback\ | 是 | 获取回调,失败时返回错误信息。 | + +**示例:** + +```js +pixelmap.readPixelsToBuffer(readBuffer, () => { + var bufferArr = new Uint8Array(readBuffer) + var res = true + for (var i = 0; i < bufferArr.length; i++) { + if (res) { + if (bufferArr[i] !== 0) { + res = false + console.info('TC_020-1 Success') + expect(true).assertTrue() + done() + break + } + } + } + if (res) { + console.info('TC_020-1 buffer is all empty') + expect(false).assertTrue() + done() + } + }) +``` + +### readPixels + +readPixels(area: PositionArea): Promise\ + +读取区域内的图片数据,使用Promise形式返回读取结果。 + +**系统能力:** SystemCapability.Multimedia.Image + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ------ | ----------------------------- | ---- | ------------------------ | +| area | [PositionArea](#PositionArea) | 是 | 区域大小,根据区域读取。 | + +**返回值:** + +| 类型 | 说明 | +| :------------- | :-------------------------------------------------- | +| Promise\ | Promise实例,用于获取读取结果,失败时返回错误信息。 | + +**示例:** + +```js +pixelmap.readPixels(area).then((data) => { + if(data !== null){ + var bufferArr = new Uint8Array(area.pixels); + var res = true; + for (var i = 0; i < bufferArr.length; i++) { + console.info('TC_021 buffer ' + bufferArr[i]); + if(res) { + if (bufferArr[i] == 0) { + res = false; + console.info('TC_021 Success'); + expect(true).assertTrue(); + done(); + break; + } + } + } + if (res) { + console.info('TC_021 buffer is all empty'); + expect(false).assertTrue() + done(); + } + } + }) +``` + +### readPixels + +readPixels(area: PositionArea, callback: AsyncCallback\): void + +读区域的像素。 + +**系统能力:** SystemCapability.Multimedia.Image + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ----------------------------- | ---- | ------------------------------ | +| area | [PositionArea](#PositionArea) | 是 | 区域大小,根据区域读取。 | +| callback | AsyncCallback\ | 是 | 获取回调,失败时返回错误信息。 | + +**示例:** + +```js +pixelmap.readPixels(area,(data) => { + if(data !== null) { + var bufferArr = new Uint8Array(area.pixels); + var res = true; + for (var i = 0; i < bufferArr.length; i++) { + console.info('TC_021-1 buffer ' + bufferArr[i]); + if(res) { + if(bufferArr[i] == 0) { + res = false; + console.info('TC_021-1 Success'); + expect(true).assertTrue(); + done(); + break; + } + } + } +``` + +### writePixels + +writePixels(area: PositionArea): Promise\ + +先创建pixelmap,将pixelmap写入指定区域内,使用Promise形式返回写入结果。 + +**系统能力:** SystemCapability.Multimedia.Image + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ------ | ----------------------------- | ---- | -------------------- | +| area | [PositionArea](#PositionArea) | 是 | 区域,根据区域写入。 | + +**返回值:** + +| 类型 | 说明 | +| :------------- | :-------------------------------------------------- | +| Promise\ | Promise实例,用于获取写入结果,失败时返回错误信息。 | + +**示例:** + +```js +pixelMap.writePixels(area).then(() => { + console.log("Succeeded in writing pixels."); +}).catch((err) => { + console.error("Failed to write pixels."); +}); +``` + +### writePixels + +writePixels(area: PositionArea, callback: AsyncCallback\): void + +将指定的像素信息写入指定区域内。 + +**系统能力:** SystemCapability.Multimedia.Image + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| --------- | ----------------------------- | ---- | ------------------------------ | +| area | [PositionArea](#PositionArea) | 是 | 区域,根据区域写入。 | +| callback: | AsyncCallback\ | 是 | 获取回调,失败时返回错误信息。 | + +**示例:** + +```js +pixelmap.writePixels(area, () => { + const readArea = { + pixels: new ArrayBuffer(20), + offset: 0, + stride: 8, + region: { size: { height: 1, width: 2 }, x: 0, y: 0 }, + } + }) +``` + +### writeBufferToPixels + +writeBufferToPixels(src: ArrayBuffer): Promise\ + +将缓冲区的内容写入像素。 + +**系统能力:** SystemCapability.Multimedia.Image + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ------ | ----------- | ---- | -------- | +| src | ArrayBuffer | 是 | 缓冲区。 | + +**返回值:** + +| 类型 | 说明 | +| -------------- | ----------------------------------------------- | +| Promise\ | Promise实例,用于获取结果,失败时返回错误信息。 | + +**示例:** + +```js +pixelMap.writeBufferToPixels(colorBuffer).then(() => { + console.log("Succeeded in writing data from a buffer to a PixelMap."); +}).catch((err) => { + console.error("Failed to write data from a buffer to a PixelMap."); +}); +``` + +### writeBufferToPixels + +writeBufferToPixels(src: ArrayBuffer, callback: AsyncCallback\): void + +将缓冲区的内容写入像素。 + +**系统能力:** SystemCapability.Multimedia.Image + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | -------------------- | ---- | ------------------------------ | +| src | ArrayBuffer | 是 | 图像像素数据。 | +| callback | AsyncCallback\ | 是 | 获取回调,失败时返回错误信息。 | + +**示例:** + +```js +pixelMap.writeBufferToPixels(colorBuffer, function(err) { + if (err) { + console.error("Failed to write data from a buffer to a PixelMap."); + return; + } + console.log("Succeeded in writing data from a buffer to a PixelMap."); +}); +``` + +### getImageInfo + +getImageInfo(): Promise\ + +获取图像像素信息,使用Promise形式返回获取的图像像素信息。 + +**系统能力:** SystemCapability.Multimedia.Image + +**返回值:** + +| 类型 | 说明 | +| ------------------- | ----------------------------------------------------------- | +| Promise\ | Promise实例,用于异步获取图像像素信息,失败时返回错误信息。 | + +**示例:** + +```js +pixelMap.getImageInfo().then(function(info) { + console.log("Succeeded in obtaining the image pixel map information."); +}).catch((err) => { + console.error("Failed to obtain the image pixel map information."); +}); +``` + +### getImageInfo + +getImageInfo(callback: AsyncCallback\): void + +获取图像像素信息,使用callback形式返回获取的图像像素信息。 + +**系统能力:** SystemCapability.Multimedia.Image + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------------------- | ---- | ------------------------------------------------------------ | +| callback | AsyncCallback\ | 是 | 获取图像像素信息回调,异步返回图像像素信息,失败时返回错误信息。 | + +**示例:** + +```js +pixelmap.getImageInfo((imageInfo) => { + if (imageInfo !== null) { + console.info('TC_024-1 imageInfo is ready') + expect(imageInfo.size.height == 4).assertTrue() + expect(imageInfo.size.width == 6).assertTrue() + expect(imageInfo.pixelFormat == 1).assertTrue() + done() + } else { + console.info('TC_024-1 imageInfo is empty') + expect(false).assertTrue() + done() + } + }) +``` + +### getBytesNumberPerRow + +getBytesNumberPerRow(): Promise\ + +获取图像像素每行字节数。 + +**系统能力:** SystemCapability.Multimedia.Image + +**返回值:** + +| 类型 | 说明 | +| ---------------- | --------------------------------------------- | +| Promise\ | Promise实例,用于异步获取图像像素的行字节数。 | + +**示例:** + +```js +pixelmap.getBytesNumberPerRow().then((num) => { + console.info('TC_025 num is ' + num) + expect(num == expectNum).assertTrue() + done() + }) +``` + +### getBytesNumberPerRow + +getBytesNumberPerRow(callback: AsyncCallback\): void + +获取图像像素每行字节数。 + +**系统能力:** SystemCapability.Multimedia.Image + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------- | ---- | ------------------ | +| callback | AsyncCallback\ | 是 | 通过回调返回结果。 | + +**示例:** + +```js +pixelmap.getBytesNumberPerRow( num => { + console.info('TC_025-1 num is ' + num); + expect(num == expectNum).assertTrue(); + done(); + }) +``` + +### getPixelBytesNumber + +getPixelBytesNumber(): Promise\ + +获取图像像素的总字节数。 + +**系统能力:** SystemCapability.Multimedia.Image + +**返回值:** + +| 类型 | 说明 | +| ---------------- | --------------------------------------------- | +| Promise\ | Promise实例,用于异步获取图像像素的总字节数。 | + +**示例:** + +```js +pixelmap.getPixelBytesNumber().then((num) => { + console.info('TC_026 num is ' + num) + expect(num == expectNum).assertTrue() + done() + }) +``` + +### getPixelBytesNumber + +getPixelBytesNumber(callback: AsyncCallback\): void + +获取图像像素的总字节数。 + +**系统能力:** SystemCapability.Multimedia.Image + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------- | ---- | ------------------ | +| callback | AsyncCallback\ | 是 | 通过回调返回结果。 | + +**示例:** + +```js +pixelmap.getPixelBytesNumber((num) => { + console.info('TC_026-1 num is ' + num) + expect(num == expectNum).assertTrue() + done() + }) +``` + +### release + +release(): void + +释放pixelmap对象,使用Promise形式返回释放结果。 + +**系统能力:** SystemCapability.Multimedia.Image + +**示例:** + +```js +pixelmap.release() + expect(true).assertTrue() + done() +``` + +## image.createImageSource + +createImageSource(uri: string): ImageSource + +创建图片源。 + +**系统能力:** SystemCapability.Multimedia.Image + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ------ | ------ | ---- | ---------- | +| uri | string | 是 | 图片路径。 | + +**返回值:** + +| 类型 | 说明 | +| ----------- | ------------ | +| ImageSource | 返回图片源。 | + +**示例:** + +```js +const imageSourceApi = image.createImageSource('/data/local/tmp/test.jpg') +``` + +## image.createImageSource + +createImageSource(fd: number): ImageSource + +创建图片源。 + +**系统能力:** SystemCapability.Multimedia.Image + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ------ | ------ | ---- | ------------------ | +| fd | number | 是 | 基于fd创建图片源。 | + +**返回值:** + +| 类型 | 说明 | +| ----------- | ------------ | +| ImageSource | 返回图片源。 | + +**示例:** + +```js +const imageSourceApi = image.createImageSource(0) +``` + +## image.createImageSource + +createImageSource(data: ArrayBuffer): ImageSource + +创建图片源。 + +**系统能力:** SystemCapability.Multimedia.Image + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ------ | ----------- | ---- | ------ | +| data | ArrayBuffer | 是 | 数组。 | + +**返回值:** + +| 类型 | 说明 | +| ----------- | ------------ | +| ImageSource | 返回图片源。 | + +**示例:** + +```js +const data = new ArrayBuffer(96); +const imageSourceApi = image.createImageSource(data); +``` + +## image.createIncrementalSource + +createIncrementalSource(data: ArrayBuffer): ImageSource + +创建增量图片源。 + +**系统能力:** SystemCapability.Multimedia.Image + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ------ | ----------- | ---- | ---- | +| data | ArrayBuffer | 是 | 数组 | + +**返回值:** + +| 类型 | 说明 | +| ----------- | ------------ | +| ImageSource | 返回图片源。 | + +**示例:** + +```js +const data = new ArrayBuffer(96); +const imageSourceApi = image.createIncrementalSource(data); +``` + +## ImageSource + +图片源类,用于获取图片相关信息。在调用ImageSource的方法前,需要先通过createImageSource构建一个ImageSource实例。 + +### 属性 + +| 名称 | 类型 | 可读 | 可写 | 说明 | +| ---------------- | -------------- | ---- | ---- | ------------------------------------------------------------ | +| supportedFormats | Array\ | 是 | 否 | 支持的图片格式,包括:png,jpeg,wbmp,bmp,gif,webp,heif等。
**系统能力:** SystemCapability.Multimedia.Image | + +### getImageInfo + +getImageInfo(index: number, callback: AsyncCallback\): void + +获取指定序号的图片信息,使用callback形式返回图片信息。 + +**系统能力:** SystemCapability.Multimedia.Image + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | -------------------------------------- | ---- | ----------------------------------------------- | +| index | number | 是 | 图片序号,创建图片源时的序号,不选择时默认为0。 | +| callback | AsyncCallback<[ImageInfo](#ImageInfo)> | 是 | 获取图片信息回调,异步返回图片信息对象。 | + +**示例:** + +```js +it('TC_046', 0, async function (done) { + const imageSourceApi = image.createImageSource('/sdcard/test.jpg'); + if (imageSourceApi == null) { + console.info('TC_046 create image source failed'); + expect(false).assertTrue(); + done(); + } else { + imageSourceApi.getImageInfo(0,(error, imageInfo) => { + console.info('TC_046 imageInfo'); + expect(imageInfo !== null).assertTrue(); + done(); + }) + } + }) +``` + +### getImageInfo + +getImageInfo(callback: AsyncCallback\): void + +获取指定序号的图片信息,使用callback形式返回图片信息。 + +**系统能力:** SystemCapability.Multimedia.Image + +**参数:** + +| 名称 | 类型 | 必填 | 说明 | +| -------- | -------------------------------------- | ---- | ---------------------------------------- | +| callback | AsyncCallback<[ImageInfo](#ImageInfo)> | 是 | 获取图片信息回调,异步返回图片信息对象。 | + +**示例:** + +```js +imageSourceApi.getImageInfo(imageInfo => { + console.info('TC_045 imageInfo'); + expect(imageInfo !== null).assertTrue(); + done(); + }) +``` + +### getImageInfo + +getImageInfo(index?: number): Promise\ + +获取图片信息,使用Promise形式返回图片信息。 + +**系统能力:** SystemCapability.Multimedia.Image + +**参数:** + +| 名称 | 类型 | 必填 | 说明 | +| ----- | ------ | ---- | ----------------------------------------------- | +| index | number | 否 | 图片序号,创建图片源时的序号,不选择时默认为0。 | + +**返回值:** + +| 类型 | 说明 | +| --------------------------------- | ---------------------- | +| Promise\<[ImageInfo](#ImageInfo)> | 返回获取到的图片信息。 | + +**示例:** + +```js +imageSourceApi.getImageInfo(0) + .then(imageInfo => { + console.info('TC_047 imageInfo'); + expect(imageInfo !== null).assertTrue(); + done(); + }) +``` + +### getImageProperty + +getImageProperty(key:string, options?: GetImagePropertyOptions): Promise\ + +获取图片中给定索引处图像的指定属性键的值。 + +**系统能力:** SystemCapability.Multimedia.Image + + **参数:** + +| 名称 | 类型 | 必填 | 说明 | +| ------- | --------------------------------------------------- | ---- | ------------------------------------ | +| key | string | 是 | 图片属性名。 | +| options | [GetImagePropertyOptions](#GetImagePropertyOptions) | 否 | 图片属性,包括图片序号与默认属性值。 | + +**返回值:** + +| 类型 | 说明 | +| ---------------- | ------------------------------------------------------------ | +| Promise\ | Promise实例,用于异步获取图片属性值,如获取失败则返回属性默认值。 | + +**示例:** + +```js +const w = imageSourceApi.getImageProperty("ImageWidth") +``` + +### getImageProperty + +getImageProperty(key:string, callback: AsyncCallback\): void + +获取图片中给定索引处图像的指定属性键的值,使用callback形式返回结果。 + +**系统能力:** SystemCapability.Multimedia.Image + + **参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------- | ---- | ------------------------------------------------------------ | +| key | string | 是 | 图片属性名。 | +| callback | AsyncCallback\ | 是 | 获取图片属性回调,返回图片属性值,如获取失败则返回属性默认值。 | + +**示例:** + +```js +const w = imageSourceApi.getImageProperty("ImageWidth",w=>{}) +``` + +### getImageProperty + +getImageProperty(key:string, options: GetImagePropertyOptions, callback: AsyncCallback\): void + +获取图片指定属性键的值,callback形式返回结果。 + +**系统能力:** SystemCapability.Multimedia.Image + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | --------------------------------------------------- | ---- | ------------------------------------------------------------ | +| key | string | 是 | 图片属性名。 | +| options | [GetImagePropertyOptions](#GetImagePropertyOptions) | 是 | 图片属性,包括图片序号与默认属性值。 | +| callback | AsyncCallback\ | 是 | 获取图片属性回调,返回图片属性值,如获取失败则返回属性默认值。 | + +**示例:** + +```js + imageSourceApi.getImageProperty("ImageWidth",PropertyOptions,(w)=>{}) +``` + +### modifyImageProperty + +modifyImageProperty(key:string, value:string, options?: GetImagePropertyOptions): Promise\ + +修改属性的值。 + +**系统能力:** SystemCapability.Multimedia.Image + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ------- | --------------------------------------------------- | ---- | ------------------------------------ | +| key | string | 是 | 图片属性名。 | +| value | string | 是 | 属性值。 | +| options | [GetImagePropertyOptions](#GetImagePropertyOptions) | 是 | 图片属性,包括图片序号与默认属性值。 | + +**返回值:** + +| 类型 | 说明 | +| -------------- | --------------------------- | +| Promise\ | Promise实例,异步返回结果。 | + +**示例:** + +**示例:** + +```js +imageSourceApi.modifyImageProperty("ImageWidth", "abc") + .then(() => { + const w = imageSourceApi.getImageProperty("ImageWidth") + console.info('w', w); + expect(w == 'abc').assertTrue(); + done(); + }) +``` + +### modifyImageProperty + +modifyImageProperty(key:string, value:string, callback: AsyncCallback\): void + +修改属性的值,callback返回结果。 + +**系统能力:** SystemCapability.Multimedia.Image + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | -------------------- | ---- | ------------------------------ | +| key | string | 是 | 图片属性名。 | +| value | string | 是 | 属性值。 | +| callback | AsyncCallback\ | 是 | 修改属性值,callback返回结果。 | + +**示例:** + +```js +imageSourceApi.modifyImageProperty("ImageWidth", "abc",() => {}) +``` + +### modifyImageProperty + +modifyImageProperty(key:string, value:string, options: GetImagePropertyOptions,callback: AsyncCallback\): void + +修改属性的值,callback返回结果。 + +**系统能力:** SystemCapability.Multimedia.Image + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | --------------------------------------------------- | ---- | ------------------------------------ | +| key | string | 是 | 图片属性名。 | +| value | string | 是 | 属性值。 | +| options | [GetImagePropertyOptions](#GetImagePropertyOptions) | 是 | 图片属性,包括图片序号与默认属性值。 | +| callback | AsyncCallback\ | 是 | 修改属性值,callback返回结果。 | + +**示例:** + +```js +let PropertyOptions = { + index:0, + defaultValue:'a' +imageSourceApi.modifyImageProperty("ImageWidth", "abc",PropertyOptions,() => { + + }; +``` + +### createPixelMap + +createPixelMap(index: number, options: DecodingOptions, callback: AsyncCallback\): void + +通过图片解码参数创建pixelmap对象,使用callback形式返回结果。 + +**系统能力:** SystemCapability.Multimedia.Image + +**参数:** + +| 名称 | 类型 | 必填 | 说明 | +| ------------- | ------------------------------------ | ---- | -------------------- | +| options | [DecodingOptions](#DecodingOptions) | 是 | 解码参数。 | +| index | number | 是 | 图片索引。 | +| AsyncCallback | AsyncCallback<[PixelMap](#PixelMap)> | 是 | 回调表示成功或失败。 | + +**示例:** + +```js +imageSourceApi.createPixelMap().then(pixelmap => { + console.info('TC_050-11 createPixelMap '); + expect(pixelmap !== null ).assertTrue(); + done(); + }) +``` + +### createPixelMap + +createPixelMap(options: DecodingOptions, callback: AsyncCallback\): void + +通过图片解码参数创建pixelmap对象。 + +**系统能力:** SystemCapability.Multimedia.Image + +**参数:** + +| 名称 | 类型 | 必填 | 说明 | +| -------- | ------------------------------------ | ---- | -------------------- | +| options | [DecodingOptions](#DecodingOptions) | 是 | 解码参数。 | +| callback | AsyncCallback<[PixelMap](#PixelMap)> | 是 | 回调表示成功或失败。 | + +**示例:** + +```js +let decodingOptions = { + sampleSize:1, + editable: true, + desiredSize:{ width:1, height:2}, + rotateDegrees:10, + desiredPixelFormat:1, + desiredRegion: { size: { height: 1, width: 2 }, x: 0, y: 0 }, + }; + imageSourceApi.createPixelMap(0,decodingOptions, pixelmap => { + console.info('TC_050-1 createPixelMap '); + expect(pixelmap !== null ).assertTrue(); + done(); + }) +``` + +### createPixelMap + +createPixelMap(opts: DecodingOptions, callback: AsyncCallback\): void + +通过图片解码参数创建pixelmap对象。 + +**系统能力:** SystemCapability.Multimedia.Image + +**参数:** + +| 名称 | 类型 | 必填 | 说明 | +| -------- | ------------------------------------ | ---- | -------------------- | +| opts | [DecodingOptions](#DecodingOptions) | 是 | 解码参数。 | +| callback | AsyncCallback<[PixelMap](#PixelMap)> | 是 | 回调表示成功或失败。 | + +**示例:** + +```js +let decodingOptions = { + sampleSize:1, + editable: true, + desiredSize:{ width:1, height:2}, + rotateDegrees:10, + desiredPixelFormat:1, + desiredRegion: { size: { height: 1, width: 2 }, x: 0, y: 0 }, + index:1 + }; + imageSourceApi.createPixelMap(decodingOptions, pixelmap => { + console.info('TC_050-1 createPixelMap '); + expect(pixelmap !== null ).assertTrue(); + done(); + }) +``` + +### updateData + +updateData(data: Array\, isFinal: boolean, offset: number, length: number, callback: AsyncCallback\): void + +更新增量数据。 + +**系统能力:** SystemCapability.Multimedia.Image + +**参数:** + +| 名称 | 类型 | 必填 | 说明 | +| -------- | ----------------------- | ---- | -------------------- | +| data | Array\ | 是 | 增量数据。 | +| isFinal | boolean | 是 | 是否更新完。 | +| offset | number | 是 | 偏移量。 | +| length | number | 是 | 数组长。 | +| callback | AsyncCallback\ | 是 | 回调表示成功或失败。 | + +**示例:** + +```js +imageSourceIncrementalSApi.updateData(array, false, 0, 10,(error,data )=> { + if(data !== undefined){ + expect(data).assertTrue(); + console.info('TC_053-1 success'); + done(); + } +``` + +### updateData + +updateData(data: Array\, isFinal: boolean, offset?: number, length?: number): Promise\ + +更新增量数据。 + +**系统能力:** SystemCapability.Multimedia.Image + +**参数:** + +| 名称 | 类型 | 必填 | 说明 | +| ------- | -------------- | ---- | ------------ | +| data | Array\ | 是 | 增量数据。 | +| isFinal | boolean | 是 | 是否更新完。 | +| offset | boolean | 否 | 偏移量。 | +| length | number | 否 | 数组长。 | + +**返回值:** + +| 类型 | 说明 | +| ----------------- | --------------------------------- | +| Promise\ | Promise实例,异步返回成功或失败。 | + +**示例:** + +```js + imageSourceIncrementalSApi.updateData(array, false, 0, 10).then(data => { + expect(data).assertTrue(); + console.info('TC_053 success'); + done(); + }) +``` + +### updateData + +updateData(data: Array\, isFinal: boolean, callback: AsyncCallback\): void + +更新增量数据。 + +**系统能力:** SystemCapability.Multimedia.Image + +**参数:** + +| 名称 | 类型 | 必填 | 说明 | +| -------- | ----------------------- | ---- | -------------------- | +| data | Array\ | 是 | 增量数据。 | +| isFinal | boolean | 是 | 是否更新完。 | +| callback | AsyncCallback\ | 是 | 回调表示成功或失败。 | + +**示例:** + +```js +imageSourceIncrementalSApi.updateData(array, false,(error,data) => { + if(data !== undefined){ + expect(data).assertTrue(); + console.info('TC_053-2 success'); + done(); + } +``` + +### release + +release(callback: AsyncCallback\): void + +释放图片源。 + +**系统能力:** SystemCapability.Multimedia.Image + +**参数:** + +| 名称 | 类型 | 必填 | 说明 | +| -------- | -------------------- | ---- | ---------------------------------- | +| callback | AsyncCallback\ | 是 | 资源释放回调,失败时返回错误信息。 | + +**示例:** + +```js +imageSourceApi.release(() => { + console.info('TC_044-1 Success'); + expect(true).assertTrue(); + done(); + }) + } +``` + +### release + +release(): Promise\ + +释放图片源。 + +**系统能力:** SystemCapability.Multimedia.Image + +**返回值:** + +| 类型 | 说明 | +| -------------- | --------------------------- | +| Promise\ | Promise实例,异步返回结果。 | + +**示例:** + +```js + imageSourceApi.release(() => { + console.info('TC_044-1 Success'); + expect(true).assertTrue(); + done(); + }) +``` + +## image.createImagePacker + +createImagePacker(): ImagePacker + +创建imagepacker实例。 + +**系统能力:** SystemCapability.Multimedia.Image + +**返回值:** + +| 类型 | 说明 | +| ----------- | ----------------- | +| ImagePacker | 返回ImagePacker。 | + +**示例:** + +```js +const imagePackerApi = image.createImagePacker(); +``` + +## ImagePacker + +图片打包器类,用于图片压缩和打包。在调用ImagePacker的方法前,需要先通过createImagePacker构建一个ImagePacker实例。 + +### 属性 + +| 名称 | 类型 | 可读 | 可写 | 说明 | +| ---------------- | -------------- | ---- | ---- | ------------------------------------------------------------ | +| supportedFormats | Array\ | 是 | 否 | 图片打包支持的格式,jpg。
**系统能力:** SystemCapability.Multimedia.Image | + +### packing + +packing(source: ImageSource, option: PackingOption, callback: AsyncCallback>): void + +图片压缩或重新打包,使用callback形式返回结果。 + +**系统能力:** SystemCapability.Multimedia.Image + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------------------------- | ---- | ---------------------------------- | +| source | [ImageSource](#ImageSource) | 是 | 打包的图片源。 | +| option | [PackingOption](#PackingOption) | 是 | 设置打包参数。 | +| callback | AsyncCallback> | 是 | 获取图片打包回调,返回打包后数据。 | + +**示例:** + +```js +let packOpts = { format:["image/jpeg"], quality:98 } + imagePackerApi.packing(imageSourceApi, packOpts, data => { + console.info('TC_062-1 finished'); + expect(data !== null).assertTrue(); + done(); + }) +``` + +### packing + +packing(source: ImageSource, option: PackingOption): Promise> + +图片压缩或重新打包,使用promise形式返回结果。 + +**系统能力:** SystemCapability.Multimedia.Image + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ------ | ------------------------------- | ---- | -------------- | +| source | [ImageSource](#ImageSource) | 是 | 打包的图片源。 | +| option | [PackingOption](#PackingOption) | 是 | 设置打包参数。 | + +**返回值:** + +| 类型 | 说明 | +| :---------------------- | :-------------------------------------------- | +| Promise> | Promise实例,用于异步获取压缩或打包后的数据。 | + +**示例:** + +```js +let packOpts = { format:["image/jpeg"], quality:98 } + imagePackerApi.packing(imageSourceApi, packOpts) + .then( data => { + console.info('TC_062 finished'); + expect(data !== null).assertTrue(); + done(); + }) +``` + +### release + +release(callback: AsyncCallback\): void + +释放packer对象。 + +**系统能力:** SystemCapability.Multimedia.Image + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | -------------------- | ---- | ---------------------- | +| callback | AsyncCallback\ | 是 | 回调表示成功还是失败。 | + +**示例:** + +```js +imagePackerApi.release(()=>{ + console.info('TC_063-1 release'); + expect(true).assertTrue(); + done(); +``` + +### release + +release(): Promise\ + +释放packer对象。 + +**系统能力:** SystemCapability.Multimedia.Image + +**返回值:** + +| 类型 | 说明 | +| :------------- | :------------------------------ | +| Promise\ | Promise实例,用于异步返回结果。 | + +**示例:** + +```js +imagePackerApi.release(); + console.info('TC_063 release'); + expect(true).assertTrue(); + done(); +``` + +## PositionArea + +| 名称 | 类型 | 可读 | 可写 | 说明 | +| ------ | ----------------- | ---- | ---- | ------------------------------------------------------------ | +| pixels | ArrayBuffer | 是 | 否 | 像素。
**系统能力:** SystemCapability.Multimedia.Image | +| offset | number | 是 | 否 | 偏移量。
**系统能力:** SystemCapability.Multimedia.Image | +| stride | number | 是 | 否 | 像素间距。
**系统能力:** SystemCapability.Multimedia.Image | +| region | [Region](#Region) | 是 | 否 | 区域,按照区域读写。
**系统能力:** SystemCapability.Multimedia.Image | + +## **ImageInfo** + +| 名称 | 类型 | 可读 | 可写 | 说明 | +| ----------- | --------------------------------- | ---- | ---- | ------------------------------------------------------------ | +| size | [Size](#Size) | 是 | 是 | 图片大小。
**系统能力:** SystemCapability.Multimedia.Image | +| pixelFormat | [PixelMapFormat](#PixelMapFormat) | 是 | 是 | 图片格式。
**系统能力:** SystemCapability.Multimedia.Image | +| colorSpace | [ColorSpace](#ColorSpace) | 是 | 是 | 色域。
**系统能力:** SystemCapability.Multimedia.Image | +| alphaType | [AlphaType](#AlphaType) | 是 | 是 | 透明度。
**系统能力:** SystemCapability.Multimedia.Image | + +## Size + +| 名称 | 类型 | 可读 | 可写 | 说明 | +| ------ | ------ | ---- | ---- | ------------------------------------------------------------ | +| height | number | 是 | 是 | 输出图片的高。
**系统能力:** SystemCapability.Multimedia.Image | +| width | number | 是 | 是 | 输出图片的宽。
**系统能力:** SystemCapability.Multimedia.Image | + +## PixelMapFormat + +枚举,像素格式。 + +| 名称 | 默认值 | 描述 | +| --------- | ------ | ------------------------------------------------------------ | +| UNKNOWN | 0 | 未知格式。
**系统能力:** SystemCapability.Multimedia.Image | +| ARGB_8888 | 1 | 格式为ARGB_8888。
**系统能力:** SystemCapability.Multimedia.Image | +| RGB_565 | 2 | 格式为RGB_565。
**系统能力:** SystemCapability.Multimedia.Image | + +## ColorSpace + +枚举,色块。 + +| 名称 | 默认值 | 描述 | +| -------------------- | ------ | ------------------------------------------------------------ | +| UNKNOWN | 0 | 色块基于unknown color space。
**系统能力:** SystemCapability.Multimedia.Image | +| DISPLAY_P3 | 1 | 色块基于 SMPTE RP 431-2-2007 and IEC 61966-2.1:199。
**系统能力:** SystemCapability.Multimedia.Image | +| SRGB | 2 | 色块基于IEC 61966-2.1:1999。
**系统能力:** SystemCapability.Multimedia.Image | +| LINEAR_SRGB | 3 | 色块基于the IEC 61966-2.1:1999。
**系统能力:** SystemCapability.Multimedia.Image | +| EXTENDED_SRGB | 4 | 色块基于IEC 61966-2-2:2003。
**系统能力:** SystemCapability.Multimedia.Image | +| LINEAR_EXTENDED_SRGB | 5 | 色块基于IEC 61966-2-2:2003。
**系统能力:** SystemCapability.Multimedia.Image | +| GENERIC_XYZ | 6 | 色块基于D50。
**系统能力:** SystemCapability.Multimedia.Image | +| GENERIC_LAB | 7 | 色块基于 CIE XYZ D50。
**系统能力:** SystemCapability.Multimedia.Image | +| ACES | 8 | 色块基于SMPTE ST 2065-1:2012。
**系统能力:** SystemCapability.Multimedia.Image | +| ACES_CG | 9 | 色块基于Academy S-2014-004。
**系统能力:** SystemCapability.Multimedia.Image | +| ADOBE_RGB_1998 | 10 | 色块基于 Adobe RGB。
**系统能力:** SystemCapability.Multimedia.Image | +| DCI_P3 | 11 | 色块基于SMPTE RP 431-2-2007。
**系统能力:** SystemCapability.Multimedia.Image | +| ITU_709 | 12 | 色块基于Rec.ITU-R BT.709-5。
**系统能力:** SystemCapability.Multimedia.Image | +| ITU_2020 | 13 | 色块基于Rec.ITU-R BT.2020-1。
**系统能力:** SystemCapability.Multimedia.Image | +| ROMM_RGB | 14 | 色块基于ISO 22028-2:2013。
**系统能力:** SystemCapability.Multimedia.Image | +| NTSC_1953 | 15 | 色块基于NTSC 1953 standard。
**系统能力:** SystemCapability.Multimedia.Image | +| SMPTE_C | 16 | 色块基于 SMPTE C。
**系统能力:** SystemCapability.Multimedia.Image | + +## AlphaType + +枚举,透明度。 + +| 名称 | 默认值 | 描述 | +| -------- | ------ | ------------------------------------------------------------ | +| UNKNOWN | 0 | 未知透明度。
**系统能力:** SystemCapability.Multimedia.Image | +| OPAQUE | 1 | 没有alpha或图片全透明。
**系统能力:** SystemCapability.Multimedia.Image | +| PREMUL | 2 | RGB前乘alpha。
**系统能力:** SystemCapability.Multimedia.Image | +| UNPREMUL | 3 | RGB不前乘alpha。
**系统能力:** SystemCapability.Multimedia.Image | + +## ScaleMode + +枚举,缩略值。 + +| 名称 | 默认值 | 描述 | +| --------------- | ------ | ------------------------------------------------------------ | +| CENTER_CROP | 1 | 缩放图像以填充目标图像区域并居中裁剪区域外的效果。
**系统能力:** SystemCapability.Multimedia.Image | +| FIT_TARGET_SIZE | 2 | 图像适合目标尺寸的效果。
**系统能力:** SystemCapability.Multimedia.Image | + +## InitializationOptions + +| 名称 | 类型 | 可读 | 可写 | 说明 | +| ----------- | --------------------------------- | ---- | ---- | ------------------------------------------------------------ | +| alphaType | [AlphaType](#AlphaType) | 是 | 是 | 透明度。
**系统能力:** SystemCapability.Multimedia.Image | +| editable | boolean | 是 | 是 | 是否可编辑。
**系统能力:** SystemCapability.Multimedia.Image | +| pixelFormat | [PixelMapFormat](#PixelMapFormat) | 是 | 是 | 像素格式。
**系统能力:** SystemCapability.Multimedia.Image | +| scalemode | [ScaleMode](#ScaleMode) | 是 | 是 | 缩略值。
**系统能力:** SystemCapability.Multimedia.Image | +| size | [Size](#Size) | 是 | 是 | 创建图片大小。
**系统能力:** SystemCapability.Multimedia.Image | + +## DecodingOptions + +解码设置选项。 + +| 名称 | 类型 | 可读 | 可写 | 说明 | +| ------------------ | --------------------------------- | ---- | ---- | ------------------------------------------------------------ | +| sampleSize | number | 是 | 是 | 缩略图采样大小。
**系统能力:** SystemCapability.Multimedia.Image | +| rotateDegrees | number | 是 | 是 | 旋转角度。
**系统能力:** SystemCapability.Multimedia.Image | +| editable | boolean | 是 | 是 | 是否可编辑。
**系统能力:** SystemCapability.Multimedia.Image | +| desiredSize | [Size](#Size) | 是 | 是 | 期望输出大小。
**系统能力:** SystemCapability.Multimedia.Image | +| desiredRegion | [Region](#Region) | 是 | 是 | 解码区域。
**系统能力:** SystemCapability.Multimedia.Image | +| desiredPixelFormat | [PixelMapFormat](#PixelMapFormat) | 是 | 是 | 解码的像素格式。
**系统能力:** SystemCapability.Multimedia.Image | +| reusedPixelMap | [PixelMap](#PixelMap) | 是 | 是 | 将当前buffer地址给新创建的pixelmap。
**系统能力:** SystemCapability.Multimedia.Image | + +## Region + +| 名称 | 类型 | 可读 | 可写 | 说明 | +| ---- | ------------- | ---- | ---- | ------------------------------------------------------------ | +| size | [Size](#Size) | 是 | 是 | 区域大小。
**系统能力:** SystemCapability.Multimedia.Image | +| x | number | 是 | 是 | 区域坐标。
**系统能力:** SystemCapability.Multimedia.Image | +| y | number | 是 | 是 | 区域坐标。
**系统能力:** SystemCapability.Multimedia.Image | + +## PackingOption + +| 名称 | 类型 | 可读 | 可写 | 说明 | +| ------- | ------ | ---- | ---- | ------------------------------------------------------------ | +| format | string | 是 | 是 | 目标格式。
**系统能力:** SystemCapability.Multimedia.Image | +| quality | number | 是 | 是 | 目标图片质量。
**系统能力:** SystemCapability.Multimedia.Image | + +## GetImagePropertyOptions + +| 名称 | 类型 | 可读 | 可写 | 说明 | +| ------------ | ------ | ---- | ---- | ---------- | +| index | number | 是 | 是 | 图片序号。
**系统能力:** SystemCapability.Multimedia.Image | +| defaultValue | string | 是 | 是 | 默认属性值
**系统能力:** SystemCapability.Multimedia.Image | + diff --git a/zh-cn/application-dev/reference/apis/js-apis-media.md b/zh-cn/application-dev/reference/apis/js-apis-media.md index 90b9f701b255b3430356412cbe54cd830c4b5114..74a1d0b8f40b304115e2cf22f1de6520f76c4a9a 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-media.md +++ b/zh-cn/application-dev/reference/apis/js-apis-media.md @@ -1757,9 +1757,13 @@ audioRecorder.prepare(); // prepare不设置参数,触发'error' 表示音频编码格式的枚举。 -| 名称 | 默认值 | 说明 | -| ------ | ------ | ------------------------------------------------------------ | -| AAC_LC | 3 | AAC-LC(Advanced Audio Coding Low Complexity)编码格式。 | +| 名称 | 默认值 | 说明 | +| ------- | ------ | ------------------------------------------------------------ | +| DEFAULT | 0 | Default audio encoding format is AMR_NB。本接口在OpenHarmony 3.1 Release版本仅为接口定义,暂不支持使用。接口将在OpenHarmony 3.1 MR版本中提供使用支持。
**系统能力:**SystemCapability.Multimedia.Media.AudioRecorder | +| AMR_NB | 1 | AMR-NB(Adaptive Multi Rate-Narrow Band Speech Codec) 编码格式。本接口在OpenHarmony 3.1 Release版本仅为接口定义,暂不支持使用。接口将在OpenHarmony 3.1 MR版本中提供使用支持。
**系统能力:**SystemCapability.Multimedia.Media.AudioRecorder | +| AMR_WB | 2 | AMR-WB(Adaptive Multi Rate-Wide Band Speech Codec) 编码格式。本接口在OpenHarmony 3.1 Release版本仅为接口定义,暂不支持使用。接口将在OpenHarmony 3.1 MR版本中提供使用支持。
**系统能力:**SystemCapability.Multimedia.Media.AudioRecorder | +| AAC_LC | 3 | AAC-LC(Advanced Audio Coding Low Complexity)编码格式。
**系统能力:**SystemCapability.Multimedia.Media.AudioRecorder | +| HE_AAC | 4 | HE_AAC(High-Efficiency Advanced Audio Coding)编码格式。本接口在OpenHarmony 3.1 Release版本仅为接口定义,暂不支持使用。接口将在OpenHarmony 3.1 MR版本中提供使用支持。
**系统能力:**SystemCapability.Multimedia.Media.AudioRecorder | ## AudioOutputFormat @@ -1768,8 +1772,11 @@ audioRecorder.prepare(); // prepare不设置参数,触发'error' | 名称 | 默认值 | 说明 | | -------- | ------ | ------------------------------------------------------------ | -| MPEG_4 | 2 | 封装为MPEG-4格式。 | -| AAC_ADTS | 6 | 封装为ADTS(Audio Data Transport Stream)格式,是AAC音频的传输流格式。 | +| DEFAULT | 0 | 默认封装格式为MPEG-4。本接口在OpenHarmony 3.1 Release版本仅为接口定义,暂不支持使用。接口将在OpenHarmony 3.1 MR版本中提供使用支持。
**系统能力:**SystemCapability.Multimedia.Media.AudioRecorder | +| MPEG_4 | 2 | 封装为MPEG-4格式。
**系统能力:**SystemCapability.Multimedia.Media.AudioRecorder | +| AMR_NB | 3 | 封装为AMR_NB格式。本接口在OpenHarmony 3.1 Release版本仅为接口定义,暂不支持使用。接口将在OpenHarmony 3.1 MR版本中提供使用支持。
**系统能力:**SystemCapability.Multimedia.Media.AudioRecorder | +| AMR_WB | 4 | 封装为AMR_WB格式。本接口在OpenHarmony 3.1 Release版本仅为接口定义,暂不支持使用。接口将在OpenHarmony 3.1 MR版本中提供使用支持。
**系统能力:**SystemCapability.Multimedia.Media.AudioRecorder | +| AAC_ADTS | 6 | 封装为ADTS(Audio Data Transport Stream)格式,是AAC音频的传输流格式。
**系统能力:**SystemCapability.Multimedia.Media.AudioRecorder | ## VideoRecorder8+ diff --git a/zh-cn/application-dev/reference/apis/js-apis-observer.md b/zh-cn/application-dev/reference/apis/js-apis-observer.md index 6babbe512afb4d6a4518b0ced6d0a08adb6302bf..e020047aa5e967808761fede6d7c06e4e407b2d8 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-observer.md +++ b/zh-cn/application-dev/reference/apis/js-apis-observer.md @@ -177,3 +177,89 @@ observer.off('signalInfoChange', callback); observer.off('signalInfoChange'); ``` + +## observer.on('callStateChange') + +on(type: 'callStateChange', callback: Callback\<{ state: [CallState](js-apis-call.md#CallState), number: string }\>): void; + +订阅通话状态变化事件,使用callback方式作为异步方法。 + +**需要权限**:ohos.permission.READ_CALL_LOG + +**系统能力**:SystemCapability.Telephony.StateRegistry + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | +| type | string | 是 | 通话状态变化事件 | +| callback | Callback\<{ state: [CallState](js-apis-call.md#CallState), number: string }\> | 是 | 回调函数,参考call的[CallState](js-apis-call.md#CallState)
number:电话号码 | + +**示例:** + +``` +observer.on('callStateChange', value =>{ + console.log("on callStateChange, state:" + value.state + ", number:" + value.number); +}); +``` + + +## observer.on('callStateChange') + +on(type: 'callStateChange', options: { slotId: number }, callback: Callback<{ state: [CallState](js-apis-call.md#CallState), number: string }>): void; + +订阅通话状态变化事件,使用callback方式作为异步方法。 + +**需要权限**:ohos.permission.READ_CALL_LOG + +**系统能力**:SystemCapability.Telephony.StateRegistry + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | +| type | string | 是 | 通话状态变化事件 | +| slotId | number | 是 | 卡槽ID。
- 0:卡槽1
- 1:卡槽2 | +| callback | Callback\<{ state: [CallState](js-apis-call.md#CallState), number: string }\> | 是 | 回调函数,参考call的[CallState](js-apis-call.md#CallState)
number:电话号码 | + +**示例:** + +``` +observer.on('callStateChange', {slotId: 0}, value =>{ + console.log("on callStateChange, state:" + value.state + ", number:" + value.number); +}); +``` + + +## observer.off('callStateChange') + +off(type: 'callStateChange', callback?: Callback<{ state: [CallState](js-apis-call.md#CallState), number: string }>): void; + +取消订阅通话状态变化事件,使用callback方式作为异步方法。 + +**需要权限**:ohos.permission.READ_CALL_LOG + +>**说明:** +> +>可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 + +**系统能力**:SystemCapability.Telephony.StateRegistry + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | +| type | string | 是 | 通话状态变化事件 | +| callback | Callback\<{ state: [CallState](js-apis-call.md#CallState), number: string }\> | 否 | 回调函数,参考call的[CallState](js-apis-call.md#CallState)
number:电话号码 | + +**示例:** + +``` +let callback = value => { + console.log("on callStateChange, state:" + value.state + ", number:" + value.number); +} +observer.on('callStateChange', callback); +// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 +observer.off('callStateChange', callback); +observer.off('callStateChange'); +``` diff --git a/zh-cn/application-dev/reference/apis/js-apis-permissionrequestresult.md b/zh-cn/application-dev/reference/apis/js-apis-permissionrequestresult.md new file mode 100644 index 0000000000000000000000000000000000000000..65317e07f3e3b68c887fec2687701407ddd19386 --- /dev/null +++ b/zh-cn/application-dev/reference/apis/js-apis-permissionrequestresult.md @@ -0,0 +1,18 @@ +# PermissionRequestResult + +- [属性](#属性) + + +> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** +> 本模块首批接口从API 9开始支持。 + + +权限请求结果。 + + +## 属性 + + | 名称 | 参数类型 | 可读 | 可写 | 说明 | +| -------- | -------- | -------- | -------- | -------- | +| permissions | Array<string> | 是 | 否 | 用户传入的权限。 | +| authResults | Array<number> | 是 | 否 | 相应请求权限的结果。0表示授权成功,-1表示失败。 | diff --git a/zh-cn/application-dev/reference/apis/js-apis-processrunninginfo.md b/zh-cn/application-dev/reference/apis/js-apis-processrunninginfo.md new file mode 100644 index 0000000000000000000000000000000000000000..d22b2afe122785331b69c77ac474f52512dda061 --- /dev/null +++ b/zh-cn/application-dev/reference/apis/js-apis-processrunninginfo.md @@ -0,0 +1,36 @@ +# ProcessRunningInfo + +- [使用说明](#使用说明) +- [属性](#属性) + + +> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** +> 本模块首批接口从API 8开始支持。 + + +进程运行信息。 + + +## 使用说明 + + +通过appManager来获取。 + + + +``` +import appManager from '@ohos.application.appManager'; +appManager.getProcessRunningInfos((error,data) => { + console.log("getProcessRunningInfos error: " + error.code + " data: " + JSON.stringify(data)); +}); +``` + + +## 属性 + + | 名称 | 参数类型 | 可读 | 可写 | 说明 | +| -------- | -------- | -------- | -------- | -------- | +| pid | number | 是 | 否 | 进程ID。 | +| uid | number | 是 | 否 | 用户ID。 | +| processName | string | 是 | 否 | 进程名称。 | +| bundleNames | Array<string> | 是 | 否 | 进程中所有运行的包名称。 | diff --git a/zh-cn/application-dev/reference/apis/js-apis-radio.md b/zh-cn/application-dev/reference/apis/js-apis-radio.md index 90d03a94796569fbb3d225ffd979220e4bd17cf5..1d7b120625bd501e8f10cb603614947aefb800ae 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-radio.md +++ b/zh-cn/application-dev/reference/apis/js-apis-radio.md @@ -17,7 +17,7 @@ getRadioTech\(slotId: number, callback: AsyncCallback<\{psRadioTech: RadioTechno 获取当前接入的CS域和PS域无线接入技术,使用callback方式作为异步方法。 -需要ohos.permission.GET\_NETWORK\_INFO权限。 +**需要权限**:ohos.permission.GET_NETWORK_INFO。 **系统能力**:SystemCapability.Telephony.CoreService @@ -44,7 +44,7 @@ getRadioTech\(slotId: number\): Promise<\{psRadioTech: RadioTechnology, csRadioT 获取当前接入的CS域和PS域无线接入技术,使用Promise方式作为异步方法。 -需要ohos.permission.GET\_NETWORK\_INFO权限。 +**需要权限**:ohos.permission.GET_NETWORK_INFO。 **系统能力**:SystemCapability.Telephony.CoreService @@ -79,7 +79,7 @@ getNetworkState\(callback: AsyncCallback\): void 获取网络状态,使用callback方式作为异步方法。 -需要ohos.permission.GET\_NETWORK\_INFO权限。 +**需要权限**:ohos.permission.GET_NETWORK_INFO。 **系统能力**:SystemCapability.Telephony.CoreService @@ -104,7 +104,7 @@ getNetworkState\(slotId: number, callback: AsyncCallback\): void 获取网络状态,使用callback方式作为异步方法。 -需要ohos.permission.GET\_NETWORK\_INFO权限。 +**需要权限**:ohos.permission.GET_NETWORK_INFO。 **系统能力**:SystemCapability.Telephony.CoreService @@ -131,7 +131,7 @@ getNetworkState\(slotId?: number\): Promise 获取网络状态,使用Promise方式作为异步方法。 -需要ohos.permission.GET\_NETWORK\_INFO权限。 +**需要权限**:ohos.permission.GET_NETWORK_INFO。 **系统能力**:SystemCapability.Telephony.CoreService @@ -338,9 +338,9 @@ promise.then(data => { isRadioOn\(callback: AsyncCallback\): void -判断Radio是否打开,使用callback方式作为异步方法。 +判断主卡的Radio是否打开,使用callback方式作为异步方法。 -需要ohos.permission.GET\_NETWORK\_INFO权限。 +**需要权限**:ohos.permission.GET_NETWORK_INFO。 **系统能力**:SystemCapability.Telephony.CoreService @@ -359,16 +359,49 @@ radio.isRadioOn((err, data) => { ``` -## radio.isRadioOn7+ +## radio.isRadioOn7+ -isRadioOn\(\): Promise +isRadioOn\(slotId: number, callback: AsyncCallback\): void + +判断指定卡槽位的Radio是否打开,使用callback方式作为异步方法。 + +**需要权限**:ohos.permission.GET_NETWORK_INFO。 + +**系统能力**:SystemCapability.Telephony.CoreService + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------------------ | ---- | ------------------------------------------------------- | +| slotId | number | 是 | 卡槽ID。
- 0:卡槽1
- 1:卡槽2 | +| callback | AsyncCallback\ | 是 | 回调函数。
- true:Radio打开
- false:Radio关闭 | + +**示例:** + +``` +let slotId = 0; +radio.isRadioOn(slotId, (err, data) => { + console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`); +}); +``` + + +## radio.isRadioOn7+ + +isRadioOn\(slotId?: number\): Promise 判断Radio是否打开,使用Promise方式作为异步方法。 -需要ohos.permission.GET\_NETWORK\_INFO权限。 +**需要权限**:ohos.permission.GET_NETWORK_INFO。 **系统能力**:SystemCapability.Telephony.CoreService +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ------ | ------ | ---- | -------------------------------------- | +| slotId | number | 否 | 卡槽ID。
- 0:卡槽1
- 1:卡槽2
如果不指定slotId,默认判断主卡Radio是否打开 | + **返回值:** | 类型 | 说明 | @@ -378,7 +411,8 @@ isRadioOn\(\): Promise **示例:** ``` -let promise = radio.isRadioOn(); +let slotId = 0; +let promise = radio.isRadioOn(slotId); promise.then(data => { console.log(`isRadioOn success, promise: data->${JSON.stringify(data)}`); }).catch(err => { @@ -501,6 +535,7 @@ promise.then(data => { | plmnNumeric | string | 注册网络的PLMN码。
**系统能力**:SystemCapability.Telephony.CoreService | | isRoaming | boolean | 是否处于漫游状态。
**系统能力**:SystemCapability.Telephony.CoreService | | regState | [RegState](#RegState) | 设备的网络注册状态。
**系统能力**:SystemCapability.Telephony.CoreService | +| cfgTech8+ | [RadioTechnology](#RadioTechnology) | 设备的无线接入技术。
**系统能力**:SystemCapability.Telephony.CoreService | | nsaState | [NsaState](#NsaState) | 设备的NSA网络注册状态。
**系统能力**:SystemCapability.Telephony.CoreService | | isCaActive | boolean | CA的状态。
**系统能力**:SystemCapability.Telephony.CoreService | | isEmergency | boolean | 此设备是否只允许拨打紧急呼叫。
**系统能力**:SystemCapability.Telephony.CoreService | diff --git a/zh-cn/application-dev/reference/apis/js-apis-screenshot.md b/zh-cn/application-dev/reference/apis/js-apis-screenshot.md new file mode 100644 index 0000000000000000000000000000000000000000..881f2751dcf2612f30a1aebc9ac834b7bf380588 --- /dev/null +++ b/zh-cn/application-dev/reference/apis/js-apis-screenshot.md @@ -0,0 +1,126 @@ +# 屏幕截图 + +> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** +> 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 + +## 导入模块 + +``` +import screenshot from '@ohos.screenshot'; +``` + +## ScreenshotOptions + +设置截取图像的信息。 + +| 参数名 | 类型 | 必填 | 说明 | +| ---------- | ------------- | ---- | ------------------------------------------------------------ | +| screenRect | [Rect](#Rect) | 否 | 表示截取图像的区域,不传值默认为全屏。
**系统能力**:SystemCapability.WindowManager.WindowManager.Core | +| imageSize | [Size](#Size) | 否 | 表示截取图像的大小,不传值默认为全屏。
**系统能力**:SystemCapability.WindowManager.WindowManager.Core | +| rotation | number | 否 | 表示截取图像的旋转角度,取值可为0、90、180、270,默认值为0。
**系统能力**:SystemCapability.WindowManager.WindowManager.Core | + + +## Rect + +表示截取图像的区域。 + +| 参数名 | 类型 | 必填 | 说明 | +| ------ | ------ | ---- | ------------------------------------------------------------ | +| left | number | 是 | 表示截取图像区域的左边界。
**系统能力**:SystemCapability.WindowManager.WindowManager.Core | +| top | number | 是 | 表示截取图像区域的上边界。
**系统能力**:SystemCapability.WindowManager.WindowManager.Core | +| width | number | 是 | 表示截取图像区域的宽度。
**系统能力**:SystemCapability.WindowManager.WindowManager.Core | +| height | number | 是 | 表示截取图像区域的高度。
**系统能力**:SystemCapability.WindowManager.WindowManager.Core | + + +## Size + +表示截取图像的大小。 + +| 参数名 | 类型 | 必填 | 说明 | +| ------ | ------ | ---- | ------------------------------------------------------------ | +| width | number | 是 | 表示截取图像的宽度。
**系统能力**:SystemCapability.WindowManager.WindowManager.Core | +| height | number | 是 | 表示截取图像的高度。
**系统能力**:SystemCapability.WindowManager.WindowManager.Core | + +## screenshot.save + +save(options?: ScreenshotOptions, callback: AsyncCallback<image.PixelMap>): void + +获取屏幕截图。 + +**系统能力**:SystemCapability.WindowManager.WindowManager.Core + +**需要权限**:ohos.permission.CAPTURE_SCREEN + +- 参数 + + | 参数名 | 类型 | 必填 | 说明 | + | -------- | --------------------------------------- | ---- | ------------------------------------------------------------ | + | options | [ScreenshotOptions](#ScreenshotOptions) | 否 | 该类型的参数包含screenRect,imageSize,rotation三个参数,需要分别设置这三个参数。 | + | callback | AsyncCallback<image.PixelMap> | 是 | 回调返回一个PixelMap对象。 | + +- 示例 + + ``` + var ScreenshotOptions = { + "screenRect": { + "left": 200, + "top": 100, + "width": 200, + "height": 200}, + "imageSize": { + "width": 300, + "height": 300}, + "rotation": 0 + }; + screenshot.save(ScreenshotOptions, (err, data) => { + if (err) { + console.error('Failed to save the screenshot. Error: ' + JSON.stringify(err)); + return; + } + console.info('Screenshot saved. Data: ' + JSON.stringify(data)); + }); + ``` + +## screenshot.save + +save(options?: ScreenshotOptions): Promise<image.PixelMap> + +获取屏幕截图。 + +**系统能力**:SystemCapability.WindowManager.WindowManager.Core + +**需要权限**:ohos.permission.CAPTURE_SCREEN + +- 参数 + + | 参数名 | 类型 | 必填 | 说明 | + | ------- | --------------------------------------- | ---- | ------------------------------------------------------------ | + | options | [ScreenshotOptions](#ScreenshotOptions) | 否 | 该类型的参数包含screenRect,imageSize,rotation三个参数,需要分别设置这三个参数。 | + +- 返回值 + + | 类型 | 说明 | + | ----------------------------- | ----------------------------------------------- | + | Promise<image.PixelMap> | 以Promise形式返回结果,返回image.PixelMap对象。 | + +- 示例 + + ``` + var ScreenshotOptions = { + "screenRect": { + "left": 200, + "top": 100, + "width": 200, + "height": 200}, + "imageSize": { + "width": 300, + "height": 300}, + "rotation": 0 + }; + let promise = screenshot.save(ScreenshotOptions); + promise.then(() => { + console.log('screenshot save success'); + }).catch((err) => { + console.log('screenshot save fail: ' + JSON.stringify(err)); + }); + ``` diff --git a/zh-cn/application-dev/reference/apis/js-apis-sms.md b/zh-cn/application-dev/reference/apis/js-apis-sms.md index a4c3d545ad6fe9eb60f1a9744fcea86323027018..bad012c67faa9b803406a051265d0311d253cdac 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-sms.md +++ b/zh-cn/application-dev/reference/apis/js-apis-sms.md @@ -16,6 +16,8 @@ createMessage\(pdu: Array, specification: string, callback: AsyncCallba 根据协议数据单元(PDU)和指定的短信协议创建短信实例,使用callback方式作为异步方法。 +**系统能力**:SystemCapability.Telephony.SmsMms + **参数:** | 参数名 | 类型 | 必填 | 说明 | @@ -42,6 +44,8 @@ createMessage\(pdu: Array, specification: string\): Promise\): void 获取发送短信的默认SIM卡槽ID,使用callback方式作为异步方法。 +**系统能力**:SystemCapability.Telephony.SmsMms + **参数:** | 参数名 | 类型 | 必填 | 说明 | @@ -129,6 +137,8 @@ getDefaultSmsSlotId\(\): Promise 获取发送短信的默认SIM卡槽ID,使用Promise方式作为异步方法。 +**系统能力**:SystemCapability.Telephony.SmsMms + **返回值:** | 类型 | 说明 | @@ -153,7 +163,9 @@ setSmscAddr\(slotId: number, smscAddr: string, callback: AsyncCallback\): 设置短信服务中心(SMSC)地址,使用callback方式作为异步方法。 -需要ohos.permission.SET\_TELEPHONY\_STATE权限,该权限为系统权限。 +**需要权限**:ohos.permission.SET_TELEPHONY_STATE,该权限为系统权限 + +**系统能力**:SystemCapability.Telephony.SmsMms **参数:** @@ -180,7 +192,9 @@ setSmscAddr\(slotId: number, smscAddr: string\): Promise 设置短信服务中心(SMSC)地址,使用Promise方式作为异步方法。 -需要ohos.permission.SET\_TELEPHONY\_STATE权限,该权限为系统权限。 +**需要权限**:ohos.permission.SET_TELEPHONY_STATE,该权限为系统权限 + +**系统能力**:SystemCapability.Telephony.SmsMms **参数:** @@ -215,7 +229,9 @@ getSmscAddr\(slotId: number, callback: AsyncCallback\): void 获取短信服务中心(SMSC)地址,使用callback方式作为异步方法。 -需要ohos.permission.GET\_TELEPHONY\_STATE权限,该权限为系统权限。 +**需要权限**:ohos.permission.GET_TELEPHONY_STATE,该权限为系统权限 + +**系统能力**:SystemCapability.Telephony.SmsMms **参数:** @@ -240,7 +256,9 @@ getSmscAddr\(slotId: number\): Promise 获取短信服务中心(SMSC)地址,使用Promise方式作为异步方法。 -需要ohos.permission.GET\_TELEPHONY\_STATE权限,该权限为系统权限。 +**需要权限**:ohos.permission.GET_TELEPHONY_STATE,该权限为系统权限 + +**系统能力**:SystemCapability.Telephony.SmsMms **参数:** @@ -271,6 +289,8 @@ promise.then(data => { 短信实例。 +**系统能力**:SystemCapability.Telephony.SmsMms + | 变量 | 类型 | 说明 | | ------------------------ | --------------------------------------- | ------------------------------------------------------------ | | emailAddress | string | 电子邮件地址。 | @@ -294,13 +314,13 @@ promise.then(data => { 短信类型。 -| 变量 | 值 | 说明 | -| ---------------- | ---- | ---------------------------------------- | -| UNKNOWN | 0 | 未知类型。 | -| INSTANT_MESSAGE | 1 | 即时消息,收到后立即显示。 | -| OPTIONAL_MESSAGE | 2 | 存储在设备或SIM卡上的短信。 | -| SIM_MESSAGE | 3 | 包含SIM卡信息的短信,需要存储在SIM卡中。 | -| FORWARD_MESSAGE | 4 | 要转发到另一台设备的短信。 | +| 变量 | 值 | 说明 | +| ---------------- | ---- | ------------------------------------------------------------ | +| UNKNOWN | 0 | 未知类型。
**系统能力**:SystemCapability.Telephony.SmsMms | +| INSTANT_MESSAGE | 1 | 即时消息,收到后立即显示。
**系统能力**:SystemCapability.Telephony.SmsMms | +| OPTIONAL_MESSAGE | 2 | 存储在设备或SIM卡上的短信。
**系统能力**:SystemCapability.Telephony.SmsMms | +| SIM_MESSAGE | 3 | 包含SIM卡信息的短信,需要存储在SIM卡中。
**系统能力**:SystemCapability.Telephony.SmsMms | +| FORWARD_MESSAGE | 4 | 要转发到另一台设备的短信。
**系统能力**:SystemCapability.Telephony.SmsMms | ## SendMessageOptions @@ -309,6 +329,8 @@ promise.then(data => { 根据SendMessageOptions中的可选参数content的值判断短信类型。 +**系统能力**:SystemCapability.Telephony.SmsMms + | 参数名 | 类型 | 必填 | 说明 | | ---------------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | | slotId | number | 是 | 用于发送短信的SIM卡槽ID:
- 0:卡槽1
- 1:卡槽2 | @@ -324,6 +346,8 @@ promise.then(data => { 回调实例。返回短信发送结果、存储已发送短信的URI和是否为长短信的最后一部分。 +**系统能力**:SystemCapability.Telephony.SmsMms + | 参数名 | 类型 | 必填 | 说明 | | ---------- | ------------------------------- | ---- | ------------------------------------------------------------ | | isLastPart | boolean | 否 | 指定这是否是长短信的最后一部分。true表示这是长短信的最后一部分,false表示不是。默认为false。 | @@ -335,6 +359,8 @@ promise.then(data => { 回调实例。返回短信送达报告。 +**系统能力**:SystemCapability.Telephony.SmsMms + | 参数名 | 类型 | 必填 | 说明 | | ------ | ------------------- | ---- | -------------- | | pdu | Array<number> | 是 | 短信送达报告。 | @@ -344,6 +370,8 @@ promise.then(data => { 短信发送结果。 +**系统能力**:SystemCapability.Telephony.SmsMms + | 参数名 | 值 | 说明 | | ------------------------------------ | ---- | ------------------------------------------------------ | | SEND_SMS_SUCCESS | 0 | 发送短信成功。 | diff --git a/zh-cn/application-dev/reference/apis/js-apis-telephony-data.md b/zh-cn/application-dev/reference/apis/js-apis-telephony-data.md new file mode 100644 index 0000000000000000000000000000000000000000..73240d2a2987245cae664a8df78563e482d77ffb --- /dev/null +++ b/zh-cn/application-dev/reference/apis/js-apis-telephony-data.md @@ -0,0 +1,289 @@ +# 蜂窝数据 + +>**说明:** +> +>本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 + +## 导入模块 + +``` +import data from '@ohos.telephony.data'; +``` + +## data.getDefaultCellularDataSlotId + +getDefaultCellularDataSlotId(callback: AsyncCallback\): void + +获取默认移动数据的SIM卡,使用callback方式作为异步方法。 + +**需要权限**:ohos.permission.GET_NETWORK_INFO + +**系统能力**:SystemCapability.Telephony.CellularData + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ----------------------- | ---- | ------------------------------------------ | +| callback | AsyncCallback\ | 是 | 回调函数。
0:卡槽1。
1:卡槽2。 | + +**示例:** + +``` +data.getDefaultCellularDataSlotId((err, data) => { + console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`); +}); +``` + +## data.getDefaultCellularDataSlotId + +getDefaultCellularDataSlotId(): Promise\ + +获取默认移动数据的SIM卡,使用Promise方式作为异步方法。 + +**需要权限**:ohos.permission.GET_NETWORK_INFO + +**系统能力**:SystemCapability.Telephony.CellularData + +**返回值:** + +| 类型 | 说明 | +| ----------------- | ------------------------------------------------------------ | +| Promise\ | 以Promise形式返回获取默认移动数据的SIM卡。
0:卡槽1。
1:卡槽2。 | + +**示例:** + +``` +let promise = data.getDefaultCellularDataSlotId(); +promise.then((data) => { + console.log(`test success, promise: data->${JSON.stringify(data)}`); +}).catch((err) => { + console.error(`test fail, promise: err->${JSON.stringify(err)}`); +}); +``` + +## data.getCellularDataFlowType + +getCellularDataFlowType(callback: AsyncCallback\): void + +获取蜂窝数据业务的上下行状态,使用callback方式作为异步方法。 + +**系统能力**:SystemCapability.Telephony.CellularData + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------------------------------- | ---- | ---------- | +| callback | AsyncCallback\<[DataFlowType](#DataFlowType)\> | 是 | 回调函数。 | + +**示例:** + +``` +data.getCellularDataFlowType((err, data) => { + console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`); +}); +``` + +## data.getCellularDataFlowType + +getCellularDataFlowType(): Promise\ + +获取蜂窝数据业务的上下行状态,使用Promise方式作为异步方法。 + +**系统能力**:SystemCapability.Telephony.CellularData + +**返回值:** + +| 类型 | 说明 | +| ---------------------------------------- | ----------------------------------------------- | +| Promise\<[DataFlowType](#DataFlowType)\> | 以Promise形式返回获取蜂窝数据业务的上下行状态。 | + +**示例:** + +``` +let promise = data.getCellularDataFlowType(); +promise.then((data) => { + console.log(`test success, promise: data->${JSON.stringify(data)}`); +}).catch((err) => { + console.error(`test fail, promise: err->${JSON.stringify(err)}`); +}); +``` + +## data.getCellularDataState + +getCellularDataState(callback: AsyncCallback\): void + +获取分组交换域(PS域)的连接状态,使用callback方式作为异步方法。 + +**系统能力**:SystemCapability.Telephony.CellularData + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------------------------------------------------ | ---- | ---------- | +| callback | AsyncCallback\<[DataConnectState](#DataConnectState)\> | 是 | 回调函数。 | + +**示例:** + +``` +data.getCellularDataState((err, data) => { + console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`); +}); +``` + +## data.getCellularDataState + +getCellularDataState(): Promise\ + +获取分组交换域(PS域)的连接状态,使用Promise方式作为异步方法。 + +**系统能力**:SystemCapability.Telephony.CellularData + +**返回值:** + +| 类型 | 说明 | +| ------------------------------------------------ | ------------------------------------- | +| Promise\<[DataConnectState](#DataConnectState)\> | 以Promise形式返回获取PS域的连接状态。 | + +**示例:** + +``` +let promise = data.getCellularDataState(); +promise.then((data) => { + console.log(`test success, promise: data->${JSON.stringify(data)}`); +}).catch((err) => { + console.error(`test fail, promise: err->${JSON.stringify(err)}`); +}); +``` + +## data.isCellularDataEnabled + +isCellularDataEnabled(callback: AsyncCallback\): void + +检查蜂窝数据业务是否启用,使用callback方式作为异步方法。 + +**需要权限**:ohos.permission.GET_NETWORK_INFO + +**系统能力**:SystemCapability.Telephony.CellularData + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------------------ | ---- | ------------------------------------------------------------ | +| callback | AsyncCallback\ | 是 | 回调函数。
true:蜂窝数据业务已启用。
false:蜂窝数据业务已禁用。 | + +**示例:** + +``` +data.isCellularDataEnabled((err, data) => { + console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`); +}); +``` + +## data.isCellularDataEnabled + +isCellularDataEnabled(): Promise\ + +检查蜂窝数据业务是否启用,使用Promise方式作为异步方法。 + +**需要权限**:ohos.permission.GET_NETWORK_INFO + +**系统能力**:SystemCapability.Telephony.CellularData + +**返回值:** + +| 类型 | 说明 | +| ------------------ | ------------------------------------------------------------ | +| Promise\ | 以Promise形式返回检查蜂窝数据业务是否启用。
true:蜂窝数据业务已启用。
false:蜂窝数据业务已禁用。 | + +**示例:** + +``` +let promise = data.isCellularDataEnabled(); +promise.then((data) => { + console.log(`test success, promise: data->${JSON.stringify(data)}`); +}).catch((err) => { + console.error(`test fail, promise: err->${JSON.stringify(err)}`); +}); +``` + +## data.isCellularDataRoamingEnabled + +isCellularDataRoamingEnabled(slotId: number, callback: AsyncCallback\): void + +检查蜂窝数据业务是否启用漫游,使用callback方式作为异步方法。 + +**需要权限**:ohos.permission.GET_NETWORK_INFO + +**系统能力**:SystemCapability.Telephony.CellularData + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------------------ | ---- | ------------------------------------------------------------ | +| slotId | number | 是 | 卡槽ID。
0:卡槽1。
1:卡槽2。 | +| callback | AsyncCallback\ | 是 | 回调函数。
true:蜂窝数据业务已启用漫游。
false:蜂窝数据业务已禁用漫游。 | + +**示例:** + +``` +data.isCellularDataRoamingEnabled(0,(err, data) => { + console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`); +}); +``` + +## data.isCellularDataRoamingEnabled + +isCellularDataRoamingEnabled(slotId: number): Promise\ + +检查蜂窝数据业务是否启用漫游,使用Promise方式作为异步方法。 + +**需要权限**:ohos.permission.GET_NETWORK_INFO + +**系统能力**:SystemCapability.Telephony.CellularData + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ------ | ------ | ---- | ---------------------------------------- | +| slotId | number | 是 | 卡槽ID。
0:卡槽1。
1:卡槽2。 | + +**返回值:** + +| 类型 | 说明 | +| ------------------ | ------------------------------------------------------------ | +| Promise\ | 以Promise形式返回检查蜂窝数据业务是否启用漫游。
true:蜂窝数据业务已启用漫游。
false:蜂窝数据业务已禁用漫游。 | + +**示例:** + +``` +let promise = data.isCellularDataRoamingEnabled(0); +promise.then((data) => { + console.log(`test success, promise: data->${JSON.stringify(data)}`); +}).catch((err) => { + console.error(`test fail, promise: err->${JSON.stringify(err)}`); +}); +``` + +## DataFlowType + + 描述蜂窝数据流类型。 + +| 参数名 | 值 | 说明 | +| ------ | ---------------------- | ------------------------------------------------------------ | +| 0 | DATA_FLOW_TYPE_NONE | 表示没有上行或下行数据。
**系统能力**:SystemCapability.Telephony.CellularData | +| 1 | DATA_FLOW_TYPE_DOWN | 表示只有下行数据。
**系统能力**:SystemCapability.Telephony.CellularData | +| 2 | DATA_FLOW_TYPE_UP | 表示只有上行数据。
**系统能力**:SystemCapability.Telephony.CellularData | +| 3 | DATA_FLOW_TYPE_UP_DOWN | 表示有上下行数据。
**系统能力**:SystemCapability.Telephony.CellularData | +| 4 | DATA_FLOW_TYPE_DORMANT | 表示没有上下行数据,底层链路处于休眠状态。
**系统能力**:SystemCapability.Telephony.CellularData | + +## DataConnectState + + 描述蜂窝数据链路连接状态。 + +| 参数名 | 值 | 说明 | +| ------ | ----------------------- | ------------------------------------------------------------ | +| -1 | DATA_STATE_UNKNOWN | 表示蜂窝数据链路未知。
**系统能力**:SystemCapability.Telephony.CellularData | +| 0 | DATA_STATE_DISCONNECTED | 表示蜂窝数据链路断开。
**系统能力**:SystemCapability.Telephony.CellularData | +| 1 | DATA_STATE_CONNECTING | 表示正在连接蜂窝数据链路。
**系统能力**:SystemCapability.Telephony.CellularData | +| 2 | DATA_STATE_CONNECTED | 表示蜂窝数据链路已连接。
**系统能力**:SystemCapability.Telephony.CellularData | +| 3 | DATA_STATE_SUSPENDED | 表示蜂窝数据链路被挂起。
**系统能力**:SystemCapability.Telephony.CellularData | \ No newline at end of file diff --git a/zh-cn/application-dev/reference/apis/js-apis-uripermissionmanager.md b/zh-cn/application-dev/reference/apis/js-apis-uripermissionmanager.md new file mode 100644 index 0000000000000000000000000000000000000000..34cc33c69437954800242c7cbeff198bccd1da5f --- /dev/null +++ b/zh-cn/application-dev/reference/apis/js-apis-uripermissionmanager.md @@ -0,0 +1,76 @@ +# UriPermissionManager + +- [导入模块](#导入模块) +- [verifyUriPermission](#verifyUriPermission) +- [verifyUriPermission](#verifyUriPermission) + + +> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** +> 本模块首批接口从API 9开始支持。 + + +Uri权限管理。 + + +## 导入模块 + + +``` +import UriPermissionManager from '@@ohos.application.UriPermissionManager'; +``` + + +## verifyUriPermission + +verifyUriPermission(uri: string, flag: wantConstant.Flags, accessTokenId: number, callback: AsyncCallback<number>): void + +检验某个应用是否对指定的uri有flag指定的权限。 + +- 参数: + | 参数名 | 类型 | 必填 | 说明 | + | -------- | -------- | -------- | -------- | + | uri | string | 是 | 指向文件的uri,例如fileshare:///com.samples.filesharetest.FileShare/person/10。 | + | flag | wantConstant.Flags | 是 | uri的读权限或写权限。 | + | accessTokenId | number | 是 | 每个应用的唯一标识ID,开发者通过包管理接口自行获取。 | + | callback | AsyncCallback<number> | 是 | callback形式返回启动结果,返回0表示有权限,返回-1表示无权限。 | + +- 示例: + + ``` + let uri = "fileshare:///com.samples.filesharetest.FileShare/person/10" + UriPermissionManager.verifyUriPermission(uri, wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION, accessTokenId, (result) => { + console.log("result.code = " + result.code) + }) // accessTokenId开发者通过包管理接口自行获取 + ``` + + +## verifyUriPermission + +verifyUriPermission(uri: string, flag: wantConstant.Flags, accessTokenId: number): Promise<number> + +检验某个应用是否对指定的uri有flag指定的权限。 + +- 参数: + | 参数名 | 类型 | 必填 | 说明 | + | -------- | -------- | -------- | -------- | + | uri | string | 是 | 指向文件的uri,例如fileshare:///com.samples.filesharetest.FileShare/person/10。 | + | flag | wantConstant.Flags | 是 | uri的读权限或写权限。 | + | accessTokenId | number | 是 | 每个应用的唯一标识ID,开发者通过包管理接口自行获取。 | + +- 返回值: + | 类型 | 说明 | + | -------- | -------- | + | Promise<number> | 返回0表示有权限,返回-1表示无权限。 | + +- 示例: + + ``` + let uri = "fileshare:///com.samples.filesharetest.FileShare/person/10" + UriPermissionManager.verifyUriPermission(uri, wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION, accessTokenId) + .then((data) => { + console.log('Verification succeeded.' + data) + }).catch((error) => { + console.log('Verification failed.'); + }) + ``` + diff --git a/zh-cn/application-dev/reference/apis/js-apis-usb.md b/zh-cn/application-dev/reference/apis/js-apis-usb.md index 40b5288a86b3960aabd4bc05966ebc6605f7297d..ab99f323c24414152803f02edc7ba2f308f414fa 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-usb.md +++ b/zh-cn/application-dev/reference/apis/js-apis-usb.md @@ -3,25 +3,20 @@ > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** > 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 - ## 导入模块 ``` import usb from "@ohos.usb"; ``` - -## 权限 - -无 - - ## usb.getDevices usb.getDevices(): Array<Readonly<USBDevice>> 获取USB设备列表。 +**系统能力**: SystemCapability.USB.USBManager + - 返回值: | 类型 | 说明 | | -------- | -------- | @@ -92,6 +87,8 @@ usb.connectDevice(device: USBDevice): Readonly<USBDevicePipe> 需要调用[usb.getDevices](#usbgetdevices)获取设备信息以及device;再调用[usb.requestRight](#usbrequestright)获取设备请求权限。 +**系统能力**: SystemCapability.USB.USBManager + - 参数: | 参数名 | 类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | @@ -115,6 +112,8 @@ usb.hasRight(deviceName: string): boolean 判断是否有权访问该设备。 +**系统能力**: SystemCapability.USB.USBManager + - 参数: | 参数名 | 类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | @@ -139,6 +138,8 @@ usb.requestRight(deviceName: string): Promise<boolean> 请求软件包的临时权限以访问设备。 +**系统能力**: SystemCapability.USB.USBManager + - 参数: | 参数名 | 类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | @@ -166,6 +167,8 @@ usb.claimInterface(pipe: USBDevicePipe, iface: USBInterface, force?: boolean): n 需要调用[usb.getDevices](#usbgetdevices)获取设备信息以及interfaces;调用[usb.requestRight](#usbrequestright)获取设备请求权限;调用[usb.connectDevice](#usbconnectdevice)接口得到devicepipe作为参数。 +**系统能力**: SystemCapability.USB.USBManager + - 参数: | 参数名 | 类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | @@ -193,6 +196,8 @@ usb.releaseInterface(pipe: USBDevicePipe, iface: USBInterface): number 需要调用[usb.claimInterface](#usbclaiminterface)先获取接口,才能使用此方法释放接口。 +**系统能力**: SystemCapability.USB.USBManager + - 参数: | 参数名 | 类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | @@ -219,6 +224,8 @@ usb.setConfiguration(pipe: USBDevicePipe, config: USBConfig): number 需要调用[usb.getDevices](#usbgetdevices)获取设备信息以及config;调用[usb.requestRight](#usbrequestright)获取设备请求权限;调用[usb.connectDevice](#usbconnectdevice)得到devicepipe作为参数。 +**系统能力**: SystemCapability.USB.USBManager + - 参数: | 参数名 | 类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | @@ -245,6 +252,8 @@ usb.setInterface(pipe: USBDevicePipe, iface: USBInterface): number 需要调用[usb.getDevices](#usbgetdevices)获取设备列表以及interfaces;调用[usb.requestRight](#usbrequestright)获取设备请求权限;调用[usb.connectDevice](#usbconnectdevice)得到devicepipe作为参数。 +**系统能力**: SystemCapability.USB.USBManager + - 参数: | 参数名 | 类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | @@ -271,6 +280,8 @@ usb.getRawDescriptor(pipe: USBDevicePipe): Uint8Array 需要调用[usb.getDevices](#usbgetdevices)获取设备列表;调用[usb.requestRight](#usbrequestright)获取设备请求权限;调用[usb.connectDevice](#usbconnectdevice)接口得到devicepipe作为参数。 +**系统能力**: SystemCapability.USB.USBManager + - 参数: | 参数名 | 类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | @@ -295,6 +306,8 @@ usb.getFileDescriptor(pipe: USBDevicePipe): number 需要调用[usb.getDevices](#usbgetdevices)获取设备列表;调用[usb.requestRight](#usbrequestright)获取设备请求权限;调用[usb.connectDevice](#usbconnectdevice)接口得到devicepipe作为参数。 +**系统能力**: SystemCapability.USB.USBManager + - 参数: | 参数名 | 类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | @@ -319,6 +332,8 @@ usb.controlTransfer(pipe: USBDevicePipe, contrlparam: USBControlParams, timeout? 需要调用[usb.getDevices](#usbgetdevices)获取设备列表;调用[usb.requestRight](#usbrequestright)获取设备请求权限;调用[usb.connectDevice](#usbconnectdevice)接口得到devicepipe作为参数。 +**系统能力**: SystemCapability.USB.USBManager + - 参数: | 参数名 | 类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | @@ -347,6 +362,8 @@ usb.bulkTransfer(pipe: USBDevicePipe, endpoint: USBEndpoint, buffer: Uint8Array, 需要调用[usb.getDevices](#usbgetdevices)获取设备信息列表以及endpoint;再调用[usb.requestRight](#usbrequestright)获取设备请求权限;然后调用[usb.connectDevice](#usbconnectdevice)接口得到返回数据devicepipe之后,再次获取接口[usb.claimInterface](#usbclaiminterface);再调用usb.bulkTransfer接口。 +**系统能力**: SystemCapability.USB.USBManager + - 参数: | 参数名 | 类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | @@ -379,6 +396,8 @@ usb.closePipe(pipe: USBDevicePipe): number 需要调用[usb.getDevices](#usbgetdevices)获取设备列表;调用[usb.requestRight](#usbrequestright)获取设备请求权限;调用[usb.connectDevice](#usbconnectdevice)得到devicepipe作为参数。 +**系统能力**: SystemCapability.USB.USBManager + - 参数: | 参数名 | 类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | @@ -402,14 +421,14 @@ usb.closePipe(pipe: USBDevicePipe): number | 名称 | 参数类型 | 说明 | | -------- | -------- | -------- | -| address | number | 端点地址。 | -| attributes | number | 端点属性。 | -| interval | number | 端点间隔。 | -| maxPacketSize | number | 端点最大数据包大小。 | -| direction | [USBRequestDirection](#usbrequestdirection) | 端点的方向。 | -| number | number | 端点号。 | -| type | number | 端点类型。 | -| interfaceId | number | 端点所属的接口的唯一标识。 | +| address | number | 端点地址。
**系统能力**: SystemCapability.USB.USBManager | +| attributes | number | 端点属性。
**系统能力**: SystemCapability.USB.USBManager | +| interval | number | 端点间隔。
**系统能力**: SystemCapability.USB.USBManager | +| maxPacketSize | number | 端点最大数据包大小。
**系统能力**: SystemCapability.USB.USBManager | +| direction | [USBRequestDirection](#usbrequestdirection) | 端点的方向。
**系统能力**: SystemCapability.USB.USBManager | +| number | number | 端点号。
**系统能力**: SystemCapability.USB.USBManager | +| type | number | 端点类型。
**系统能力**: SystemCapability.USB.USBManager | +| interfaceId | number | 端点所属的接口的唯一标识。
**系统能力**: SystemCapability.USB.USBManager | ## USBInterface @@ -418,13 +437,13 @@ usb.closePipe(pipe: USBDevicePipe): number | 名称 | 参数类型 | 说明 | | -------- | -------- | -------- | -| id | number | 接口的唯一标识。 | -| protocol | number | 接口的协议。 | -| clazz | number | 设备类型。 | -| subClass | number | 设备子类。 | -| alternateSetting | number | 在同一个接口中的多个描述符中进行切换设置。 | -| name | string | 接口名称。 | -| endpoints | Array<[USBEndpoint](#usbendpoint)> | 当前接口所包含的端点。 | +| id | number | 接口的唯一标识。
**系统能力**: SystemCapability.USB.USBManager | +| protocol | number | 接口的协议。
**系统能力**: SystemCapability.USB.USBManager | +| clazz | number | 设备类型。
**系统能力**: SystemCapability.USB.USBManager | +| subClass | number | 设备子类。
**系统能力**: SystemCapability.USB.USBManager | +| alternateSetting | number | 在同一个接口中的多个描述符中进行切换设置。
**系统能力**: SystemCapability.USB.USBManager | +| name | string | 接口名称。
**系统能力**: SystemCapability.USB.USBManager | +| endpoints | Array<[USBEndpoint](#usbendpoint)> | 当前接口所包含的端点。
**系统能力**: SystemCapability.USB.USBManager | ## USBConfig @@ -433,13 +452,13 @@ USB配置,一个[USBDevice](#usbdevice)中可以含有多个配置。 | 名称 | 参数类型 | 说明 | | -------- | -------- | -------- | -| id | number | 配置的唯一标识。 | -| attributes | number | 配置的属性。 | -| maxPower | number | 最大功耗,以毫安为单位。 | -| name | string | 配置的名称,可以为空。 | -| isRemoteWakeup | boolean | 检查当前配置是否支持远程唤醒。 | -| isSelfPowered | boolean | 检查当前配置是否支持独立电源。 | -| interfaces | Array <[USBInterface](#usbinterface)> | 配置支持的接口属性。 | +| id | number | 配置的唯一标识。
**系统能力**: SystemCapability.USB.USBManager | +| attributes | number | 配置的属性。
**系统能力**: SystemCapability.USB.USBManager | +| maxPower | number | 最大功耗,以毫安为单位。
**系统能力**: SystemCapability.USB.USBManager | +| name | string | 配置的名称,可以为空。
**系统能力**: SystemCapability.USB.USBManager | +| isRemoteWakeup | boolean | 检查当前配置是否支持远程唤醒。
**系统能力**: SystemCapability.USB.USBManager | +| isSelfPowered | boolean | 检查当前配置是否支持独立电源。
**系统能力**: SystemCapability.USB.USBManager | +| interfaces | Array <[USBInterface](#usbinterface)> | 配置支持的接口属性。
**系统能力**: SystemCapability.USB.USBManager | ## USBDevice @@ -448,19 +467,19 @@ USB设备信息。 | 名称 | 参数类型 | 说明 | | -------- | -------- | -------- | -| busNum | number | 总线地址。 | -| devAddress | number | 设备地址。 | -| serial | string | 序列号。 | -| name | string | 设备名字。 | -| manufacturerName | string | 产商信息。 | -| productName | string | 产品信息。 | -| version | string | 版本。 | -| vendorId | number | 厂商ID。 | -| productId | number | 产品ID。 | -| clazz | number | 设备类。 | -| subClass | number | 设备子类。 | -| protocol | number | 设备协议码。 | -| configs | Array<[USBConfig](#usbconfig)> | 设备配置描述符信息。 | +| busNum | number | 总线地址。
**系统能力**: SystemCapability.USB.USBManager | +| devAddress | number | 设备地址。
**系统能力**: SystemCapability.USB.USBManager | +| serial | string | 序列号。
**系统能力**: SystemCapability.USB.USBManager | +| name | string | 设备名字。
**系统能力**: SystemCapability.USB.USBManager | +| manufacturerName | string | 产商信息。
**系统能力**: SystemCapability.USB.USBManager | +| productName | string | 产品信息。
**系统能力**: SystemCapability.USB.USBManager | +| version | string | 版本。
**系统能力**: SystemCapability.USB.USBManager | +| vendorId | number | 厂商ID。
**系统能力**: SystemCapability.USB.USBManager | +| productId | number | 产品ID。
**系统能力**: SystemCapability.USB.USBManager | +| clazz | number | 设备类。
**系统能力**: SystemCapability.USB.USBManager | +| subClass | number | 设备子类。
**系统能力**: SystemCapability.USB.USBManager | +| protocol | number | 设备协议码。
**系统能力**: SystemCapability.USB.USBManager | +| configs | Array<[USBConfig](#usbconfig)> | 设备配置描述符信息。
**系统能力**: SystemCapability.USB.USBManager | ## USBDevicePipe @@ -469,8 +488,8 @@ USB设备消息传输通道,用于确定设备。 | 名称 | 参数类型 | 说明 | | -------- | -------- | -------- | -| busNum | number | 总线地址。 | -| devAddress | number | 设备地址。 | +| busNum | number | 总线地址。
**系统能力**: SystemCapability.USB.USBManager | +| devAddress | number | 设备地址。
**系统能力**: SystemCapability.USB.USBManager | ## USBControlParams @@ -480,11 +499,11 @@ USB设备消息传输通道,用于确定设备。 | 名称 | 参数类型 | 说明 | | -------- | -------- | -------- | | request | number | 请求类型。 | -| target | [USBRequestTargetType](#usbrequesttargettype) | 请求目标类型。 | -| reqType | [USBControlRequestType](#usbcontrolrequesttype) | 请求控制类型。 | -| value | number | 请求参数。 | -| index | number | 请求参数value对应的索引值。 | -| data | Uint8Array | 用于写入或读取的缓冲区。 | +| target | [USBRequestTargetType](#usbrequesttargettype) | 请求目标类型。
**系统能力**: SystemCapability.USB.USBManager | +| reqType | [USBControlRequestType](#usbcontrolrequesttype) | 请求控制类型。
**系统能力**: SystemCapability.USB.USBManager | +| value | number | 请求参数。
**系统能力**: SystemCapability.USB.USBManager | +| index | number | 请求参数value对应的索引值。
**系统能力**: SystemCapability.USB.USBManager | +| data | Uint8Array | 用于写入或读取的缓冲区。
**系统能力**: SystemCapability.USB.USBManager | ## USBRequestTargetType @@ -494,10 +513,10 @@ USB设备消息传输通道,用于确定设备。 | 名称 | 默认值 | 说明 | | -------- | -------- | -------- | -| USB_REQUEST_TARGET_DEVICE | 0 | 设备。 | -| USB_REQUEST_TARGET_INTERFACE | 1 | 接口。 | -| USB_REQUEST_TARGET_ENDPOINT | 2 | 端点。 | -| USB_REQUEST_TARGET_OTHER | 3 | 其他。 | +| USB_REQUEST_TARGET_DEVICE | 0 | 设备。
**系统能力**: SystemCapability.USB.USBManager | +| USB_REQUEST_TARGET_INTERFACE | 1 | 接口。
**系统能力**: SystemCapability.USB.USBManager | +| USB_REQUEST_TARGET_ENDPOINT | 2 | 端点。
**系统能力**: SystemCapability.USB.USBManager | +| USB_REQUEST_TARGET_OTHER | 3 | 其他。
**系统能力**: SystemCapability.USB.USBManager | ## USBControlRequestType @@ -506,9 +525,9 @@ USB设备消息传输通道,用于确定设备。 | 名称 | 默认值 | 说明 | | -------- | -------- | -------- | -| USB_REQUEST_TYPE_STANDARD | 0 | 标准。 | -| USB_REQUEST_TYPE_CLASS | 1 | 类。 | -| USB_REQUEST_TYPE_VENDOR | 2 | 厂商。 | +| USB_REQUEST_TYPE_STANDARD | 0 | 标准。
**系统能力**: SystemCapability.USB.USBManager | +| USB_REQUEST_TYPE_CLASS | 1 | 类。
**系统能力**: SystemCapability.USB.USBManager | +| USB_REQUEST_TYPE_VENDOR | 2 | 厂商。
**系统能力**: SystemCapability.USB.USBManager | ## USBRequestDirection @@ -517,12 +536,12 @@ USB设备消息传输通道,用于确定设备。 | 名称 | 默认值 | 说明 | | -------- | -------- | -------- | -| USB_REQUEST_TYPE_STANDARD | 0 | 写数据,主设备往从设备。 | -| USB_REQUEST_TYPE_CLASS | 0x80 | 读数据,从设备往主设备。 | +| USB_REQUEST_TYPE_STANDARD | 0 | 写数据,主设备往从设备。
**系统能力**: SystemCapability.USB.USBManager | +| USB_REQUEST_TYPE_CLASS | 0x80 | 读数据,从设备往主设备。
**系统能力**: SystemCapability.USB.USBManager | | 名称 | 默认值 | 说明 | | -------- | -------- | -------- | -| NONE | 0 | 无。 | -| ACM | 1 | 串口设备。 | -| ECM | 2 | 网口设备。 | -| HDC | 4 | HDC设备。 | +| NONE | 0 | 无。
**系统能力**: SystemCapability.USB.USBManager | +| ACM | 1 | 串口设备。
**系统能力**: SystemCapability.USB.USBManager | +| ECM | 2 | 网口设备。
**系统能力**: SystemCapability.USB.USBManager | +| HDC | 4 | HDC设备。
**系统能力**: SystemCapability.USB.USBManager | 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 7ceb3a6c4b5c0ed422b81e41d329679df0464c73..0e14e726a69181d5bed3fb6e3233ea1889010cb1 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-window.md +++ b/zh-cn/application-dev/reference/apis/js-apis-window.md @@ -3,494 +3,976 @@ > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** > 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 - ## 导入模块 ``` import window from '@ohos.window'; ``` +## WindowType7+ + +窗口类型。 + +| 名称 | 默认值 | 说明 | +| ----------------- | ------ | ------------------------------------------------------------ | +| TYPE_APP | 0 | 表示应用子窗口。
**系统能力**:SystemCapability.WindowManager.WindowManager.Core | +| TYPE_SYSTEM_ALERT | 1 | 表示系统告警窗口。
**系统能力**:SystemCapability.WindowManager.WindowManager.Core | -## 系统能力 -SystemCapability.WindowManager.WindowManager.Core +## AvoidAreaType7+ +窗口内容需要规避区域的类型。 +| 名称 | 默认值 | 说明 | +| ----------- | ------ | ------------------------------------------------------------ | +| TYPE_SYSTEM | 0 | 表示系统默认区域。
**系统能力**:SystemCapability.WindowManager.WindowManager.Core | +| TYPE_CUTOUT | 1 | 表示刘海屏区域。
**系统能力**:SystemCapability.WindowManager.WindowManager.Core | -## 权限列表 +## WindowMode7+ -ohos.permission.SYSTEM_FLOAT_WINDOW +窗口模式。 +| 名称 | 默认值 | 说明 | +| ---------- | ------ | ------------------------------------------------------------ | +| UNDEFINED | 1 | 表示APP未定义窗口模式。
**系统能力**:SystemCapability.WindowManager.WindowManager.Core | +| FULLSCREEN | 2 | 表示APP全屏模式。
**系统能力**:SystemCapability.WindowManager.WindowManager.Core | +| PRIMARY | 3 | 表示APP分屏多窗口主要模式。
**系统能力**:SystemCapability.WindowManager.WindowManager.Core | +| SECONDARY | 4 | 表示APP分屏多窗口次要模式。
**系统能力**:SystemCapability.WindowManager.WindowManager.Core | +| FLOATING | 5 | 表示APP自由悬浮形式窗口模式。
**系统能力**:SystemCapability.WindowManager.WindowManager.Core | -## SystemBarProperties +## SystemBarProperties 状态栏导航栏的属性。 -| 名称 | 参数类型 | 可读 | 可写 | 说明 | -| -------- | -------- | -------- | -------- | -------- | -| statusBarColor | string | 是 | 是 | 状态栏颜色,为16进制颜色,例如"\#00FF00"或"\#FF00FF00"。 | -| isStatusBarLightIcon7+ | boolean | 是 | 是 | 状态栏图标是否为高亮状态。 | -| navigationBarColor | string | 是 | 是 | 导航栏颜色,为16进制颜色,例如"\#00FF00"或"\#FF00FF00"。 | -| isNavigationBarLightIcon7+ | boolean | 是 | 是 | 导航栏图标是否为高亮状态。 | +| 名称 | 参数类型 | 可读 | 可写 | 说明 | +| -------------------------------------- | -------- | ---- | ---- | ------------------------------------------------------------ | +| statusBarColor | string | 是 | 是 | 状态栏背景颜色,为16进制RGB或ARGB颜色,例如"\#00FF00"或"\#FF00FF00"。
**系统能力**:SystemCapability.WindowManager.WindowManager.Core | +| isStatusBarLightIcon7+ | boolean | 否 | 是 | 状态栏图标是否为高亮状态。
**系统能力**:SystemCapability.WindowManager.WindowManager.Core | +| statusBarContentColor8+ | string | 否 | 是 | 状态栏文字颜色。
**系统能力**:SystemCapability.WindowManager.WindowManager.Core | +| navigationBarColor | string | 是 | 是 | 导航栏背景颜色,为16进制RGB或ARGB颜色,例如"\#00FF00"或"\#FF00FF00"。
**系统能力**:SystemCapability.WindowManager.WindowManager.Core | +| isNavigationBarLightIcon7+ | boolean | 否 | 否 | 导航栏图标是否为高亮状态。
**系统能力**:SystemCapability.WindowManager.WindowManager.Core | +| navigationBarContentColor8+ | string | 否 | 是 | 导航栏文字颜色。
**系统能力**:SystemCapability.WindowManager.WindowManager.Core | + +## SystemBarRegionTint 8+ +单个导航栏或状态栏回调信息。 + +| 名称 | 参数类型 | 可读 | 可写 | 说明 | +| --------------- | ------------------------- | ---- | ---- | ------------------------------------------------------------ | +| type | [WindowType](#windowtype) | 是 | 是 | 当前属性改变的系统栏类型,仅支持类型为导航栏、状态栏的系统栏。
**系统能力**:SystemCapability.WindowManager.WindowManager.Core | +| isEnable | boolean | 是 | 是 | 当前系统栏是否显示。
**系统能力**:SystemCapability.WindowManager.WindowManager.Core | +| region | [Rect](#rect) | 是 | 是 | 当前系统栏的位置及大小。
**系统能力**:SystemCapability.WindowManager.WindowManager.Core | +| backgroundColor | string | 是 | 是 | 系统栏背景颜色,为16进制RGB或ARGB颜色,例如"\#00FF00"或"\#FF00FF00"。
**系统能力**:SystemCapability.WindowManager.WindowManager.Core | +| contentColor | string | 是 | 是 | 系统栏文字颜色。
**系统能力**:SystemCapability.WindowManager.WindowManager.Core | + +## SystemBarTintState 8+ + +当前系统栏回调信息集合。 + +| 名称 | 参数类型 | 可读 | 可写 | 说明 | +| ---------- | -------------------------------------------------- | ---- | ---- | ------------------------------------------------------------ | +| displayId | number | 是 | 否 | 当前物理屏幕id。
**系统能力**:SystemCapability.WindowManager.WindowManager.Core | +| regionTint | Array<[SystemBarRegionTint](#systembartegiontint)> | 是 | 是 | 当前改变所有的系统栏信息。
**系统能力**:SystemCapability.WindowManager.WindowManager.Core | ## Rect7+ 矩形。 -| 名称 | 参数类型 | 可读 | 可写 | 说明 | -| -------- | -------- | -------- | -------- | -------- | -| left | number | 是 | 是 | 矩形区域的左边界。 | -| top | number | 是 | 是 | 矩形区域的上边界。 | -| width | number | 是 | 是 | 矩形区域的宽度。 | -| height | number | 是 | 是 | 矩形区域的高度。 | - +| 名称 | 参数类型 | 可读 | 可写 | 说明 | +| ------ | -------- | ---- | ---- | ------------------------------------------------------------ | +| left | number | 是 | 是 | 矩形区域的左边界。
**系统能力**:SystemCapability.WindowManager.WindowManager.Core | +| top | number | 是 | 是 | 矩形区域的上边界。
**系统能力**:SystemCapability.WindowManager.WindowManager.Core | +| width | number | 是 | 是 | 矩形区域的宽度。
**系统能力**:SystemCapability.WindowManager.WindowManager.Core | +| height | number | 是 | 是 | 矩形区域的高度。
**系统能力**:SystemCapability.WindowManager.WindowManager.Core | ## AvoidArea7+ 表示窗口内容规避区域。 -| 名称 | 参数类型 | 可读 | 可写 | 说明 | -| -------- | -------- | -------- | -------- | -------- | -| leftRect | [Rect](#rect) | 是 | 是 | 屏幕左侧的矩形区。 | -| topRect | [Rect](#rect) | 是 | 是 | 屏幕顶部的矩形区。 | -| rightRect | [Rect](#rect) | 是 | 是 | 屏幕右侧的矩形区。 | -| bottomRect | [Rect](#rect) | 是 | 是 | 屏幕底部的矩形区。 | - +| 名称 | 参数类型 | 可读 | 可写 | 说明 | +| ---------- | ------------- | ---- | ---- | ------------------------------------------------------------ | +| leftRect | [Rect](#rect) | 是 | 是 | 屏幕左侧的矩形区。
**系统能力**:SystemCapability.WindowManager.WindowManager.Core | +| topRect | [Rect](#rect) | 是 | 是 | 屏幕顶部的矩形区。
**系统能力**:SystemCapability.WindowManager.WindowManager.Core | +| rightRect | [Rect](#rect) | 是 | 是 | 屏幕右侧的矩形区。
**系统能力**:SystemCapability.WindowManager.WindowManager.Core | +| bottomRect | [Rect](#rect) | 是 | 是 | 屏幕底部的矩形区。
**系统能力**:SystemCapability.WindowManager.WindowManager.Core | ## Size7+ 窗口大小。 -| 名称 | 参数类型 | 可读 | 可写 | 说明 | -| -------- | -------- | -------- | -------- | -------- | -| width | number | 是 | 是 | 窗口宽度。 | -| height | number | 是 | 是 | 窗口高度。 | - +| 名称 | 参数类型 | 可读 | 可写 | 说明 | +| ------ | -------- | ---- | ---- | ------------------------------------------------------------ | +| width | number | 是 | 是 | 窗口宽度。
**系统能力**:SystemCapability.WindowManager.WindowManager.Core | +| height | number | 是 | 是 | 窗口高度。
**系统能力**:SystemCapability.WindowManager.WindowManager.Core | -## WindowProperties +## WindowProperties 窗口属性。 -| 名称 | 参数类型 | 可读 | 可写 | 说明 | -| -------- | -------- | -------- | -------- | -------- | -| windowRect7+ | [Rect](#rect) | 是 | 否 | 窗口尺寸。 | -| type7+ | [WindowType](#windowtype) | 是 | 否 | 窗口类型。 | -| brightness | number | 是 | 是 | 屏幕亮度,取值范围为0~1,1表示最大亮度值。 | -| isTransparent7+ | boolean | 是 | 是 | 窗口是否透明,默认为false。 | -| isFullScreen | boolean | 是 | 是 | 是否全屏,默认为false。 | -| isKeepScreenOn | boolean | 是 | 是 | 屏幕是否常亮,默认为false。 | -| dimBehindValue7+ | number | 是 | 是 | 靠后的窗口的暗度值,取值范围为0~1,1表示最暗。 | -| isLayoutFullScreen7+ | boolean | 是 | 是 | 窗口是否为沉浸式,默认为false。 | -| focusable7+ | boolean | 是 | 是 | 窗口是否可聚焦,默认为true。 | -| touchable7+ | boolean | 是 | 是 | 窗口是否可触摸,默认为true。 | -| isPrivacyMode7+ | boolean | 是 | 是 | 隐私模式,默认为false。 | -| isRoundCorner7+ | boolean | 是 | 是 | 窗口是否为圆角。 | - +| 名称 | 参数类型 | 可读 | 可写 | 说明 | +| ------------------------------- | ------------------------- | ---- | ---- | ------------------------------------------------------------ | +| windowRect7+ | [Rect](#rect) | 是 | 是 | 窗口尺寸。
**系统能力**:SystemCapability.WindowManager.WindowManager.Core | +| type7+ | [WindowType](#windowtype) | 是 | 是 | 窗口类型。
**系统能力**:SystemCapability.WindowManager.WindowManager.Core | +| isFullScreen | boolean | 是 | 是 | 是否全屏,默认为false。
**系统能力**:SystemCapability.WindowManager.WindowManager.Core | +| isLayoutFullScreen7+ | boolean | 是 | 是 | 窗口是否为沉浸式,默认为false。
**系统能力**:SystemCapability.WindowManager.WindowManager.Core | +| focusable7+ | boolean | 是 | 否 | 窗口是否可聚焦,默认为true。
**系统能力**:SystemCapability.WindowManager.WindowManager.Core | +| touchable7+ | boolean | 是 | 否 | 窗口是否可触摸,默认为true。
**系统能力**:SystemCapability.WindowManager.WindowManager.Core | -## SplitScreenBoundsInfo7+ +## ColorSpace8+ -分屏边界相关信息。 +色域模式。 -| 名称 | 类型 | 说明 | -| -------- | -------- | -------- | -| [splitMode](#splitmode) | number | 表示分屏模式。 | -| primaryBounds | [Rect](#rect) | 表示主要边界信息,返回Rect类实例。 | -| secondaryBounds | [Rect](#rect) | 表示次要边界信息,返回Rect类实例。 | +| 名称 | 默认值 | 说明 | +| ---------- | ------ | ------------------------------------------------------------ | +| DEFAULT | 0 | 默认色域模式。
**系统能力**:SystemCapability.WindowManager.WindowManager.Core | +| WIDE_GAMUT | 1 | 广色域模式。
**系统能力**:SystemCapability.WindowManager.WindowManager.Core | +## window.create7 -## window.getTopWindow +create(id: string, type: WindowType, callback: AsyncCallback<Window>): void -getTopWindow(callback: AsyncCallback<Window>): void +创建子窗口,使用callback方式作为异步方法。 -获取当前窗口,用于获取到window实例。 +**系统能力**:SystemCapability.WindowManager.WindowManager.Core - 参数 - | 参数名 | 类型 | 必填 | 说明 | - | -------- | -------- | -------- | -------- | - | callback | AsyncCallback<[Window](#window)> | 是 | 回调返回当前窗口对象。 | + + | 参数名 | 类型 | 必填 | 说明 | + | -------- | -------------------------------------- | ---- | -------------------------- | + | id | string | 是 | 窗口id。 | + | type | [WindowType](#windowtype) | 是 | 窗口类型。 | + | callback | AsyncCallback<[Window](#window)> | 是 | 回调返回创建的子窗口对象。 | - 示例 + ``` - window.getTopWindow((err, data) => { + window.create("first", window.WindowType.TYPE_APP, (err, data) => { + windowClass = data; if (err) { - console.error('Failed to obtain the top window. Cause: ' + JSON.stringify(err)); + console.error('Failed to create the subWindow. Cause: ' + JSON.stringify(err)); return; } - console.info('Succeeded in obtaining the top window. Data: ' + JSON.stringify(data)); - windowClass = data; + console.info('SubWindow created. Data: ' + JSON.stringify(data)) + windowClass.resetSize(500, 1000); }); ``` +## window.create7 -## window.create7+ +create(id: string, type: WindowType): Promise<Window> -create(id: string, type: WindowType, callback: AsyncCallback<Window>): void +创建子窗口,使用Promise方式作为异步方法。 -创建子窗口。 +**系统能力**:SystemCapability.WindowManager.WindowManager.Core - 参数 - | 参数名 | 类型 | 必填 | 说明 | - | -------- | -------- | -------- | -------- | - | id | string | 是 | 窗口id。 | - | type | [WindowType](#windowtype) | 是 | 窗口类型。 | - | callback | AsyncCallback<[Window](#window)> | 是 | 回调返回当前窗口对象。 | -- 示例 + | 参数名 | 类型 | 必填 | 说明 | + | ------ | ------------------------- | ---- | ---------- | + | id | string | 是 | 窗口id。 | + | type | [WindowType](#windowtype) | 是 | 窗口类型。 | +- 返回值 -``` - window.create("first", 1, (err, data) => { - windowClass = data; - if (err) { - console.error('Failed to create the subWindow. Cause: ' + JSON.stringify(err)); - return; - } - console.info('SubWindow created. Data: ' + JSON.stringify(data)) - windowClass.resetSize(500, 1000); - windowClass.setOutsideTouchable(true); - windowClass.loadContent("pages/index/index", (err, data) => { + | 类型 | 说明 | + | -------------------------------- | ------------------------------------------------- | + | Promise<[Window](#window)> | 以Promise形式返回结果,返回当前创建的子窗口对象。 | + +- 示例 + + ``` + let promise = window.create("first", window.WindowType.TYPE_APP); + promise.then((data)=> { + console.info('SubWindow created. Data: ' + JSON.stringify(data)) + }).catch((err)=>{ + console.error('Failed to create the subWindow. Cause: ' + JSON.stringify(err)); }); -}) -``` + ``` +## window.create8+ -## window.find7+ +create(ctx: Context, id: string, type: WindowType, callback: AsyncCallback<Window>): void + +当Context为[ServiceExtensionContext](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-service-extension-context.md)时,创建系统窗口,使用callback方式作为异步方法。 + +**系统能力**:SystemCapability.WindowManager.WindowManager.Core + +- 参数 + + | 参数名 | 类型 | 必填 | 说明 | + | -------- | ------------------------------------------------------------ | ---- | ----------------------------------------------------- | + | ctx | [Context](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-Context.md) | 是 | 当前应用上下文信息, 为ServiceExtensionContext的基类。 | + | id | string | 是 | 窗口id。 | + | type | [WindowType](#windowtype) | 是 | 窗口类型。 | + | callback | AsyncCallback<[Window](#window)> | 是 | 回调返回当前窗口对象。 | + +- 示例 + + ``` + window.create(this.context, "alertWindow", window.WindowType.TYPE_SYSTEM_ALERT, (err, data) => { + windowClass = data; + if (err) { + console.error('Failed to create the Window. Cause: ' + JSON.stringify(err)); + return; + } + console.info('Window created. Data: ' + JSON.stringify(data)) + windowClass.resetSize(500, 1000); + }); + ``` + +## window.create8+ + +function create(ctx: Context, id: string, type: WindowType): Promise<Window> + +当Context为[ServiceExtensionContext](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-service-extension-context.md)时,创建系统窗口,使用Promise方式作为异步方法。 + +**系统能力**:SystemCapability.WindowManager.WindowManager.Core + +- 参数 + + | 参数名 | 类型 | 必填 | 说明 | + | ------ | ------------------------------------------------------------ | ---- | ----------------------------------------------------- | + | ctx | [Context](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-Context.md) | 是 | 当前应用上下文信息, 为ServiceExtensionContext的基类。 | + | id | string | 是 | 窗口id。 | + | type | [WindowType](#windowtype) | 是 | 窗口类型。 | + +- 返回值 + + | 类型 | 说明 | + | -------------------------------- | ----------------------------------------------- | + | Promise<[Window](#window)> | 以Promise形式返回结果,返回当前创建的窗口对象。 | + +- 示例 + + ``` + let promise = window.create(this.context, "alertWindow", window.WindowType.TYPE_SYSTEM_ALERT); + promise.then((data)=> { + console.info('Window created. Data: ' + JSON.stringify(data)) + }).catch((err)=>{ + console.error('Failed to create the Window. Cause: ' + JSON.stringify(err)); + }); + ``` + +## window.find7+ find(id: string, callback: AsyncCallback<Window>): void -查找子窗口。 +查找id所对应的窗口,使用callback方式作为异步方法。 + +**系统能力**:SystemCapability.WindowManager.WindowManager.Core - 参数 - | 参数名 | 类型 | 必填 | 说明 | - | -------- | -------- | -------- | -------- | - | id | string | 是 | 窗口id。 | - | callback | AsyncCallback<[Window](#window)> | 是 | 回调返回当前窗口对象。 | + + | 参数名 | 类型 | 必填 | 说明 | + | -------- | -------------------------------------- | ---- | ---------------------------- | + | id | string | 是 | 窗口id。 | + | callback | AsyncCallback<[Window](#window)> | 是 | 回调返回当前查找的窗口对象。 | - 示例 + ``` window.find("first", (err, data) => { if (err) { - console.error('Failed to find the subWindow. Cause: ' + JSON.stringify(err)); + console.error('Failed to find the Window. Cause: ' + JSON.stringify(err)); return; } - console.info('SubWindow found. Data: ' + JSON.stringify(data)) + console.info('window found. Data: ' + JSON.stringify(data)) windowClass = data; - }) + }); + ``` + +## window.find7+ + +find(id: string): Promise<Window> + +查找id所对应的窗口,使用Promise方式作为异步方法。 + +**系统能力**:SystemCapability.WindowManager.WindowManager.Core + +- 参数 + + | 参数名 | 类型 | 必填 | 说明 | + | ------ | ------ | ---- | -------- | + | id | string | 是 | 窗口id。 | + +- 返回值 + + | 类型 | 说明 | + | -------------------------------- | ----------------------------------------------- | + | Promise<[Window](#window)> | 以Promise形式返回结果,返回当前查找的窗口对象。 | + +- 示例 + + ``` + let promise = window.find("first"); + promise.then((data)=> { + console.info('window found. Data: ' + JSON.stringify(data)) + }).catch((err)=>{ + console.error('Failed to find the Window. Cause: ' + JSON.stringify(err)); + }); ``` +## window.getTopWindow -## window.getAbilityWindowMode7+ +getTopWindow(callback: AsyncCallback<Window>): void -getAbilityWindowMode(callback: AsyncCallback<WindowMode>): void +获取当前应用内最后显示的窗口,使用callback方式作为异步方法。 -获取当前窗口模式。 +**系统能力**:SystemCapability.WindowManager.WindowManager.Core - 参数 - | 参数名 | 类型 | 必填 | 说明 | - | -------- | -------- | -------- | -------- | - | callback | AsyncCallback<[WindowMode](#windowmode)> | 是 | 回调返回当前窗口模式。 | + + | 参数名 | 类型 | 必填 | 说明 | + | -------- | -------------------------------------- | ---- | -------------------------------------- | + | callback | AsyncCallback<[Window](#window)> | 是 | 回调返回当前应用内最后显示的窗口对象。 | - 示例 + ``` - window.getAbilityWindowMode((err, data) => { + window.getTopWindow((err, data) => { if (err) { - console.error('Failed to obtain the window mode. Cause:' + JSON.stringify(err)); + console.error('Failed to obtain the top window. Cause: ' + JSON.stringify(err)); return; } - console.info('Window mode obtained. Data:' + JSON.stringify(data)) - + console.info('Succeeded in obtaining the top window. Data: ' + JSON.stringify(data)); + windowClass = data; }); ``` +## window.getTopWindow + +getTopWindow(): Promise<Window> + +获取当前应用内最后显示的窗口,使用Promise方式作为异步方法。 + +**系统能力**:SystemCapability.WindowManager.WindowManager.Core + +- 返回值 + + | 类型 | 说明 | + | -------------------------------- | --------------------------------------------------------- | + | Promise<[Window](#window)> | 以Promise形式返回结果,返回当前应用内最后显示的窗口对象。 | + +- 示例 + + ``` + let promise = window.getTopWindow(); + promise.then((data)=> { + console.info('Succeeded in obtaining the top window. Data: ' + JSON.stringify(data)) + }).catch((err)=>{ + console.error('Failed to obtain the top window. Cause: ' + JSON.stringify(err)); + }) + ``` + +## window.getTopWindow8+ -## window.getSplitScreenBounds7+ +getTopWindow(ctx: Context, callback: AsyncCallback<Window>): void -getSplitScreenBounds(splitRatio: SplitRatio, callback: AsyncCallback<SplitScreenBoundsInfo>): void +获取当前应用内最后显示的窗口,使用callback方式作为异步方法。 -获取分屏多窗口的位置和区域.。 +**系统能力**:SystemCapability.WindowManager.WindowManager.Core - 参数 - | 参数名 | 类型 | 必填 | 说明 | - | -------- | -------- | -------- | -------- | - | splitRatio | SplitRatio | 是 | 表示分屏比例,默认值为1:1,传值1表示1:2,传值2为2:1。 | - | callback | AsyncCallback<[SplitScreenBoundsInfo](#splitscreenboundsinfo)> | 是 | 回调返回一个SplitScreenBoundsInfo对象,表示分屏边界相关信息。 | + + | 参数名 | 类型 | 必填 | 说明 | + | -------- | ------------------------------------------------------------ | ---- | -------------------------------------- | + | ctx | [Context](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-Context.md) | 是 | 当前应用上下文信息。 | + | callback | AsyncCallback<[Window](#window)> | 是 | 回调返回当前应用内最后显示的窗口对象。 | - 示例 + ``` - var splitRatio = '1:1'; - window.getSplitScreenBounds(splitRatio, (err, data) => { + window.getTopWindow(this.context, (err, data) => { if (err) { - console.error('Failed to obtain the split-screen boundary information. Cause: ' + JSON.stringify(err)); + console.error('Failed to obtain the top window. Cause: ' + JSON.stringify(err)); return; } - console.info('Split-screen boundary information obtained. Data: ' + JSON.stringify(data)) - + console.info('Succeeded in obtaining the top window. Data: ' + JSON.stringify(data)); + windowClass = data; }); ``` +## window.getTopWindow8+ + +getTopWindow(ctx: Context): Promise<Window> + +获取当前应用内最后显示的窗口,使用Promise方式作为异步方法。 + +**系统能力**:SystemCapability.WindowManager.WindowManager.Core + +- 参数 + + | 参数名 | 类型 | 必填 | 说明 | + | ------ | ------------------------------------------------------------ | ---- | -------------------- | + | ctx | [Context](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-Context.md) | 是 | 当前应用上下文信息。 | + +- 返回值 + + | 类型 | 说明 | + | -------------------------------- | --------------------------------------------------------- | + | Promise<[Window](#window)> | 以Promise形式返回结果,返回当前应用内最后显示的窗口对象。 | + +- 示例 + + ``` + let promise = window.getTopWindow(this.context); + promise.then((data)=> { + console.info('Succeeded in obtaining the top window. Data: ' + JSON.stringify(data)) + }).catch((err)=>{ + console.error('Failed to obtain the top window. Cause: ' + JSON.stringify(err)); + }) + ``` + +## on('systemBarTintChange')8+ + +on(type: 'systemBarTintChange', callback: Callback<SystemBarTintState>): void + +注册状态栏、导航栏的监听函数。 + +**系统能力**:SystemCapability.WindowManager.WindowManager.Core + +- 参数 + + | 参数名 | 类型 | 必填 | 说明 | + | -------- | --------------------------------------------------------- | ---- | ------------------------------------------------------------ | + | type | string | 是 | 设置监听类型。
- type为'systemBarTintChange'时表示监听类型为导航栏、状态栏属性变化监听; | + | callback | Callback<[SystemBarTintState](#systembartintstate)> | 是 | 回调返回监听到的信息。 | + +- 示例 + + ``` + var type = 'systemBarTintChange'; + windowClass.on(type, (data) => { + console.info('Succeeded in enabling the listener for systemBarTint changes. Data: ' + JSON.stringify(data)); + }); + ``` + +## off('systemBarTintChange')8+ + +off(type: 'systemBarTintChange', callback?: Callback<SystemBarTintState >): void + +关闭监听。 + +**系统能力**:SystemCapability.WindowManager.WindowManager.Core + +- 参数 + + | 参数名 | 类型 | 必填 | 说明 | + | -------- | --------------------------------------------------------- | ---- | ------------------------------------------------------------ | + | type | string | 是 | 设置监听类型。
- type为'systemBarTintChange'时表示监听类型为导航栏、状态栏属性变化监听; | + | callback | Callback<[SystemBarTintState](#systembartintstate)> | 否 | 回调返回监听到的信息。 | + +- 示例 + + ``` + var type = 'systemBarTintChange'; + windowClass.off(type); + ``` + +## Window + +下列API示例中都需使用[getTopWindow()](#window-gettopwindow)、[create()](#window-create)、[find()](#window-find)等先获取到Window实例,再通过此实例调用对应方法。 + +### hide7+ + +hide (callback: AsyncCallback<void>): void + +隐藏当前窗口,使用callback方式作为异步方法。 + +**系统能力**:SystemCapability.WindowManager.WindowManager.Core + +- 参数 + + | 参数名 | 类型 | 必填 | 说明 | + | -------- | ------------------------- | ---- | ---------- | + | callback | AsyncCallback<void> | 是 | 回调函数。 | + +- 示例 + + ``` + windowClass.hide((err) => { + if (err) { + console.error('Failed to hide the window. Cause: ' + JSON.stringify(err)); + return; + } + console.info('window hidden.') + }) + ``` + +### hide7+ + +hide(): Promise<void>; + +隐藏当前窗口,使用Promise方式作为异步方法。 + +**系统能力**:SystemCapability.WindowManager.WindowManager.Core + +- 返回值 + + | 类型 | 说明 | + | ------------------- | ----------------------------------------------- | + | Promise<void> | 以Promise形式返回结果,返回当前函数执行的结果。 | + +- 示例 + + ``` + let promise = windowClass.hide(); + promise.then(()=> { + console.info('window hidden.') + }).catch((err)=>{ + console.error('Failed to hide the window. Cause: ' + JSON.stringify(err)); + }) + ``` + +### show7+ + +show(callback: AsyncCallback<void>): void + +显示当前窗口,使用callback方式作为异步方法。 + +**系统能力**:SystemCapability.WindowManager.WindowManager.Core + +- 参数 + + | 参数名 | 类型 | 必填 | 说明 | + | -------- | ------------------------- | ---- | ---------- | + | callback | AsyncCallback<void> | 是 | 回调函数。 | + +- 示例 + + ``` + windowClass.show((err) => { + if (err) { + console.error('Failed to show the window. Cause: ' + JSON.stringify(err)); + return; + } + console.info('Succeeded in showing the window.') + }) + ``` + +### show7+ + +show(): Promise<void> + +显示当前窗口,使用Promise方式作为异步方法。 + +**系统能力**:SystemCapability.WindowManager.WindowManager.Core + +- 返回值 + + | 类型 | 说明 | + | ------------------- | ----------------------------------------------- | + | Promise<void> | 以Promise形式返回结果,返回当前函数执行的结果。 | + +- 示例 + + ``` + let promise = windowClass.show(); + promise.then(()=> { + console.info('Succeeded in showing the window.') + }).catch((err)=>{ + console.error('Failed to show the window. Cause: ' + JSON.stringify(err)); + }) + ``` + +### destroy7+ + +destroy(callback: AsyncCallback<void>): void + +销毁当前窗口,使用callback方式作为异步方法。 + +**系统能力**:SystemCapability.WindowManager.WindowManager.Core + +- 参数 + + | 参数名 | 类型 | 必填 | 说明 | + | -------- | ------------------------- | ---- | ---------- | + | callback | AsyncCallback<void> | 是 | 回调函数。 | + +- 示例 + + ``` + windowClass.destroy((err) => { + if (err) { + console.error('Failed to destroy the window. Cause:' + JSON.stringify(err)); + return; + } + console.info('Succeeded in destroying the window.') + }) + ``` + +### destroy7+ + +destroy(): Promise<void> + +销毁当前窗口,使用Promise方式作为异步方法。 + +**系统能力**:SystemCapability.WindowManager.WindowManager.Core + +- 返回值 + + | 类型 | 说明 | + | ------------------- | ----------------------------------------------- | + | Promise<void> | 以Promise形式返回结果,返回当前函数执行的结果。 | + +- 示例 + + ``` + let promise = windowClass.destroy(); + promise.then(()=> { + console.info('Succeeded in destroying the window.') + }).catch((err)=>{ + console.error('Failed to destroy the window. Cause: ' + JSON.stringify(err)); + }) + ``` + +### moveTo7+ -## window.isFloatingAbilityWindowVisible7+ +moveTo(x: number, y: number, callback: AsyncCallback<void>): void -isFloatingAbilityWindowVisible(callback:AsyncCallback<boolean>): void +移动窗口位置,使用callback方式作为异步方法。 -悬浮窗是否显示可见。 +**系统能力**:SystemCapability.WindowManager.WindowManager.Core - 参数 - | 参数名 | 类型 | 必填 | 说明 | - | -------- | -------- | -------- | -------- | - | callback | AsyncCallback<boolean> | 是 | 回调返回一个boolean对象,表示悬浮窗是否可见。 | + + | 参数名 | 类型 | 必填 | 说明 | + | -------- | ------------------------- | ---- | --------------------------------------- | + | x | number | 是 | 窗口在x轴方向移动的值,值为正表示右移。 | + | y | number | 是 | 窗口在y轴方向移动的值,值为正表示下移。 | + | callback | AsyncCallback<void> | 是 | 回调函数。 | - 示例 + ``` - window.isFloatingAbilityWindowVisible( (err, data) => { + windowClass.moveTo(300, 300, (err)=>{ if (err) { - console.error('Failed to check whether the floating window is visible. Cause:' + JSON.stringify(err)); + console.error('Failed to move the window. Cause:' + JSON.stringify(err)); return; } - console.info('Succeeded in checking whether the floating window is visible. Data:' + JSON.stringify(data)) + console.info('Window moved.'); }); ``` +### moveTo7+ -## window.setSplitBarVisibility7+ +moveTo(x: number, y: number): Promise<void> -setSplitBarVisibility(isVisibility: boolean, callback: AsyncCallback<void>): void +移动窗口位置,使用Promise方式作为异步方法。 -设置分屏线是否可见。 +**系统能力**:SystemCapability.WindowManager.WindowManager.Core - 参数 - | 参数名 | 类型 | 说明 | - | -------- | -------- | -------- | - | isVisibility | boolean | 表示分屏线是否是否显示,true为显示,false为显示。 | - | callback | AsyncCallback<void> | callback形式返回结果。 | + + | 参数名 | 类型 | 必填 | 说明 | + | ------ | ------ | ---- | --------------------------------------- | + | x | number | 是 | 窗口在x轴方向移动的值,值为正表示右移。 | + | y | number | 是 | 窗口在y轴方向移动的值,值为正表示下移。 | + +- 返回值 + + | 类型 | 说明 | + | ------------------- | ----------------------------------------------- | + | Promise<void> | 以Promise形式返回结果,返回当前函数执行的结果。 | - 示例 + ``` - var isVisibility = false; - window.setSplitBarVisibility(isVisibility , (err, data) => { + let promise = windowClass.moveTo(300, 300); + promise.then(()=> { + console.info('Window moved.') + }).catch((err)=>{ + console.error('Failed to move the window. Cause: ' + JSON.stringify(err)); + }) + ``` + +### resetSize7+ + +resetSize(width: number, height: number, callback: AsyncCallback<void>): void + +改变当前窗口大小,使用callback方式作为异步方法。 + +**系统能力**:SystemCapability.WindowManager.WindowManager.Core + +- 参数 + + | 参数名 | 类型 | 必填 | 说明 | + | -------- | ------------------------- | ---- | ---------------- | + | width | number | 是 | 目标窗口的宽度。 | + | height | number | 是 | 目标窗口的高度。 | + | callback | AsyncCallback<void> | 是 | 回调函数。 | + +- 示例 + + ``` + windowClass.resetSize(500, 1000, (err) => { if (err) { - console.error('Failed to set the divider to be invisible. Cause:' + JSON.stringify(err)); + console.error('Failed to change the window size. Cause:' + JSON.stringify(err)); return; } - console.info('Succeeded in setting the divider to be invisible. Data:' + JSON.stringify(data)) + console.info('Window size changed.'); }); ``` +### resetSize7+ -## WindowType7+ +resetSize(width: number, height: number): Promise<void> -窗口类型。 +改变当前窗口大小,使用Promise方式作为异步方法。 -| 名称 | 默认值 | 说明 | -| -------- | -------- | -------- | -| TYPE_APP | 0 | 表示应用窗口。 | -| TYPE_SYSTEM_ALERT | 1 | 表示系统弹窗。 | +**系统能力**:SystemCapability.WindowManager.WindowManager.Core +- 参数 -## AvoidAreaType7+ + | 参数名 | 类型 | 必填 | 说明 | + | ------ | ------ | ---- | ---------------- | + | width | number | 是 | 目标窗口的宽度。 | + | height | number | 是 | 目标窗口的高度。 | -窗口内容需要规避区域的类型。 +- 返回值 -| 名称 | 默认值 | 说明 | -| -------- | -------- | -------- | -| TYPE_SYSTEM | 0 | 表示系统默认。 | -| TYPE_CUTOUT | 1 | 表示刘海屏区域。 | + | 类型 | 说明 | + | ------------------- | ----------------------------------------------- | + | Promise<void> | 以Promise形式返回结果,返回当前函数执行的结果。 | +- 示例 -## WindowMode7+ + ``` + let promise = windowClass.resetSize(500, 1000); + promise.then(()=> { + console.info('Window size changed.') + }).catch((err)=>{ + console.error('Failed to change the window size. Cause: ' + JSON.stringify(err)); + }); + ``` -窗口模式。 +### setWindowType7+ -| 名称 | 默认值 | 说明 | -| -------- | -------- | -------- | -| UNDEFINED | 1 | 表示APP未定义窗口模式。 | -| FULLSCREEN | 2 | 表示APP全屏模式。 | -| PRIMARY | 3 | 表示APP分屏多窗口主要模式。 | -| SECONDARY | 4 | 表示APP分屏多窗口次要模式。 | -| FLOATING | 5 | 表示APP自由悬浮形式窗口模式。 | +setWindowType(type: WindowType, callback: AsyncCallback<void>): void +设置窗口类型,使用callback方式作为异步方法。 -## splitMode7+ +**系统能力**:SystemCapability.WindowManager.WindowManager.Core -分屏模式。 +- 参数 -| 名称 | 默认值 | 说明 | -| -------- | -------- | -------- | -| VERTICAL | 0 | 表示垂直上下分屏模式 | -| HORIZONTAL | 1 | 表示水平左右分屏模式 | + | 参数名 | 类型 | 必填 | 说明 | + | -------- | ------------------------- | ---- | ---------- | + | type | [WindowType](#windowtype) | 是 | 窗口类型。 | + | callback | AsyncCallback<void> | 是 | 回调函数。 | +- 示例 -## Window + ``` + var type = window.TYPE_APP; + windowClass.setWindowType(type, (err) => { + if (err) { + console.error('Failed to set the window type. Cause: ' + JSON.stringify(err)); + return; + } + console.info('Succeeded in setting the window type.') + }); + ``` + +### setWindowType7+ + +setWindowType(type: WindowType): Promise<void> + +设置窗口类型,使用Promise方式作为异步方法。 + +**系统能力**:SystemCapability.WindowManager.WindowManager.Core + +- 参数 + + | 参数名 | 类型 | 必填 | 说明 | + | ------ | ------------------------- | ---- | ---------- | + | type | [WindowType](#windowtype) | 是 | 窗口类型。 | + +- 返回值 + + | 类型 | 说明 | + | ------------------- | ----------------------------------------------- | + | Promise<void> | 以Promise形式返回结果,返回当前函数执行的结果。 | + +- 示例 -下列API示例中都需使用[getTopWindow()](#window-gettopwindow)先获取到Window实例,再通过此实例调用对应方法。 + ``` + var type = window.TYPE_APP; + let promise = windowClass.setWindowType(type); + promise.then(()=> { + console.info('Succeeded in setting the window type.') + }).catch((err)=>{ + console.error('Failed to set the window type. Cause: ' + JSON.stringify(err)); + }); + ``` +### getProperties -### setBrightness +getProperties(callback: AsyncCallback<WindowProperties>): void -setBrightness(brightness:number, callback: AsyncCallback<void>): void +获取当前窗口的属性,使用callback方式作为异步方法返回WindowProperties。 -设置屏幕亮度值。 +**系统能力**:SystemCapability.WindowManager.WindowManager.Core - 参数 - | 参数名 | 类型 | 必填 | 说明 | - | -------- | -------- | -------- | -------- | - | brightness | number | 是 | 屏幕亮度值,值为0-1之间。1表示最亮。 | - | callback | AsyncCallback<void> | 是 | 回调函数。 | + + | 参数名 | 类型 | 必填 | 说明 | + | -------- | ---------------------------------------------------------- | ---- | ------------------ | + | callback | AsyncCallback<[WindowProperties](#windowproperties)> | 是 | 回调返回窗口属性。 | - 示例 + ``` - var brightness = 10; - windowClass.setBrightness(brightness, (err, data) => { + windowClass.getProperties((err, data) => { if (err) { - console.error('Failed to set the brightness. Cause: ' + JSON.stringify(err)); + console.error('Failed to obtain the window properties. Cause: ' + JSON.stringify(err)); return; } - console.info('Succeeded in setting the brightness. Data: ' + JSON.stringify(data)); + console.info('Succeeded in obtaining the window properties. Data: ' + JSON.stringify(data)); }); ``` +### getProperties + +getProperties(): Promise<WindowProperties> -### setBackgroundColor +获取当前窗口的属性,使用promise方式作为异步方法返回WindowProperties。 -setBackgroundColor(color: string, callback: AsyncCallback<void>): void +**系统能力**:SystemCapability.WindowManager.WindowManager.Core -设置窗口的背景色。 +- 返回值 -- 参数 - | 参数名 | 类型 | 必填 | 说明 | - | -------- | -------- | -------- | -------- | - | color | string | 是 | 需要设置的背景色,为16进制颜色,例如"\#00FF00"或"\#FF00FF00"。 | - | callback | AsyncCallback<void> | 是 | 回调函数。 | + | 类型 | 说明 | + | ---------------------------------------------------- | ------------------------------------- | + | Promise<[WindowProperties](#windowproperties)> | 以Promise形式返回结果,返回窗口属性。 | - 示例 + ``` - var color = '#00ff33'; - windowClass.setBackgroundColor(color, (err, data) => { - if (err) { - console.error('Failed to set the background color. Cause: ' + JSON.stringify(err)); - return; - } - console.info('Succeeded in setting the background color. Data: ' + JSON.stringify(data)); - }); + let promise = windowClass.getProperties(); + promise.then((data)=> { + console.info('Succeeded in obtaining the window properties. Data: ' + JSON.stringify(data)) + }).catch((err)=>{ + console.error('Failed to obtain the window properties. Cause: ' + JSON.stringify(err)); + }); ``` -### setTransparent7+ +### getAvoidArea7+ + +getAvoidArea(type: AvoidAreaType, callback: AsyncCallback<AvoidArea>): void -setTransparent(isTransparent: boolean, callback: AsyncCallback<void>): void +获取窗口内容规避的区域,如系统的系统栏区域、凹凸区域。使用callback方式作为异步方法。 -设置窗口是否透明。 +**系统能力**:SystemCapability.WindowManager.WindowManager.Core - 参数 - | 参数名 | 类型 | 必填 | 说明 | - | -------- | -------- | -------- | -------- | - | isTransparent | boolean | 是 | 窗口是否透明。 | - | callback | AsyncCallback<void> | 是 | 回调函数。 | + + | 参数名 | 类型 | 必填 | 说明 | + | -------- | -------------------------------------------- | ---- | ------------------------------------------------------------ | + | type | [AvoidAreaType](#avoidareatype) | 是 | 表示规避区类型。type为TYPE_SYSTEM,表示系统默认区域。type为TYPE_CUTOUT,表示刘海屏区域。 | + | callback | AsyncCallback<[AvoidArea](#avoidarea)> | 是 | 回调返回窗口内容规避区域。 | - 示例 + ``` - var isTransparent = true; - windowClass.setTransparent(isTransparent, (err, data) => { + var type = window.AvoidAreaType.TYPE_SYSTEM; + windowClass.getAvoidArea(type, (err, data) => { if (err) { - console.error('Failed to set the window to be transparent. Cause: ' + JSON.stringify(err)); + console.error('Failed to obtain the area. Cause:' + JSON.stringify(err)); return; } - console.info('Succeeded in setting the window to be transparent. Data: ' + JSON.stringify(data)) + console.info('Succeeded in obtaining the area. Data:' + JSON.stringify(data)); }); ``` -### setFullScreen +### getAvoidArea7+ -setFullScreen(isFullScreen: boolean, callback: AsyncCallback<void>): void +getAvoidArea(type: AvoidAreaType): Promise<AvoidArea> -设置是否为全屏状态。 +获取窗口内容规避的区域,如系统的系统栏区域、凹凸区域。使用promise方式作为异步方法。 + +**系统能力**:SystemCapability.WindowManager.WindowManager.Core - 参数 - | 参数名 | 类型 | 必填 | 说明 | - | -------- | -------- | -------- | -------- | - | isFullScreen | boolean | 是 | 是否设为全屏状态。 | - | callback | AsyncCallback<void> | 是 | 回调函数。 | + + | 参数名 | 类型 | 必填 | 说明 | + | ------ | ------------------------------- | ---- | ------------------------------------------------------------ | + | type | [AvoidAreaType](#avoidareatype) | 是 | 表示规避区类型。type为TYPE_SYSTEM,表示系统默认区域。type为TYPE_CUTOUT,表示刘海屏区域。 | + +- 返回值 + + | 类型 | 说明 | + | -------------------------------------- | --------------------------------------------- | + | Promise<[AvoidArea](#avoidarea)> | 以Promise形式返回结果,返回窗口内容规避区域。 | - 示例 + ``` - var isFullScreen = true; - windowClass.setFullScreen(isFullScreen, (err, data) => { - if (err) { - console.error('Failed to enable the full-screen mode. Cause: ' + JSON.stringify(err)); - return; - } - console.info('Succeeded in enabling the full-screen mode. Data: ' + JSON.stringify(data)); - }); + let promise = windowClass.getAvoidArea(); + promise.then((data)=> { + console.info('Succeeded in obtaining the area. Data:' + JSON.stringify(data)) + }).catch((err)=>{ + console.error('Failed to obtain the area. Cause:' + JSON.stringify(err)); + }); ``` -### setKeepScreenOn +### setFullScreen + +setFullScreen(isFullScreen: boolean, callback: AsyncCallback<void>): void -setKeepScreenOn(isKeepScreenOn: boolean, callback: AsyncCallback<void>): void +设置是否为全屏状态,使用callback方式作为异步方法。 -设置屏幕是否为常亮状态。 +**系统能力**:SystemCapability.WindowManager.WindowManager.Core - 参数 - | 参数名 | 类型 | 必填 | 说明 | - | -------- | -------- | -------- | -------- | - | isKeepScreenOn | boolean | 是 | 是否设置为屏幕常亮状态。 | - | callback | AsyncCallback<void> | 是 | 回调函数。 | + + | 参数名 | 类型 | 必填 | 说明 | + | ------------ | ------------------------- | ---- | ---------------------------------------------- | + | isFullScreen | boolean | 是 | 是否设为全屏状态,且全屏状态隐藏状态栏导航栏。 | + | callback | AsyncCallback<void> | 是 | 回调函数。 | - 示例 + ``` - var isKeepScreenOn = true; - windowClass.setKeepScreenOn(isKeepScreenOn, (err, data) => { + var isFullScreen = true; + windowClass.setFullScreen(isFullScreen, (err) => { if (err) { - console.error('Failed to set the screen to be always on. Cause: ' + JSON.stringify(err)); + console.error('Failed to enable the full-screen mode. Cause: ' + JSON.stringify(err)); return; } - console.info('Succeeded in setting the screen to be always on. Data: ' + JSON.stringify(data)); + console.info('Succeeded in enabling the full-screen mode.'); }); ``` -### setWindowType7+ - -setWindowType(type: WindowType, callback: AsyncCallback<void>): void +### setFullScreen -设置窗口类型。 +setFullScreen(isFullScreen: boolean): Promise<void> -- 参数 - | 参数名 | 类型 | 必填 | 说明 | - | -------- | -------- | -------- | -------- | - | type | [WindowType](#windowtype7) | 是 |窗口类型。 | - | callback | AsyncCallback<void> | 是 | 回调函数。 | +设置是否为全屏状态,使用Promise方式作为异步方法。 -- 示例 - ``` - var type = window.TYPE_APP; - windowClass.setWindowType(type, (err, data) => { - if (err) { - console.error('Failed to set the window type. Cause: ' + JSON.stringify(err)); - return; - } - console.info('Succeeded in setting the window type. Data: ' + JSON.stringify(data)) - }); - ``` +**系统能力**:SystemCapability.WindowManager.WindowManager.Core -### setDimBehind7+ +- 参数 -setDimBehind(dimBehindValue: number, callback: AsyncCallback<void>): void + | 参数名 | 类型 | 必填 | 说明 | + | ------------ | ------- | ---- | ---------------------------------------------- | + | isFullScreen | boolean | 是 | 是否设为全屏状态,且全屏状态隐藏状态栏导航栏。 | -窗口叠加时,设备有子窗口的情况下设置靠后的窗口的暗度值。 +- 返回值 -- 参数 - | 参数名 | 类型 | 必填 | 说明 | - | -------- | -------- | -------- | -------- | - | dimBehindValue | number | 是 | 表示靠后的窗口的暗度值,取值范围为0-1,1表示最暗。 | - | callback | AsyncCallback<void> | 是 | 回调函数。 | + | 类型 | 说明 | + | ------------------- | ----------------------------------------------- | + | Promise<void> | 以Promise形式返回结果,返回当前函数执行的结果。 | - 示例 + ``` - windowClass.setDimBehind(0.5, (err, data) => { - if (err) { - console.error('Failed to set the dimness. Cause: ' + JSON.stringify(err)); - return; - } - console.info('Succeeded in setting the dimness. Data:' + JSON.stringify(data)); + var isFullScreen = true; + let promise = windowClass.setFullScreen(isFullScreen); + promise.then(()=> { + console.info('Succeeded in enabling the full-screen mode.')) + }).catch((err)=>{ + console.error('Failed to enable the full-screen mode. Cause: ' + JSON.stringify(err)); }); ``` @@ -498,121 +980,119 @@ setDimBehind(dimBehindValue: number, callback: AsyncCallback<void>): void setLayoutFullScreen(isLayoutFullScreen: boolean, callback: AsyncCallback<void>): void -设置窗口的布局是否为全屏显示状态。 +设置窗口的布局是否为全屏显示状态,使用callback方式作为异步方法。 + +**系统能力**:SystemCapability.WindowManager.WindowManager.Core - 参数 - | 参数名 | 类型 | 必填 | 说明 | - | -------- | -------- | -------- | -------- | - | isLayoutFullScreen | boolean | 是 | 窗口的布局是否为全屏显示状态。 | - | callback | AsyncCallback<void> | 是 | 回调函数。 | + + | 参数名 | 类型 | 必填 | 说明 | + | ------------------ | ------------------------- | ---- | ------------------------------------------------------------ | + | isLayoutFullScreen | boolean | 是 | 窗口的布局是否为全屏显示状态,且全屏状态下状态栏、导航栏仍然显示。 | + | callback | AsyncCallback<void> | 是 | 回调函数。 | - 示例 + ``` var isLayoutFullScreen= true; - windowClass.setLayoutFullScreen(isLayoutFullScreen, (err, data) => { + windowClass.setLayoutFullScreen(isLayoutFullScreen, (err) => { if (err) { console.error('Failed to set the window layout to full-screen mode. Cause:' + JSON.stringify(err)); return; } - console.info('Succeeded in setting the window layout to full-screen mode. Data:' + JSON.stringify(data)); + console.info('Succeeded in setting the window layout to full-screen mode.'); }); ``` -### setFocusable7+ - -setFocusable(isFocusable: boolean, callback: AsyncCallback<void>): void +### setLayoutFullScreen7+ -设置点击时是否支持切换焦点窗口。 +setLayoutFullScreen(isLayoutFullScreen: boolean): Promise<void> -- 参数 - | 参数名 | 类型 | 必填 | 说明 | - | -------- | -------- | -------- | -------- | - | isFocusable | boolean | 是 | 点击时是否支持切换焦点窗口。 | - | callback | AsyncCallback<void> | 是 | 回调函数。 | +设置窗口的布局是否为全屏显示状态,使用Promise方式作为异步方法。 -- 示例 - ``` - var isFocusable= true; - windowClass.setFocusable(isFocusable, (err, data) => { - if (err) { - console.error('Failed to set the window to be focusable. Cause:' + JSON.stringify(err)); - return; - } - console.info('Succeeded in setting the window to be focusable. Data: ' + JSON.stringify(data)); - }); - ``` +**系统能力**:SystemCapability.WindowManager.WindowManager.Core -### setTouchable7+ +- 参数 -setTouchable(isTouchable: boolean, callback: AsyncCallback<void>): void + | 参数名 | 类型 | 必填 | 说明 | + | ------------------ | ------- | ---- | ------------------------------------------------------------ | + | isLayoutFullScreen | boolean | 是 | 窗口的布局是否为全屏显示状态,且全屏状态下状态栏、导航栏仍然显示。 | -设置窗口是否为可触状态。 +- 返回值 -- 参数 - | 参数名 | 类型 | 必填 | 说明 | - | -------- | -------- | -------- | -------- | - | isTouchable | boolean | 是 | 窗口是否为可触状态。 | - | callback | AsyncCallback<void> | 是 | 回调函数。 | + | 类型 | 说明 | + | ------------------- | ----------------------------------------------- | + | Promise<void> | 以Promise形式返回结果,返回当前函数执行的结果。 | - 示例 + ``` - var isTouchable = true; - windowClass.setTouchable(isTouchable, (err, data) => { - if (err) { - console.error('Failed to set the window to be touchable. Cause:' + JSON.stringify(err)); - return; - } - console.info('Succeeded in setting the window to be touchable. Data:' + JSON.stringify(data)); - + var isLayoutFullScreen = true; + let promise = windowClass.setLayoutFullScreen(isLayoutFullScreen); + promise.then(()=> { + console.info('Succeeded in setting the window layout to full-screen mode.')) + }).catch((err)=>{ + console.error('Failed to set the window layout to full-screen mode. Cause:' + JSON.stringify(err)); }); ``` -### setPrivacyMode7+ +### setSystemBarEnable7+ + +setSystemBarEnable(names: Array<'status' | 'navigation'>, callback: AsyncCallback<void>): void -setPrivacyMode(isPrivacyMode: boolean, callback: AsyncCallback<void>): void +设置导航栏、状态栏的可见模式,使用callback方式作为异步方法。 -设置窗口是否为隐私模式。 +**系统能力**:SystemCapability.WindowManager.WindowManager.Core - 参数 - | 参数名 | 类型 | 必填 | 说明 | - | -------- | -------- | -------- | -------- | - | isPrivacyMode | boolean | 是 | 窗口是否为隐私模式。 | - | callback | AsyncCallback<void> | 是 | 回调函数。 | + + | 参数名 | 类型 | 必填 | 说明 | + | -------- | ------------------------- | ---- | ------------------------------------------------------------ | + | names | Array | 是 | 设置状态栏和导航栏是否显示。例如,需全部显示,该参数设置为["status", "navigation"], 不设置,则默认不显示。 | + | callback | AsyncCallback<void> | 是 | 回调函数。 | - 示例 + ``` - var isPrivacyMode = true; - windowClass.setPrivacyMode(isPrivacyMode, (err, data) => { + var names = ["status", "navigation"]; + windowClass.setSystemBarEnable(names, (err) => { if (err) { - console.error('Failed to set the window to privacy mode. Cause:' + JSON.stringify(err)); + console.error('Failed to set the system bar to be visible. Cause:' + JSON.stringify(err)); return; } - console.info('Succeeded in setting the window to privacy mode. Data:' + JSON.stringify(data)); - + console.info('Succeeded in setting the system bar to be visible.'); }); ``` ### setSystemBarEnable7+ -setSystemBarEnable(names: Array, callback: AsyncCallback<void>): void +setSystemBarEnable(names: Array<'status' | 'navigation'>): Promise<void> + +设置导航栏、状态栏的可见模式,使用Promise方式作为异步方法。 -设置导航栏、状态栏的可见模式。 +**系统能力**:SystemCapability.WindowManager.WindowManager.Core - 参数 - | 参数名 | 类型 | 必填 | 说明 | - | -------- | -------- | -------- | -------- | - | names | Array | 是 | 设置状态栏和导航栏是否显示。例如,需全部显示,该参数设置为["status", "navigation"]。 | - | callback | AsyncCallback<void> | 是 | 回调函数。 | + + | 参数名 | 类型 | 必填 | 说明 | + | ------ | ----- | ---- | ------------------------------------------------------------ | + | names | Array | 是 | 设置状态栏和导航栏是否显示。例如,需全部显示,该参数设置为["status", "navigation"], 不设置,则默认不显示。 | + +- 返回值 + + | 类型 | 说明 | + | ------------------- | ----------------------------------------------- | + | Promise<void> | 以Promise形式返回结果,返回当前函数执行的结果。 | - 示例 + ``` var names = ["status", "navigation"]; - windowClass.setSystemBarEnable(names, (err, data) => { - if (err) { - console.error('Failed to set the system bar to be visible. Cause:' + JSON.stringify(err)); - return; - } - console.info('Succeeded in setting the system bar to be visible. Data: ' + JSON.stringify(data)); + let promise = windowClass.setSystemBarEnable(names); + promise.then(()=> { + console.info('Succeeded in setting the system bar to be visible.')) + }).catch((err)=>{ + console.error('Failed to set the system bar to be visible. Cause:' + JSON.stringify(err)); }); ``` @@ -620,343 +1100,394 @@ setSystemBarEnable(names: Array, callback: AsyncCallback<void>): void setSystemBarProperties(systemBarProperties: SystemBarProperties, callback: AsyncCallback<void>): void -设置窗口内导航条状态栏的属性。 +设置窗口内导航栏、状态栏的属性,使用callback方式作为异步方法。 + +**系统能力**:SystemCapability.WindowManager.WindowManager.Core - 参数 - | 参数名 | 类型 | 必填 | 说明 | - | -------- | -------- | -------- | -------- | - | SystemBarProperties | [SystemBarProperties](#systembarproperties) | 是 | 导航条状态栏的属性。 | - | callback | AsyncCallback<void> | 是 | 回调函数。 | + + | 参数名 | 类型 | 必填 | 说明 | + | ------------------- | ------------------------------------------- | ---- | -------------------- | + | SystemBarProperties | [SystemBarProperties](#systembarproperties) | 是 | 导航栏状态栏的属性。 | + | callback | AsyncCallback<void> | 是 | 回调函数。 | - 示例 + ``` var SystemBarProperties={ statusBarColor: '#ff00ff', navigationBarColor: '#00ff00', //以下两个属性从API Version7开始支持 isStatusBarLightIcon: true, - isNavigationBarLightIcon:false + isNavigationBarLightIcon:false, + //以下两个属性从API Version8开始支持 + statusBarContentColor:'#ffffff' + navigationBarContentColor:'#00ffff' }; - windowClass.setSystemBarProperties(SystemBarProperties, (err, data) => { + windowClass.setSystemBarProperties(SystemBarProperties, (err) => { if (err) { console.error('Failed to set the system bar properties. Cause: ' + JSON.stringify(err)); return; } - console.info('Succeeded in setting the system bar properties. Data: ' + JSON.stringify(data)); + console.info('Succeeded in setting the system bar properties.'); }); ``` -### getProperties +### setSystemBarProperties -getProperties(callback: AsyncCallback<WindowProperties>): void +setSystemBarProperties(systemBarProperties: SystemBarProperties): Promise<void> -获取当前窗口的属性,异步返回WindowProperties。 +设置窗口内导航栏、状态栏的属性,使用Promise方式作为异步方法。 + +**系统能力**:SystemCapability.WindowManager.WindowManager.Core - 参数 - | 参数名 | 类型 | 必填 | 说明 | - | -------- | -------- | -------- | -------- | - | callback | AsyncCallback<[WindowProperties](#windowproperties)> | 是 | 回调返回窗口属性。 | + + | 参数名 | 类型 | 必填 | 说明 | + | ------------------- | ------------------------------------------- | ---- | -------------------- | + | SystemBarProperties | [SystemBarProperties](#systembarproperties) | 是 | 导航栏状态栏的属性。 | + +- 返回值 + + | 类型 | 说明 | + | ------------------- | ----------------------------------------------- | + | Promise<void> | 以Promise形式返回结果,返回当前函数执行的结果。 | - 示例 + ``` - windowClass.getProperties((err, data) => { - if (err) { - console.error('Failed to obtain the window properties. Cause: ' + JSON.stringify(err)); - return; - } - console.info('Succeeded in obtaining the window properties. Data: ' + JSON.stringify(data)); + var SystemBarProperties={ + statusBarColor: '#ff00ff', + navigationBarColor: '#00ff00', + //以下两个属性从API Version7开始支持 + isStatusBarLightIcon: true, + isNavigationBarLightIcon:false, + //以下两个属性从API Version8开始支持 + statusBarContentColor:'#ffffff' + navigationBarContentColor:'#00ffff' + }; + let promise = windowClass.setSystemBarProperties(SystemBarProperties); + promise.then(()=> { + console.info('Succeeded in setting the system bar properties.')) + }).catch((err)=>{ + console.error('Failed to set the system bar properties. Cause: ' + JSON.stringify(err)); }); ``` -### getAvoidArea7+ +### loadContent8+ -getAvoidArea(type: AvoidAreaType, callback: AsyncCallback<AvoidArea>): void +loadContent(path: string, storage: ContentStorage, callback: AsyncCallback<void>): void + +当前窗口加载具体页面内容,使用callback方式作为异步方法。 -获取窗口内容规避的区域。如系统的系统栏区域 、凹口区域。 +**系统能力**:SystemCapability.WindowManager.WindowManager.Core - 参数 - | 参数名 | 类型 | 必填 | 说明 | - | -------- | -------- | -------- | -------- | - | type | [AvoidAreaType](#avoidareatype) | 是 | 表示规避区类型。type为TYPE_SYSTEM,表示系统默认区域。type为TYPE_CUTOUT,表示刘海屏区域。 | - | callback | AsyncCallback<[AvoidArea](#avoidarea)> | 是 | 回调返回窗口内容规避区域。 | + + | 参数名 | 类型 | 必填 | 说明 | + | -------- | ------------------------- | ---- | -------------------- | + | path | string | 是 | 设置加载页面的路径。 | + | storage | ContentStorage | 否 | 当前应用内的数据。 | + | callback | AsyncCallback<void> | 是 | 回调函数。 | - 示例 + ``` - var type = window.AvoidAreaType.TYPE_SYSTEM; - windowClass.getAvoidArea(type, (err, data) => { - if (err) { - console.error('Failed to obtain the area. Cause:' + JSON.stringify(err)); - return; - } - console.info('Succeeded in obtaining the area. Data:' + JSON.stringify(data)); + windowClass.loadContent("pages/page2/page2", (err) => { + if (err) { + console.error('Failed to load the content. Cause:' + JSON.stringify(err)); + return; + } + console.info('Succeeded in loading the content.'); }); ``` -### moveTo7+ +### loadContent8+ -moveTo(x: number, y: number, callback: AsyncCallback<void>): void +loadContent(path: string, storage?: ContentStorage): Promise<void> + +当前窗口加载具体页面内容,使用Promise方式作为异步方法。 -窗口位置移动。 +**系统能力**:SystemCapability.WindowManager.WindowManager.Core - 参数 - | 参数名 | 类型 | 必填 | 说明 | - | -------- | -------- | -------- | -------- | - | x | number | 是 | 窗口在x轴方向移动的值,值为正表示右移。 | - | y | number | 是 | 窗口在y轴方向移动的值,值为正表示下移。 | - | callback | AsyncCallback<void> | 是 | 回调函数。 | + + | 参数名 | 类型 | 必填 | 说明 | + | ------- | -------------- | ---- | -------------------- | + | path | string | 是 | 设置加载页面的路径。 | + | storage | ContentStorage | 否 | 当前应用内的数据。 | + +- 返回值 + + | 类型 | 说明 | + | ------------------- | ----------------------------------------------- | + | Promise<void> | 以Promise形式返回结果,返回当前函数执行的结果。 | - 示例 + ``` - windowClass.moveTo(300, 300, (err, data)=>{ - if (err) { - console.error('Failed to move the window. Cause:' + JSON.stringify(err)); - return; - } - console.info('Window moved. Data:' + JSON.stringify(data)); - + let promise = windowClass.loadContent("pages/page2/page2"); + promise.then(()=> { + console.info('Succeeded in loading the content.')) + }).catch((err)=>{ + console.error('Failed to load the content. Cause: ' + JSON.stringify(err)); }); ``` -### resetSize7+ +### isShowing7+ -resetSize(width: number, height: number, callback: AsyncCallback<void>): void +isShowing(callback: AsyncCallback<boolean>): void + +判断当前窗口是否已显示,使用callback方式作为异步方法。 -改变当前窗口大小。 +**系统能力**:SystemCapability.WindowManager.WindowManager.Core - 参数 - | 参数名 | 类型 | 必填 | 说明 | - | -------- | -------- | -------- | -------- | - | width | number | 是 | 目标窗口的宽度。 | - | height | number | 是 | 目标窗口的高度。 | - | callback | AsyncCallback<void> | 是 | 回调函数。 | + + | 参数名 | 类型 | 必填 | 说明 | + | -------- | ---------------------------- | ---- | -------------------------------- | + | callback | AsyncCallback<boolean> | 是 | 回调函数返回是否显示子窗口结果。 | - 示例 + ``` - windowClass.resetSize(500, 1000, (err, data) => { + windowClass.isShowing((err) => { if (err) { - console.error('Failed to change the window size. Cause:' + JSON.stringify(err)); + console.error('Failed to check whether the window is showing. Cause:' + JSON.stringify(err)); return; } - console.info('Window size changed. Data:' + JSON.stringify(data)); + console.info('Succeeded in checking whether the window is showing. Cause:') }); ``` -### loadContent7+ +### isShowing7+ + +isShowing(): Promise<boolean> -loadContent(path: string, callback: AsyncCallback<void>): void +判断当前窗口是否已显示,使用Promise方式作为异步方法。 -子窗口加载具体页面内容。 +**系统能力**:SystemCapability.WindowManager.WindowManager.Core -- 参数 - | 参数名 | 类型 | 必填 | 说明 | - | -------- | -------- | -------- | -------- | - | path | string | 是 | 设置加载页面的代码路径。 | - | callback | AsyncCallback<void> | 是 | 回调函数。 | +- 返回值 + + | 类型 | 说明 | + | ---------------------- | ----------------------------------------------------- | + | Promise<boolean> | 以Promise形式返回结果,返回当前窗口是否已显示的结果。 | - 示例 + ``` - windowClass.loadContent("pages/page2/page2", (err, data) => { - if (err) { - console.error('Failed to load the content. Cause:' + JSON.stringify(err)); - return; - } - console.info('Succeeded in loading the content. Data:' + JSON.stringify(data)); + let promise = windowClass.isShowing(); + promise.then(()=> { + console.info('Succeeded in checking whether the window is showing.') + }).catch((err)=>{ + console.error('Failed to check whether the window is showing. Cause: ' + JSON.stringify(err)); }); ``` -### hide7+ +### on('windowSizeChange'|'systemAvoidAreaChange') -hide (callback: AsyncCallback<void>): void +on(type: 'windowSizeChange'|'systemAvoidAreaChange', callback: Callback<AvoidArea | Size>): void + +开启监听。 -隐藏子窗口。 +**系统能力**:SystemCapability.WindowManager.WindowManager.Core - 参数 - | 参数名 | 类型 | 必填 | 说明 | - | -------- | -------- | -------- | -------- | - | callback | AsyncCallback<void> | 是 | 回调函数。 | + + | 参数名 | 类型 | 必填 | 说明 | + | -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | + | type | string | 是 | 设置监听类型。
- type为'windowSizeChange'7+时表示监听类型为窗口尺寸变化监听;
- type为'systemAvoidAreaChange'7+时表示监听类型为系统窗口规避区变化监听。 | + | callback | Callback<[AvoidArea](#avoidarea) \| [Size](#size)> | 是 | 回调返回监听到的信息。 | - 示例 + ``` - windowClass.hide((err, data) => { - if (err) { - console.error('Failed to hide the subwindow. Cause: ' + JSON.stringify(err)); - return; - } - console.info('Subwindow hidden. Data:' + JSON.stringify(data)) - }) + var type = 'windowSizeChange'; + windowClass.on(type, (data) => { + console.info('Succeeded in enabling the listener for window size changes. Data: ' + JSON.stringify(data)); + }); ``` -### show7+ +### off('windowSizeChange'|'systemAvoidAreaChange')7+ -show(callback: AsyncCallback<void>): void +off(type: 'windowSizeChange'|'systemAvoidAreaChange', callback?: Callback<AvoidArea | Size >): void -显示子窗口。 +关闭监听。 + +**系统能力**:SystemCapability.WindowManager.WindowManager.Core - 参数 - | 参数名 | 类型 | 必填 | 说明 | - | -------- | -------- | -------- | -------- | - | callback | AsyncCallback<void> | 是 | 回调函数。 | + + | 参数名 | 类型 | 必填 | 说明 | + | -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | + | type | string | 是 | 设置监听类型。
- type为'windowSizeChange'7+时表示监听类型为窗口尺寸变化监听;
- type为'systemAvoidAreaChange'7+时表示监听类型为系统窗口规避区变化监听。 | + | callback | Callback<[AvoidArea](#avoidarea) \| [Size](#size)> | 否 | 回调返回监听到的信息。 | - 示例 + ``` - windowClass.show((err, data) => { - if (err) { - console.error('Failed to show the subwindow. Cause: ' + JSON.stringify(err)); - return; - } - console.info('Succeeded in showing the subwindow. Data: ' + JSON.stringify(data)) - }) + var type = 'windowSizeChange'; + windowClass.off(type); ``` -### isShowing7+ +### isSupportWideGamut8+ -isShowing(callback: AsyncCallback<boolean>): void +isSupportWideGamut(callback: AsyncCallback<boolean>): void -判断子窗口是否已显示。 +判断当前窗口是否支持广色域模式,使用callback方式作为异步方法。 + +**系统能力**:SystemCapability.WindowManager.WindowManager.Core - 参数 - | 参数名 | 类型 | 必填 | 说明 | - | -------- | -------- | -------- | -------- | - | callback | AsyncCallback<boolean> | 是 | 回调函数返回是否显示子窗口结果。 | + + | 参数名 | 类型 | 必填 | 说明 | + | -------- | ---------------------------- | ---- | -------------------------------- | + | callback | AsyncCallback<boolean> | 是 | 回调函数返回是否支持广色域模式。 | - 示例 + ``` - windowClass.isShowing((err, data) => { + windowClass.isSupportWideGamut((err) => { if (err) { - console.error('Failed to check whether the subwindow is showing. Cause:' + JSON.stringify(err)); + console.error('Failed to check whether the window support WideGamut. Cause:' + JSON.stringify(err)); return; } - console.info('Succeeded in checking whether the subwindow is showing. Cause:' + JSON.stringify(data)) + console.info('Succeeded in checking whether the window support WideGamut.') }) ``` -### destroy7+ +### isSupportWideGamut8+ -destroy(callback: AsyncCallback<void>): void +isSupportWideGamut(): Promise<boolean> -销毁子窗口。 +判断当前窗口是否支持广色域模式,使用Promise方式作为异步方法。 -- 参数 - | 参数名 | 类型 | 必填 | 说明 | - | -------- | -------- | -------- | -------- | - | callback | AsyncCallback<void> | 是 | 回调函数。 | +**系统能力**:SystemCapability.WindowManager.WindowManager.Core + +- 返回值 + + | 类型 | 说明 | + | ---------------------- | ------------------------------------------------------------ | + | Promise<boolean> | 以Promise形式返回结果,返回当前窗口是否支持广色域模式的结果。 | - 示例 + ``` - windowClass.destroy((err, data) => { - if (err) { - console.error('Failed to destroy the subwindow. Cause:' + JSON.stringify(err)); - return; - } - console.info('Succeeded in destroying the subwindow. Data:' + JSON.stringify(data)) - }) + let promise = windowClass.isSupportWideGamut(); + promise.then(()=> { + console.info('Succeeded in checking whether the window support WideGamut.') + }).catch((err)=>{ + console.error('Failed to check whether the window support WideGamut. Cause: ' + JSON.stringify(err)); + }); ``` -### setOutsideTouchable7+ +### setColorSpace8+ -setOutsideTouchable(touchable: boolean, callback: AsyncCallback<void>): void; +setColorSpace(colorSpace:ColorSpace, callback: AsyncCallback<void>): void -设置是否允许可点击子窗口以外的区域。 +设置当前窗口为广色域模式或默认色域模式,使用callback方式作为异步方法。 + +**系统能力**:SystemCapability.WindowManager.WindowManager.Core - 参数 - | 参数名 | 类型 | 必填 | 说明 | - | -------- | -------- | -------- | -------- | - | touchable | boolean | 是 | 设置是否可点击。 | - | callback | AsyncCallback<void> | 是 | 回调函数。 | + + | 参数名 | 类型 | 必填 | 说明 | + | ---------- | ------------------------- | ---- | ------------ | + | colorSpace | [ColorSpace](#colorspace) | 是 | 设置色域模式 | + | callback | AsyncCallback<void> | 是 | 回调函数。 | - 示例 + ``` - windowClass.setOutsideTouchable(true, (err, data) => { + windowClass.setColorSpace(window.ColorSpace.WIDE_GAMUT, (err) => { if (err) { - console.error('Failed to set the area to be touchable. Cause: ' + JSON.stringify(err)); + console.error('Failed to set window colorspace. Cause:' + JSON.stringify(err)); return; } - console.info('Succeeded in setting the area to be touchable. Data: ' + JSON.stringify(data)) + console.info('Succeeded in setting window colorspace.') }) ``` -### on('keyboardHeightChange') +### setColorSpace8+ -on(type: string, callback: AsyncCallback<number>): void +setColorSpace(colorSpace:ColorSpace): Promise<void> -> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** -> 从 API Version 7 开始废弃。 +设置当前窗口为广色域模式或默认色域模式,使用promise方式作为异步方法。 -开启监听键盘高度变化。 +**系统能力**:SystemCapability.WindowManager.WindowManager.Core - 参数 - | 参数名 | 类型 | 必填 | 说明 | - | -------- | -------- | -------- | -------- | - | type | string | 是 | 设置监听类型为监听键盘高度变化,应设置type为'keyboardHeightChange'。 | - | callback | AsyncCallback<number> | 是 | 回调返回监听到的键盘高度。 | + + | 参数名 | 类型 | 必填 | 说明 | + | ---------- | ------------------------- | ---- | ------------ | + | colorSpace | [ColorSpace](#colorspace) | 是 | 设置色域模式 | + +- 返回值 + + | 类型 | 说明 | + | ------------------- | ----------------------------------------------- | + | Promise<void> | 以Promise形式返回结果,返回当前函数执行的结果。 | - 示例 + ``` - var type= 'keyboardHeightChange'; - windowClass.on(type, (err, data) => { - if (err) { - console.error('Failed to enable the listener for keyboard height changes. Cause: ' + JSON.stringify(err)); - return; - } - console.info('Succeeded in enabling the listener for keyboard height changes. Data: ' + JSON.stringify(data)); + let promise = windowClass.isSupportWideGamut(window.ColorSpace.WIDE_GAMUT); + promise.then(()=> { + console.info('Succeeded in setting window colorspace.') + }).catch((err)=>{ + console.error('Failed to set window colorspacet. Cause: ' + JSON.stringify(err)); }); ``` -### off('keyboardHeightChange') +### getColorSpace8+ -off(type: string, callback?: AsyncCallback<number>): void +getColorSpace(callback: AsyncCallback<ColorSpace>): void -> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** -> 从 API Version 7 开始废弃。 +获取当前窗口色域模式,使用callback方式作为异步方法。 -关闭监听键盘高度变化。 +**系统能力**:SystemCapability.WindowManager.WindowManager.Core - 参数 - | 参数名 | 类型 | 必填 | 说明 | - | -------- | -------- | -------- | -------- | - | type | string | 是 | 设置监听类型为监听键盘高度变化,应设置type为'keyboardHeightChange'。 | - | callback | AsyncCallback<number> | 否 | 回调返回监听到的键盘高度。 | + + | 参数名 | 类型 | 必填 | 说明 | + | -------- | ---------------------------------------------- | ---- | -------------------------- | + | callback | AsyncCallback<[ColorSpace](#colorspace)> | 是 | 回调函数返回当前色域模式。 | - 示例 + ``` - var type= 'keyboardHeightChange'; - windowClass.off(type); + windowClass.getColorSpace((err, data) => { + if (err) { + console.error('Failed to get window color space. Cause:' + JSON.stringify(err)); + return; + } + console.info('Succeeded in getting window color space. Cause:' + JSON.stringify(data)) + }) ``` -### on('keyboardHeightChange'|'windowSizeChange'7+|'systemAvoidAreaChange'7+) - -on(type: string, callback: Callback<AvoidArea | Size | number>): void - -开启监听。 - -- 参数 - | 参数名 | 类型 | 必填 | 说明 | - | -------- | -------- | -------- | -------- | - | type | string | 是 | 设置监听类型。
- type为'keyboardHeightChange'时表示监听类型为键盘高度变化监听;
- type为'windowSizeChange'7+时表示监听类型为窗口尺寸变化监听;
- type为'systemAvoidAreaChange'7+时表示监听类型为系统窗口规避区变化监听。 | - | callback | Callback<[AvoidArea](#avoidarea) \| [Size](#size) \| number> | 是 | 回调返回监听到的信息。 | +### getColorSpace8+ -- 示例 - ``` - var type = 'windowSizeChange'; - windowClass.on(type, (data) => { - console.info('Succeeded in enabling the listener for window size changes. Data: ' + JSON.stringify(data)); - }); - ``` +getColorSpace(): Promise<ColorSpace> -### off('keyboardHeightChange'|'windowSizeChange'7+|'systemAvoidAreaChange'7+) +获取当前窗口色域模式,使用Promise方式作为异步方法。 -off(type: string, callback?: Callback<AvoidArea | Size | number>): void +**系统能力**:SystemCapability.WindowManager.WindowManager.Core -关闭监听。 +- 返回值 -- 参数 - | 参数名 | 类型 | 必填 | 说明 | - | -------- | -------- | -------- | -------- | - | type | string | 是 | 设置监听类型。
- type为'keyboardHeightChange'时表示监听类型为键盘高度变化监听;
- type为'windowSizeChange'7+时表示监听类型为窗口尺寸变化监听;
- type为'systemAvoidAreaChange'7+时表示监听类型为系统窗口规避区变化监听。 | - | callback | Callback<[AvoidArea](#avoidarea) \| [Size](#size) \| number> | 否 | 回调返回监听到的信息。 | + | 类型 | 说明 | + | ---------------------------------------- | ----------------------------------------- | + | Promise<[ColorSpace](#colorspace)> | 以Promise形式返回结果,返回当前色域模式。 | - 示例 + ``` - var type = 'windowSizeChange'; - windowClass.off(type); + let promise = windowClass.getColorSpace(); + promise.then((data)=> { + console.info('Succeeded in getting window color space. Cause:' + JSON.stringify(data)) + }).catch((err)=>{ + console.error('Failed to set window colorspacet. Cause: ' + JSON.stringify(err)); + }); ``` + diff --git a/zh-cn/application-dev/reference/arkui-ts/Readme-CN.md b/zh-cn/application-dev/reference/arkui-ts/Readme-CN.md index 1179c5456049b9cbdc4000c6f93df0ef610f1df6..05e9bf4f3f6ebd547e24a56a61baa90a637785ce 100644 --- a/zh-cn/application-dev/reference/arkui-ts/Readme-CN.md +++ b/zh-cn/application-dev/reference/arkui-ts/Readme-CN.md @@ -50,6 +50,8 @@ - 基础组件 - [Blank](ts-basic-components-blank.md) - [Button](ts-basic-components-button.md) + - [Checkbox](ts-basic-components-checkbox.md) + - [CheckboxGroup](ts-basic-components-checkboxgroup.md) - [DataPanel](ts-basic-components-datapanel.md) - [DatePicker](ts-basic-components-datepicker.md) - [Divider](ts-basic-components-divider.md) @@ -130,5 +132,7 @@ - [警告弹窗](ts-methods-alert-dialog-box.md) - [列表选择弹窗](ts-methods-action-sheet.md) - [自定义弹窗](ts-methods-custom-dialog-box.md) + - [日期时间选择弹窗](ts-methods-datepicker-dialog.md) + - [文本选择弹窗](ts-methods-textpicker-dialog.md) - 附录 - [文档中涉及到的内置枚举值](ts-appendix-enums.md) diff --git a/zh-cn/application-dev/reference/arkui-ts/figures/checkbox.gif b/zh-cn/application-dev/reference/arkui-ts/figures/checkbox.gif new file mode 100644 index 0000000000000000000000000000000000000000..6ae7061dcc7106fdd172e4008a4d82cb5568ab44 Binary files /dev/null and b/zh-cn/application-dev/reference/arkui-ts/figures/checkbox.gif differ diff --git a/zh-cn/application-dev/reference/arkui-ts/figures/checkboxgroup.gif b/zh-cn/application-dev/reference/arkui-ts/figures/checkboxgroup.gif new file mode 100644 index 0000000000000000000000000000000000000000..5d4c6e059f96d3f021f100ffb7c9899630f982ee Binary files /dev/null and b/zh-cn/application-dev/reference/arkui-ts/figures/checkboxgroup.gif differ diff --git a/zh-cn/application-dev/reference/arkui-ts/figures/patternlock.gif b/zh-cn/application-dev/reference/arkui-ts/figures/patternlock.gif new file mode 100644 index 0000000000000000000000000000000000000000..5fb034ddcf247a1fecaaeb33e27d103bd8225a91 Binary files /dev/null and b/zh-cn/application-dev/reference/arkui-ts/figures/patternlock.gif differ diff --git a/zh-cn/application-dev/reference/arkui-ts/figures/sidebarcontainer.png b/zh-cn/application-dev/reference/arkui-ts/figures/sidebarcontainer.png deleted file mode 100644 index 0447567e9bbfa6d46d5e61c810263387ba0aa981..0000000000000000000000000000000000000000 Binary files a/zh-cn/application-dev/reference/arkui-ts/figures/sidebarcontainer.png and /dev/null differ diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-appendix-enums.md b/zh-cn/application-dev/reference/arkui-ts/ts-appendix-enums.md index a63bdad32971f333d3669a6bab490f0cc05f9da2..597427749af2c3b2e81f4a0981b067b036ca72ce 100644 --- a/zh-cn/application-dev/reference/arkui-ts/ts-appendix-enums.md +++ b/zh-cn/application-dev/reference/arkui-ts/ts-appendix-enums.md @@ -90,3 +90,11 @@ | Off | 不显示。 | | On | 常驻显示。 | | Auto | 按需显示(触摸时显示,2s后消失)。 | +## LayoutDirection枚举说明 + +| 名称 | 描述 | +| -------- | -------- | +| Row | 主轴与行方向一致作为布局模式。 | +| Column | 主轴与列方向一致作为布局模式。 | +| RowReverse | 与Row相反方向进行布局。 | +| ColumnReverse | 与Column相反方向进行布局。 | \ No newline at end of file diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-basic-components-button.md b/zh-cn/application-dev/reference/arkui-ts/ts-basic-components-button.md index f77635b380f69bc5cf28bf7cc9b9ecb104009bc0..dfdb99f355e863b8ddce8d8d8bfd785ca8bdcb61 100644 --- a/zh-cn/application-dev/reference/arkui-ts/ts-basic-components-button.md +++ b/zh-cn/application-dev/reference/arkui-ts/ts-basic-components-button.md @@ -14,7 +14,7 @@ ## 子组件 -可以包含子组件。 +可以包含单个子组件。 ## 接口 diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-basic-components-checkbox.md b/zh-cn/application-dev/reference/arkui-ts/ts-basic-components-checkbox.md new file mode 100644 index 0000000000000000000000000000000000000000..9f6fce6df8d37c59fb188599df1ad915917a0b06 --- /dev/null +++ b/zh-cn/application-dev/reference/arkui-ts/ts-basic-components-checkbox.md @@ -0,0 +1,69 @@ +# Checkbox + +> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** +> 该组件从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 + + +提供多选框组件,通常用于某选项的打开或关闭。 + +## 权限列表 + +无 + +## 子组件 + +无 + +## 接口 + +Checkbox( name?: string, group?: string ) + +- 参数 + | 参数名 | 参数类型 | 必填 | 默认值 | 参数描述 | + | --------| --------| ------ | -------- | -------- | + | name | string | 否 | - | 多选框名称。 | + | group | string | 否 | - | 多选框的群组名称。 | + + +## 属性 + + +| 名称 | 参数类型 | 默认值 | 描述 | +| ------------- | ------- | ------ | -------- | +| select | bool | false | 设置多选框是否选中。 | +| selectedColor | Color | - | 设置多选框选中状态颜色。 | + +## 事件 + +| 名称 | 功能描述 | +| ----------| -------- | +|onChange(callback: (value: boolean) => void) | 当选中状态发生变化时,触发该回调。
- value为true时,表示已选中。
- value为false时,表示未选中。 | + +## 示例 + +``` +@Entry‘ +@Component +struct CheckboxExample { + + build() { + Row() { + Checkbox({name: 'checkbox1', group: 'checkboxGroup'}) + .select(true) + .selectedColor(0xed6f21) + .onChange((value: boolean) => { + console.info('Checkbox1 change is'+ value) + }) + Checkbox({name: 'checkbox2', group: 'checkboxGroup'}) + .select(false) + .selectedColor(0x39a2db) + .onChange((value: boolean) => { + console.info('Checkbox2 change is'+ value) + }) + } + } +} +``` + + +![](figures/checkbox.gif) \ No newline at end of file diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-basic-components-checkboxgroup.md b/zh-cn/application-dev/reference/arkui-ts/ts-basic-components-checkboxgroup.md new file mode 100644 index 0000000000000000000000000000000000000000..f372d73e39685d228562ec83478c189119f5a123 --- /dev/null +++ b/zh-cn/application-dev/reference/arkui-ts/ts-basic-components-checkboxgroup.md @@ -0,0 +1,87 @@ +# CheckboxGroup + +> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** +> 该组件从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 + +多选框群组,用于控制多选框全选或者不全选状态。 + +## 权限列表 + +无 + +## 子组件 + +无 + +## 接口 + +CheckboxGroup( group?: string ) + +创建多选框群组,可以控制群组内的Checkbox全选或者不全选,相同group的Checkbox和CheckboxGroup为同一群组。 + +- 参数 + | 参数名 | 参数类型 | 必填 | 默认值 | 参数描述 | + | -------- | -------- | -------- | -------- | -------- | + | group | string | 否 | - | 群组名称。| + + +## 属性 + +| 名称 | 参数类型 | 默认值 | 描述 | +| -------- | -------- | -------- | -------- | +| selectAll | bool | false | 设置是否全选。 | +| selectedColor | Color | - | 设置被选中或部分选中状态的颜色。 | + +## 事件 + +| 名称 | 功能描述 | +| -------- | -------- | +| onChange (callback: (names: Array<string>, status: SelectStatus) => void ) |CheckboxGroup的选中状态或群组内的Checkbox的选中状态发生变化时,触发回调。
- names:群组内所有被选中的多选框名称。
- status:选中状态。| + +- SelectStatus枚举说明 + | 名称 | 描述 | + | ----- | -------------------- | + | All | 群组多选择框全部选择。 | + | Part | 群组多选择框部分选择。 | + | None | 群组多选择框全部没有选择。 | + + +## 示例 + +``` +@Entry +@Component +struct CheckboxExample { + + build() { + Scroll() { + Column() { + CheckboxGroup({group : 'checkboxGroup'}) + .selectedColor(0xed6f21) + .onChange((itemName:CheckboxGroupResult) => { + console.info("TextPicker::dialogResult is" + JSON.stringify(itemName)) + }) + Checkbox({ name: 'checkbox1', group: 'checkboxGroup' }) + .select(true) + .selectedColor(0x39a2db) + .onChange((value: boolean) => { + console.info('Checkbox1 change is' + value) + }) + Checkbox({ name: 'checkbox2', group: 'checkboxGroup' }) + .select(false) + .selectedColor(0x39a2db) + .onChange((value: boolean) => { + console.info('Checkbox2 change is' + value) + }) + Checkbox({ name: 'checkbox3', group: 'checkboxGroup' }) + .select(true) + .selectedColor(0x39a2db) + .onChange((value: boolean) => { + console.info('Checkbox3 change is' + value) + }) + } + } + } +} +``` +![](figures/checkboxgroup.gif) diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-basic-components-patternlock.md b/zh-cn/application-dev/reference/arkui-ts/ts-basic-components-patternlock.md new file mode 100644 index 0000000000000000000000000000000000000000..696f156eac486c5ccbbd74bfa1ff0c3551c8af3d --- /dev/null +++ b/zh-cn/application-dev/reference/arkui-ts/ts-basic-components-patternlock.md @@ -0,0 +1,109 @@ +# PatternLock + +> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** 该组件从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 + +图案密码锁组件,以宫格图案的方式输入密码,用于密码验证。手指触碰图案密码锁时开始进入输入状态,手指离开屏幕时结束输入状态并向应用返回输入的密码。 + +## 权限列表 + +无 + +## 子组件 + +无 + +## 接口 + +PatternLock(controller?: PatternLockController) + +- 参数 + + | 参数名 | 参数类型 | 必填 | 默认值 | 参数描述 | + | ---------- | ----------------------------------------------- | ---- | ------ | -------------------------------------------- | + | controller | [PatternLockController](#patternlockcontroller) | 否 | null | 给组件绑定一个控制器,用来控制组件状态重置。 | + +## 属性 + +不支持`backgroundColor`以外的通用属性设置。 + +| 名称 | 参数类型 | 默认值 | 描述 | +| --------------- | --------------------------------------------------- | ----------- | ------------------------------------------------------------ | +| sideLength | Length | 300vp | 设置组件的宽度和高度(相同值)。最小可以设置为0。 | +| circleRadius | Length | 14vp | 设置宫格圆点的半径。 | +| regularColor | [ResourceColor](../../ui/ts-types.md) | Color.Black | 设置宫格圆点在“未选中”状态的填充颜色。 | +| selectedColor | [ResourceColor](../../ui/ts-types.md) | Color.Black | 设置宫格圆点在“选中”状态的填充颜色。 | +| activeColor | [ResourceColor](../../ui/ts-types.md) | Color.Black | 设置宫格圆点在“激活”状态的填充颜色。 | +| pathColor | [ResourceColor](../../ui/ts-types.md) | Color.Blue | 设置连线的颜色。 | +| pathStrokeWidth | Length | 34vp | 设置连线的宽度。最小可以设置为0。 | +| autoReset | boolean | true | 设置是否支持用户在完成输入后再次触屏重置组件状态。如果设置为true,用户可以通过触摸图案密码锁重置组件状态(清除之前的输入效果);如果设置为false,用户手指离开屏幕完成输入后,再次触摸图案密码锁(包括圆点)不能改变之前的输入状态。 | + +## 事件 + +| 名称 | 功能描述 | +| ------------------------------------------------------------ | ------------------------------------------------------------ | +| onPatternComplete(callback: (input: Array\) => void) | 密码输入结束时被调用的回调函数。
input: 与选中宫格圆点顺序一致的数字数组,数字为选中宫格的索引(0到8)。 | + +## PatternLockController + +PatternLock组件的控制器,可以将此对象绑定至PatternLock组件,然后通过它进行状态重置。 + +### 导入对象 + +```typescript +patternLockController: PatternLockController = new PatternLockController() +``` + +### reset + +reset(): void + +重置组件状态。 + +## 示例 + +```typescript +@Entry +@Component +struct PatternLockExample { + @State passwords: Number[] = [] + @State message: string = 'please input password' + private patternLockController: PatternLockController = new PatternLockController() + + build() { + Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { + Text(this.message).textAlign(TextAlign.Center) + PatternLock(this.patternLockController) + .sideLength(150) + .circleRadius(7) + .pathStrokeWidth(17) + .backgroundColor(Color.White) + .autoReset(true) + .onPatternComplete((input: Array) => { + if (input == null || input == undefined || input.length < 5) { + this.message = 'The password length needs to be greater than 5.' + return + } + if (this.passwords.length > 0) { + if (this.passwords.toString() == input.toString()) { + this.passwords = input + this.message = 'Set password successfully: ' + this.passwords.toString() + } else { + this.message = 'Inconsistent passwords, please enter again.' + } + } else { + this.passwords = input + this.message = "Please enter again." + } + }) + Button('reset button').margin(30).onClick(() => { + this.patternLockController.reset() + this.passwords = [] + this.message = 'Please input password' + }) + }.width('100%').height('100%') + } +} +``` + +![patternlock](figures/patternlock.gif) + diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-canvasrenderingcontext2d.md b/zh-cn/application-dev/reference/arkui-ts/ts-canvasrenderingcontext2d.md index 8aa097feebec90c33481cc229e004cc7b6b7a14b..83b31626aa2cd63a86b4dbc2c71a8d1322b19c1c 100644 --- a/zh-cn/application-dev/reference/arkui-ts/ts-canvasrenderingcontext2d.md +++ b/zh-cn/application-dev/reference/arkui-ts/ts-canvasrenderingcontext2d.md @@ -1342,20 +1342,16 @@ ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number .backgroundColor('#ffff00') .onReady(() =>{ this.context.beginPath() - this.context.ellipse(200, 200, 50, 100, Math.PI * 0.25, Math.PI * 0.5, Math.PI, true) + this.context.ellipse(200, 200, 50, 100, Math.PI * 0.25, Math.PI * 0.5, Math.PI) this.context.stroke() }) - Button('back') - .onClick(() => { - router.back() - }) } .width('100%') .height('100%') } } ``` - + ![zh-cn_image_0000001194192440](figures/zh-cn_image_0000001194192440.png) @@ -1462,17 +1458,13 @@ clip(): void this.context.fillStyle = "rgb(255,0,0)" this.context.fillRect(0, 0, 150, 150) }) - Button('back') - .onClick(() => { - router.back() - }) } .width('100%') .height('100%') } } ``` - + ![zh-cn_image_0000001194032462](figures/zh-cn_image_0000001194032462.png) diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-components-canvas-path2d.md b/zh-cn/application-dev/reference/arkui-ts/ts-components-canvas-path2d.md index 9659dda43e23befba5bafb5f4ad867ac6286167c..1b4ec1c571ecc81f73d76a0f4fcc8832ea6892f2 100644 --- a/zh-cn/application-dev/reference/arkui-ts/ts-components-canvas-path2d.md +++ b/zh-cn/application-dev/reference/arkui-ts/ts-components-canvas-path2d.md @@ -387,7 +387,7 @@ ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number .height('100%') .backgroundColor('#ffff00') .onReady(() =>{ - this.path2Db.ellipse(200, 200, 50, 100, Math.PI * 0.25, Math.PI * 0.5, Math.PI, true) + this.path2Db.ellipse(200, 200, 50, 100, Math.PI * 0.25, Math.PI * 0.5, Math.PI) this.context.stroke(this.path2Db) }) } diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-container-column.md b/zh-cn/application-dev/reference/arkui-ts/ts-container-column.md index 678b35609477b0de471e691af06dae5448919c7e..42bf03f17d543448f2172098b54817a1003d100e 100644 --- a/zh-cn/application-dev/reference/arkui-ts/ts-container-column.md +++ b/zh-cn/application-dev/reference/arkui-ts/ts-container-column.md @@ -51,7 +51,8 @@ Column(value:{space?: Length}) @Component struct ColumnExample { build() { - Text('space').fontSize(9).fontColor(0xCCCCCC).width('90%') + Column() { + Text('space').fontSize(9).fontColor(0xCCCCCC).width('90%') Column({ space: 5 }) { Column().width('100%').height(30).backgroundColor(0xAFEEEE) Column().width('100%').height(30).backgroundColor(0x00FFFF) diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-container-grid.md b/zh-cn/application-dev/reference/arkui-ts/ts-container-grid.md index 111c5d38e148a819c89e86bf41553ae499c26d3f..9b757863d61cf2b961ce9540d213313662e67e64 100644 --- a/zh-cn/application-dev/reference/arkui-ts/ts-container-grid.md +++ b/zh-cn/application-dev/reference/arkui-ts/ts-container-grid.md @@ -3,8 +3,9 @@ > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** > 该组件从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 +网格容器,由“行”和“列”分割的单元格所组成,通过指定“项目”所在的单元格做出各种各样的布局。 + -网格容器,二维布局,将容器划分成"行"和"列",产生单元格,然后指定"项目所在"的单元格,可以任意组合不同的网格,做出各种各样的布局。 ## 权限列表 @@ -17,7 +18,7 @@ 包含[GridItem](ts-container-griditem.md)子组件。 -## 接口说明 +## 接口 Grid() @@ -30,20 +31,29 @@ Grid() | rowsTemplate | string | '1fr' | 用于设置当前网格布局行的数量,不设置时默认1行 示例, '1fr 1fr 2fr'分三行,将父组件允许的高分为4等份,第一行占1份,第二行占一份,第三行占2份。 | | columnsGap | Length | 0 | 用于设置列与列的间距。 | | rowsGap | Length | 0 | 用于设置行与行的间距。 | -| editMode | boolean | flase | 是否进入编辑模式,进入编辑模式可以拖拽Gird组件内部[GridItem](ts-container-griditem.md)。 | -| maxCount | number | 1 | 表示可显示的最大行数。 | -| minCount | number | 1 | 表示可显示的最小行数。 | -| cellLength | number | 0 | 表示每行的固定高度。 | -| $multiSelectable^{8+}$ | boolean | false | 是否开启鼠标框选。
- false:关闭框选。
- true:开启框选。 | +| editMode 8+ | boolean | flase | 是否进入编辑模式,进入编辑模式可以拖拽Gird组件内部[GridItem](ts-container-griditem.md)。 | +| layoutDirection8+ | [LayoutDirection](ts-appendix-enums.md) | LayoutDirection.Row |设置布局的主轴方向,目前支持的主轴布局方向如下:
- LayoutDirection.Row:沿水平方向布局,即先填满一列,再去填下一列。
- LayoutDirection.Column:沿垂直方向布局,即先填满一行,再去填下一行。| +| maxCount 8+ | number | 1 | 当layoutDirection是Row时,表示可显示的最大行数
当layoutDirection是Column时,表示可显示的最大列数。 | +| minCount 8+ | number | 1 | 当layoutDirection是Row时,表示可显示的最小行数
当layoutDirection是Column时,表示可显示的最小列数。 | +| cellLength 8+ | number | 0 | 当layoutDirection是Row时,表示一行的高度
当layoutDirection是Column时,表示一列的宽度。 | +| multiSelectable8+ | boolean | false | 是否开启鼠标框选。
- false:关闭框选。
- true:开启框选。 | +| dragAnimation8+ | boolean | false | 是否开启拖拽GridItem动画。 | +| edgeEffection8+ | EdgeEffect | EdgeEffect.Spring | 设置边缘滑动效果,目前支持的滑动效果参见EdgeEffect枚举说明。 | + +- EdgeEffect枚举说明 + | 名称 | 描述 | + | -------- | -------- | + | Spring | 弹性物理动效,滑动到边缘后可以根据初始速度或通过触摸事件继续滑动一段距离,松手后回弹。 | + | None | 滑动到边缘后无效果。 | + ## 事件 -| 名称 | 功能描述 | +| 名称 | 功能描述 | | -------- | -------- | | onScrollIndex(first: number) => void | 当前列表显示的起始位置item发生变化时触发。 | - ## 示例 ``` @@ -105,4 +115,4 @@ struct GridExample { } ``` -![zh-cn_image_0000001219744183](figures/zh-cn_image_0000001219744183.gif) +![zh-cn_image_0000001219744183](figures/zh-cn_image_0000001219744183.gif) \ No newline at end of file diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-media-components-web.md b/zh-cn/application-dev/reference/arkui-ts/ts-media-components-web.md index cce4f89bd58a20cf034c96813ba5300fc5ded5ea..c729b54fb4eace90c68b489443cc6e7ca2ebd6da 100644 --- a/zh-cn/application-dev/reference/arkui-ts/ts-media-components-web.md +++ b/zh-cn/application-dev/reference/arkui-ts/ts-media-components-web.md @@ -1,9 +1,9 @@ # Web >![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** ->该组件从 API Version 8 开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 +>该组件从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 -提供具有网页显示能力的 Web 组件。 +提供具有网页显示能力的Web组件。 ## 权限列表 @@ -17,57 +17,58 @@ ohos.permission.READ_USER_STORAGE ## 接口 -- Web\(options: {src: string, controller?: WebController}\) +- Web\(options: { src: string, controller?: WebController }\) - 表1 options 参数说明 + 表1 options参数说明 - | 参数名 | 参数类型 | 必填 | 默认值 | 参数描述 | - | ---------- | ------------------------------- | ---- | ------ | -------------- | - | src | string | 是 | - | 网页资源地址。 | - | controller | [WebController](#WebController) | 否 | - | 控制器。 | + | 参数名 | 参数类型 | 必填 | 默认值 | 参数描述 | + | ---------- | ------------------------------- | ---- | ---- | ------- | + | src | string | 是 | - | 网页资源地址。 | + | controller | [WebController](#WebController) | 否 | - | 控制器。 | > ![icon-note.gif](public_sys-resources/icon-note.gif)**说明:** > -> - 一个页面只支持一个 Web 组件,全屏显示,页面中的其他组件会被 Web 组件遮挡; > - 不支持转场动画; -> - 只支持加载 rawfile 目录下的 html 文件,不支持远程资源。 +> - 不支持音视频播放; +> - 不支持横竖屏事件。 ## 属性 -| 名称 | 参数类型 | 默认值 | 描述 | -| ----------------- | ---------------- | ------------------------------------------ | ------------------------------------------------------------ | -| javaScriptAccess | boolean | true | 是否允许执行 JavaScript 脚本,默认允许执行。 | -| fileAccess | boolean | true | 启用或禁用 Web 中可通过 file 方式访问应用中的本地文件, 默认启用。 | -| onlineImageAccess | boolean | true | 是否允许从网络加载图片 资源(通过http和http访问的资源),默认允许访问。 | -| domStorageAccess | boolean | false | 设置是否开启DOM存储API权限,默认未开启,设置为true时,WebView能够使用DOM storageAPI。 | -| imageAccess | boolean | true | 设置是否允许自动加载图片资源,默认允许。 | -| mixedMode | MixedModeContent | MixedModeContent.MIXED_CONTENT_NEVER_ALLOW | 设置是否加载http和https混合内容,默认不允许加载http和https混合内容。 | -| zoomAccess | boolean | true | 设置是否支持使用屏幕控件或手势进行缩放,默认执行缩放。 | -| geolocationAccess | boolean | true | 是否允许访问地理位置, 默认允许。 | +| 名称 | 参数类型 | 默认值 | 描述 | +| ----------------- | --------- | -------------- | ---------------------------------------- | +| domStorageAccess | boolean | false | 设置是否开启DOM Storage API权限,默认未开启。 | +| fileAccess | boolean | true | 设置是否开启Web中通过FILE方式访问应用中的本地文件, 默认启用。 | +| geolocationAccess | boolean | true | 设置是否允许访问地理位置, 默认允许访问。 | +| imageAccess | boolean | true | 设置是否允许自动加载图片资源,默认允许。 | +| javaScriptAccess | boolean | true | 设置是否允许执行JavaScript脚本,默认允许执行。 | +| mixedMode | MixedMode | MixedMode.None | 设置是否允许加载HTTP和HTTPS混合内容,默认不允许加载HTTP和HTTPS混合内容。 | +| onlineImageAccess | boolean | true | 设置是否允许从网络加载图片资源(通过HTTP和HTTPS访问的资源),默认允许访问。 | +| zoomAccess | boolean | true | 设置是否支持使用屏幕控件或手势进行缩放,默认允许执行缩放。 | > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** > -> 不支持通用属性。 -- MixedModeContent枚举说明 +> 通用属性仅支持width、height、padding、margin、border。 +- MixedMode枚举说明 - | 名称 | 描述 | - | -------------------------------- | ------------------------------------------------------------ | - | MIXED_CONTENT_NEVER_ALLOW | 不允许加载http和https混合内容。 | - | MIXED_CONTENT_ALWAYS_ALLOW | 允许加载http和https混合内容。 | - | MIXED_CONTENT_COMPATIBILITY_MODE | 混合内容兼容性模式,一些不安全的内容可能被安全来源加载,其他类型的内容将被阻止。 | + | 名称 | 描述 | + | ---------- | ---------------------------------------- | + | All | 允许加载HTTP和HTTPS混合内容。 | + | Compatible | 混合内容兼容性模式,一些不安全的内容可能被安全来源加载,其他类型的内容将被阻止。 | + | None | 不允许加载HTTP和HTTPS混合内容。 | ## 事件 -不支持通用事件。 +通用事件仅支持onFocus。 -| 名称 | 功能描述 | -| ------------------------------------------------------------ | ------------------------------------------------------------ | -| onPageEnd(callback: (event?: { url: string }) => void) |

网页加载结束时触发该回调。
url:Web 引擎返回的 URL。

| -| onPageBegin(callback: (event?: {url: string }) => void) |

网页加载时触发该回调。
url:Web 引擎返回的 URL。

| +| 名称 | 功能描述 | +| ---------------------------------------- | ---------------------------------------- | +| onDownloadStart(callback: (event?: { url: string, userAgent: string, contentDisposition: string, mimetype: string, contentLength: number }) => void) |

下载开始时触发该回调。
url:Web引擎返回的下载URL。
userAgent:Web引擎返回的用户代理名称。
contentDisposition:Web引擎返回的响应头。
mimetype:Web引擎返回的mimetype信息。
contentLength:Web引擎返回的内容长度。

| +| onGeolocationHide(callback: () => void) |

调用onGeolocationShow时发出的地理位置权限请求被取消后触发该回调。

| +| onGeolocationShow(callback: (event?: { origin: string, geolocation: JsGeolocation }) => void) |

应用尝试使用地理位置时触发该回调,并向用户请求权限。
origin:尝试获取地理位置的Web内容的来源。
geolocation:用于请求地理位置权限。

| +| onPageBegin(callback: (event?: { url: string }) => void) |

网页加载时触发该回调。
url:Web引擎返回的URL。

| +| onPageEnd(callback: (event?: { url: string }) => void) |

网页加载结束时触发该回调。
url:Web引擎返回的URL。

| | onProgressChange(callback: (event?: { newProgress: number }) => void) |

网页加载进度变化时触发该回调。
newProgress:加载进度,取值范围为0到100的整数。

| -| onTitleReceive(callback: (event?: { title: string }) => void) |

网页主页面标题更改时触发该回调。
title:标题内容。

| -| onGeolocationHide(callback: () => void) |

调用onGeolocationShow()时发出的地理位置权限请求被取消后触发该回调。
开发者可以在该回调中实现隐藏相关UI界面的逻辑。

| -| onGeolocationShow(callback: (event?: { origin: string, geolocation: JsGeolocation }) => void) |

应用尝试使用地理位置时触发该回调,并向用户请求权限。
-origin:尝试获取地理位置的Web内容的来源。
-geolocation:用于请求地理位置权限。

| +| onTitleReceive(callback: (event?: { title: string }) => void) |

网页主页面标题更改时触发该回调。
title:标题内容。

| ### JsGeolocation 对象说明 @@ -75,9 +76,9 @@ ohos.permission.READ_USER_STORAGE - 接口 - | 接口名称 | 功能描述 | - | ------------------------------------------------------------ | ------------------------------------------------------------ | - | invoke(origin: string, allow: boolean, retain: boolean): void |

通知系统用户是否批准该应用使用地理位置权限。
-origin:尝试获取地理位置的Web内容的来源。
-allow:用户是否批准该应用使用地理位置权限。true: 允许访问,false: 不允许访问。
-retain:是否允许将地理位置权限状态保存到系统中。true: 允许,false: 不允许。

| + | 接口名称 | 功能描述 | + | ---------------------------------------- | ---------------------------------------- | + | invoke(origin: string, allow: boolean, retain: boolean): void |

通知系统用户是否批准该应用使用地理位置权限。
origin:尝试获取地理位置的Web内容的来源。
allow:用户是否批准该应用使用地理位置权限。true: 允许访问,false: 不允许访问。
retain:是否允许将地理位置权限状态保存到系统中。true: 允许,false: 不允许。

| ## WebController @@ -89,30 +90,158 @@ Web 组件的控制器。 webController: WebController = new WebController() ``` -### runJavaScript +### accessBackward + +accessBackward(): boolean + +当前页面是否可后退。 + +### accessForward + +accessForward(): boolean + +当前页面是否可前进。 + +### accessStep -runJavaScript(script: string): void +accessStep(step: number): boolean -执行 JavaScript 脚本。 +当前页面是否可前进或者后退step步。 - 参数 - | 参数名 | 参数类型 | 必填 | 默认值 | 参数描述 | - | ------ | ------ | ---- | ---- | -------------- | - | script | string | 是 | - | JavaScript 脚本。 | + | 参数名 | 参数类型 | 必填 | 默认值 | 参数描述 | + | ---- | ------ | ---- | ---- | --------------------- | + | step | number | 是 | - | 要跳转的步数,正数代表前进,负数代表后退。 | + +### deleteJavaScriptRegister + +deleteJavaScriptRegister(options: { name: string }): void + +清空指定对象已注册的JavaScript方法。 + +- options参数说明 + + | 参数名 | 参数类型 | 必填 | 默认值 | 参数描述 | + | ---- | ------ | ---- | ---- | ----------------------- | + | name | string | 是 | - | 注册对象的名称,与HTML中调用的对象名一致。 | + +### backward + +backward(): void + +页面后退。 + +### forward + +forward(): void + +页面前进。 + +### getHitTest + +getHitTest(): HitTestType + +获取当前已点击的对象类型。 + +- HitTestType枚举说明 + + | 名称 | 描述 | + | ------- | -------------------------------- | + | Edit | 可编辑的区域。 | + | Email | 邮件地址。 | + | Http | HTTP网址的HTML \标签。 | + | HttpImg | HTTP网址与\标签组成的HTML \标签。 | + | Img | HTML \标签。 | + | Map | 地图地址。 | + | Phone | 电话号码。 | + | Unknown | 未知内容。 | + +### loadData + +loadData(options: { data: string, mimeType: string, encoding: string, baseUrl?: string, historyUrl?: string }): void + +加载数据。 + +- options参数说明 + + | 参数名 | 参数类型 | 必填 | 默认值 | 参数描述 | + | ---------- | ------ | ---- | ---- | ------------------ | + | data | string | 是 | - | 需要加载的数据。 | + | mimeType | string | 是 | - | 媒体类型,格式为''\*/\*''。 | + | encoding | string | 是 | - | 编码类型。 | + | baseUrl | string | 否 | - | 基础URL。 | + | historyUrl | string | 否 | - | 历史URL。 | ### loadUrl -loadUrl(url: string): void +loadUrl(url: string, additionalHttpHeaders?: Array<{ key: string, value: string }>): void -加载 URL。 +加载URL。 - 参数 - | 参数名 | 参数类型 | 必填 | 默认值 | 参数描述 | - | ---- | ------ | ---- | ---- | ---------- | - | url | string | 是 | - | 需要加载的 URL。 | + | 参数名 | 参数类型 | 必填 | 默认值 | 参数描述 | + | --------------------- | ------------------------------------- | ---- | ---- | ---------- | + | url | string | 是 | - | 需要加载的 URL。 | + | additionalHttpHeaders | Array<{ key: string, value: string }> | 否 | [] | HTTP附加信息。 | + +### onActive + +onActive(): void + +页面重新激活。当Web被重新激活为活跃状态时,执行此方法。 + +### onInactive + +onInactive(): void + +页面暂停渲染。当Web被切换到后台不可见状态时,执行此方法。 + +### refresh + +refresh(): void + +刷新页面。 + +### registerJavaScriptProxy + +registerJavaScriptProxy(options: { obj: object, name: string, methodList: string[] }): void + +将JavaScript对象与方法注册到Web内核,可被已加载的HTML直接调用。注册后,须调用refresh接口生效。 + +- options 参数说明 + + | 参数名 | 参数类型 | 必填 | 默认值 | 参数描述 | + | ---------- | -------- | ---- | ---- | ----------------------- | + | obj | object | 是 | - | 参与注册的对象。 | + | name | string | 是 | - | 注册对象的名称,与HTML中调用的对象名一致。 | + | methodList | string[] | 是 | - | 参与注册的方法。 | + +### runJavaScript + +runJavaScript(script: string, callback?: (result: string) => void): void + +执行JavaScript脚本。 + +- 参数 + + | 参数名 | 参数类型 | 必填 | 默认值 | 参数描述 | + | -------- | ------------------------ | ---- | ---- | ------------------------------------ | + | script | string | 是 | - | JavaScript脚本。 | + | callback | (result: string) => void | 否 | - | 回调执行JavaScript脚本结果,默认result为null字符串。 | + +### requestFocus + +requestFocus(): void + +Web组件获焦。 + +### stop + +stop(): void +停止页面加载。 ## 示例 diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-methods-datepicker-dialog.md b/zh-cn/application-dev/reference/arkui-ts/ts-methods-datepicker-dialog.md new file mode 100644 index 0000000000000000000000000000000000000000..2070b7c7820a33550e2f1e131df61b17a6176c3b --- /dev/null +++ b/zh-cn/application-dev/reference/arkui-ts/ts-methods-datepicker-dialog.md @@ -0,0 +1,196 @@ +# 日期时间滑动选择器弹窗 + +> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** +> 该组件从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 + +根据指定范围的Date创建可以选择时间或者日期的滑动选择器,展示在弹窗上。 + +## 权限列表 + +无 + +## DatePickerDialog.show + +show(options?: DatePickerDialogOption) + +定义日期时间滑动选择器弹窗并弹出。 + +- DatePickerDialogOption参数 + | 参数名 | 参数类型 | 必填 | 默认值 | 参数描述 | + | -------- | -------- | -------- | -------- | -------- | + | start | Date | 否 | Date('1970-1-1') | 指定选择器的起始日期。 | + | end | Date | 否 | Date('2100-12-31') | 指定选择器的结束日期。 | + | selected | Date | 否 | 当前系统日期或时间 | 当type为DatePickerType.Date时,设置选中项的日期。当type为DatePickerType.Time时,设置选中项的时间。 | + | type | [DatePickerType](ts-basic-components-datepicker.md) | 否 | DatePickerType.Date | 指定选择器的类型,包括日期选择器和时间选择器,缺省使用日期选择器。 | + | lunar | boolean | 否 | false | 日期是否显示农历。 | + | useMilitaryTime | boolean | 否 | false | 展示时间是否为24小时制。 | + | onAccept | (value: [DatePickerResult](ts-basic-components-datepicker.md)) => void | 否 | - | 点击弹窗中确定按钮时触发。 | + | onCancel | () => void | 否 | - | 点击弹窗中取消按钮时触发。 | + | onChange | (value: [DatePickerResult](ts-basic-components-datepicker.md)) => void | 否 | - | 滑动选择器,当前选择项改变时触发。 | + +## 示例 + +### 日期滑动选择器(显示农历)示例 +``` +@Entry +@Component +struct DatePickerDialogExample01 { + @State isLunar: boolean = true + @State isUseMilitaryTime: boolean = false + @State datePickerType: DatePickerType = DatePickerType.Date + selectedDate: Date = new Date("2000-1-1") + + build() { + Flex({direction: FlexDirection.Column, alignItems: ItemAlign.Center, + justifyContent: FlexAlign.Center }) { + Button("DatePickerDialog").onClick(() => { + DatePickerDialog.show({ + start: new Date("2000-1-1"), + end: new Date("2005-1-1"), + selected: this.selectedDate, + type: this.datePickerType, + lunar: this.isLunar, + useMilitaryTime: this.isUseMilitaryTime, + onAccept: (value: DatePickerResult) => { + console.info("DatePickerDialog:onAccept()" + JSON.stringify(value)) + if (this.datePickerType == DatePickerType.Date) { + this.selectedDate.setFullYear(value.year, value.month, value.day) + } else if (this.datePickerType == DatePickerType.Time) { + this.selectedDate.setHours(value.hour, value.minute, value.second) + } + }, + onCancel: () => { + console.info("DatePickerDialog:onCancel()") + }, + onChange: (value: DatePickerResult) => { + console.info("DatePickerDialog:onChange()" + JSON.stringify(value)) + } + }) + }) + } + } +} +``` +### 日期滑动选择器(不显示农历)示例 +``` +@Entry +@Component +struct DatePickerDialogExample02 { + @State isLunar: boolean = false + @State isUseMilitaryTime: boolean = false + @State datePickerType: DatePickerType = DatePickerType.Date + selectedDate: Date = new Date("2000-1-1") + + build() { + Flex({direction: FlexDirection.Column, alignItems: ItemAlign.Center, + justifyContent: FlexAlign.Center }) { + Button("DatePickerDialog").onClick(() => { + DatePickerDialog.show({ + start: new Date("2000-1-1"), + end: new Date("2005-1-1"), + selected: this.selectedDate, + type: this.datePickerType, + lunar: this.isLunar, + useMilitaryTime: this.isUseMilitaryTime, + onAccept: (value: DatePickerResult) => { + console.info("DatePickerDialog:onAccept()" + JSON.stringify(value)) + if (this.datePickerType == DatePickerType.Date) { + this.selectedDate.setFullYear(value.year, value.month, value.day) + } else if (this.datePickerType == DatePickerType.Time) { + this.selectedDate.setHours(value.hour, value.minute, value.second) + } + }, + onCancel: () => { + console.info("DatePickerDialog:onCancel()") + }, + onChange: (value: DatePickerResult) => { + console.info("DatePickerDialog:onChange()" + JSON.stringify(value)) + } + }) + }) + } + } +} +``` +### 时间滑动选择器(24小时制)示例 +``` +@Entry +@Component +struct DatePickerDialogExample03 { + @State isLunar: boolean = false + @State isUseMilitaryTime: boolean = true + @State datePickerType: DatePickerType = DatePickerType.Time + selectedDate: Date = new Date("2000-1-1") + + build() { + Flex({direction: FlexDirection.Column, alignItems: ItemAlign.Center, + justifyContent: FlexAlign.Center }) { + Button("DatePickerDialog").onClick(() => { + DatePickerDialog.show({ + start: new Date("2000-1-1"), + end: new Date("2005-1-1"), + selected: this.selectedDate, + type: this.datePickerType, + lunar: this.isLunar, + useMilitaryTime: this.isUseMilitaryTime, + onAccept: (value: DatePickerResult) => { + console.info("DatePickerDialog:onAccept()" + JSON.stringify(value)) + if (this.datePickerType == DatePickerType.Date) { + this.selectedDate.setFullYear(value.year, value.month, value.day) + } else if (this.datePickerType == DatePickerType.Time) { + this.selectedDate.setHours(value.hour, value.minute, value.second) + } + }, + onCancel: () => { + console.info("DatePickerDialog:onCancel()") + }, + onChange: (value: DatePickerResult) => { + console.info("DatePickerDialog:onChange()" + JSON.stringify(value)) + } + }) + }) + } + } +} +``` +### 时间滑动选择器(12小时制)示例 +``` +@Entry +@Component +struct DatePickerDialogExample04 { + @State isLunar: boolean = false + @State isUseMilitaryTime: boolean = false + @State datePickerType: DatePickerType = DatePickerType.Time + selectedDate: Date = new Date("2000-1-1") + + build() { + Flex({direction: FlexDirection.Column, alignItems: ItemAlign.Center, + justifyContent: FlexAlign.Center }) { + Button("DatePickerDialog").onClick(() => { + DatePickerDialog.show({ + start: new Date("2000-1-1"), + end: new Date("2005-1-1"), + selected: this.selectedDate, + type: this.datePickerType, + lunar: this.isLunar, + useMilitaryTime: this.isUseMilitaryTime, + onAccept: (value: DatePickerResult) => { + console.info("DatePickerDialog:onAccept()" + JSON.stringify(value)) + if (this.datePickerType == DatePickerType.Date) { + this.selectedDate.setFullYear(value.year, value.month, value.day) + } else if (this.datePickerType == DatePickerType.Time) { + this.selectedDate.setHours(value.hour, value.minute, value.second) + } + }, + onCancel: () => { + console.info("DatePickerDialog:onCancel()") + }, + onChange: (value: DatePickerResult) => { + console.info("DatePickerDialog:onChange()" + JSON.stringify(value)) + } + }) + }) + } + } +} +``` 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 new file mode 100644 index 0000000000000000000000000000000000000000..5e16350f67e178461c1e7ce57ab38f3e156682bf --- /dev/null +++ b/zh-cn/application-dev/reference/arkui-ts/ts-methods-textpicker-dialog.md @@ -0,0 +1,65 @@ +# 文本滑动选择器弹窗 + +> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** +> 该组件从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 + +根据指定的选择范围创建文本选择器,展示在弹窗上。 + +## 权限列表 + +无 + +## TextPickerDialog.show + +show(options: TextPickerDialogOption) + +定义文本滑动选择器弹窗并弹出。 + +- TextPickerDialogOption参数 + | 参数名 | 参数类型 | 必填 | 默认值 | 参数描述 | + | -------- | -------- | -------- | -------- | -------- | + | range | string[] | 是 | - | 选择器的数据选择范围。 | + | selected | number | 否 | 第一个元素 | 选中项在数组中的index值。 | + | defaultPickerItemHeight | number | 否 | - | 默认Picker内容项元素高度。 | + | onAccept | (value: TextPickerResult) => void | 否 | - | 点击弹窗中确定按钮时触发。 | + | onCancel | () => void | 否 | - | 点击弹窗中取消按钮时触发。 | + | onChange | (value: TextPickerResult) => void | 否 | - | 滑动选择器,当前选择项改变时触发。 | + +- TextPickerResult对象说明 + | 名称 | 参数类型 | 描述 | + | -------- | -------- | -------- | + | value | string | 选中项文本。 | + | index | number | 选中项在数组中的index值。 | + +## 示例 + +``` +@Entry +@Component +struct TextPickerDialogExample { + @State select: number = 1 + private fruits: string[] = ['apple1', 'orange2', 'peach3', 'grape4'] + + build() { + Flex({direction: FlexDirection.Column, alignItems: ItemAlign.Center, + justifyContent: FlexAlign.Center }) { + Button("TextPickerDialog").onClick(() => { + TextPickerDialog.show({ + range: this.fruits, + selected: this.select, + onAccept: (value: TextPickerResult) => { + console.info("TextPickerDialog:onAccept()" + JSON.stringify(value)) + this.select = value.index + }, + onCancel: () => { + console.info("TextPickerDialog:onCancel()") + }, + onChange: (value: TextPickerResult) => { + console.info("TextPickerDialog:onChange()" + JSON.stringify(value)) + } + }) + }) + } + } +} +``` diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-offscreencanvasrenderingcontext2d.md b/zh-cn/application-dev/reference/arkui-ts/ts-offscreencanvasrenderingcontext2d.md index 43dddb82795587b63bef2151ea2b607037066a45..95d3ab05e222f3675b0412969ccab5be988b5352 100644 --- a/zh-cn/application-dev/reference/arkui-ts/ts-offscreencanvasrenderingcontext2d.md +++ b/zh-cn/application-dev/reference/arkui-ts/ts-offscreencanvasrenderingcontext2d.md @@ -1424,7 +1424,7 @@ ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number .backgroundColor('#ffff00') .onReady(() =>{ this.offContext.beginPath() - this.offContext.ellipse(200, 200, 50, 100, Math.PI * 0.25, Math.PI * 0.5, Math.PI, true) + this.offContext.ellipse(200, 200, 50, 100, Math.PI * 0.25, Math.PI * 0.5, Math.PI) this.offContext.stroke() var image = this.offContext.transferToImageBitmap() this.context.transferFromImageBitmap(image) diff --git a/zh-cn/application-dev/security/Readme-CN.md b/zh-cn/application-dev/security/Readme-CN.md index 604a2c0dbfb42236a8525d1e1256940c2bc2311f..57303b1522c8b35de1e69bb73abcb5bfc482e56b 100644 --- a/zh-cn/application-dev/security/Readme-CN.md +++ b/zh-cn/application-dev/security/Readme-CN.md @@ -3,5 +3,10 @@ - 用户认证 - [用户认证开发概述](userauth-overview.md) - [用户认证开发指导](userauth-guidelines.md) + +- 密钥管理 + - [HUKS开发概述](huks-overview.md) + - [HUKS开发指导](huks-guidelines.md) + - Hap包签名工具 - - [Hap包签名工具开发指南](hapsigntool_guidelines.md) \ No newline at end of file + - [Hap包签名工具开发指导](hapsigntool-guidelines.md) diff --git a/zh-cn/application-dev/security/hapsigntool-guidelines.md b/zh-cn/application-dev/security/hapsigntool-guidelines.md index 264b13dbc1746a7fd09ccb86086e72458da68c71..4fe2c34d3df809abfcd41ae4e47eae61d04bb102 100644 --- a/zh-cn/application-dev/security/hapsigntool-guidelines.md +++ b/zh-cn/application-dev/security/hapsigntool-guidelines.md @@ -1,4 +1,4 @@ -# Hap包签名工具开发指南 +# Hap包签名工具开发指导 @@ -13,10 +13,10 @@ Hap包签名工具支持本地签名需求的开发,为OpenHarmony应用提供完整性保护和来源管控机制,该签名工具基于PKI公钥证书的机制实现,在进行开发前,开发者应了解以下基本概念: - 非对称密钥对 - 非对称密钥算法是数据签名/验签的基础,应用签名工具实现生成标准的非对称密钥对(ECC P384/256、RSA2048/3072/4096,用于证书的签发和验证、Profile文件的签名和验签、以及应用包的签名和验签,提供应用的完整性保护机制。 + 非对称密钥算法是数据签名/验签的基础,应用签名工具实现生成标准的非对称密钥对(ECC P384/256、RSA2048/3072/4096,用于证书的签发和验证、Profile文件的签名和验签、以及应用包的签名和验签,提供应用的完整性保护机制。 - CSR - CSR(Certificate Signing Request)证书签发请求是生成证书的前提,他包括证书的公钥、证书主题和私钥签名,在申请证书之前,需要先基于密钥对生成CSR,然后提交给CA签发证书。 + CSR(Certificate Signing Request)证书签发请求是生成证书的前提,他包括证书的公钥、证书主题和私钥签名,在申请证书之前,需要先基于密钥对生成CSR,然后提交给CA签发证书。 - 证书 OpenHarmony采用RFC5280标准构建X509证书信任体系。用于应用签名的OpenHarmony证书按层级可分为:根CA证书、子CA证书、三级实体证书,其中三级实体证书分为应用签名证书和profile签名证书。应用签名证书表示应用开发者的身份,可保证系统上安装的应用来源可追溯,profile签名证书实现对profile文件的签名进行验签,保证profile文件的完整性。 - HAP包 @@ -33,13 +33,13 @@ hap包中的描述文件,该描述文件描述了已授权的证书权限和 ## 编译构建 1. 该工具基于Gradle 7.1编译构建,请确认环境已安装配置Gradle环境,并且版本高于或等于7.1。 - + ```shell gradle -v ``` 2. 下载代码,命令行打开文件目录至developtools_hapsigner/hapsigntool,执行命令进行编译打包。 - + ```shell gradle build ``` @@ -74,7 +74,7 @@ OpenHarmony系统内置密钥库文件,文件名称为OpenHarmony.p12,内含 1.输出命令帮助信息 -help # 输出命令帮助信息(不输入参数默认输出命令帮助信息) - + 2.输出版本信息 -version # 输出版本信息 @@ -209,7 +209,7 @@ OpenHarmony系统内置密钥库文件,文件名称为OpenHarmony.p12,内含 ├── -outFil # 验证结果文件(包含验证结果和profile内容),json格式,可选项;如果不填,则直接输出到控制台 11.hap应用包签名 - + sign-app : hap应用包签名 ├── -mode # 签名模式,必填项,包括localSign,remoteSign,remoteResign ├── -keyAlias # 密钥别名,必填项 @@ -247,9 +247,9 @@ OpenHarmony系统内置密钥库文件,文件名称为OpenHarmony.p12,内含 子CA证书所在路径:developtools_hapsigner/autosign/result/subCA.cer; pfofile签名证书路径:developtools_hapsigner/autosign/result/OpenHarmonyProfileRelease.pem。 - + **

1.生成应用签名证书密钥对

** - + 调用密钥对生成接口,生成签名密钥并保存到密钥库。 命令实例: @@ -259,7 +259,7 @@ java -jar hap-sign-tool.jar generate-keypair -keyAlias "oh-app1-key-v1" -keyAlg > ![icon-note.gif](../public_sys-resources/icon-note.gif) **说明:**请记录下**keyAlias、keyStorePwd**和**keyPwd**的值,在后续[生成应用签名证书](#生成应用签名证书)和[对Hap包进行签名](#对Hap包进行签名)操作会使用到。 该命令的参数说明: - + generate-keypair : 生成应用签名证书密钥对 ├── -keyAlias #用于生成应用签名证书的密钥别名,存于OpenHarmony.p12密钥库文件中,该参数必填 ├── -keyAlg #密钥算法,推荐使用ECC,该参数必填 @@ -267,7 +267,7 @@ java -jar hap-sign-tool.jar generate-keypair -keyAlias "oh-app1-key-v1" -keyAlg ├── -keyStoreFile #密钥库文件,推荐使用提供的OpenHarmony.p12密钥库文件,该参数必填 ├── -keyStorePwd #密钥库口令,OpenHarmony.p12口令默认为“123456”,必填项 ├── -keyPwd #密钥口令,可选项,该参数不填默认生成的密钥对无口令 - + **

2.生成应用签名证书

** @@ -353,6 +353,7 @@ java -jar hap-sign-tool.jar sign-app -keyAlias "oh-app1-key-v1" -signAlg "SHA256 + ## 常见问题 **1.执行[生成应用签名证书](#生成应用签名证书)命令时,控制台打印结果,无文件输出** diff --git a/zh-cn/application-dev/security/huks-guidelines.md b/zh-cn/application-dev/security/huks-guidelines.md new file mode 100644 index 0000000000000000000000000000000000000000..3c9f934168a460e02247938e326b6ee4a927fd27 --- /dev/null +++ b/zh-cn/application-dev/security/huks-guidelines.md @@ -0,0 +1,140 @@ +# HUKS开发指导 + +## 场景介绍 + + HUKS(OpenHarmony Universal KeyStore,OpenHarmony通用密钥库系统)向应用提供密钥库能力,包括密钥管理及密钥的密码学操作等功能。HUKS所管理的密钥可以由应用导入或者由应用调用HUKS接口生成。 + + +## 接口说明 + +| 接口名 | 描述 | +| ------------------------------------------------------------ | ---------------- | +| function generateKey(keyAlias: string, options: HuksOptions, callback: AsyncCallback) : void; | 生成密钥/密钥对 | +| function generateKey(keyAlias: string, options: HuksOptions) : Promise; | 生成密钥/密钥对 | +| function exportKey(keyAlias: string, options: HuksOptions, callback: AsyncCallback) : void; | 导出公钥 | +| function exportKey(keyAlias: string, options: HuksOptions) : Promise; | 导出公钥 | +| function isKeyExist(keyAlias: string, options: HuksOptions, callback: AsyncCallback) : void; | 查询密钥是否存在 | +| function isKeyExist(keyAlias: string, options: HuksOptions) : Promise; | 查询密钥是否存在 | +| function deleteKey(keyAlias: string, options: HuksOptions, callback: AsyncCallback) : void; | 删除密钥 | +| function deleteKey(keyAlias: string, options: HuksOptions) : Promise; | 删除密钥 | + +## 开发步骤 + +1. 引入HUKS模块 + + ```js + import huks from '@ohos.security.huks' + ``` + +2. 使用generateKey接口生成密钥对。 + + keyAlias为生成的密钥别名,options为生成密钥时使用到的参数,需根据具体需要到的算法设定options中的参数。 + + generateKey接口会返回密钥的生成是否成功。 + + ```js + var alias = 'testAlias'; + var properties = new Array(); + properties[0] = { + tag: huks.HuksTag.HUKS_TAG_ALGORITHM, + value: huks.HuksKeyAlg.HUKS_ALG_ECC + }; + properties[1] = { + tag: huks.HuksTag.HUKS_TAG_KEY_SIZE, + value: huks.HuksKeySize.HUKS_ECC_KEY_SIZE_224 + }; + properties[2] = { + tag: huks.HuksTag.HUKS_TAG_PURPOSE, + value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_AGREE + }; + properties[3] = { + tag: huks.HuksTag.HUKS_TAG_DIGEST, + value: huks.HuksKeyDigest.HUKS_DIGEST_NONE + }; + var options = { + properties: properties + } + var resultA = await huks.generateKey(alias, options); + ``` + +3. 使用Init接口进行init操作。 + + Alias为初始化密钥的别名,options为初始化密钥用的参数集合,需根据具体需要到的算法设定options中的参数。 + + init接口会返回init操作是否成功。 + + ```js + var alias = 'test001' + var properties = new Array(); + properties[0] = { + tag: huks.HuksTag.HUKS_TAG_ALGORITHM, + value: huks.HksKeyAlg.HKS_ALG_DH + }; + properties[1] = { + tag: huks.HksTag.HKS_TAG_PURPOSE, + value: huks.HksKeyPurpose.HKS_KEY_PURPOSE_AGREE + }; + properties[2] = { + tag: huks.HksTag.HKS_TAG_KEY_SIZE + value: huks.HksKeySize.HKS_DH_KEY_SIZE_4096 + }; + var options = { + properties: properties + }; + huks.init(alias, options, function (err, data){}); + ``` + +4. 使用Update接口进行update操作。 + + handle为更新密钥的session id,options为更新密钥用的参数集合,需根据具体需要到的算法设定options中的参数。 + + update接口会返回update操作是否成功。 + + ```js + var properties = new Array(); + properties[0] = { + tag: huks.HuksTag.HUKS_TAG_ALGORITHM, + value: huks.HksKeyAlg.HKS_ALG_DH + }; + properties[1] = { + tag: huks.HksTag.HKS_TAG_PURPOSE, + value: huks.HksKeyPurpose.HKS_KEY_PURPOSE_AGREE + }; + properties[2] = { + tag: huks.HksTag.HKS_TAG_KEY_SIZE + value: huks.HksKeySize.HKS_DH_KEY_SIZE_4096 + }; + var options = { + properties: properties + }; + huks.update(handle, options, function (err, data){}); + ``` + +5. 使用Finish接口进行finish操作。 + + handle为 结束密钥的session id,options为结束密钥用的参数集合,需根据具体需要到的算法设定options中的参数。 + + finish接口会返回finish操作是否成功。 + + ```js + var properties = new Array(); + properties[0] = { + tag: huks.HuksTag.HUKS_TAG_ALGORITHM, + value: huks.HksKeyAlg.HKS_ALG_DH + }; + properties[1] = { + tag: huks.HksTag.HKS_TAG_PURPOSE, + value: huks.HksKeyPurpose.HKS_KEY_PURPOSE_AGREE + }; + properties[2] = { + tag: huks.HksTag.HKS_TAG_KEY_SIZE + value: huks.HksKeySize.HKS_DH_KEY_SIZE_4096 + }; + var options = { + properties: properties + }; + huks.finish(handle, options, function (err, data){}); + ``` + + + diff --git a/zh-cn/application-dev/security/huks-overview.md b/zh-cn/application-dev/security/huks-overview.md new file mode 100755 index 0000000000000000000000000000000000000000..4f0ee08a09481012c88f0dd009574e9412095714 --- /dev/null +++ b/zh-cn/application-dev/security/huks-overview.md @@ -0,0 +1,27 @@ +# HUKS概述 + +### 功能简介 + +HUKS(OpenHarmony Universal KeyStore)向应用提供密钥库能力,包括密钥管理及密钥的密码学操作等功能。HUKS所管理的密钥可以由应用导入或者由应用调用HUKS接口生成。 + +### 基本概念 + +- HUKS提供密钥管理功能,支持的主要操作包括:加密解密、签名验签、派生协商密钥、计算HMAC(Hash-based Message Authentication Code)。 +- HUKS涉及的算法主要有:AES加密解密、RSA加密解密、RSA签名验签、ECC签名验签、DSA签名验签、ED25519签名验签、PBKDF2派生、DH协商、ECDH协商、X25519协商等。 +- HUKS当前使用的算法库为OpenSSL和mbed TLS。 + +### 运作机制 + +HUKS对密钥的使用主要通过Init、Update、Finish操作来实现。 + +- **Iit操作**:读取密钥,并为其创建Session Id返回给调用者。 + +- **Udate操作**:根据Init操作获取的Session Id对数据进行分段update处理。 + +- **Fnish操作**:当所有待处理的数据均传入HUKS后,调用Finish操作完成最终数据处理,释放资源。 + + >![](../public_sys-resources/icon-notice.gif) **须知:当Init、Update、Finish操作中的任一阶段发生错误时,都需要调用Abort操作来终止密钥的使用。** + + +### 约束与限制 +不涉及。 \ No newline at end of file diff --git a/zh-cn/application-dev/ui/ts-component-based-builder.md b/zh-cn/application-dev/ui/ts-component-based-builder.md index 9bdf0dad957220ed5bab0790681edcef0a14fe30..536ed5d82c625932092a15f50e71d9688ba796d5 100644 --- a/zh-cn/application-dev/ui/ts-component-based-builder.md +++ b/zh-cn/application-dev/ui/ts-component-based-builder.md @@ -41,3 +41,93 @@ struct CompA { } } ``` +## @BuilderParam8+ +@BuilderParam装饰器用于修饰自定义组件内函数类型的属性(例如:`@BuilderParam content: () => any;`),并且在初始化自定义组件时被@BuilderParam修饰的属性必须赋值。 + +### 引入动机 + +当开发者创建自定义组件,想对该组件添加特定功能时(如:仅对自定义组件添加一个点击跳转操作)。若直接在组件内嵌入事件方法,将会导致所有初始化该组件的地方均增加了该功能。为解决此问题,引入了@BuilderParam装饰器,此装饰器修饰的属性值可为@Builder修饰的方法,开发者可在初始化自定义组件时对此属性进行赋值,为自定义组件增加特定的的功能。 + +### 参数初始化组件 +通过参数初始化组件时,将@Builder装饰的方法赋值给@BuilderParam修饰的属性,并在自定义组件内调用content属性值。 +``` +@Component +struct CustomContainer { + header: string = ""; + @BuilderParam content: () => any; + footer: string = ""; + build() { + Column() { + Text(this.header) + .fontSize(50) + this.content() + Text(this.footer) + .fontSize(50) + } + } +} + +@Entry +@Component +struct CustomContainerUser { + @Builder specificParam(label: string) { + Column() { + Text(label).fontSize(50) + } + } + + build() { + Column() { + CustomContainer({ + header: "Header", + content: this.specificParam("111") + footer: "Footer", + }) + } + } +} +``` +### 尾随闭包初始化组件 +在自定义组件中使用@BuilderParam修饰的属性接收尾随闭包(在初始化自定义组件时,组件名称紧跟一个大括号“{}”形成尾随闭包场景(`CustomComponent(){}`)。开发者可把尾随闭包看做一个容器,向其填充内容,如在闭包内增加组件(`{Column(){Text("content")}`),闭包内语法规范与[build](../ui/ts-function-build.md)一致。此场景下自定义组件内有且仅有一个使用@BuilderParam修饰的属性。 + +示例:在闭包内增加Column组件并添加点击事件,在新增的Column组件内调用@Builder修饰的specificParam方法,点击Column组件后该改变自定义组件中header的属性值为“changeHeader”。并且在初始化自定义组件时会把尾随闭包的内容赋值给使用@BuilderParam修饰的closer属性。 +``` +@Component +struct CustomContainer { + header: string = ""; + @BuilderParam closer: () => any; + build() { + Column() { + Text(this.header) + .fontSize(50) + this.closer() + } + } +} +@Builder function specificParam(label1: string, label2: string) { + Column() { + Text(label1) + .fontSize(50) + Text(label2) + .fontSize(50) + } +} +@Entry +@Component +struct CustomContainerUser { + @State text: string = "header" + build() { + Column() { + CustomContainer({ + header: this.text, + }){ + Column(){ + specificParam("111", "22") + }.onClick(()=>{ + this.text = "changeHeader" + }) + } + } + } +} +``` diff --git a/zh-cn/application-dev/webgl/Readme-CN.md b/zh-cn/application-dev/webgl/Readme-CN.md new file mode 100644 index 0000000000000000000000000000000000000000..89d715d5a45a30e3a78c76937f835d89d2527549 --- /dev/null +++ b/zh-cn/application-dev/webgl/Readme-CN.md @@ -0,0 +1,4 @@ +# WebGL + +- [概述](webgl-overview.md) +- [WebGL开发指导](webgl-guidelines.md) diff --git a/zh-cn/application-dev/webgl/figures/zh-cn_image_0000001192269746.gif b/zh-cn/application-dev/webgl/figures/zh-cn_image_0000001192269746.gif new file mode 100644 index 0000000000000000000000000000000000000000..e4c7ed66998e8c6b4b87c587edb5986cc547d9dc Binary files /dev/null and b/zh-cn/application-dev/webgl/figures/zh-cn_image_0000001192269746.gif differ diff --git a/zh-cn/application-dev/webgl/figures/zh-cn_image_0000001192429306.gif b/zh-cn/application-dev/webgl/figures/zh-cn_image_0000001192429306.gif new file mode 100644 index 0000000000000000000000000000000000000000..2297841f49ed784fbe4ecd131df8965202e1c14c Binary files /dev/null and b/zh-cn/application-dev/webgl/figures/zh-cn_image_0000001192429306.gif differ diff --git a/zh-cn/application-dev/webgl/figures/zh-cn_image_0000001238544451.png b/zh-cn/application-dev/webgl/figures/zh-cn_image_0000001238544451.png new file mode 100644 index 0000000000000000000000000000000000000000..007ac6263648c83671d4b085cfc9103f6391be6d Binary files /dev/null and b/zh-cn/application-dev/webgl/figures/zh-cn_image_0000001238544451.png differ diff --git a/zh-cn/application-dev/webgl/public_sys-resources/icon-caution.gif b/zh-cn/application-dev/webgl/public_sys-resources/icon-caution.gif new file mode 100644 index 0000000000000000000000000000000000000000..6e90d7cfc2193e39e10bb58c38d01a23f045d571 Binary files /dev/null and b/zh-cn/application-dev/webgl/public_sys-resources/icon-caution.gif differ diff --git a/zh-cn/application-dev/webgl/public_sys-resources/icon-danger.gif b/zh-cn/application-dev/webgl/public_sys-resources/icon-danger.gif new file mode 100644 index 0000000000000000000000000000000000000000..6e90d7cfc2193e39e10bb58c38d01a23f045d571 Binary files /dev/null and b/zh-cn/application-dev/webgl/public_sys-resources/icon-danger.gif differ diff --git a/zh-cn/application-dev/webgl/public_sys-resources/icon-note.gif b/zh-cn/application-dev/webgl/public_sys-resources/icon-note.gif new file mode 100644 index 0000000000000000000000000000000000000000..6314297e45c1de184204098efd4814d6dc8b1cda Binary files /dev/null and b/zh-cn/application-dev/webgl/public_sys-resources/icon-note.gif differ diff --git a/zh-cn/application-dev/webgl/public_sys-resources/icon-notice.gif b/zh-cn/application-dev/webgl/public_sys-resources/icon-notice.gif new file mode 100644 index 0000000000000000000000000000000000000000..86024f61b691400bea99e5b1f506d9d9aef36e27 Binary files /dev/null and b/zh-cn/application-dev/webgl/public_sys-resources/icon-notice.gif differ diff --git a/zh-cn/application-dev/webgl/public_sys-resources/icon-tip.gif b/zh-cn/application-dev/webgl/public_sys-resources/icon-tip.gif new file mode 100644 index 0000000000000000000000000000000000000000..93aa72053b510e456b149f36a0972703ea9999b7 Binary files /dev/null and b/zh-cn/application-dev/webgl/public_sys-resources/icon-tip.gif differ diff --git a/zh-cn/application-dev/webgl/public_sys-resources/icon-warning.gif b/zh-cn/application-dev/webgl/public_sys-resources/icon-warning.gif new file mode 100644 index 0000000000000000000000000000000000000000..6e90d7cfc2193e39e10bb58c38d01a23f045d571 Binary files /dev/null and b/zh-cn/application-dev/webgl/public_sys-resources/icon-warning.gif differ diff --git a/zh-cn/application-dev/webgl/webgl-guidelines.md b/zh-cn/application-dev/webgl/webgl-guidelines.md new file mode 100644 index 0000000000000000000000000000000000000000..6495b6aeb122781b25d4fdeb25e41327399c43bd --- /dev/null +++ b/zh-cn/application-dev/webgl/webgl-guidelines.md @@ -0,0 +1,708 @@ +# WebGL开发指导 + +## 场景介绍 + +WebGL主要帮助开发者在前端开发中完成图形图像的相关处理,比如绘制彩色图形等。 + + +## 接口说明 + +使用WebGL开放能力需导入模块: + +``` +import webgl from "@ohos.webglnapi"; +``` + +**表1** WebGL主要接口列表 + +| 接口名 | 描述 | +| -------- | -------- | +| canvas.getContext | 获取canvas对象上下文。 | +| webgl.createBuffer(): WebGLBuffer \| null | 创建与初始化WebGL数据缓冲区。 | +| webgl.bindBuffer(target: GLenum, buffer: WebGLBuffer \| null): void | 将WebGL数据缓冲区与目标进行绑定。 | +| webgl.bufferData(target: GLenum, srcData: ArrayBufferView, usage: GLenum, srcOffset: GLuint, length?: GLuint): void | 创建并初始化WebGL的数据存储区。 | +| webgl.getAttribLocation(program: WebGLProgram, name: string): GLint | 从给定WebGL着色程序中获取着色器中attribute变量的地址。 | +| webgl.vertexAttribPointer(index: GLuint, size: GLint, type: GLenum, normalized: GLboolean, stride: GLsizei, offset: GLintptr): void | 将缓冲区对象分配给变量。 | +| webgl.enableVertexAttribArray(index: GLuint): void | 连接变量与分配给它的缓冲区对象。 | +| webgl.clearColor(red: GLclampf, green: GLclampf, blue: GLclampf, alpha: GLclampf): void | 清空<canvas>指定的颜色。 | +| webgl.clear(mask: GLbitfield): void | 清空<canvas>。 | +| webgl.drawArrays(mode: GLenum, first: GLint, count: GLsizei): void | 执行数据绘制。 | +| webgl.flush(): void | 刷新数据至GPU,清空缓冲区。 | +| webgl.createProgram(): WebGLProgram \| null | 创建着色器程序对象。 | + + +## 开发步骤 + +以下分别展示无着色器绘制2D图形和着色器绘制彩色三角形的两个场景示例及开发过程。 + +> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** +> 使用WebGL开发时,为保证界面图形显示效果,请使用真机运行。 + + +### 无着色器绘制2D图形 + +此场景为未使用WebGL绘制的2D图形(CPU绘制非GPU绘制)。开发示例如下: + +1. 创建页面布局。index.hml示例如下: + ``` +
+ + +
+ ``` + +2. 设置页面样式。index.css示例如下: + ``` + .container { + flex-direction: column; + justify-content: center; + align-items: center; + } + .btn-button { + margin: 1px; + height: 40px; + width: 220px; + background-color: lightblue; + font-size: 20px; + text-color: blue; + } + ``` + +3. 编辑JavaScript代码文件,增加2D绘制逻辑代码。index.js示例如下: + ``` + //index.js + export default {//NAPI交互代码 + data: { + title: "DEMO BY TEAMOL", + fit:"cover", + fits: ["cover", "contain", "fill", "none", "scale-down"] + }, + onInit() { + this.title = this.$t('strings.world'); + }, + BtnDraw2D(){ + // 获取canvas元素 + const canvas = this.$refs.canvas1; + // 获取2D上下文 + const ctx = canvas.getContext('2d'); + + //执行CPU绘制函数 + // Set line width + ctx.lineWidth = 10; + // Wall + ctx.strokeRect(75, 140, 150, 110); + // Door + ctx.fillRect(130, 190, 40, 60); + // Roof + ctx.beginPath(); + ctx.moveTo(50, 140); + ctx.lineTo(150, 60); + ctx.lineTo(250, 140); + ctx.closePath(); + ctx.stroke(); + } + } + ``` + +**图1** 点击按钮绘制2D图形的效果图 + +![zh-cn_image_0000001192269746](figures/zh-cn_image_0000001192269746.gif) + + +### 着色器绘制彩色三角形 + +此场景为使用WebGL绘制的彩色三角形图形(GPU绘制)。开发示例如下: + + +1. 创建页面布局。index.hml示例如下: + ``` +
+ + +
+ ``` + +2. 设置页面样式。index.css示例如下: + ``` + .container { + flex-direction: column; + justify-content: center; + align-items: center; + } + .btn-button { + margin: 1px; + height: 40px; + width: 220px; + background-color: lightblue; + font-size: 20px; + text-color: blue; + } + ``` + +3. 编辑JavaScript代码文件,增加彩色三角形绘制逻辑代码。index.js示例如下: + ``` + //index.js + import webgl from "@ohos.webglnapi";//导入WebGL模块 + + //WebGL相关预定义 + var gl = { + DEPTH_BUFFER_BIT: 0x00000100, + STENCIL_BUFFER_BIT: 0x00000400, + COLOR_BUFFER_BIT: 0x00004000, + POINTS: 0x0000, + LINES: 0x0001, + LINE_LOOP: 0x0002, + LINE_STRIP: 0x0003, + TRIANGLES: 0x0004, + TRIANGLE_STRIP: 0x0005, + TRIANGLE_FAN: 0x0006, + ZERO: 0, + ONE: 1, + SRC_COLOR: 0x0300, + ONE_MINUS_SRC_COLOR: 0x0301, + SRC_ALPHA: 0x0302, + ONE_MINUS_SRC_ALPHA: 0x0303, + DST_ALPHA: 0x0304, + ONE_MINUS_DST_ALPHA: 0x0305, + DST_COLOR: 0x0306, + ONE_MINUS_DST_COLOR: 0x0307, + SRC_ALPHA_SATURATE: 0x0308, + FUNC_ADD: 0x8006, + BLEND_EQUATION: 0x8009, + BLEND_EQUATION_RGB: 0x8009, + BLEND_EQUATION_ALPHA: 0x883D, + FUNC_SUBTRACT: 0x800A, + FUNC_REVERSE_SUBTRACT: 0x800B, + BLEND_DST_RGB: 0x80C8, + BLEND_SRC_RGB: 0x80C9, + BLEND_DST_ALPHA: 0x80CA, + BLEND_SRC_ALPHA: 0x80CB, + CONSTANT_COLOR: 0x8001, + ONE_MINUS_CONSTANT_COLOR: 0x8002, + CONSTANT_ALPHA: 0x8003, + ONE_MINUS_CONSTANT_ALPHA: 0x8004, + BLEND_COLOR: 0x8005, + ARRAY_BUFFER: 0x8892, + ELEMENT_ARRAY_BUFFER: 0x8893, + ARRAY_BUFFER_BINDING: 0x8894, + ELEMENT_ARRAY_BUFFER_BINDING: 0x8895, + STREAM_DRAW: 0x88E0, + STATIC_DRAW: 0x88E4, + DYNAMIC_DRAW: 0x88E8, + BUFFER_SIZE: 0x8764, + BUFFER_USAGE: 0x8765, + CURRENT_VERTEX_ATTRIB: 0x8626, + FRONT: 0x0404, + BACK: 0x0405, + FRONT_AND_BACK: 0x0408, + CULL_FACE: 0x0B44, + BLEND: 0x0BE2, + DITHER: 0x0BD0, + STENCIL_TEST: 0x0B90, + DEPTH_TEST: 0x0B71, + SCISSOR_TEST: 0x0C11, + POLYGON_OFFSET_FILL: 0x8037, + SAMPLE_ALPHA_TO_COVERAGE: 0x809E, + SAMPLE_COVERAGE: 0x80A0, + NO_ERROR: 0, + INVALID_ENUM: 0x0500, + INVALID_VALUE: 0x0501, + INVALID_OPERATION: 0x0502, + OUT_OF_MEMORY: 0x0505, + CW: 0x0900, + CCW: 0x0901, + LINE_WIDTH: 0x0B21, + ALIASED_POINT_SIZE_RANGE: 0x846D, + ALIASED_LINE_WIDTH_RANGE: 0x846E, + CULL_FACE_MODE: 0x0B45, + FRONT_FACE: 0x0B46, + DEPTH_RANGE: 0x0B70, + DEPTH_WRITEMASK: 0x0B72, + DEPTH_CLEAR_VALUE: 0x0B73, + DEPTH_FUNC: 0x0B74, + STENCIL_CLEAR_VALUE: 0x0B91, + STENCIL_FUNC: 0x0B92, + STENCIL_FAIL: 0x0B94, + STENCIL_PASS_DEPTH_FAIL: 0x0B95, + STENCIL_PASS_DEPTH_PASS: 0x0B96, + STENCIL_REF: 0x0B97, + STENCIL_VALUE_MASK: 0x0B93, + STENCIL_WRITEMASK: 0x0B98, + STENCIL_BACK_FUNC: 0x8800, + STENCIL_BACK_FAIL: 0x8801, + STENCIL_BACK_PASS_DEPTH_FAIL: 0x8802, + STENCIL_BACK_PASS_DEPTH_PASS: 0x8803, + STENCIL_BACK_REF: 0x8CA3, + STENCIL_BACK_VALUE_MASK: 0x8CA4, + STENCIL_BACK_WRITEMASK: 0x8CA5, + VIEWPORT: 0x0BA2, + SCISSOR_BOX: 0x0C10, + COLOR_CLEAR_VALUE: 0x0C22, + COLOR_WRITEMASK: 0x0C23, + UNPACK_ALIGNMENT: 0x0CF5, + PACK_ALIGNMENT: 0x0D05, + MAX_TEXTURE_SIZE: 0x0D33, + MAX_VIEWPORT_DIMS: 0x0D3A, + SUBPIXEL_BITS: 0x0D50, + RED_BITS: 0x0D52, + GREEN_BITS: 0x0D53, + BLUE_BITS: 0x0D54, + ALPHA_BITS: 0x0D55, + DEPTH_BITS: 0x0D56, + STENCIL_BITS: 0x0D57, + POLYGON_OFFSET_UNITS: 0x2A00, + POLYGON_OFFSET_FACTOR: 0x8038, + TEXTURE_BINDING_2D: 0x8069, + SAMPLE_BUFFERS: 0x80A8, + SAMPLES: 0x80A9, + RGBA8: 0x8058, + SAMPLE_COVERAGE_VALUE: 0x80AA, + SAMPLE_COVERAGE_INVERT: 0x80AB, + COMPRESSED_TEXTURE_FORMATS: 0x86A3, + DONT_CARE: 0x1100, + FASTEST: 0x1101, + NICEST: 0x1102, + GENERATE_MIPMAP_HINT: 0x8192, + BYTE: 0x1400, + UNSIGNED_BYTE: 0x1401, + SHORT: 0x1402, + UNSIGNED_SHORT: 0x1403, + INT: 0x1404, + UNSIGNED_INT: 0x1405, + FLOAT: 0x1406, + DEPTH_COMPONENT: 0x1902, + ALPHA: 0x1906, + RGB: 0x1907, + RGBA: 0x1908, + LUMINANCE: 0x1909, + LUMINANCE_ALPHA: 0x190A, + UNSIGNED_SHORT_4_4_4_4: 0x8033, + UNSIGNED_SHORT_5_5_5_1: 0x8034, + UNSIGNED_SHORT_5_6_5: 0x8363, + FRAGMENT_SHADER: 0x8B30, + VERTEX_SHADER: 0x8B31, + MAX_VERTEX_ATTRIBS: 0x8869, + MAX_VERTEX_UNIFORM_VECTORS: 0x8DFB, + MAX_VARYING_VECTORS: 0x8DFC, + MAX_COMBINED_TEXTURE_IMAGE_UNITS: 0x8B4D, + MAX_VERTEX_TEXTURE_IMAGE_UNITS: 0x8B4C, + MAX_TEXTURE_IMAGE_UNITS: 0x8872, + MAX_FRAGMENT_UNIFORM_VECTORS: 0x8DFD, + SHADER_TYPE: 0x8B4F, + DELETE_STATUS: 0x8B80, + LINK_STATUS: 0x8B82, + VALIDATE_STATUS: 0x8B83, + ATTACHED_SHADERS: 0x8B85, + ACTIVE_UNIFORMS: 0x8B86, + ACTIVE_ATTRIBUTES: 0x8B89, + SHADING_LANGUAGE_VERSION: 0x8B8C, + CURRENT_PROGRAM: 0x8B8D, + NEVER: 0x0200, + LESS: 0x0201, + EQUAL: 0x0202, + LEQUAL: 0x0203, + GREATER: 0x0204, + NOTEQUAL: 0x0205, + GEQUAL: 0x0206, + ALWAYS: 0x0207, + KEEP: 0x1E00, + REPLACE: 0x1E01, + INCR: 0x1E02, + DECR: 0x1E03, + INVERT: 0x150A, + INCR_WRAP: 0x8507, + DECR_WRAP: 0x8508, + VENDOR: 0x1F00, + RENDERER: 0x1F01, + VERSION: 0x1F02, + NEAREST: 0x2600, + LINEAR: 0x2601, + NEAREST_MIPMAP_NEAREST: 0x2700, + LINEAR_MIPMAP_NEAREST: 0x2701, + NEAREST_MIPMAP_LINEAR: 0x2702, + LINEAR_MIPMAP_LINEAR: 0x2703, + TEXTURE_MAG_FILTER: 0x2800, + TEXTURE_MIN_FILTER: 0x2801, + TEXTURE_WRAP_S: 0x2802, + TEXTURE_WRAP_T: 0x2803, + TEXTURE_2D: 0x0DE1, + TEXTURE: 0x1702, + TEXTURE_CUBE_MAP: 0x8513, + TEXTURE_BINDING_CUBE_MAP: 0x8514, + TEXTURE_CUBE_MAP_POSITIVE_X: 0x8515, + TEXTURE_CUBE_MAP_NEGATIVE_X: 0x8516, + TEXTURE_CUBE_MAP_POSITIVE_Y: 0x8517, + TEXTURE_CUBE_MAP_NEGATIVE_Y: 0x8518, + TEXTURE_CUBE_MAP_POSITIVE_Z: 0x8519, + TEXTURE_CUBE_MAP_NEGATIVE_Z: 0x851A, + MAX_CUBE_MAP_TEXTURE_SIZE: 0x851C, + TEXTURE0: 0x84C0, + TEXTURE1: 0x84C1, + TEXTURE2: 0x84C2, + TEXTURE3: 0x84C3, + TEXTURE4: 0x84C4, + TEXTURE5: 0x84C5, + TEXTURE6: 0x84C6, + TEXTURE7: 0x84C7, + TEXTURE8: 0x84C8, + TEXTURE9: 0x84C9, + TEXTURE10: 0x84CA, + TEXTURE11: 0x84CB, + TEXTURE12: 0x84CC, + TEXTURE13: 0x84CD, + TEXTURE14: 0x84CE, + TEXTURE15: 0x84CF, + TEXTURE16: 0x84D0, + TEXTURE17: 0x84D1, + TEXTURE18: 0x84D2, + TEXTURE19: 0x84D3, + TEXTURE20: 0x84D4, + TEXTURE21: 0x84D5, + TEXTURE22: 0x84D6, + TEXTURE23: 0x84D7, + TEXTURE24: 0x84D8, + TEXTURE25: 0x84D9, + TEXTURE26: 0x84DA, + TEXTURE27: 0x84DB, + TEXTURE28: 0x84DC, + TEXTURE29: 0x84DD, + TEXTURE30: 0x84DE, + TEXTURE31: 0x84DF, + ACTIVE_TEXTURE: 0x84E0, + REPEAT: 0x2901, + CLAMP_TO_EDGE: 0x812F, + MIRRORED_REPEAT: 0x8370, + FLOAT_VEC2: 0x8B50, + FLOAT_VEC3: 0x8B51, + FLOAT_VEC4: 0x8B52, + INT_VEC2: 0x8B53, + INT_VEC3: 0x8B54, + INT_VEC4: 0x8B55, + BOOL: 0x8B56, + BOOL_VEC2: 0x8B57, + BOOL_VEC3: 0x8B58, + BOOL_VEC4: 0x8B59, + FLOAT_MAT2: 0x8B5A, + FLOAT_MAT3: 0x8B5B, + FLOAT_MAT4: 0x8B5C, + SAMPLER_2D: 0x8B5E, + SAMPLER_CUBE: 0x8B60, + VERTEX_ATTRIB_ARRAY_ENABLED: 0x8622, + VERTEX_ATTRIB_ARRAY_SIZE: 0x8623, + VERTEX_ATTRIB_ARRAY_STRIDE: 0x8624, + VERTEX_ATTRIB_ARRAY_TYPE: 0x8625, + VERTEX_ATTRIB_ARRAY_NORMALIZED: 0x886A, + VERTEX_ATTRIB_ARRAY_POINTER: 0x8645, + VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: 0x889F, + IMPLEMENTATION_COLOR_READ_TYPE: 0x8B9A, + IMPLEMENTATION_COLOR_READ_FORMAT: 0x8B9B, + COMPILE_STATUS: 0x8B81, + LOW_FLOAT: 0x8DF0, + MEDIUM_FLOAT: 0x8DF1, + HIGH_FLOAT: 0x8DF2, + LOW_INT: 0x8DF3, + MEDIUM_INT: 0x8DF4, + HIGH_INT: 0x8DF5, + FRAMEBUFFER: 0x8D40, + RENDERBUFFER: 0x8D41, + RGBA4: 0x8056, + RGB5_A1: 0x8057, + RGB565: 0x8D62, + DEPTH_COMPONENT16: 0x81A5, + STENCIL_INDEX8: 0x8D48, + DEPTH_STENCIL: 0x84F9, + RENDERBUFFER_WIDTH: 0x8D42, + RENDERBUFFER_HEIGHT: 0x8D43, + RENDERBUFFER_INTERNAL_FORMAT: 0x8D44, + RENDERBUFFER_RED_SIZE: 0x8D50, + RENDERBUFFER_GREEN_SIZE: 0x8D51, + RENDERBUFFER_BLUE_SIZE: 0x8D52, + RENDERBUFFER_ALPHA_SIZE: 0x8D53, + RENDERBUFFER_DEPTH_SIZE: 0x8D54, + RENDERBUFFER_STENCIL_SIZE: 0x8D55, + FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: 0x8CD0, + FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: 0x8CD1, + FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: 0x8CD2, + FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: 0x8CD3, + COLOR_ATTACHMENT0: 0x8CE0, + DEPTH_ATTACHMENT: 0x8D00, + STENCIL_ATTACHMENT: 0x8D20, + DEPTH_STENCIL_ATTACHMENT: 0x821A, + NONE: 0, + FRAMEBUFFER_COMPLETE: 0x8CD5, + FRAMEBUFFER_INCOMPLETE_ATTACHMENT: 0x8CD6, + FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: 0x8CD7, + FRAMEBUFFER_INCOMPLETE_DIMENSIONS: 0x8CD9, + FRAMEBUFFER_UNSUPPORTED: 0x8CDD, + FRAMEBUFFER_BINDING: 0x8CA6, + RENDERBUFFER_BINDING: 0x8CA7, + MAX_RENDERBUFFER_SIZE: 0x84E8, + INVALID_FRAMEBUFFER_OPERATION: 0x0506, + UNPACK_FLIP_Y_WEBGL: 0x9240, + UNPACK_PREMULTIPLY_ALPHA_WEBGL: 0x9241, + CONTEXT_LOST_WEBGL: 0x9242, + UNPACK_COLORSPACE_CONVERSION_WEBGL: 0x9243, + BROWSER_DEFAULT_WEBGL: 0x9244, + TEXTURE_MAX_LOD: 0x813B, + TEXTURE_BASE_LEVEL: 0x813C, + TEXTURE_IMMUTABLE_FORMAT: 0x912F, + UNIFORM_BLOCK_BINDING: 0x8A3F, + UNIFORM_BLOCK_DATA_SIZE: 0x8A40, + UNIFORM_BLOCK_ACTIVE_UNIFORMS: 0x8A42, + UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES: 0x8A43, + UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER: 0x8A44, + UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER: 0x8A46, + RED: 0x1903, + PIXEL_UNPACK_BUFFER: 0x88EC, + RGB8: 0x8051, + R16F: 0x822D, + COPY_WRITE_BUFFER: 0x8F37, + TEXTURE_3D: 0x806F, + COMPRESSED_R11_EAC: 0x9270, + COPY_READ_BUFFER: 0x8F36, + TRANSFORM_FEEDBACK_BUFFER: 0x8C8E, + TRANSFORM_FEEDBACK_BUFFER_BINDING: 0x8C8F, + TRANSFORM_FEEDBACK_BUFFER_SIZE: 0x8C85, + TRANSFORM_FEEDBACK_BUFFER_START: 0x8C84, + UNIFORM_BUFFER_BINDING: 0x8A28, + UNIFORM_BUFFER_SIZE: 0x8A2A, + UNIFORM_BUFFER_START: 0x8A29, + DYNAMIC_READ: 0x88E9, + READ_FRAMEBUFFER: 0x8CA8, + COLOR_ATTACHMENT1: 0x8CE1, + INTERLEAVED_ATTRIBS: 0x8C8C, + UNIFORM_OFFSET: 0x8A3B, + UNIFORM_TYPE: 0x8A37, + UNIFORM_SIZE: 0x8A38, + UNIFORM_BLOCK_INDEX: 0x8A3A, + UNIFORM_ARRAY_STRIDE: 0x8A3C, + UNIFORM_MATRIX_STRIDE: 0x8A3D, + UNIFORM_IS_ROW_MAJOR: 0x8A3E, + TEXTURE_MAX_ANISOTROPY_EXT: 0x84FE + } + + // 顶点着色器程序 + var VSHADER_SOURCE = + 'attribute vec4 a_Position;\n' + // attribute variable + 'attribute vec4 a_Color;\n' + + 'varying vec4 v_Color;\n' + + 'void main() {\n' + + ' gl_Position = a_Position;\n' + // Set the vertex coordinates of the point + ' v_Color = a_Color;\n' + + '}\n'; + + // 片元着色器程序 + var FSHADER_SOURCE = + 'precision mediump float;\n' + + 'varying vec4 v_Color;\n' + + 'void main() {\n' + + ' gl_FragColor = v_Color;\n' + + '}\n'; + + function initVertexBuffers(gl) { + // 顶点坐标和颜色 + var verticesColors = new Float32Array([ + 0.0, -0.5, 1.0, 0.0, 0.0, + -0.5, -0.8, 0.0, 1.0, 0.0, + 0.5, -0.8, 0.0, 0.0, 1.0, + ]); + + var n = 3; // 点的个数 + var FSIZE = verticesColors.BYTES_PER_ELEMENT; //数组中每个元素的字节数 + + // 创建缓冲区对象 + var vertexBuffer = gl.createBuffer(); + if (!vertexBuffer) { + console.log('Failed to create the buffer object'); + return -1; + } + + // 将缓冲区对象绑定到目标 + gl.bindBuffer(gl.ARRAY_BUFFER, vertexBuffer); + // 向缓冲区对象写入数据 + gl.bufferData(gl.ARRAY_BUFFER, verticesColors.buffer, gl.STATIC_DRAW); + + //获取着色器中attribute变量a_Position的地址 + var a_Position = gl.getAttribLocation(gl.program, 'a_Position'); + if (a_Position < 0) { + console.log('Failed to get the storage location of a_Position'); + return -1; + } + // 将缓冲区对象分配给a_Position变量 + gl.vertexAttribPointer(a_Position, 2, gl.FLOAT, false, 5 * FSIZE, 0); + + // 连接a_Position变量与分配给它的缓冲区对象 + gl.enableVertexAttribArray(a_Position); + + //获取着色器中attribute变量a_Color的地址 + var a_Color = gl.getAttribLocation(gl.program, 'a_Color'); + if (a_Color < 0) { + console.log('Failed to get the storage location of a_Color'); + return -1; + } + // 将缓冲区对象分配给a_Color变量 + gl.vertexAttribPointer(a_Color, 3, gl.FLOAT, false, FSIZE * 5, FSIZE * 2); + + // 连接a_Color变量与分配给它的缓冲区对象 + gl.enableVertexAttribArray(a_Color); + + // 解除绑定 + gl.bindBuffer(gl.ARRAY_BUFFER, null); + + return n; + } + + /** + * Creates a program object and makes it as the current object. + * @param gl Indicates the WebGL context. + * @param vshader Indicates a vertex shader program (string). + * @param fshader Indicates a fragment shader program (string). + * @return Returns true if the WebGLProgram object was created and successfully made as the current object; returns false otherwise. + */ + function initShaders(gl, vshader, fshader) { + var program = createProgram(gl, vshader, fshader); + console.log("======createProgram program: " + program); + + if (!program) { + console.log('Failed to create program'); + return false; + } + gl.useProgram(program); + gl.program = program; + + return true; + } + + /** + * Creates a linked program object. + * @param gl Indicates the WebGL context. + * @param vshader Indicates a vertex shader program (string). + * @param fshader Indicates a fragment shader program (string). + * @return Returns the created program object if the operation is successful; returns null otherwise. + */ + function createProgram(gl, vshader, fshader) { + console.log("======createProgram start======"); + // Create shader object + var vertexShader = loadShader(gl, gl.VERTEX_SHADER, vshader); + console.log("======vertexShader: " + vertexShader); + var fragmentShader = loadShader(gl, gl.FRAGMENT_SHADER, fshader); + if (!vertexShader || !fragmentShader) { + return null; + } + + // Create a program object. + var program = gl.createProgram(); + console.log("======createProgram program: " + program); + + if (!program) { + return null; + } + + // Attach the shader objects. + gl.attachShader(program, vertexShader); + gl.attachShader(program, fragmentShader); + + // Link the program object. + gl.linkProgram(program); + + // Check the result of linking. + var linked = gl.getProgramParameter(program, 0x8B82); + console.log("======getProgramParameter linked: " + linked); + + if (!linked) { + var error = gl.getProgramInfoLog(program); + console.log('Failed to link the program: ' + error); + gl.deleteProgram(program); + gl.deleteShader(fragmentShader); + gl.deleteShader(vertexShader); + return null; + } + return program; + } + + /** + * Creates a shader object. + * @param gl Indicates the WebGL context. + * @param type Indicates the type of the shader object to be created. + * @param source Indicates the shader program (string). + * @return Returns the created shader object if the operation is successful; returns false otherwise. + */ + function loadShader(gl, type, source) { + console.log("======into loadShader===="); + // Create shader object + var shader = gl.createShader(type); + if (shader == null) { + console.log('Failed to create the shader.'); + return null; + } + + // Set the shader program. + gl.shaderSource(shader, source); + + // Compile the shader. + gl.compileShader(shader); + + // Check the result of compilation. + var compiled = gl.getShaderParameter(shader, gl.COMPILE_STATUS); + if (!compiled) { + var error = gl.getShaderInfoLog(shader); + console.log('Failed to compile the shader: ' + error); + gl.deleteShader(shader); + return null; + } + + return shader; + } + + export default { + data: { + title: "DEMO BY TEAMOL", + fit:"cover", + fits: ["cover", "contain", "fill", "none", "scale-down"] + } + ,onInit() { + this.title = this.$t('strings.world'); + } + ,BtnColorTriangle() { + // 获取canvas元素 + const el = this.$refs.canvas1; + // 获取webgl上下文 + var gl = el.getContext('webgl'); + + if (!gl) { + console.log('Failed to get the rendering context for WebGL'); + return; + } + + // 初始化着色器 + if (!initShaders(gl, VSHADER_SOURCE, FSHADER_SOURCE)) { + console.log('Failed to intialize shaders.'); + return; + } + + // 设置顶点位置 + var n = initVertexBuffers(gl); + if (n < 0) { + console.log('Failed to set the positions of the vertices'); + return; + } + + // 指定清空的颜色 + gl.clearColor(0.0, 0.0, 0.0, 1.0); + + // 清空 + gl.clear(gl.COLOR_BUFFER_BIT); + + // 绘制三角形 + gl.drawArrays(gl.TRIANGLES, 0, n); + + //清buffer + gl.flush(); + } + } + ``` + + +**图2** 点击按钮绘制彩色三角形的效果图 + +![zh-cn_image_0000001192429306](figures/zh-cn_image_0000001192429306.gif) diff --git a/zh-cn/application-dev/webgl/webgl-overview.md b/zh-cn/application-dev/webgl/webgl-overview.md new file mode 100644 index 0000000000000000000000000000000000000000..9f6add6c7eb67fd1418fdd6a72c83a2adb27c39c --- /dev/null +++ b/zh-cn/application-dev/webgl/webgl-overview.md @@ -0,0 +1,47 @@ +# 概述 + +WebGL的全称为Web Graphic Library(网页图形库),主要用于交互式渲染2D图形和3D图形。目前OpenHarmony中使用的WebGL是基于OpenGL裁剪的OpenGL ES,可以在HTML5的canvas元素对象中使用,无需使用插件,支持跨平台。WebGL程序是由JavaScript代码组成的,其中使用的API可以利用用户设备提供的GPU硬件完成图形渲染和加速。 + + +## 基本概念 + + +### 着色器 + +可以理解为运行在显卡中的指令和数据。在WebGL中,着色器是用OpenGL ES着色语言(GLSL)编写的。 + +完整的着色器包括顶点着色器和片元着色器。顶点着色器和片元着色器的交互则涉及到图片光栅化。 + +- 顶点着色器:最基本的任务是接收三维空间中点的坐标,将其处理为二维空间中的坐标并输出。 + +- 片元着色器:最基本的任务是对需要处理的屏幕上的每个像素输出一个颜色值。 + +- 图片光栅化:将顶点着色器输出的二维空间中的点坐标,转化为需要处理的像素并传递给片元着色器的过程。 + + +### 缓冲区 + +驻存于内存中的JavaScript对象,存储着即将推送到着色器中的attribute对象。 + + +### 着色器程序 + +将缓冲区中的数据推送到着色器中还需涉及“着色器程序”,一个负责关联着色器和缓冲区的JavaScript对象。一个WebGLProgram 对象由两个编译过后的 WebGLShader 组成,即顶点着色器和片段着色器(均由 GLSL 语言所写)。 + + +## 运作机制 + +**图1** WebGL运作机制 + +![zh-cn_image_0000001238544451](figures/zh-cn_image_0000001238544451.png) + + +- 应用前端HTML5绘制界面组件。 + +- Native API完成前端JavaScript与C++代码交互。 + +- QuickJS与V8为图形框架,为WebGL模块提供绘制对象Surface。 + +- WebGL模块对外暴露OpenGL ES的GPU绘制接口。 + +- 中间接口层EGL(Embedded Graphics Library)完成不同平台的适配。 diff --git a/zh-cn/device-dev/driver/driver-hdf-manage.md b/zh-cn/device-dev/driver/driver-hdf-manage.md index d5cef9325b4f6a86f858e41d65b22fe0068b4259..9b591965f4bb551eaac376cbc622aa92ef3c4dd1 100644 --- a/zh-cn/device-dev/driver/driver-hdf-manage.md +++ b/zh-cn/device-dev/driver/driver-hdf-manage.md @@ -347,8 +347,17 @@ root { node1 { attributes; } +node2 { + attr_1 = &root.node1; +} +``` +或 +``` node2 { + node1 { + attributes; + } attr_1 = &node1; } ``` diff --git a/zh-cn/device-dev/driver/driver-peripherals-sensor-des.md b/zh-cn/device-dev/driver/driver-peripherals-sensor-des.md index 90ddbe4e79575b84bbf50802b4b5b5a6bd9de6fa..583fb5b8a28785b435f611c9f61dfa218b0e1e9a 100755 --- a/zh-cn/device-dev/driver/driver-peripherals-sensor-des.md +++ b/zh-cn/device-dev/driver/driver-peripherals-sensor-des.md @@ -15,7 +15,7 @@ ### 功能简介 -Sensor设备作为外接设备重要组成模块,通过Sensor驱动模型屏蔽硬件器件差异,为上层Sensor服务系统提供稳定的Sensor基础能力接口,包括Sensor列表查询、Sensor启停、Sensor订阅及取消订阅,Sensor参数配置等功能;Sensor设备驱动的开发是基于HDF驱动框架基础上,结合操作系统适配层(OSAL)和平台驱动接口(比如I2C/SPI/UART总线等平台资源)能力,屏蔽不同操作系统和平台总线资源差异,实现Sensor驱动“一次开发,多系统部署”的目标。Sensor驱动模型如[图1](#fig10451455446)所示: +Sensor驱动模型屏蔽硬件器件差异,为上层Sensor服务系统提供稳定的Sensor基础能力接口,包括Sensor列表查询、Sensor启停、Sensor订阅及取消订阅,Sensor参数配置等功能;Sensor设备驱动的开发是基于HDF驱动框架基础上,结合操作系统适配层(OSAL)和平台驱动接口(比如I2C/SPI/UART总线等平台资源)能力,屏蔽不同操作系统和平台总线资源差异,实现Sensor驱动“一次开发,多系统部署”的目标。Sensor驱动模型如[图1](#fig10451455446)所示: **图 1** Sensor驱动模型图 ![Sensor驱动模型图](figures/Sensor%E9%A9%B1%E5%8A%A8%E6%A8%A1%E5%9E%8B%E5%9B%BE.png) @@ -24,9 +24,9 @@ Sensor设备作为外接设备重要组成模块,通过Sensor驱动模型屏 通过介绍Sensor驱动模型的加载以及运行流程,对模型内部关键组件以及关联组件之间的关系进行了划分,整体加载流程如[图2](#Sensor驱动模型图)所示: -**图 2** Sensor驱动模型运行图 +**图 2** Sensor驱动运行图 -![Sensor驱动模型运行图](figures/Sensor%E9%A9%B1%E5%8A%A8%E6%A8%A1%E5%9E%8B%E8%BF%90%E8%A1%8C%E5%9B%BE.png) +![Sensor驱动运行图](figures/Sensor%E9%A9%B1%E5%8A%A8%E8%BF%90%E8%A1%8C%E5%9B%BE.png) Sensor驱动模型以标准系统Hi3516DV300产品中的加速度传感器驱动为例,介绍整个驱动加载及运行流程: @@ -249,6 +249,7 @@ Sensor驱动模型要求驱动开发者实现的接口功能,参考[表3](#tab + 接口实现参考[开发实例](#section257750691)章节。 ### 开发步骤 @@ -438,7 +439,7 @@ Sensor驱动模型要求驱动开发者实现的接口功能,参考[表3](#tab return HDF_SUCCESS; } - /* 挂载加速度计传感器驱动归一化的接口函数 */ + /* 注册加速度计传感器驱动归一化的接口函数 */ static int32_t InitAccelOps(struct SensorCfgData *config, struct SensorDeviceInfo *deviceInfo) { CHECK_NULL_PTR_RETURN_VALUE(config, HDF_ERR_INVALID_PARAM); @@ -513,7 +514,7 @@ Sensor驱动模型要求驱动开发者实现的接口功能,参考[表3](#tab return drvData->accelCfg; …… } - /* 加速度计传感器驱动初始化入口函数,主要功能为对传感器私有数据的结构体对象进行初始化,传感器HCS数据配置对象空间分配,传感器HCS数据配置初始化入口函数调用,传感器设备探测是否在位功能,传感器数据上报定时器创建,传感器归一化接口挂载,传感器设备注册功能 */ + /* 加速度计传感器驱动初始化入口函数,主要功能为对传感器私有数据的结构体对象进行初始化,传感器HCS数据配置对象空间分配,传感器HCS数据配置初始化入口函数调用,传感器设备探测是否在位功能,传感器数据上报定时器创建,传感器归一化接口注册,传感器设备注册功能 */ int32_t InitAccelDriver(struct HdfDeviceObject *device) { int32_t AccelInitDriver(struct HdfDeviceObject *device) @@ -530,7 +531,7 @@ Sensor驱动模型要求驱动开发者实现的接口功能,参考[表3](#tab HDF_LOGE("%s: Malloc accel config data failed", __func__); return HDF_FAILURE; } - /* 挂接寄存器分组信息 */ + /* 注册寄存器分组信息 */ drvData->accelCfg->regCfgGroup = &g_regCfgGroup[0]; …… return HDF_SUCCESS; @@ -557,7 +558,7 @@ Sensor驱动模型要求驱动开发者实现的接口功能,参考[表3](#tab 4. 加速度传感器差异化驱动私有HCS配置实现 - - 为了方便开发者使用传感器HCS私有配置,在sensor_common.hcs里面定义通用的传感器配置模板,加速度传感器直接引用模板修改对应的属性值即可。 + - 为了方便开发者使用传感器HCS私有配置,在sensor_common.hcs里面定义通用的传感器配置模板。 ``` accel sensor common config template @@ -595,7 +596,7 @@ Sensor驱动模型要求驱动开发者实现的接口功能,参考[表3](#tab } ``` - - 开发者使用传感器HCS配置,在accel_config.hcs里面配置通用的传感器模板,加速度传感器直接引用模板并修改对应的属性值,在此基础上新增寄存器配置,生成accel_bmi160_config.hcs配置文件。 + - 开发者配置accel_bmi160_config.hcs文件时,引用加速度传感器的模板,并根据需要修改模板中继承的字段。如果需要新增寄存器配置字段,在配置传感器HCS后扩展。 ``` /* 根据不同器件硬件差异,修改模板配置,不修改的就会默认采用模板配置 */ @@ -612,7 +613,7 @@ Sensor驱动模型要求驱动开发者实现的接口功能,参考[表3](#tab busType = 0; // 0:i2c 1:spi busNum = 6; busAddr = 0x68; - regWidth = 1; // 1btye + regWidth = 1; // 1 btye } sensorIdAttr :: sensorIdInfo{ chipName = "bmi160"; @@ -711,7 +712,7 @@ Sensor驱动模型要求驱动开发者实现的接口功能,参考[表3](#tab HDF_LOGE("%s: Register BMI160 accel failed", __func__); return HDF_FAILURE; } - /* 初始化器件配置 *、 + /* 初始化器件配置 */ ret = InitBmi160(drvData->sensorCfg); if (ret != HDF_SUCCESS) { HDF_LOGE("%s: Init BMI160 accel failed", __func__); diff --git a/zh-cn/device-dev/driver/driver-peripherals-vibrator-des.md b/zh-cn/device-dev/driver/driver-peripherals-vibrator-des.md index b0be50aa6829857bc649f695c705936c0aa65889..7569ab015a53a17eac091cd579c50b631eb4aebe 100755 --- a/zh-cn/device-dev/driver/driver-peripherals-vibrator-des.md +++ b/zh-cn/device-dev/driver/driver-peripherals-vibrator-des.md @@ -11,11 +11,11 @@ ### 功能简介 -为了快速开发传感器驱动,基于HDF(Hardware Driver Foundation)驱动框架开发了马达驱动模型。马达设备模型抽象,屏蔽设备驱动与系统交互的实现,为硬件服务层提供统一稳定的驱动接口能力,为驱动开发者提供开放的接口实现和抽象的配置接口能力。用于不同操作系统马达设备部件的部署指导和马达设备部件驱动的开发。马达驱动模型如[图1](马达驱动模型图)所示: +为了快速开发传感器驱动,基于HDF(Hardware Driver Foundation)驱动框架开发了马达驱动模型。马达驱动模型,屏蔽设备驱动与系统交互的实现,为硬件服务层提供统一稳定的驱动接口能力,为驱动开发者提供开放的接口和解析接口的能力。用于不同操作系统马达设备部件的部署指导和马达设备部件驱动的开发。马达驱动模型如[图1](马达驱动模型图)所示: **图 1** 马达驱动模型图 -![Vibrator驱动模型](figures/Vibrator%E9%A9%B1%E5%8A%A8%E6%A8%A1%E5%9E%8B.png) +![Vibrator驱动模型图](figures/Vibrator%E9%A9%B1%E5%8A%A8%E6%A8%A1%E5%9E%8B%E5%9B%BE.png) ### 运作机制 @@ -28,12 +28,12 @@ 马达驱动模型以标准系统Hi3516DV300产品为例,介绍整个驱动加载及运行流程: 1. 从device info HCS 的Vibrator Host读取Vibrator管理配置信息。 -2. 解析Vibrator配置信息,并关联对应设备驱动。 +2. 解析Vibrator管理配置信息,并关联对应马达抽象驱动。 3. 从linear_vibrator_config HCS读取Vibrator数据配置信息。 4. 解析Vibrator数据配置信息,并关联对应Haptic驱动。 5. 客户端下发Vibrator Stub控制到服务端。 -6. 服务端调用Vibrator Stub控制。 -7. 启动马达抽象驱动接口。 +6. Vibrator Stub控制调用马达服务。 +7. 初始化马达抽象驱动接口。 8. Haptic中起线程,解析效果模块。 9. Haptic调用马达抽象驱动中的Start接口。 10. 马达抽象驱动调用马达差异化驱动中的Start接口。 @@ -143,7 +143,7 @@ Vibrator驱动模型为上层马达硬件服务层提供稳定的马达控制能 } ``` - - 马达设备管理模块负责系统中马达器件接口发布,在系统启动过程中,HDF框架机制通过马达 Host里设备HCS配置信息,加载设备管理驱动。 + - 在系统启动过程中,HDF设备管理模块通过设备HCS配置信息,加载马达抽象驱动,并对外发布马达驱动接口。 ``` /* 马达设备HCS配置 */ @@ -167,7 +167,7 @@ Vibrator驱动模型为上层马达硬件服务层提供稳定的马达控制能 - 创建马达效果模型。 ``` - /* 创建马达效果模型,分配资源,解析马达HCS配置 */ + /* 创建马达效果模型,分配资源,解析马达效果HCS配置 */ int32_t CreateVibratorHaptic(struct HdfDeviceObject *device) { struct VibratorHapticData *hapticData = NULL; @@ -245,7 +245,7 @@ Vibrator驱动模型为上层马达硬件服务层提供稳定的马达控制能 config.cfgMode = VIBRATOR_MODE_ONCE; config.duration = duration; config.effect = NULL; - /* 据振动效果的模式创建 */ + /* 根据振动效果的模式创建定时器 */ ret = StartHaptic(&config); if (ret != HDF_SUCCESS) { HDF_LOGE("%s: start haptic fail!", __func__); @@ -302,7 +302,7 @@ Vibrator驱动模型为上层马达硬件服务层提供稳定的马达控制能 4. 马达驱动模型提供给开发者马达驱动差异化接口,开发者实现差异化接口。 - - 此接口在差异化器件驱动初始化成功时,注册差异实现接口,方便实现器件差异的驱动接口。 + - 在差异化器件驱动初始化成功时,注册差异实现接口,方便实现器件差异的驱动接口。 ``` /* 注册马达差异化实现接口 */ @@ -326,7 +326,7 @@ Vibrator驱动模型为上层马达硬件服务层提供稳定的马达控制能 - 马达驱动模型提供给开发者马达驱动差异化接口,具体实现如下: ``` - /* 按照指定持续时间触发马达线性驱动 */ + /* 按照指定持续时间触发线性马达的振动 */ static int32_t StartLinearVibrator() { int32_t ret; @@ -341,7 +341,7 @@ Vibrator驱动模型为上层马达硬件服务层提供稳定的马达控制能 return HDF_SUCCESS; } - /* 按照预置振动效果启动马达线性驱动 */ + /* 按照预置振动效果触发线性马达的振动 */ static int32_t StartEffectLinearVibrator(uint32_t effectType) { (void)effectType; @@ -349,7 +349,7 @@ Vibrator驱动模型为上层马达硬件服务层提供稳定的马达控制能 return HDF_SUCCESS; } - /* 按照指定的振动模式停止马达线性驱动 */ + /* 按照指定的振动模式停止线性马达的振动 */ static int32_t StopLinearVibrator() { int32_t ret; diff --git "a/zh-cn/device-dev/driver/figures/Sensor\351\251\261\345\212\250\346\250\241\345\236\213\350\277\220\350\241\214\345\233\276.png" "b/zh-cn/device-dev/driver/figures/Sensor\351\251\261\345\212\250\346\250\241\345\236\213\350\277\220\350\241\214\345\233\276.png" deleted file mode 100755 index 50db641d4d4b2927b4c52fe257c3b513f786cb68..0000000000000000000000000000000000000000 Binary files "a/zh-cn/device-dev/driver/figures/Sensor\351\251\261\345\212\250\346\250\241\345\236\213\350\277\220\350\241\214\345\233\276.png" and /dev/null differ diff --git "a/zh-cn/device-dev/driver/figures/Sensor\351\251\261\345\212\250\350\277\220\350\241\214\345\233\276.png" "b/zh-cn/device-dev/driver/figures/Sensor\351\251\261\345\212\250\350\277\220\350\241\214\345\233\276.png" new file mode 100755 index 0000000000000000000000000000000000000000..59a2a2b083fcd31291011a96fa092da2da38e99c Binary files /dev/null and "b/zh-cn/device-dev/driver/figures/Sensor\351\251\261\345\212\250\350\277\220\350\241\214\345\233\276.png" differ diff --git "a/zh-cn/device-dev/driver/figures/Vibrator\351\251\261\345\212\250\346\250\241\345\236\213.png" "b/zh-cn/device-dev/driver/figures/Vibrator\351\251\261\345\212\250\346\250\241\345\236\213.png" deleted file mode 100755 index e5d7b729af294e835406d2c1857a64b91eded48b..0000000000000000000000000000000000000000 Binary files "a/zh-cn/device-dev/driver/figures/Vibrator\351\251\261\345\212\250\346\250\241\345\236\213.png" and /dev/null differ diff --git "a/zh-cn/device-dev/driver/figures/Vibrator\351\251\261\345\212\250\346\250\241\345\236\213\345\233\276.png" "b/zh-cn/device-dev/driver/figures/Vibrator\351\251\261\345\212\250\346\250\241\345\236\213\345\233\276.png" new file mode 100755 index 0000000000000000000000000000000000000000..0ca568a95782e1bca7c91c6c3f94dd8da7b0ed83 Binary files /dev/null and "b/zh-cn/device-dev/driver/figures/Vibrator\351\251\261\345\212\250\346\250\241\345\236\213\345\233\276.png" differ diff --git "a/zh-cn/device-dev/driver/figures/Vibrator\351\251\261\345\212\250\350\277\220\350\241\214\345\233\276.png" "b/zh-cn/device-dev/driver/figures/Vibrator\351\251\261\345\212\250\350\277\220\350\241\214\345\233\276.png" index db30b9b7223918b0796f5abaa76c62999886fa42..458d1bc05fc75acf682043d4b6ec2bfe177a5f03 100755 Binary files "a/zh-cn/device-dev/driver/figures/Vibrator\351\251\261\345\212\250\350\277\220\350\241\214\345\233\276.png" and "b/zh-cn/device-dev/driver/figures/Vibrator\351\251\261\345\212\250\350\277\220\350\241\214\345\233\276.png" differ diff --git a/zh-cn/device-dev/security/Readme-CN.md b/zh-cn/device-dev/security/Readme-CN.md index 4c79f16371fde366048aa441e1b85e2325b523f5..75657542a9f5b42275fb1df9d8bd8b9e6a0825c6 100755 --- a/zh-cn/device-dev/security/Readme-CN.md +++ b/zh-cn/device-dev/security/Readme-CN.md @@ -3,3 +3,4 @@ - [隐私保护](security-privacy-protection.md) - [安全指南](security-guidelines-overall.md) +huks \ No newline at end of file diff --git a/zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-listening.md b/zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-listening.md index b8d97a3c403de045298a05cd965f3bb355a4c5ed..b42a258f2c716c1a1d5b36e337341547f89eef4b 100644 --- a/zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-listening.md +++ b/zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-listening.md @@ -27,8 +27,8 @@ HiSysEvent提供了跨进程订阅机制,开发者可以通过注册订阅接 | 接口名称 | 描述 | | -------- | --------- | -|int HiSysEventManager::AddEventListener(std::shared_ptr<HiSysEventSubscribeCallBackBase> listener, std::vector<ListenerRule>& rules)|接口功能:注册订阅HiSysEvent系统事件侦听对象,可设置规则订阅某些事件。

输入参数:
  • listener:订阅回调对象。
  • rules:事件订阅规则。
返回值:
  • 0:订阅成功,重复订阅。
  • 1:订阅成功,初次订阅。
  • 其他值:订阅失败。
| -|void HiSysEventManager::RemoveListener(std::shared_ptr<HiSysEventSubscribeCallBackBase> listener)|接口功能:移除订阅hisysevent系统事件侦听对象。

输入参数:
  • listener:订阅回调对象。
返回值:
  无。| +|bool HiSysEventManager::AddEventListener(std::shared_ptr<HiSysEventSubscribeCallBack> listener, std::vector<ListenerRule>& rules)|接口功能:注册订阅HiSysEvent系统事件侦听对象,可设置规则订阅某些事件。

输入参数:
  • listener:订阅回调对象。
  • rules:事件订阅规则。
返回值:
  • 0:订阅成功,重复订阅。
  • 1:订阅成功,初次订阅。
  • 其他值:订阅失败。
| +|bool HiSysEventManager::RemoveListener(std::shared_ptr<HiSysEventSubscribeCallBack> listener)|接口功能:移除订阅hisysevent系统事件侦听对象。

输入参数:
  • listener:订阅回调对象。
返回值:
  无。| **表 2** ListenerRule订阅规则对象 @@ -46,11 +46,11 @@ HiSysEvent提供了跨进程订阅机制,开发者可以通过注册订阅接 | PREFIX | 前缀匹配类型 | | REGULAR | 正则匹配类型 | -**表 4** HiSysEventSubscribeCallBackBase订阅对象 +**表 4** HiSysEventSubscribeCallBack订阅对象 | 接口名称 | 描述 | | -------- | --------- | -|void HiSysEventSubscribeCallBackBase::OnHandle(const std::string& domain, const std::string& eventName, const int eventType, const std::string& eventDetail)|接口功能:订阅事件的回调接口。

输入参数:
  • domain:事件所属领域。
  • eventName:事件的名称。
  • eventType:事件类型。
  • eventDetail:包含事件相关信息的字符串,以json的形式体现。
返回值:
  无。| +|void HiSysEventSubscribeCallBack::OnHandle(const std::string& domain, const std::string& eventName, const int eventType, const std::string& eventDetail)|接口功能:订阅事件的回调接口。

输入参数:
  • domain:事件所属领域。
  • eventName:事件的名称。
  • eventType:事件类型。
  • eventDetail:包含事件相关信息的字符串,以json的形式体现。
返回值:
  无。| ### 开发实例 @@ -64,13 +64,13 @@ HiSysEvent提供了跨进程订阅机制,开发者可以通过注册订阅接 #ifndef DEMO_LISTENER_H #define DEMO_LISTENER_H - #include "hisysevent_subscribe_callback_native.h" + #include "hisysevent_subscribe_callback.h" #include - class DemoListener : public OHOS::HiviewDFX::HiSysEventSubscribeCallBackNative { + class DemoListener : public OHOS::HiviewDFX::HiSysEventSubscribeCallBack { public: - explicit DemoListener() : HiSysEventSubscribeCallBackNative() {} + explicit DemoListener() : HiSysEventSubscribeCallBack() {} void OnHandle(const std::string& domain, const std::string& eventName, const int eventType, const std::string& eventDetail); virtual ~DemoListener() {} diff --git a/zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-query.md b/zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-query.md index 93a6fb09c64b33e67acb879662f240f500fa6dd3..426b6117382fc656a5d2d061c79aa8aa9c69813c 100644 --- a/zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-query.md +++ b/zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-query.md @@ -17,7 +17,7 @@ HiSysEvent提供了查询接口,支持开发者设置条件查询HiSysEvent事 | 接口名称 | 描述 | | -------- | --------- | -| bool HiSysEventManager::QueryHiSysEvent(struct QueryArg& queryArg, std::vector<struct QueryRule>& queryRules, std::shared_ptr<HiSysEventQueryCallBackBase> queryCallBack) | 接口功能:
  支持设置查询时间段,事件领域,事件名称等,查询满足条件的HiSysEvent事件。

输入参数:
  • queryArg:查询参数。
  • queryRules:事件过滤规则。
  • queryCallBack:查询接口回调对象。
返回值:
  • true:查询成功。
  • false:查询失败。
| +| bool HiSysEventManager::QueryHiSysEvent(struct QueryArg& queryArg, std::vector<struct QueryRule>& queryRules, std::shared_ptr<HiSysEventQueryCallBack> queryCallBack) | 接口功能:
  支持设置查询时间段,事件领域,事件名称等,查询满足条件的HiSysEvent事件。

输入参数:
  • queryArg:查询参数。
  • queryRules:事件过滤规则。
  • queryCallBack:查询接口回调对象。
返回值:
  • true:查询成功。
  • false:查询失败。
| **表 2** QueryArg查询参数对象 @@ -36,12 +36,12 @@ HiSysEvent提供了查询接口,支持开发者设置条件查询HiSysEvent事 | domain | string类型,用来标识查询规则对象的事件所属领域,如果传入的是空字符串,则默认事件领域字段匹配成功。 | | eventList | std::vector<std::string>类型,事件名称的列表,如果传入的是空字符串,则默认事件名称字段匹配成功。 | -**表 4** HiSysEventQueryCallBackBase查询回调对象 +**表 4** HiSysEventQueryCallBack查询回调对象 | 接口名称 | 描述 | | -------- | --------- | -| void HiSysEventQueryCallBackBase::OnQuery(const ::std::vector<std::string>& sysEvent, const ::std::vector<int64_t>& seq) | 接口功能:订阅事件查询中的回调。

输入参数:
  • sysEvent:返回事件集合。
  • seq:事件序列集合。
返回值:
  无。 | -| void HiSysEventQueryCallBackBase::OnComplete(int32_t reason, int32_t total) | 接口功能:订阅事件查询完成的回调。

输入参数:
  • reason:查询结束返回原因,目前默认是0。
  • total:本次查询总共返回的事件总数量。
返回值:
  无。 | +| void HiSysEventQueryCallBack::OnQuery(const ::std::vector<std::string>& sysEvent, const ::std::vector<int64_t>& seq) | 接口功能:订阅事件查询中的回调。

输入参数:
  • sysEvent:返回事件集合。
  • seq:事件序列集合。
返回值:
  无。 | +| void HiSysEventQueryCallBack::OnComplete(int32_t reason, int32_t total) | 接口功能:订阅事件查询完成的回调。

输入参数:
  • reason:查询结束返回原因,目前默认是0。
  • total:本次查询总共返回的事件总数量。
返回值:
  无。 | ### 开发实例 @@ -55,13 +55,13 @@ C++接口实例。 - 实现对应的查询回调接口: - void HiSysEventQueryCallBackBase::OnQuery\(const ::std::vector& sysEvent, const ::std::vector& seq\) + void HiSysEventQueryCallBack::OnQuery\(const ::std::vector& sysEvent, const ::std::vector& seq\) - void HiSysEventQueryCallBackBase::OnComplete\(int32\_t reason, int32\_t total\) + void HiSysEventQueryCallBack::OnComplete\(int32\_t reason, int32\_t total\) - 在相应的业务逻辑里面调用查询接口: - HiSysEventManager::QueryHiSysEvent\(struct QueryArg& queryArg, std::vector& queryRules, std::shared\_ptr queryCallBack\) + HiSysEventManager::QueryHiSysEvent\(struct QueryArg& queryArg, std::vector& queryRules, std::shared\_ptr queryCallBack\) ``` diff --git a/zh-cn/device-dev/subsystems/subsys-security-huks.md b/zh-cn/device-dev/subsystems/subsys-security-huks.md new file mode 100755 index 0000000000000000000000000000000000000000..4f0ee08a09481012c88f0dd009574e9412095714 --- /dev/null +++ b/zh-cn/device-dev/subsystems/subsys-security-huks.md @@ -0,0 +1,27 @@ +# HUKS概述 + +### 功能简介 + +HUKS(OpenHarmony Universal KeyStore)向应用提供密钥库能力,包括密钥管理及密钥的密码学操作等功能。HUKS所管理的密钥可以由应用导入或者由应用调用HUKS接口生成。 + +### 基本概念 + +- HUKS提供密钥管理功能,支持的主要操作包括:加密解密、签名验签、派生协商密钥、计算HMAC(Hash-based Message Authentication Code)。 +- HUKS涉及的算法主要有:AES加密解密、RSA加密解密、RSA签名验签、ECC签名验签、DSA签名验签、ED25519签名验签、PBKDF2派生、DH协商、ECDH协商、X25519协商等。 +- HUKS当前使用的算法库为OpenSSL和mbed TLS。 + +### 运作机制 + +HUKS对密钥的使用主要通过Init、Update、Finish操作来实现。 + +- **Iit操作**:读取密钥,并为其创建Session Id返回给调用者。 + +- **Udate操作**:根据Init操作获取的Session Id对数据进行分段update处理。 + +- **Fnish操作**:当所有待处理的数据均传入HUKS后,调用Finish操作完成最终数据处理,释放资源。 + + >![](../public_sys-resources/icon-notice.gif) **须知:当Init、Update、Finish操作中的任一阶段发生错误时,都需要调用Abort操作来终止密钥的使用。** + + +### 约束与限制 +不涉及。 \ No newline at end of file diff --git a/zh-cn/device-dev/subsystems/subsys-security.md b/zh-cn/device-dev/subsystems/subsys-security.md index ce8a509db3d350dbc9b93e14bf3dd0de63fac7ad..02f70cfb93218926c22ed4e7d3fd900916ed207d 100644 --- a/zh-cn/device-dev/subsystems/subsys-security.md +++ b/zh-cn/device-dev/subsystems/subsys-security.md @@ -9,3 +9,6 @@ - **[IPC通信鉴权开发指导](subsys-security-communicationverify.md)** - **[设备安全等级管理开发指导](subsys-security-devicesecuritylevel.md)** + +- **[密钥管理开发指导](subsys-security-huks.md)** + diff --git a/zh-cn/readme/figures/WindowManager.png b/zh-cn/readme/figures/WindowManager.png new file mode 100644 index 0000000000000000000000000000000000000000..f4f96ea5b71b1f58a604451681981a1e2c3d10d3 Binary files /dev/null and b/zh-cn/readme/figures/WindowManager.png differ diff --git "a/zh-cn/readme/\347\252\227\345\217\243\345\255\220\347\263\273\347\273\237.md" "b/zh-cn/readme/\347\252\227\345\217\243\345\255\220\347\263\273\347\273\237.md" new file mode 100644 index 0000000000000000000000000000000000000000..77182df54102070b645f388d8e247732f8fb169a --- /dev/null +++ "b/zh-cn/readme/\347\252\227\345\217\243\345\255\220\347\263\273\347\273\237.md" @@ -0,0 +1,62 @@ +# windowmanager + +- [简介](#简介) +- [目录](#目录) +- [约束](#约束) +- [接口说明](#接口说明) +- [相关仓](#相关仓) + +## 简介 + +**窗口子系统** 提供窗口管理和Display管理的基础能力,是系统图形界面显示所需的基础子系统 + +其主要的结构如下图所示: + +![窗口子系统架构图](./figures/WindowManager.png) + +- **Window Manager Client** + + 应用进程窗口管理接口层,提供窗口对对象抽象和窗口管理接口,对接原能力和UI框架。 + +- **Display Manager Client** + + 应用进程Display管理接口层,提供Display信息抽象和Display管理接口。 + +- **Window Manager Server** + + 窗口管理服务,提供窗口布局、Z序控制、窗口树结构、窗口拖拽、窗口快照等能力,并提供窗口布局和焦点窗口给多模输入 + +- **Display Manager Server** + + Display管理服务,提供Display信息、屏幕截图、屏幕亮灭和亮度处理控制,并处理Display与Screen映射关系 + +## 目录 +``` +foundation/windowmanager/ +├── dm # Dislplay Manager Client实现代码 +├── dmserver # Dislplay Manager Service实现代码 +├── interfaces # 对外接口存放目录 +│   ├── innerkits # native接口存放目录 +│   └── kits # js/napi接口存放目录 +├── resources # 框架使用资源文件存放目录 +├── sa_profile # 系统服务配置文件 +├── snapshot # 截屏命令行工具实现代码 +├── utils # 工具类存放目录 +├── wm # Window Manager Client实现代码 +├── wmserver # Window Manager Service实现代码 +``` + +## 约束 +- 语言版本 + - C++11或以上 + +## 接口说明 + +- [Window](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-window.md) +- [Display](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-display.md) + +## 相关仓 +- graphic_standard +- ace_ace_engine +- aafwk_standard +- multimodalinput_input \ No newline at end of file