未验证 提交 96eb872d 编写于 作者: O openharmony_ci 提交者: Gitee

!3316 Done! 更新3.1 ReleaseNotes

Merge pull request !3316 from wusongqing/TR3263
...@@ -16,7 +16,7 @@ This repository stores device and application development documents provided by ...@@ -16,7 +16,7 @@ This repository stores device and application development documents provided by
- master: the latest version. - master: the latest version.
- OpenHarmony 3.1 Beta. [Learn more](en/release-notes/OpenHarmony-v3.1-beta.md) - OpenHarmony 3.1 Release. [Learn more](en/release-notes/OpenHarmony-v3.1-release.md)
- OpenHarmony 3.0 LTS. [Learn more](en/release-notes/OpenHarmony-v3.0-LTS.md) - OpenHarmony 3.0 LTS. [Learn more](en/release-notes/OpenHarmony-v3.0-LTS.md)
......
...@@ -3,13 +3,9 @@ ...@@ -3,13 +3,9 @@
- Audio - Audio
- [Audio Overview](audio-overview.md) - [Audio Overview](audio-overview.md)
- [Audio Playback Development](audio-playback.md)
- [Audio Playback Development](audio-playback.md)
- [Audio Rendering Development](audio-renderer.md)
- [Audio Recording Development](audio-recorder.md) - [Audio Recording Development](audio-recorder.md)
- [Audio Rendering Development](audio-renderer.md)
- [Audio Capture Development](audio-capturer) - [Audio Capture Development](audio-capturer)
- Video - Video
......
...@@ -280,7 +280,7 @@ Enables the display of a confirm dialog box before returning to the previous pag ...@@ -280,7 +280,7 @@ Enables the display of a confirm dialog box before returning to the previous pag
| Name | Type | Mandatory | Description | | Name | Type | Mandatory | Description |
| ------- | ---------------------------------------- | ---- | -------------------------------------- | | ------- | ---------------------------------------- | ---- | -------------------------------------- |
| options | [EnableAlertBeforeBackPageOptions](#enableAlertbeforebackpageoptions6) | Yes | For details, see **EnableAlertBeforeBackPageOptions**.| | options | [EnableAlertBeforeBackPageOptions](#enablealertbeforebackpageoptions6) | Yes | For details, see **EnableAlertBeforeBackPageOptions**.|
**Example** **Example**
......
# OpenHarmony 3.1 Release
## Version Description
OpenHarmony 3.1 Release provides the following enhancements over OpenHarmony 3.1 Beta:
**Enhanced basic capabilities for the standard system**
Local basic audio/video playback capabilities, video hardware codecs, basic camera preview and photographing capabilities.
RenderService framework, 2D/3D drawing, and new animation and display effect framework.
A new window management framework, which provides more flexible window framework capabilities and supports full-screen, split-screen, window modes, and cross-window content dragging.
Display management capability that supports split-screen display, enhanced screen-on/off management, and window animation and effect.
Basic functions of the mouse, keyboard, and touchpad, and basic capabilities of common sensors such as acceleration sensors, gyroscope sensors, Hall effect sensors, and vibrators.
Locale selection, new and enhanced internationalization features, system resources, and rawfile resources.
Management for time and time zone synchronization, pasteboard, lock screen, static wallpaper, and downloading.
System service status monitoring, cross-device oncall (cross-device FA startup), continuous tasks, transient tasks, and Work Scheduler.
Enhanced memory management, basic power management, and enhanced process scheduling.
Local accounts, binding of domain accounts and local accounts, distributed account ID derivation and status management, local application permission management, and distributed permission management.
Basic capabilities and JS APIs related to Wi-Fi Station (STA), Access Point (AP), and Point-to-Point (P2P); Capabilities and JS APIs related to Bluetooth Basic Rate (BR), Bluetooth Serial Port Profile (SPP), and Bluetooth Low Energy (BLE); new location subsystem that provides the location service framework capability.
**Enhanced distributed capabilities for the standard system**
DSoftBus network switching, P2P connection, streaming, and Bluetooth.
Enhanced hardware collaboration and resource sharing: mirroring and extended projection.
Enhanced device online/offline and personal identification number (PIN) authentication functions, storage management, application sandbox isolation, public data sandbox isolation, distributed databases, distributed data objects, local database access, and cross-application database access.
**Enhanced application framework capabilities for the standard system**
ArkUI custom drawing, Lottie animations, and keyboard and mouse interaction.
Declarative **\<Web>** and **XComponent** components.
Widget capabilities, including adding, deleting, and updating widgets.
Multi-user capability: multi-device basic JS toolchain and runtime capability; basic functions such as multi-HAP installation, implicit query, multi-user, and permission management; distributed notification and notification templates.
**Enhanced application capabilities for the standard system**
More system applications, including the Home Screen, System UI, Settings, Camera, Gallery, Call, Contacts, Messaging, Notepad, File Selector, and Input Method.
## Version Mapping
**Table 1** Version mapping of software and tools
| Software/Tool| Version| Remarks|
| -------- | -------- | -------- |
| OpenHarmony | 3.1&nbsp;Release | NA |
| SDK | Ohos_sdk 3.1 Release (API Version 8 Beta)| NA |
| (Optional) HUAWEI DevEco Studio| 3.0&nbsp;Beta3&nbsp;for&nbsp;OpenHarmony | Recommended for developing OpenHarmony applications|
| (Optional) HUAWEI DevEco Device Tool| 3.0&nbsp;Release | Recommended for developing OpenHarmony smart devices|
## Source Code Acquisition
### Prerequisites
1. Register your account with Gitee.
2. Register an SSH public key for access to Gitee.
3. Install the [git client](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) and [git-lfs](https://gitee.com/vcs-all-in-one/git-lfs?_from=gitee_search#downloading), and configure user information.
```
git config --global user.name "yourname"
git config --global user.email "your-email-address"
git config --global credential.helper store
```
4. Run the following commands to install the **repo** tool:
```
curl -s https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > /usr/local/bin/repo # If you do not have the permission, download it to another directory and configure it as an environment variable by running the chmod a+x /usr/local/bin/repo command.
pip3 install -i https://repo.huaweicloud.com/repository/pypi/simple requests
```
### Acquiring Source Code Using the repo Tool
**Method 1 (recommended)**
Use the **repo** tool to download the source code over SSH. (You must have an SSH public key for access to Gitee.)
```
repo init -u git@gitee.com:openharmony/manifest.git -b refs/tags/OpenHarmony-v3.1-Release --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'
```
**Method 2**
Use the **repo** tool to download the source code over HTTPS.
```
repo init -u https://gitee.com/openharmony/manifest.git -b refs/tags/OpenHarmony-v3.1-Release --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'
```
### Acquiring Source Code from Mirrors
**Table 2** Mirrors for acquiring source code
| Source Code | Version| Mirror | SHA-256 Checksum |
| --------------------------------------- | ------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
| Full code base (for mini, small, and standard systems) | 3.1 Release | [Download](https://repo.huaweicloud.com/harmonyos/os/3.1-Release/code-v3.1-Release.tar.gz)| [Download](https://repo.huaweicloud.com/harmonyos/os/3.1-Release/code-v3.1-Release.tar.gz.sha256)|
| Hi3516 standard system solution (binary) | 3.1 Release | [Download](https://repo.huaweicloud.com/harmonyos/os/3.1-Release/standard_hi3516.tar.gz)| [Download](https://repo.huaweicloud.com/harmonyos/os/3.1-Release/standard_hi3516.tar.gz.sha256)|
| RK3568 standard system solution (binary) | 3.1 Release | [Download](https://repo.huaweicloud.com/harmonyos/os/3.1-Release/standard_rk3568.tar.gz)| [Download](https://repo.huaweicloud.com/harmonyos/os/3.1-Release/standard_rk3568.tar.gz.sha256)|
| Hi3861 mini system solution (binary) | 3.1 Release | [Download](https://repo.huaweicloud.com/harmonyos/os/3.1-Release/hispark_pegasus.tar.gz)| [Download](https://repo.huaweicloud.com/harmonyos/os/3.1-Release/hispark_pegasus.tar.gz.sha256)|
| Hi3516 mini system solution - LiteOS (binary)| 3.1 Release | [Download](https://repo.huaweicloud.com/harmonyos/os/3.1-Release/hispark_taurus.tar.gz)| [Download](https://repo.huaweicloud.com/harmonyos/os/3.1-Release/hispark_taurus.tar.gz.sha256)|
| Hi3516 mini system solution - Linux (binary) | 3.1 Release | [Download](https://repo.huaweicloud.com/harmonyos/os/3.1-Release/hispark_taurus_linux.tar.gz)| [Download](https://repo.huaweicloud.com/harmonyos/os/3.1-Release/hispark_taurus_linux.tar.gz.sha256)|
| Standard system SDK package (macOS) | 3.1 Release | [Download](https://repo.huaweicloud.com/harmonyos/os/3.1-Release/ohos-sdk-mac.tar.gz)| [Download](https://repo.huaweicloud.com/harmonyos/os/3.1-Release/ohos-sdk-mac.tar.gz.sha256)|
| Standard system SDK package (Windows/Linux) | 3.1 Release | [Download](https://repo.huaweicloud.com/harmonyos/os/3.1-Release/ohos-sdk.tar.gz)| [Download]((https://repo.huaweicloud.com/harmonyos/os/3.1-Release/ohos-sdk.tar.gz.sha256)|
| Compiler toolchain | - | [Download](https://repo.huaweicloud.com/harmonyos/os/2.0/tool_chain/)| - |
## What's New
This version has the following updates to OpenHarmony 3.1 Beta.
### Feature Updates
**Table 3** Feature updates
| Subsystem| Standard System| Mini and Small Systems|
| -------- | -------- | -------- |
| Resource scheduling| - Continuous tasks, transient tasks, and Work Scheduler are added.<br>- Reminder agents are added.<br>The following requirements are involved:<br>I4QT41 [New feature] Reminder agent management<br>I4QU0W [New feature] Transient task management<br>I4QT3S [New feature] Continuous task management<br>I4QU0P [New feature] Work Scheduler<br>I4QT45 [New feature] Querying historical application usage statistics within a given time range| NA |
| Multimodal input| - The basic functions of the mouse, keyboard, and touchpad are supported.<br>- Subscription to full-screen gesture events is supported.<br>The following requirements are involved:<br>I4WWRZ [Multimodal] Mouse button functions<br>I4WWS0 [Multimodal] Mouse wheel function<br>I4WWSR [Multimodal] Basic keyboard functions<br>I4WWT8 [Multimodal] Basic touchpad functions<br>I4WWSN [Multimodal] Subscription of single-system key events| NA |
| System service management| - The function of system service status monitoring is added.<br>- The function of dynamically loading local system services is added.<br>- The functions of adding, deleting, modifying, querying, and synchronizing device profiles are added.<br>- The function of registering device profile events is added.<br>- An ability continuation framework is added to supports continuation of distributed objects and application stack information on another device.<br>- Cross-device oncall (remote FA startup) is added.<br>- The capability of obtaining remote device missions and mission snapshots in real time is added.<br>The following requirements are involved:<br>I4MBRV [Samgr] System service status monitoring<br>I4MBRY [Samgr] System service process management<br>I4NY1T [device_profile] Subscription of profile changes.<br>I4NY1W [device_profile] Profile synchronization<br>I4NY1X [device_profile] Remote device profile query<br>I4OGD1 [New feature] [DMS] Cross-device oncall<br>I4OGCK [Enhanced feature] Returning the continuation result after the distributed object synchronization is complete<br>I4OGCL [Enhanced feature] [Framework] Data storage for ability continuation<br>I4OGCN [Enhanced feature] [DMS] Initiating ability continuation by device and receiving the continuation result<br>I4OGCM [New feature] [Task management] APIs for real-time mission retrieval| I4TS0Z [New feature] Remote service management by mini-system Samgr|
| Distributed hardware| - The distributed hardware subsystem is added, which involves three code repositories: distributed hardware management framework, distributed camera, and distributed screen.<br>- The following device management functions are added: peripheral device discovery, device online/offline, and PIN authentication.<br>The following requirements are involved:<br>I4PZE7 [Enhanced feature] Discovery of peripheral untrusted devices<br>I4PZDZ [Enhanced feature] PIN authentication for account-irrelevant devices<br>I4PZDY [Enhanced feature] Query of the trusted device list and device online/offline monitoring<br>I4WVOC [New feature] Distributed hardware enabling/disabling and dynamic loading<br>I4WVMX [New feature] Distributed hardware access management<br>I4WW6U [New feature] Mirroring and extended display of distributed screens| I4XSUZ [New feature] Basic device management for the mini system|
| Power management| <br>Power management, battery management, thermal management, and power consumption statistics are supported.<br>The following requirements are involved:<br>I40IRO [Power management] Hibernation and hybrid sleep modes<br>I412F4 [Power management] Power saving mode<br>I4MBRL [Power management] Display-related power consumption adjustment<br>I4MBRM [Power management] Proximity sensor lock: During a call, the screen can be turned on or off by using the proximity sensor.<br>I4OEOZ [Power management] Monitoring of input screen-on events and turning on or off the screen based on the events<br>I4OEQT [Power management] Screen-off detection<br>I4QGI0 [Power management] Pressing and holding the **Power** button to display the shutdown screen<br>I410YD [Battery management] Charging while the device is shut down<br>I410Y1 [battery management] Shutdown due to abnormal battery temperature<br>I4GY9U [Thermal management] Kernel temperature control<br>I4GYAF [Thermal management] User layer and service temperature control<br>I4GYBV [Thermal management] Temperature monitoring API<br>I4GYCD [Power consumption statistics] Software power consumption statistics<br>I4GYCN [Power consumption statistics] Hardware power consumption statistics<br>I4GYDQ [Power consumption statistics] Power consumption details| NA |
| Account| - The lifecycle of local accounts (also called system accounts) can be managed, including creating, switching, deleting, subscribing to, querying, and modifying local accounts.<br>- Distributed account ID derivation and status management are supported. When a distributed account logs in, a unique account ID is derived and bound to the local account. When the distributed account logs out or the token expires, the binding between the distributed account and the local account is removed.<br>- The function of binding a domain account to a local account is added. A local account is automatically created based on the passed domain account and bound to the domain account.<br>- The **acm** command is added for local account management. You can run the **acm create/delete/switch/dump** command to add, delete, modify, or query local accounts, and the **acm --help** command to view the command description.<br>I4JBFB Account status management in a distributed network<br>I4JBEK Account ID derivation in a distributed network<br>I4IU6N Local multi-user basic information management<br>I4IU5W Local multi-user lifecycle management of the **os_account_standard** component<br>I4IU5G Local multi-user auxiliary management tool<br>I4IU3V Mappings between domain accounts and local accounts<br>I4IU3B Local multi-user start, stop, and switching<br>I4IU33 Local multi-user function setting and content modification| NA |
| Kernel| - Memory management enhancement features, including Continuous Memory Allocator (CMA), shared memory, and enhanced memory swapping, are added to improve memory usage efficiency.<br>- Process scheduling enhancement features, including CPU hotplug, lightweight isolation, and preferential supply for frame drawing threads, are added to improve CPU usage and enhance resource supply in sliding scenarios.<br>- The latest kernel security vulnerability patch and other security hardening mechanisms, such as token ID configuration and query, are supported.<br>The following requirements are involved:<br>I4MBTN [New feature] CMA<br>I4MBTO [New feature] Memory usage query by category<br>I4LKQ0 [New feature] Decoupling between cpuset and CPU hotplug<br>I4QE9K [New feature] Kernel sharing between the kernel-mode driver and the user-mode driver, and between a pair of user-mode drivers<br>I4LRGQ [New feature] OpenHarmony kernel baseline enablement<br>I4RXQ3 [New feature] Basic memory management features<br>I4TEGS [New feature] Performance optimization for F2FS when there is little storage space available<br>I4SRVK [New feature] Lightweight CPU isolation<br>I4SE2N [New feature] User-specific memory resource management<br>I4VMGZ [New feature] Basic Frame Per Second (FPS) awareness scheduling<br>I4U089 [New feature] Preferential supply for frame drawing threads<br>I4OWTZ [External dependency] Token ID setting for processes| NA |
| Bundle management framework| - Multi-HAP installation, implicit query, multi-user management, and authority management are supported.<br>- Distributed capabilities such as Database Management System (DBMS) and cross-device synchronization are added.<br>- The zlib native SDK is supported.<br>The following requirements are involved:<br>I4MBSD [New feature] Multi-HAP installation<br>I4MBSG [Enhanced feature] Installation package information query<br>I4PKY7 [New feature] Cross-device information synchronization<br>I4PKY8 [New feature] Cross-device information query<br>I4PKYK [Enhanced feature] Scanning<br>I4PKYI [New feature] Data clearing<br>I4PKYM [New feature] Multi-user creation<br>I4QA3D [Enhanced feature] Native APIs (NAPIs) for zlib compression and decompression<br>I4SIH9 [New feature] Application permission management| NA |
| Location| - The location subsystem is added to provide the location service framework capability.<br>- The location subsystem provides services such as Global Navigation Satellite System (GNSS) based positioning, GNSS geofencing, GNSS Batching, network positioning, and geocoding.<br>The following requirements are involved:<br>I4XXIH [location_gnss] Auxiliary information request and injection related to GNSS performance improvement<br>I4XXIG [location_gnss] GNSS hardware power consumption statistics and power consumption optimization<br>I4XXIF [location_gnss] GNSS based positioning<br>I4XXIC [location_gnss] GNSS Batching<br>I4XXIB [location_gnss] GNSS parameter setting and information reporting<br>I4XXI8 [location_locator] Security management of the location service<br>I4XXI7 [location_locator] Security assurance for location privacy<br>I4XXI5 [location_locator] Management of multiple location requests<br>I4XXI4 [location_locator] Location management<br>I4XXI3 [location_geofence] GNSS geofencing<br>I4XXI0 [location_geocode] Conversion between geographic coordinates (like longitudes and latitudes) and addresses<br>I4XXHZ [location_network] Network positioning<br>I4XXHW [location_gnss] GNSS auxiliary information protocol support| NA |
| Communication| - The Wi-Fi STA, AP, and P2P basic capabilities and related JS APIs are added. Experience for STA, AP, and P2P connections is enhanced.<br>- The Bluetooth BR, SPP, and BLE capabilities and related JS APIs are added.<br>The following requirements are involved:<br>**Wi-Fi**<br>I4XXFG [New feature] Wi-Fi power consumption statistics and power consumption optimization<br>I4XXFF [New feature] Basic Wi-Fi P2P capabilities<br>I4XXFB [New feature] P2P magic link<br>I4XXF7 [New feature] SoftAP 5G and automatic channel selection<br>I4MBRI [New feature] Basic SoftAP features<br>I4MBRH [New feature] Basic STA features<br>**Bluetooth**<br>I4XXGC [bluetooth_standard] Bluetooth BR/Enhanced Data Rate (EDR)<br>I4XXFT [bluetooth_standard] Advanced Audio Distribution Profile (A2DP) capabilities and related JS APIs<br>I4XXFP [bluetooth_standard] Basic BLE capabilities<br>I4XXFL [bluetooth_standard] Bluetooth SPP and BR data transmission<br>| NA |
| Ability management framework| - The widget capability is added. The zidl tool supports automatic generation of C++ server/client code. The ability test framework is provided, and the command line tool capabilities are enhanced.<br>- The following capabilities are added: multi-user, mission stack reconstruction, ability-based decoupling, application resident process, application exception detection enhancement, and environment change notifications.<br>The following requirements are involved:<br>I4PCM4 [New feature] Application/HAP/Ability information query in the context module<br>I4PCPP [New feature] Multi-user in the context module<br>I4PCPV [New feature] System interface for user-specific ability start<br>I4PCQP [New feature] Single-user running mode<br>I4PCQU [New feature] Default user initialization<br>I4PCGY [Enhanced feature] Widget development base class<br>I4PCH9 [Enhanced feature] Widget configuration through configuration files<br>I4PCLL [New feature] Application-level JS context<br>I4PCLN [New feature] Ability status recovery<br>I4PCP1 [New feature] Application running information query<br>I4PCPG [Enhanced feature] System environment change notifications<br>I4PCR8 [Enhanced feature] Resident process upon system boot<br>I4PCV4 [New feature] Mission switching<br>I4PCVZ [New feature] Ability startup by display ID<br>I4PCW3 [Enhanced feature] Pending want for cross-device ability startup<br>I4PCH4 [New feature] Multi-user widget<br>I4PCM1 [New feature] CE/DE-level context<br>I4PCVN [New feature] Obtaining and updating mission snapshots<br>I4PPW6 [Enhanced feature] Ability startup in specified window mode<br>I4PC3R [New feature] Basic widget development capabilities<br>I4PQ0M [Enhanced feature] Message sending and monitoring provided by the context module<br>II4PQ13 [Enhanced feature] Permission verification and application APIs provided by the context module<br>I4PQ1E [Enhanced feature] Resident process recovery from exceptions<br>I4PQ1O [New Feature] New want<br>I4PCPI [Enhanced feature] System environment information query<br>I4PCRL [New feature] Ability test framework<br>I4PCVU [New feature] Ability call| NA |
| Accessibility| - The internal implementation of UI information exchange is added.<br>- The function of reading accessibility configuration is added.<br>The following requirements are involved:<br>I4X2EM [New feature & information exchange mechanism] Key interception<br>I4X2EN [New feature & information exchange mechanism] Reporting of window node information<br>I4X2ET [New feature & information exchange mechanism] Reporting of control node information<br>I4X2EV [New feature & information exchange mechanism] Focus query<br>I4X2EY [New feature & information exchange mechanism] Accessibility event list<br>I4X2EZ [New feature & information exchange mechanism] Accessibility event information<br>I4X2F0 [New feature & information exchange mechanism] Accessibility action initiation<br>I4X2F1 [New feature & information exchange mechanism] Auxiliary application list query<br>I4X2F2 [New feature & information exchange mechanism] Auxiliary application status query and monitoring<br>I4X2F3 [New feature & information exchange mechanism] Gesture simulation<br>I4X2F4 [New feature & information exchange mechanism] Touchpad interception<br>I4X2EO [New feature & accessibility service management] Target application connection<br>I4X2EP [New feature & accessibility service management] Assistance application connection<br>I4X2ER [New feature & accessibility service management] Assistance application update<br>I4X2ES [New feature & accessibility service management] Accessibility caption configuration| NA |
| Multimedia| - The local basic audio/video playback capabilities, video hardware codecs, and mainstream audio/video codecs and encapsulation formats are supported.<br>- The basic camera preview, photographing, and distributed camera functions are provided.<br>The following requirements are involved:<br>I4WYPP [audio_standard] Bluetooth audio playback<br>I4WYK8 [audio_standard] OpenSL ES basic playback interfaces<br>I4WYW4 [Enhanced feature] Camera session management<br>I4WYVE [Enhanced feature] Basic photographing functions<br>I4WZ8G [New feature] Basic image decoding framework<br>I4X5E1 [New feature] Video software decoding<br>I4X552 [New feature] Local audio/video playback<br>I4X5Q9 [New feature] Distributed media library - thumbnail synchronization<br>I4X5L5 [New feature] Basic media database| NA |
| Graphics| - A new graphics rendering framework RenderService is provided.<br>- 2D/3D drawing is supported.<br>- A new animation framework is provided.<br>The following requirements are involved:<br>I4MBTY [render_service] [New feature] Background rendering feature for the UI framework<br>I4RKT3 [composer] Combination and display<br>I4ZCGG [drawing] Graphics native SDK<br>I4RKSW [drawing] 3D and graphics capabilities, and native SDK capabilities<br>I4MBTW [animation] Basic animation framework| NA |
| Window Manager| - A new window management framework is provided, which offers more flexible window framework capabilities and supports full-screen, split-screen, window modes, and cross-window content dragging.<br>- The display management capability is provided, which supports split-screen display and enhanced screen-on/off management.<br>The following requirements are involved:<br>I4R308 [Enhanced feature] Application window creation and management: Multiple primary windows can be created for multiple ability instances of a single application.<br>I4R309 [Enhanced feature] Application window creation and management: The window display policy can be set when a window is started. The window display policy status (split screen, full screen, or free window) is provided for applications.<br>I4R30D [New feature] Free window display, tile layout, and cascade layout of the application's primary window.<br>I4R9P0 [New specification] Enhanced features:<br>1. Display management<br>2. Creating and destroying a display by inserting or removing a physical screen<br>3. Multi-display mapping management<br>I4ZEKH [New feature] Screen on/off process<br>1. Sleep, wake-up, screen-on, and screen-off requests initiated from the power management module<br>2. Calling of the RenderServer interface to turn the screen on/off or adjust the screen brightness as requested| NA |
| Network management| I4XXHU [Enhanced feature] TCP/UDP socket<br>I4XXHT [Enhanced feature] Support for HTTP 1.1/HTTPS/HTTP 2<br>I4XXHS [Enhanced feature] Wi-Fi/Cellular network connection management and handover<br>I4XXHP [Enhanced feature] Domain Name System (DNS) resolution and configuration<br>I4XXHN [Enhanced feature] Network connection status query and status change notification<br>I4XXHH [WPA_supplicant] Wi-Fi Protected Access (WPA) and P2P capabilities based on nl80211<br>I4XXHG [WPA_supplicant] Magic link| NA |
| MSDP| I4WWRO [MSDP] device_status component standardization| NA |
| Globalization| - Locale selection is added.<br>- The following internationalization features are supported: single and plural rules, string sorting, phone number processing, calendar and local calendar, measurement units and formatting, time segment formatting, alphabet retrieval, Unicode character attributes, wrapping and line feed.<br>- System resources are supported.<br>- rawfile resources are supported.<br>The following requirements are involved:<br>I4MBR0 [Enhanced feature] Locale representation and attributes<br>I4MBR1 [Enhanced feature] Singular and plural rules<br>I4MBR2 [Enhanced feature] String sorting<br>I4MBR3 [Enhanced feature] Phone number processing<br>I4MBR7 [New feature] Calendar and local calendar<br>I4MBR5 [New feature] Measurement units and formatting<br>I4MBQZ [Enhanced feature] Time segment formatting<br>I4MBR4 [New feature] Alphabet retrieval<br>I4MBR8 [Enhanced feature] Unicode character attribute<br>I4MBR9 [Enhanced feature] Wrapping and line feed<br>I4MBRA [New feature] System resource management<br>I4MBRB [New feature] rawfile resource management<br>I4R2YA [New feature] Native SDK for resource management| NA |
| DSoftBus| - Network switching is supported.<br>- Bluetooth is supported.<br>- Bluetooth file transfer is supported.<br>- Streaming is supported.<br>- P2P connection is supported.<br>- P2P-based file transfer and streaming are supported.<br>The following requirements are involved:<br>I4MBS0 [New feature] [Networking] Network switching<br>I4XXEL [Enhanced feature] Bluetooth<br>I4XXEX [Transmission] File transfer over Bluetooth<br>I4XXEO [Enhanced feature] [Transmission] Enhanced file transfer (NSTACK component capability)<br>I4XXEV [New feature] [Transmission] Enhanced streaming (NSTACK component capability enhancement)<br>I4XXEN [New feature] [Networking] P2P connection<br>I4XXEP [New feature] [Connection] P2P connection<br>I4XXES [New feature] [Transmission] P2P file transfer<br>I4XXET [New feature] [Transmission] P2P streaming| NA |
| ArkUI| - Keyboard and mouse interaction is supported.<br>- The declarative **\<Web>** component is added.<br>- The declarative **XComponent** is added.<br>- The declarative **Canvas2D** and **OffscreenCanvas** capabilities are added.<br>- Rich text display is supported.<br>- Multiple functional components are added.<br>- The customization capabilities of multiple components are enhanced.<br>- Debugging is enhanced.<br>The following requirements are involved:<br>I4MBV7 [New specification] Scroll bar style customization<br>I4MBVO [New feature] Content customization specifications for the **\<Popup>** component.<br>I4MBVP [New feature] Canvas drawing<br>I4MBVR [New feature] Touch hot zone setting<br>I4MBVS [New feature] Lottie animations<br>I4MBVU [New feature] Content customization specifications for the **\<Menu>** component.<br>I4MBVV [New feature] Swipe gesture<br>I4MBV9 [New specification] **\<TabBar>** content customization specifications for the **\<Tabs>** component<br>I4MBVA [New specification] Title bar setting specification for the **\<Navigation>** component<br>I4MBVC [New specification] Content customization specification for the **\<TabBar>** component<br>I4WTQY [New feature] Linear proportion display component<br>I4MBV3 [New specification] Component polymorphic style specifications<br>I4MBV5 [New specification] Prompt menu content specifications for the **\<AlphabetIndexer>** component<br>I4WTQ2 [New specification] Content dragging specification for the **\<List>** component<br>I4WTQ4 [New specification] Content dragging specification for the **\<Grid>** component<br>I4WYNA [New specification] Enhanced **\<Dialog>** component: dialog box displayed at the user-specified location<br>I4WTQX [New feature] **\<PatternLock>** component<br>I4QC4N [New specification] **\<Select>** component<br>I4QC4O [New specification] Enhanced **\<TextInput>** component<br>I4WTPY [New specification] Mouse dragging for text selection for the **\<Text>** component<br>I4WTRS [New feature] Declarative paradigm specifications for the **XComponent**<br>I4WTR9 [New feature] Mouse button and scroll wheel events<br>I4WTQI [New specification] Mouse dragging specification<br>I4RCRC [New feature] Style status compilation and conversion<br>I4WTPS [New specification] Touch event that supports multi-touch information<br>I4RCRF [New feature] Access to child component data by custom components<br>I4X27K [New feature] **\<Sidebar>** component<br>I4RA0G [New specification] Mouse pointer hover events on widgets<br>I4WTQV [New feature] Scenario-specific data storage <br>I4RCRK [DFX] Timeout detection<br>I4RCJ8 [IDE support] Print of time consumed by the rendering pipeline<br>I4RCRM [IDE Tool Support] Print of time required for interaction event callbacks<br>I4WTR7 [New feature] **\<Web>** component<br>I4WTRA [New feature] Routing information continuation in the distributed network<br>I4X29K [New feature] **\<ContextMenu>** component<br>I4WTQJ [New specification] Keyboard shortcuts of the **\<Input>** component<br>I4WTQK [New feature] Double-click for word selection<br>I4WTPG [New specification] Enhanced parameter configuration of the basic animations<br>I4X26M [New specification] **\<List>** component that supports selection by the mouse operation alone and the combination of keyboard and mouse operations<br>I4X26Y [New specification] **\<GridItem>** component that supports selection by the mouse operation alone and the combination of keyboard and mouse operations<br>I4WTR8 [New feature] Focus setting <br>I4U5XM [New specification] Conditional compilation of JS files by ArkUI Loader<br>I4WTQN [New feature] **RichText** label| NA |
| Program access control| - The functions of defining, managing, authorizing, querying, and authenticating local application permissions are added.<br>- The functions of managing, querying, authenticating, and synchronizing distributed permissions are added.<br>The following requirements are involved:<br>I4WVMH [New specification] Predefined system application permission initialization<br>I4WVO9 [New specification] Application permission request query<br>I4WVPH [New specification] Basic framework of the AT synchronization service<br>I4WVPV [New specification] Local permission verification interface and mechanism<br>I4WVQT [New specification] Native token creation and update mechanism<br>I4WVR3 [New specification] Application permission setting interface and mechanism<br>I4WVRG [New specification] Basic framework of the AT management service<br>I4WVRR [New specification] Token query interface for HAP applications<br>I4WVS6 [New specification] Token deletion for HAP applications<br>I4WVSI [New specification] Token creation and update for HAP applications<br>I4TYDA [New specification] Cross-device token information synchronization<br>I4TYCV [New specification] Token information synchronization for the native process upon device online<br>I4V02K [New specification] Application authorization status update and synchronization<br>I4V02Y [New specification] Application uninstall synchronization<br>I4V032 [New specification] Implementation of the application permission management page<br>I4V038 [New specification] Application permission setting on the application permission management page<br>I4TYCK [New specification] Distributed permission verification interface and mechanism<br>I4TYDO [New specification] Token deletion upon device offline<br>I4SEZD [New specification] Dynamic permission request<br>I4SEZ7 [Dynamic permission setting] Dynamic permission authorization| NA |
| Multi-language runtime| - Language compilation and runtime: A multi-device basic JS toolchain and runtime are provided, and the JS engine on the device side is provided to support application running.<br>- TS/JS Utils: The TS/JS Utils provides basic functions and supports TS/JS multi-thread.<br>- TS/JS/C/C++ toolchain: The basic requirements for development, debugging, and optimization are met.<br>- Lite Actor: This model shares bytecode and Virtual Machine (VM) internal infrastructure, optimizes the implementation of the JS engine and the memory usage, and improves the startup performance.<br>- High Perf Partial GC: ArkUI Garbage Collector (GC) supports concurrent mark, parallel mark, and lazy free, reducing the GC pause time by 50% and improving user experience.<br> The following requirements are involved:<br> I4W7ZR [New specification] Memory management, allocation, and reclamation/HPP GC performance optimization<br> I4P7F7 [language compilation and runtime, graphics, DRF] Native SDK integration<br> I4WWKK [Enhanced feature] Lite Actor 1.0| NA |
| Update| - The components of the update subsystem are standardized.<br>- The SysCap mechanism is supported.<br>The following requirements are involved:<br>I4WXHW [Component-based] Component standardization<br>I4XXH6 [SysCap] SysCap support| NA |
| Misc services| - Management of time and time zone synchronization is supported.<br>- The capabilities of querying, setting, deleting, and replacing pasteboard data items are added.<br>- Lock screen management is supported.<br>- Static wallpaper management is supported.<br>- Downloading management is supported.<br>The following requirements are involved:<br>I4U2WR [New feature] Time and time zone synchronization management<br>I4ZTTE [New feature] Pasteboard data items - Forcible conversion from pasteboard data items to text<br>I4ZTTO [New feature] Pasteboard data - Obtaining, deleting, and replacing pasteboard data items, and querying and setting pasteboard data attributes<br>I4ZTTZ [New feature] System pasteboard - Obtaining, clearing, and querying pasteboard data, and sending pasteboard content change notifications<br>I4ZTZC [New feature] Lock screen management - Multi-user scenario<br>I4ZTZT [New feature] Lock screen management - System startup and screen on/off scenarios<br>I4ZU1S [New feature] Static wallpaper<br>I4ZTXT [request] Downloading management, including creating, deleting, modifying, querying, pausing, and resuming download tasks, monitoring download task progress, and sending download status change notifications. The downloading management service provides Data abilities for system download management, persists download task data, checks the application interface permission, performs HTTP download, and handles download exceptions.| NA |
| Light kernel| NA | For the mini system:<br>I4RD3H POSIX interfaces such as **signal**, **pipe**, **poll**, and **select** for the LiteOS-M kernel<br>I4Q9OQ Cortex-M55 architecture<br>I4Q9F2 Dynamic loading<br>I4RD2M Kernel componentization|
| File management| - The basic file system Ext4 and F2FS capabilities and related tools are supported. Cross-device file access of the distributed file system is provided.<br>- Device storage management functions are provided, including file encryption, space management and statistics, multi-user space management, and external card mount management.<br>- Application data protection is enhanced by supporting application sandbox isolation. User data management is optimized, including security hardening for user data sandbox isolation as well as user file access framework and interfaces.<br>- Basic file operation APIs are provided, including statfs usage statistics and asynchronous file access APIs.<br>The following requirements are involved:<br>I4RDNG [New feature] [local_file_system] User-mode tools such as Ext4 and F2FS<br>I4RFBD [New feature] [local_file_system] Pluggable file systems such as File Allocation Table (FAT), Extensible FAT (exFAT), and New Technology File System (NTFS)<br>I4TTN8 [New feature] Basic functions of the distributed file system<br>I4TTNG [New feature] Data classification, device grade, and data hopping specification control<br>I4TTGR [New feature] [storage_manager] File encryption<br>I4TTHQ [New feature] External storage access<br>I4TTJN [New feature] Event distribution of external cards<br>I4TTJV [New feature] Volume information query and management<br>I4XXIR [New feature] Creation and deletion of user directories by responding to multi-user requests<br>I4XXIY [New feature] Application space statistics<br>I4SNSU [New feature] Application sandbox isolation<br>I4XXIX [New feature] JS APIs for file picker<br>I4MBS2 [New feature] statfs APIs| NA |
| Common event and notification| - Multi-user is supported.<br>- Distributed notifications are supported.<br>- Notification templates are provided.<br>The following requirements are involved:<br>I4PBOK [New feature] Multi-user notification<br>I4PBP7 [New feature] Sending of template notifications (debugging capability)<br>I4PBPE [New feature] Progress bar notification<br>I4PBPM [Enhanced feature] Traffic control for distributed notifications<br>I4PBRM [New feature] Clicking notifications on another device and redirection on the local device<br>I4PBRW [New feature] Device-level distributed notification enabling control<br>I4PBSE [New feature] Notification management application setting and query of the application-level distributed notification enabling status<br>I4PBSP [New feature] Enabling/Disabling distributed notifications for applications<br>I4PBT7 [New feature] Distributed notification synchronization<br>I4PBU3 [New feature] Distributed notification linkage cancellation<br>I4PBUU [New specification] Static configuration of common events in **config.json**, and static start of subscribers using Wok Scheduler<br>I4PBV9 [New specification] Static subscriber management<br>I4WTGK [New feature] Template notification registration, query, and sending<br>I4PBSZ [New feature] Notification sending based on the device status<br>I4PBBV [New feature] EventRunner timeout detection<br>I4PD0O [Enhanced feature] Enhanced notification sending enabling<br>I4PBQ1 [Enhanced feature] dump command for distributed notifications<br>I4PBR0 [New feature] Clicking a notification on one device and redirection on another device<br>I4PC2S [New feature] Multi-user for common events| NA |
| Pan-sensor| - Data reporting by common sensors, such as acceleration, gyroscope, and Hall effect sensors, is supported.<br>- The basic functions of vibrators are supported.<br>- The general algorithms and geomagnetic field algorithms are supported.<br>The following requirements are involved:<br>I4WWTG [miscdevice] Peripheral dependency support by miscdevice<br>I4WWTF [Sensor] Peripheral dependency support by sensor<br>I4WWTD [Sensor] Common algorithm interfaces<br>I4MBRQ [sensor] Horizontal intensity and total intensity of the magnetic field<br>I4MBRP (sensor component) Magnetic declination and dip| NA |
| Distributed data management| - Memory JS objects can now be treated as distributed data objects; Distributed relational data management is provided to support data synchronization based on relational tables.<br>- Condition-based data synchronization and subscription capabilities are supported, making data synchronization more accurate.<br>- File upload is supported.<br>- Data encryption and security tiering are supported, and security control is optimized for data transfer. Multi-user synchronization and isolation are supported.<br>The following requirements are involved:<br>I4IBPH [distributed_kv_store] Supplemented the functions of the distributed data service<br>I4MBRS [distributed_kv_store] Cross-device synchronization and subscription of database records based on predicates<br>I4MBRU [RDB] Database encryption<br>I4NZVP [distributed_kv_store] Distributed database JS APIs<br>I4HAMI [data_share_ability] Subscription of cross-application database changes<br>I4NZP6 [RDB] Multi-table query<br>I4FZ6B [RDB] Transaction<br>I4HAMI [data_share_ability] Subscription of cross-application database changes<br>I4PNX7 [Distributed RDB] Data storage<br>I4HAMD [data_share_ability] Data access modes<br>I4H4FH [distributed_kv_store] Data classification and tiering for the distributed database<br>I4H3M8 [New feature] Complex type of distributed data objects<br>I4HAMD [data_share_ability] Data access modes<br>I4PO00 [Distributed RDB] Data synchronization<br>I4OTW6 [distributed_kv_store] InKeys predicate for the distributed database<br>I4RGFY [DataShare] Reconstruction based on the Extension ability and cross-application data sharing on a single device<br>I4H4FR [distributed_kv_store] Multi-user data isolation and sharing<br>I4RGFY [DataShare] Reconstruction based on the Extension ability and cross-application data sharing on a single device<br>I4XXGF [request] File upload| For the mini and small systems:<br>Distributed data objects are now available to small-system devices.<br>The following requirements are involved:<br>I4H3JJ: Distributed objects for small-system devices|
| DFX| Watchdog detection for the system and application is provided. Log collection for native crashes and JS crashes is supported.<br>Abnormal behavior detection is provided for JS applications.<br>System and process status information can be exported. JS applications can obtain the bottom-layer memory, CPU, and VM information.<br>Distributed tracing and debugging are supported.<br>Log, system event, and application event capabilities are enhanced.<br>The following requirements are involved:<br>I4PJE3 [New feature] Hidumper framework and tool for the standard system<br>I4MBRE [hiperf] Performance statistics<br>I4U0KP [profiler] CPU profiler<br>I4PJE5 [New feature] JS application debugging and optimization based on native memory information<br>I4Q6AQ [New feature] Watchdog<br>I4U0JZ [New feature] hisysevent management<br>I4Q6B6 [Enhanced feature] HiTrace JS APIs<br>I4Q6AY [New feature] Detection mode framework and basic detection basic functions| NA |
| Driver| -& Enhanced Hardware Driver Foundation (HDF) capabilities are provided, including HDF Configuration Source (HCS) configuration parsing and power management.<br>- The shared memory queue and on-demand hardware device interface (HDI) service startup are added to the HDI management framework.<br>- The user-mode platform interfaces are provided for user-mode driver development.<br>- More than 200 HDI interfaces are defined for peripheral modules such as display, audio, camera, sensor, power supply, and USB. The number of device interfaces exceeds 600, providing more hardware access capabilities.<br>The following requirements are involved:<br>I4HPR7 [Enhanced feature] HCS macro parsing interface<br>I4LZZF [Enhanced feature] Synchronous/Asynchronous power management invocation<br>I4QEKH [New feature] Shared memory HDIs<br>I4QEKI [New feature] Driver development tool for standard-system driver development<br>I4QEKZ [New feature] User-mode platform driver interfaces<br>I4QEKL [New feature] Unified platform driver object model built on the HDF<br>I4QELC [New feature] On-demand UHDF process startup<br>I4QEKJ [New feature] HDI adaptation for the Linux-input driver<br>I4QEKM [New feature] Power HDIs<br>I4QEKK [New feature] HDF-based hardware timer driver<br>I4QEKP [New feature] HDF-based light driver<br>I4MBTP [Enhanced feature] Enhanced sensor driver model<br>I4MBTQ [Enhanced feature] Enhanced sensor driver<br>I4MBTR [Enhanced feature] Display HDI reference implementation for the standard system<br>I4MBTS [New feature] More HDF input device capabilities<br>I4QEKP [New feature] HDF based light driver<br>I4QEKQ [New feature] Service-oriented display HDI implementation<br>I4QEL2 [Enhanced feature] Enhanced vibrator driver model<br>I4XXGZ [New feature] HDF based pedometer sensor driver| For the mini and small systems:<br>HCS macro parsing interfaces are provided to reduce the memory usage during compilation.<br>The following requirements are involved:<br>I4TFTB [New feature] HCS macro parsing interfaces for the mini system|
| USB| - A complete USB service management framework is built, including the host and device modules.<br>- Port switching is supported for switching between different function modes.<br>- USB JS APIs are provided for application development.<br>- USB HDIs are defined and implemented, and standard interfaces for USB driver access are provided.<br>The following requirements are involved:<br>I4MBRK [New feature] JS API implementation for the USB service<br>I4QEKV [New feature] HDI implementation for the USB service<br>I4QEKN [New feature] USB device implementation<br>I4QEKO [New feature] USB host implementation<br>I4QEL6 [New feature] USB port implementation| NA |
| Compilation and building| - Normalized component definition and compilation are added.<br>- A unified compilation framework is provided, including the unified gn template, component configuration, product configuration, build commands, and build process.<br>- Native SDK compilation and release are supported.<br>- The Kconfig framework is supported.<br>- The hb capabilities are enhanced, including using the hb compilation entry in a unified manner, displaying build logs by level, and supporting hb command installation, integration, and extension.<br>- gn coding specifications and best practice are provided.| The feature changes for the mini and small systems are the same as those for the standard system.|
| Test| - The automated test framework is added to support the compilation and running of basic unit/UI test scripts.<br>- The wukong tool is provided to support pressure testing of random event injection at the level of the entire system or a single application.<br>-& The SmartPerf tool is added to collect and display basic performance data such as FPS, CPU, and memory data.<br>- The test scheduling framework is enhanced to support automatic case execution configuration and execution configuration management.<br>- The DCTS compatibility test suite is provided to support the DSoftBus and distributed data compatibility test.<br>-& The ACTS and HATS compatibility test suites are enhanced, covering external public JS APIs and HDF APIs in OpenHarmony 3.1 Release.<br>The following requirements are involved:<br>I4XXCR [Test framework] UI automation test<br>I4XXCV [Test framework] TS developer test framework<br>I4XXCW [Test framework] JS application developer test framework<br>I4XXD0 [Test framework] Executor device management<br>I4XXCX [Test framework] Test pipeline test suite execution report<br>I4XXCZ [Test framework] Test case configuration management<br>I4XXD0 [Test framework] Executor device management<br>I4XGLQ [New feature] UI random pressure test tool<br>I4XXD7 [Authentication test] DCTS 3.1 distributed compatibility test suite| NA |
| Startup| - Process grouping and concurrent startup are supported.<br>- The SA and UHDF services can be started as required or based on hotplug events.<br>- The functions of creating a socket for a service and holding a file descriptor (FD) for a process that exits are added.<br>- **begetctl** is used as the unified init maintenance command.<br>- The recycling policy after process exit is optimized to support core process restart after exit. Non-core processes can be isolated when they are frequently suspended.<br>The following requirements are involved:<br>I4UTCF [New feature] Process grouping and parallel startup basic framework<br>I4UGE9 Bootchart function<br>I4UP28 SELinux label adaptation for dynamic files<br>I4UTCO [Enhanced feature] Enhanced application process incubation<br>I4UTCY [Enhanced feature] Recycling of incubated application processes by appspawn<br>I4RXJ2 [New specification] Unified init maintenance command<br>I4RXJ9 [New feature] On-demand service process startup<br>I4TNBV [New specification] Enhanced process startup configuration<br>I4PD3K Enhanced recycling policy configuration after process exit| NA |
| User IAM| - The multi-user identity management and user identity authentication functions are added.<br>- A unified user identity authentication framework is added to manage various authentication modes.<br>- Password authentication is added.<br>- Facial authentication is added.<br>The following requirements are involved:<br>I4RG55 [New specification] [user_idm] Query of local authentication credential information of users<br>I4RG5R [New specification] [user_idm] Deletion of the identity authentication credential when a user is deleted<br>I4RG8W [New specification] [pin_auth] Input of local passwords<br>I4RG91 [New specification] [pin_auth] Local password authentication<br>I4RGWU [New specification] [pin_auth] Local password deletion<br>I4TSK7 [New specification] [face_auth] Local facial information deletion<br>I4TSJE [New specification] [face_auth] Local face recording<br>I4TSJY [New specification] [face_auth] Local facial authentication| NA |
| Security| - The device security level management framework is added to support security level query for a specified device.<br>- Management policies for cross-device data migration are added to provide a basis for data security management during internal data processing and service hopping.<br>- A unified key management service is added to manage the full lifecycle of local keys for system applications and upper-layer services.<br>- The device mutual trust authentication capability is added to secure device connections.<br>The following requirements are involved:<br>I4RTYU [New feature] [Service] Devices on the network can query their own security levels.<br>I4RTYW [New feature] [Service] Devices can query the security level of their own or others.<br>I4TJFZ [Enhanced feature] DeviceAuth supports multi-user isolation for trust relationship authentication between devices. The trust relationship managed by a specified system user is used for authentication.<br>I4TJG1 [Enhanced feature] DeviceAuth implements multiple instances of trusted group data and supports data query of a specified user.<br>I4TJG3 [Enhanced feature] DeviceAuth supports the establishment and cancellation of account-irrelevant P2P trust relationships between multiple users.<br>I4TT8L [New specification] HUKS provides a three-segment key management interface.<br>I4TYEM [New specification] HUKS supports import, issuing, and verification of security level credentials.<br>I4TYFI [New specification] When a subuser is deleted from HUKS, the related key data must be deleted.<br>I4TYFR [New specification] When an application is deleted from HUKS, the related key data must be deleted.<br>I4TYFA [New specification] HUKS supports application UID-based access isolation for key applications.<br>I4TYF1 [New specification] HUKS supports key attestation and ID attestation.<br>I4SAI0 [New feature] DataTransitMgrLib is provided to support management policies for cross-device data migration.| NA |
| Application| Some system applications that are applicable to the standard system are provided, such as Home Screen, System UI, and Settings. Specific examples are provided for developers to build applications that can be run on all standard-system devices.<br>- Home Screen: acts as a main entry for all applications and provides UIs for display and human-machine interactions of installed applications.<br>- System UI: consists of the navigation bar and system status bar. The navigation bar provides page navigation, and the status bar displays the system status, such as the time and charging status.<br>- Settings: provides functions such as device management, application management, and brightness setting.<br>- Contacts: provides functions such as the dialer, call log viewing/deletion, contact list, contact details viewing, and contact creation.<br>- Messaging: provides functions such as viewing, sending, receiving, and deleting SMS messages, and sending SMS delivery reports.<br>- Call: provides functions such as answering and ending voice calls and enabling/disabling mobile data.<br>- Camera: provides functions such as preview, photographing, thumbnail display, and original image browsing.<br>- Gallery: provides functions such as managing, browsing, displaying, and editing photos, videos, and albums.<br>- Input Method: provides functions such as hard keyboard input, text change in the edit box, and cursor position change feedback.<br>Note: In OpenHarmony 3.1 Release, only the Gallery system application code can be compiled in the released IDE and SDK.| NA |
For details, see the following:
*[JS API Differences](api-change/v3.1-Release/js-apidiff-v3.1-release.md)*
*[Native API Differences](api-change/v3.1-Release/native-apidiff-v3.1-release.md)*
### Chip and Development Board Adaptation
For details about the adaptation status, see [SIG-Devboard](https://gitee.com/openharmony/community/blob/master/sig/sig-devboard/sig_devboard.md).
### Samples & Codelabs
#### New Samples
**Table 4** New samples
| Subsystem name| Sample Name| Introduction| Programming Language|
| -------- | -------- | -------- | -------- |
| Telephony| [SMS](https://gitee.com/openharmony/app_samples/tree/master/Telephony/Message)| This sample shows how to send SMS messages.| eTS |
| Telephony| [Radio](https://gitee.com/openharmony/app_samples/tree/master/Telephony/RadioTech)| This sample shows how to use the radio function of the telephony service in eTS to obtain information, including the radio access technology, network status, network selection mode, ISO country code, signal strength list, and whether the radio function is enabled.| eTS |
| Device management| [Power Management](https://gitee.com/openharmony/app_samples/tree/master/common/PowerManager)| This sample shows how to power off a device, restart the system, and check the screen status.| eTS |
| Device management| [Sensor](https://gitee.com/openharmony/app_samples/tree/master/device/SenSor)| This sample uses the orientation sensor APIs to implement the compass effect.| eTS |
| Device management| [Device Management](https://gitee.com/openharmony/app_samples/tree/master/device/DeviceManager)| This sample shows the use of the **DeviceManager** API in eTS, including obtaining the trusted device list, scanning for devices, authenticating devices, and subscribing to device status changes.| eTS |
| Account management| [Application Account Management](https://gitee.com/openharmony/app_samples/tree/master/Account/AppAccountManager)| This sample shows how to register/log in to an application and set the account information to demonstrate application account management.| eTS |
| ArkUI | [web](https://gitee.com/openharmony/app_samples/tree/master/ETSUI/Web)| This sample shows the function pages of the **\<Web>** component.| eTS |
| ArkUI | [Drag](https://gitee.com/openharmony/app_samples/tree/master/ETSUI/Drag)| This sample shows the drag operation function.| eTS |
| ArkUI | [Animation](https://gitee.com/openharmony/app_samples/tree/master/ETSUI/ArkUIAnimation)| This sample demonstrates the effect of the **AnimatorProperty** and **Explicit Animation**.| eTS |
| Data management| [Querying the DDM Result Set](https://gitee.com/openharmony/app_samples/tree/master/data/DDMQuery)| This sample shows how to create a query object to query data in a key-value (KV) store and obtain the result set in distributed data management (DDM).| eTS |
| Data management| [eTS RDB](https://gitee.com/openharmony/app_samples/tree/master/data/Rdb)| This sample shows how to use a relational database (RDB) in eTS, including adding, deleting, modifying, and querying data.| eTS |
| Common event and notification| [Reminder Agent](https://gitee.com/openharmony/app_samples/tree/master/Notification/AlarmClock)| This sample shows how to use the reminder agent by simulating an alarm clock.| eTS |
| Common event and notification| [Event notification](https://gitee.com/openharmony/app_samples/tree/master/Notification/Emitter)| This sample shows the in-process event notification. After a user selects an offering and submits an order, the selected offering is displayed in the order list.| eTS |
| Connectivity| [RPC](https://gitee.com/openharmony/app_samples/tree/master/Communication/RPC)| This sample shows the data exchange between the frontend and backend of a device. After the offering and quantity are selected at the frontend, the backend calculates the result and displays it at the frontend.| eTS |
| Connectivity| [WLAN](https://gitee.com/openharmony/app_samples/tree/master/Communication/Wlan) | This sample shows how to use WLAN with eTS, including disabling and enabling the WLAN, scanning the WLAN and obtaining the scanning result, listening for WLAN status and Wi-Fi connection status, obtaining the IP address, country code, and checking whether the device supports WLAN features.| eTS |
| Multimedia| [Recorder](https://gitee.com/openharmony/app_samples/tree/master/media/Recorder)| This sample shows how to use audio recording and playback of the media service.| eTS |
| Multimedia| [Multimedia](https://gitee.com/openharmony/app_samples/tree/master/media/MultiMedia)| This demo shows how to invoke the camera to take photos in eTS and how to use the **MediaLibrary** APIs to add, delete, modify, and query media files.| eTS |
For more information, visit [Samples](https://gitee.com/openharmony/app_samples).
#### New Codelabs
**Table 5** New codelabs
| Codelab Name | Introduction | Programming Language|
| ------------------------------------------------------------ | ------------------------------------------------------------ | -------- |
| [Distributed Authentication](https://gitee.com/openharmony/codelabs/tree/master/Distributed/GameAuthOpenH)| This codelab shows how to develop a distributed game authentication application in JS and how to use the distributed startup, **DeviceManager** objects, and device attribute display interfaces.| JS |
| [Distributed Game Controller](https://gitee.com/openharmony/codelabs/tree/master/Distributed/HandleGameApplication)| This codelab shows how to develop a game controller in eTS. By leveraging the distributed capabilities, one development board is used as the game controller, and another development board is used as the game server.| eTS |
| [Distributed Jigsaw Puzzle](https://gitee.com/openharmony/codelabs/tree/master/Distributed/OpenHarmonyPictureGame)| This codelab shows how to develop a jigsaw puzzle. In this development, the RPC is used for cross-device communication, and **CommonEvent** is used to implement communication between the Service ability and FA.| eTS |
| [Distributed Control](https://gitee.com/openharmony/codelabs/tree/master/Distributed/RemoteControllerETS)| This codelab shows how to develop a distributed control in eTS. By leveraging the distributed capabilities, one development board is used as the TV, and another development board is used as as the remote control.| eTS |
| [Audio Recording](https://gitee.com/openharmony/codelabs/tree/master/Media/Audio_OH_ETS)| This codelab shows how to use **AudioRecorder** to record an audio file and use **AudioPlayer** to play the recorded audio.| eTS |
| [Notepad](https://gitee.com/openharmony/codelabs/tree/master/Data/NotePad_OH_ETS)| This codelab shows how to develop a notepad in eTS. You can create, delete, and favorite notes, and use the lightweight database to store data persistently.| eTS |
| [Distributed Mail Editing](https://gitee.com/openharmony/codelabs/tree/master/Distributed/OHMailETS)| This codelab shows how to develop the distributed email editing function. By leveraging the distributed capabilities, a remote device in the same LAN and with the same login account can be started, and email editing can be continued on the remote device.| eTS |
| [Third-party Library](https://gitee.com/openharmony/codelabs/tree/master/ThirdPartyComponents/VCardDemo)| This codelab shows how to use vcard, a third-party library used in OpenHarmony to write and read contact data in a specified format (file with the extension name **vcard**).| eTS |
## Resolved Issues
**Table 6** Resolved issues
| Issue No.| Description|
| -------- | -------- |
| [I4MGJM](https://gitee.com/openharmony/drivers_peripheral/issues/I4MGJM) | [HDF/Camera] The case fails when the RK3568 board runs the camera HDI tests.|
| [I4OECR](https://gitee.com/openharmony/ark_js_runtime/issues/I4OECR) | An Ark stack exception occurs during XTS running (low probability).|
| [I4OBTW](https://gitee.com/openharmony/aafwk_standard/issues/I4OBTW) | After all XTS cases are executed and the application is installed, aa start failures occur, affecting the pipeline stability test.|
| [I4OLHF](https://gitee.com/openharmony/ark_js_runtime/issues/I4OLHF?from=project-issue) | [ArkUI subsystem] The test process is abnormal due to the com.amsst.amsMissionSnapshotTest process.|
| [I4OLUK](https://gitee.com/openharmony/ark_js_runtime/issues/I4OLUK) | [ArkUI subsystem] The process stack is abnormal due to the com.ohos.systemui process.|
## Known Issues
**Table 7** Known issues
| Issue No.| Description| Impact| To Be Resolved On|
| -------- | -------- | -------- | -------- |
| [I4NRS5](https://gitee.com/openharmony/kernel_linux_5.10/issues/I4NRS5) | [Kernel subsystem] A CVE vulnerability exists.| No patch has been released for the Linux kernel. The kernel will be updated after the patch is released in the community.| Depending on the patch release in the community|
| [I4UUFR](https://gitee.com/openharmony/third_party_e2fsprogs/issues/I4UUFR) | Local image compilation and build may fail for the Hi3516 development board.| Compilation occasionally fails on the Hi3516 development board. This issue can be resolved by downloading the code.| 2022-04-30 |
| [I4RJU8](https://e.gitee.com/open_harmony/issues/list?issue=I4RJU8) | A black screen occurs during camera preview on the Hi3516 development board of a standard-system device.| The preview function is affected.| 2022-05-30 |
| [I4Z3G9](https://e.gitee.com/open_harmony/issues/list?issue=I4Z3G9) | [Graphics subsystem] [RK3568] Screen flickering occurs when the secondary window is opened in the immersive primary window.| User experience is adversely affected.| 2022-04-15 |
| [I50EBB](https://gitee.com/openharmony/docs/issues/I50EBB?from=project-issue) | [Hi3516 burning] Images of the Hi3516 development board on a standard-system device cannot be burnt by using the IDE.| The burning fails only in the Ubuntu environment of the IDE.<br>**Workaround**: Use the remote mode to burn the image on Windows.<br>**Solution**:<br>The Windows + Ubuntu hybrid mode will be used. Remote Ubuntu development, compilation, and debugging are performed on Windows, and burning is automatically performed on Windows.| 2022-04-30 |
# OpenHarmony Release Notes # OpenHarmony Release Notes
## OpenHarmony 3.x Releases ## OpenHarmony 3.x Releases
- [OpenHarmony v3.1 Release (2022-03-30)](OpenHarmony-v3.1-release.md)
- [OpenHarmony 3.1 Beta (2021-12-31)](OpenHarmony-v3.1-beta.md) - [OpenHarmony 3.1 Beta (2021-12-31)](OpenHarmony-v3.1-beta.md)
- [OpenHarmony 3.0.2 LTS (2022-01-12)](OpenHarmony-v3.0.2-LTS.md) - [OpenHarmony 3.0.2 LTS (2022-01-12)](OpenHarmony-v3.0.2-LTS.md)
- [OpenHarmony 3.0.1 LTS (2022-01-12)](OpenHarmony-v3.0.1-LTS.md) - [OpenHarmony 3.0.1 LTS (2022-01-12)](OpenHarmony-v3.0.1-LTS.md)
......
# JS API Changes of the Ability Framework
The table below lists the APIs changes of the ability framework in OpenHarmony 3.1 Release over OpenHarmony 3.0 LTS.
## API Changes
| Module| Class| Method/Attribute/Enumeration/Constant| Change Type|
|---|---|---|---|
| featureability | FeatureAbility | static getDeviceList(flag: number): Promise<Result>; | Added|
| customizeData | CustomizeData | extra: string; | Added|
| applicationInfo | ApplicationInfo | readonly entityType: string; | Added|
| applicationInfo | ApplicationInfo | readonly uid: number; | Added|
| applicationInfo | ApplicationInfo | readonly accessTokenId: number; | Added|
| applicationInfo | ApplicationInfo | readonly removable: boolean; | Added|
| applicationInfo | ApplicationInfo | readonly metaData: Map<string, Array<CustomizeData>>; | Added|
| applicationInfo | ApplicationInfo | readonly codePath: string; | Added|
| applicationInfo | ApplicationInfo | readonly moduleInfos: Array<ModuleInfo>; | Added|
| shellCmdResult | ShellCmdResult | exitCode: number; | Added|
| shellCmdResult | ShellCmdResult | stdResult: String; | Added|
| ProcessRunningInfo | ProcessRunningInfo | bundleNames: Array<string>; | Added|
| ProcessRunningInfo | ProcessRunningInfo | processName: string; | Added|
| ProcessRunningInfo | ProcessRunningInfo | uid: number; | Added|
| ProcessRunningInfo | ProcessRunningInfo | pid: number; | Added|
| BaseContext | BaseContext | stageMode: boolean; | Added|
| abilityDelegatorArgs | AbilityDelegatorArgs | testRunnerClassName: string; | Added|
| abilityDelegatorArgs | AbilityDelegatorArgs | testCaseNames: string; | Added|
| abilityDelegatorArgs | AbilityDelegatorArgs | parameters: {[key: string]: string}; | Added|
| abilityDelegatorArgs | AbilityDelegatorArgs | bundleName: string; | Added|
| abilityDelegator | AbilityDelegator | executeShellCommand(cmd: string, callback: AsyncCallback<ShellCmdResult>): void;<br>executeShellCommand(cmd: string, timeoutSecs: number, callback: AsyncCallback<ShellCmdResult>): void;<br>executeShellCommand(cmd: string, timeoutSecs?: number): Promise<ShellCmdResult>; | Added|
| abilityDelegator | AbilityDelegator | print(msg: string, callback: AsyncCallback<void>): void;<br>print(msg: string): Promise<void>; | Added|
| context | Context | printDrawnCompleted(callback: AsyncCallback<void>): void;<br>printDrawnCompleted(): Promise<void>; | Added|
| context | Context | isUpdatingConfigurations(callback: AsyncCallback<boolean>): void;<br>isUpdatingConfigurations(): Promise<boolean>; | Added|
| context | Context | getAbilityInfo(callback: AsyncCallback<AbilityInfo>): void<br>getAbilityInfo(): Promise<AbilityInfo>; | Added|
| context | Context | getApplicationContext(): Context; | Added|
| context | Context | getAppVersionInfo(callback: AsyncCallback<AppVersionInfo>): void<br>getAppVersionInfo(): Promise<AppVersionInfo>; | Added|
| context | Context | getHapModuleInfo(callback: AsyncCallback<HapModuleInfo>): void<br>getHapModuleInfo(): Promise<HapModuleInfo>; | Added|
| context | Context | getAppType(callback: AsyncCallback<string>): void<br>getAppType(): Promise<string>; | Added|
| context | Context | getOrCreateDistributedDir(): Promise<string>;<br>getOrCreateDistributedDir(callback: AsyncCallback<string>): void; | Added|
| context | Context | getCacheDir(callback: AsyncCallback<string>): void;<br>getCacheDir(): Promise<string>; | Added|
| context | Context | getFilesDir(callback: AsyncCallback<string>): void;<br>getFilesDir(): Promise<string>; | Added|
| context | Context | setWakeUpScreen(wakeUp: boolean, callback: AsyncCallback<void>): void<br>setWakeUpScreen(wakeUp: boolean): Promise<void>; | Added|
| context | Context | setShowOnLockScreen(show: boolean, callback: AsyncCallback<void>): void<br>setShowOnLockScreen(show: boolean): Promise<void>; | Added|
| context | Context | setDisplayOrientation(orientation: DisplayOrientation, callback: AsyncCallback<void>): void<br>setDisplayOrientation(orientation: DisplayOrientation): Promise<void>; | Added|
| context | Context | getDisplayOrientation(callback: AsyncCallback<DisplayOrientation>): void<br>getDisplayOrientation(): Promise<DisplayOrientation>; | Added|
| appVersionInfo | AppVersionInfo | readonly versionName: string; | Added|
| appVersionInfo | AppVersionInfo | readonly versionCode: number; | Added|
| appVersionInfo | AppVersionInfo | readonly appName: string; | Added|
| dataAbilityHelper | PacMap | [key: string]: number \| string \| boolean \| Array<string \| number \| boolean> \| null; | Added|
| dataAbilityHelper | DataAbilityHelper | executeBatch(uri: string, operations: Array<DataAbilityOperation>, callback: AsyncCallback<Array<DataAbilityResult>>): void;<br>executeBatch(uri: string, operations: Array<DataAbilityOperation>): Promise<Array<DataAbilityResult>>; | Added|
| dataAbilityHelper | DataAbilityHelper | call(uri: string, method: string, arg: string, extras: PacMap, callback: AsyncCallback<PacMap>): void;<br>call(uri: string, method: string, arg: string, extras: PacMap): Promise<PacMap>; | Added|
| ohos.application.Want | Want | entities?: Array<string>; | Added|
| ohos.application.Want | Want | parameters?: {[key: string]: any}; | Added|
| ohos.application.Want | Want | action?: string; | Added|
| ohos.application.Want | Want | flags?: number; | Added|
| ohos.application.Want | Want | type?: string; | Added|
| ohos.application.Want | Want | uri?: string; | Added|
| ohos.application.Want | Want | abilityName?: string; | Added|
| ohos.application.Want | Want | bundleName?: string; | Added|
| ohos.application.Want | Want | deviceId?: string; | Added|
| ohos.application.testRunner | TestRunner | onRun(): void; | Added|
| ohos.application.testRunner | TestRunner | onPrepare(): void; | Added|
| ohos.application.formProvider | formProvider | function updateForm(formId: string, formBindingData: formBindingData.FormBindingData, callback: AsyncCallback<void>): void;<br>function updateForm(formId: string, formBindingData: formBindingData.FormBindingData): Promise<void>; | Added|
| ohos.application.formProvider | formProvider | function setFormNextRefreshTime(formId: string, minute: number, callback: AsyncCallback<void>): void;<br>function setFormNextRefreshTime(formId: string, minute: number): Promise<void>; | Added|
| ohos.application.formInfo | FormParam | TEMPORARY_KEY = "ohos.extra.param.key.form_temporary" | Added|
| ohos.application.formInfo | FormParam | HEIGHT_KEY = "ohos.extra.param.key.form_height" | Added|
| ohos.application.formInfo | FormParam | WIDTH_KEY = "ohos.extra.param.key.form_width" | Added|
| ohos.application.formInfo | FormParam | MODULE_NAME_KEY = "ohos.extra.param.key.module_name" | Added|
| ohos.application.formInfo | FormParam | NAME_KEY = "ohos.extra.param.key.form_name" | Added|
| ohos.application.formInfo | FormParam | DIMENSION_KEY = "ohos.extra.param.key.form_dimension" | Added|
| ohos.application.formInfo | FormState | READY = 1 | Added|
| ohos.application.formInfo | FormState | DEFAULT = 0 | Added|
| ohos.application.formInfo | FormState | UNKNOWN = -1 | Added|
| ohos.application.formInfo | FormStateInfo | want: Want; | Added|
| ohos.application.formInfo | FormStateInfo | formState: FormState; | Added|
| ohos.application.formInfo | ColorMode | MODE_LIGHT = 1 | Added|
| ohos.application.formInfo | ColorMode | MODE_DARK = 0 | Added|
| ohos.application.formInfo | ColorMode | MODE_AUTO = -1 | Added|
| ohos.application.formInfo | FormType | JS = 1 | Added|
| ohos.application.formInfo | FormInfo | customizeData: {[key: string]: [value: string]}; | Added|
| ohos.application.formInfo | FormInfo | supportDimensions: Array<number>; | Added|
| ohos.application.formInfo | FormInfo | defaultDimension: number; | Added|
| ohos.application.formInfo | FormInfo | updateDuration: number; | Added|
| ohos.application.formInfo | FormInfo | formConfigAbility: string; | Added|
| ohos.application.formInfo | FormInfo | scheduledUpdateTime: string; | Added|
| ohos.application.formInfo | FormInfo | relatedBundleName: string; | Added|
| ohos.application.formInfo | FormInfo | formVisibleNotify: boolean; | Added|
| ohos.application.formInfo | FormInfo | updateEnabled: boolean; | Added|
| ohos.application.formInfo | FormInfo | isDefault: boolean; | Added|
| ohos.application.formInfo | FormInfo | colorMode: ColorMode; | Added|
| ohos.application.formInfo | FormInfo | jsComponentName: string; | Added|
| ohos.application.formInfo | FormInfo | type: FormType; | Added|
| ohos.application.formInfo | FormInfo | description: string; | Added|
| ohos.application.formInfo | FormInfo | name: string; | Added|
| ohos.application.formInfo | FormInfo | abilityName: string; | Added|
| ohos.application.formInfo | FormInfo | moduleName: string; | Added|
| ohos.application.formInfo | FormInfo | bundleName: string; | Added|
| ohos.application.formError | FormError | ERR_IN_RECOVERY = 36 | Added|
| ohos.application.formError | FormError | ERR_FORM_DUPLICATE_ADDED = 31 | Added|
| ohos.application.formError | FormError | ERR_SYSTEM_RESPONSES_FAILED = 30 | Added|
| ohos.application.formError | FormError | ERR_FORM_FA_NOT_INSTALLED = 20 | Added|
| ohos.application.formError | FormError | ERR_FORM_NO_SUCH_DIMENSION = 19 | Added|
| ohos.application.formError | FormError | ERR_FORM_NO_SUCH_ABILITY = 18 | Added|
| ohos.application.formError | FormError | ERR_FORM_NO_SUCH_MODULE = 17 | Added|
| ohos.application.formError | FormError | ERR_MAX_SYSTEM_TEMP_FORMS = 16 | Added|
| ohos.application.formError | FormError | ERR_MAX_FORMS_PER_CLIENT = 15 | Added|
| ohos.application.formError | FormError | ERR_PROVIDER_DEL_FAIL = 14 | Added|
| ohos.application.formError | FormError | ERR_OPERATION_FORM_NOT_SELF = 13 | Added|
| ohos.application.formError | FormError | ERR_MAX_INSTANCES_PER_FORM = 12 | Added|
| ohos.application.formError | FormError | ERR_MAX_SYSTEM_FORMS = 11 | Added|
| ohos.application.formError | FormError | ERR_BIND_PROVIDER_FAILED = 10 | Added|
| ohos.application.formError | FormError | ERR_NOT_EXIST_ID = 9 | Added|
| ohos.application.formError | FormError | ERR_CFG_NOT_MATCH_ID = 8 | Added|
| ohos.application.formError | FormError | ERR_ADD_INVALID_PARAM = 7 | Added|
| ohos.application.formError | FormError | ERR_GET_LAYOUT_FAILED = 6 | Added|
| ohos.application.formError | FormError | ERR_GET_BUNDLE_FAILED = 5 | Added|
| ohos.application.formError | FormError | ERR_GET_INFO_FAILED = 4 | Added|
| ohos.application.formError | FormError | ERR_PERMISSION_DENY = 2 | Added|
| ohos.application.formError | FormError | ERR_COMMON = 1 | Added|
| ohos.application.formBindingData | FormBindingData | data: Object | Added|
| ohos.application.formBindingData | formBindingData | function createFormBindingData(obj?: Object \| string): FormBindingData; | Added|
| ohos.application.ConfigurationConstant | ColorMode | COLOR_MODE_LIGHT = 1 | Added|
| ohos.application.ConfigurationConstant | ColorMode | COLOR_MODE_DARK = 0 | Added|
| ohos.application.ConfigurationConstant | ColorMode | COLOR_MODE_NOT_SET = -1 | Added|
| ohos.application.Configuration | Configuration | colorMode: ConfigurationConstant.ColorMode; | Added|
| ohos.application.Configuration | Configuration | language: string; | Added|
| ohos.application.appManager | appManager | function getAppMemorySize(): Promise<number>;<br>function getAppMemorySize(callback: AsyncCallback<number>): void; | Added|
| ohos.application.appManager | appManager | function isRamConstrainedDevice(): Promise<boolean>;<br>function isRamConstrainedDevice(callback: AsyncCallback<boolean>): void; | Added|
| ohos.application.appManager | appManager | function getProcessRunningInfos(): Promise<Array<ProcessRunningInfo>>;<br>function getProcessRunningInfos(callback: AsyncCallback<Array<ProcessRunningInfo>>): void; | Added|
| ohos.application.appManager | appManager | function isRunningInStabilityTest(callback: AsyncCallback<boolean>): void;<br>function isRunningInStabilityTest(): Promise<boolean>; | Added|
| ohos.application.abilityDelegatorRegistry | AbilityLifecycleState | DESTROY | Added|
| ohos.application.abilityDelegatorRegistry | AbilityLifecycleState | BACKGROUND | Added|
| ohos.application.abilityDelegatorRegistry | AbilityLifecycleState | FOREGROUND | Added|
| ohos.application.abilityDelegatorRegistry | AbilityLifecycleState | CREATE | Added|
| ohos.application.abilityDelegatorRegistry | AbilityLifecycleState | UNINITIALIZED | Added|
| ohos.application.abilityDelegatorRegistry | abilityDelegatorRegistry | function getArguments(): AbilityDelegatorArgs; | Added|
| ohos.application.abilityDelegatorRegistry | abilityDelegatorRegistry | function getAbilityDelegator(): AbilityDelegator; | Added|
| ohos.abilityAccessCtrl | GrantStatus | PERMISSION_GRANTED = 0 | Added|
| ohos.abilityAccessCtrl | GrantStatus | PERMISSION_DENIED = -1 | Added|
| ohos.abilityAccessCtrl | AtManager | verifyAccessToken(tokenID: number, permissionName: string): Promise<GrantStatus>; | Added|
| ohos.abilityAccessCtrl | abilityAccessCtrl | function createAtManager(): AtManager; | Added|
| ohos.ability.wantConstant | Action | ACTION_APP_ACCOUNT_OAUTH = "ohos.account.appAccount.action.oauth" | Added|
| ohos.ability.wantConstant | Action | ACTION_VIDEO_CAPTURE = "ohos.want.action.videoCapture" | Added|
| ohos.ability.wantConstant | Action | ACTION_IMAGE_CAPTURE = "ohos.want.action.imageCapture" | Added|
| ohos.ability.particleAbility | ErrorCode | INVALID_PARAMETER = -1 | Added|
| ohos.ability.particleAbility | particleAbility | function disconnectAbility(connection: number, callback:AsyncCallback<void>): void;<br>function disconnectAbility(connection: number): Promise<void>; | Added|
| ohos.ability.particleAbility | particleAbility | function connectAbility(request: Want, options:ConnectOptions): number; | Added|
| ohos.ability.particleAbility | particleAbility | function cancelBackgroundRunning(callback: AsyncCallback<void>): void;<br>function cancelBackgroundRunning(): Promise<void>; | Added|
| ohos.ability.particleAbility | particleAbility | function startBackgroundRunning(id: number, request: NotificationRequest, callback: AsyncCallback<void>): void;<br>function startBackgroundRunning(id: number, request: NotificationRequest): Promise<void>; | Added|
| ohos.ability.featureAbility | featureAbility | function getWindow(callback: AsyncCallback<window.Window>): void;<br>function getWindow(): Promise<window.Window>; | Added|
| ohos.ability.errorCode | ErrorCode | NO_ERROR = 0 | Added|
| ohos.ability.errorCode | ErrorCode | INVALID_PARAMETER = -1 | Added|
| ohos.ability.errorCode | ErrorCode | ABILITY_NOT_FOUND = -2 | Added|
| ohos.ability.errorCode | ErrorCode | PERMISSION_DENY = -3 | Added|
| lifecycle | LifecycleData | call?(method: string, arg: string, extras: PacMap, callback: AsyncCallback<PacMap>): void; | Added|
| lifecycle | LifecycleData | executeBatch?(ops: Array<DataAbilityOperation>, callback: AsyncCallback<Array<DataAbilityResult>>): void; | Added|
| lifecycle | LifecycleService | onReconnect?(want: Want): void; | Added|
| lifecycle | LifecycleApp | onMemoryLevel?(level: number): void; | Added|
| lifecycle | LifecycleApp | onNewWant?(want: Want): void; | Added|
| lifecycle | LifecycleApp | onActive?(): void; | Added|
| lifecycle | LifecycleApp | onInactive?(): void; | Added|
| lifecycle | LifecycleApp | onRestoreAbilityState?(inState: PacMap): void; | Added|
| lifecycle | LifecycleApp | onSaveAbilityState?(outState: PacMap): void; | Added|
| lifecycle | LifecycleForm | onAcquireFormState?(want: Want): formInfo.FormState; | Added|
| lifecycle | LifecycleForm | onDestroy?(formId: string): void; | Added|
| lifecycle | LifecycleForm | onEvent?(formId: string, message: string): void; | Added|
| lifecycle | LifecycleForm | onVisibilityChange?(newStatus: { [key: string]: number }): void; | Added|
| lifecycle | LifecycleForm | onUpdate?(formId: string): void; | Added|
| lifecycle | LifecycleForm | onCastToNormal?(formId: string): void; | Added|
| lifecycle | LifecycleForm | onCreate?(want: Want): formBindingData.FormBindingData; | Added|
# JS API Changes of the Accessibility Subsystem
The table below lists the APIs changes of the accessibility subsystem in OpenHarmony 3.1 Release over OpenHarmony 3.0 LTS.
## API Changes
| Module| Class| Method/Attribute/Enumeration/Constant| Change Type|
|---|---|---|---|
| ohos.accessibility | EventInfo | itemCount?: number; | Added|
| ohos.accessibility | EventInfo | endIndex?: number; | Added|
| ohos.accessibility | EventInfo | currentIndex?: number; | Added|
| ohos.accessibility | EventInfo | beginIndex?: number; | Added|
| ohos.accessibility | EventInfo | lastContent?: string; | Added|
| ohos.accessibility | EventInfo | contents?: Array<string>; | Added|
| ohos.accessibility | EventInfo | textMoveUnit?: TextMoveUnit; | Added|
| ohos.accessibility | EventInfo | triggerAction: Action; | Added|
| ohos.accessibility | EventInfo | description?: string; | Added|
| ohos.accessibility | EventInfo | pageId ?: number; | Added|
| ohos.accessibility | EventInfo | componentType?: string; | Added|
| ohos.accessibility | EventInfo | bundleName: string; | Added|
| ohos.accessibility | EventInfo | windowUpdateType?: WindowUpdateType; | Added|
| ohos.accessibility | EventInfo | type: EventType; | Added|
| ohos.accessibility | EventInfo | constructor(jsonObject); | Added|
| ohos.accessibility | AccessibilityAbilityInfo | readonly eventTypes: Array<EventType>; | Added|
| ohos.accessibility | AccessibilityAbilityInfo | readonly description: string; | Added|
| ohos.accessibility | AccessibilityAbilityInfo | readonly capabilities: Array<Capability>; | Added|
| ohos.accessibility | AccessibilityAbilityInfo | readonly abilityTypes: Array<AbilityType>; | Added|
| ohos.accessibility | AccessibilityAbilityInfo | readonly bundleName: string; | Added|
| ohos.accessibility | AccessibilityAbilityInfo | readonly name: string; | Added|
| ohos.accessibility | AccessibilityAbilityInfo | readonly id: string; | Added|
| ohos.accessibility | CaptionsStyle | windowColor: number \| string; | Added|
| ohos.accessibility | CaptionsStyle | backgroundColor: number \| string; | Added|
| ohos.accessibility | CaptionsStyle | fontEdgeType: CaptionsFontEdgeType; | Added|
| ohos.accessibility | CaptionsStyle | fontColor: number \| string; | Added|
| ohos.accessibility | CaptionsStyle | fontScale: number; | Added|
| ohos.accessibility | CaptionsStyle | fontFamily: CaptionsFontFamily; | Added|
| ohos.accessibility | CaptionsManager | off(type: 'styleChange', callback?: Callback<CaptionsStyle>): void; | Added|
| ohos.accessibility | CaptionsManager | off(type: 'enableChange', callback?: Callback<boolean>): void; | Added|
| ohos.accessibility | CaptionsManager | on(type: 'styleChange', callback: Callback<CaptionsStyle>): void; | Added|
| ohos.accessibility | CaptionsManager | on(type: 'enableChange', callback: Callback<boolean>): void; | Added|
| ohos.accessibility | CaptionsManager | style: CaptionsStyle; | Added|
| ohos.accessibility | CaptionsManager | enabled: boolean; | Added|
| ohos.accessibility | accessibility | function getCaptionsManager(): CaptionsManager; | Added|
| ohos.accessibility | accessibility | function off(type: 'touchGuideStateChange', callback?: Callback<boolean>): void; | Added|
| ohos.accessibility | accessibility | function off(type: 'accessibilityStateChange', callback?: Callback<boolean>): void; | Added|
| ohos.accessibility | accessibility | function on(type: 'touchGuideStateChange', callback: Callback<boolean>): void; | Added|
| ohos.accessibility | accessibility | function on(type: 'accessibilityStateChange', callback: Callback<boolean>): void; | Added|
| ohos.accessibility | accessibility | function sendEvent(event: EventInfo, callback: AsyncCallback<void>): void;<br>function sendEvent(event: EventInfo): Promise<void>; | Added|
| ohos.accessibility | accessibility | function getAbilityLists(abilityType: AbilityType, stateType: AbilityState, callback: AsyncCallback<Array<AccessibilityAbilityInfo>>): void;<br>function getAbilityLists(abilityType: AbilityType, stateType: AbilityState): Promise<Array<AccessibilityAbilityInfo>>; | Added|
| ohos.accessibility | accessibility | function isOpenTouchGuide(callback: AsyncCallback<boolean>): void;<br>function isOpenTouchGuide(): Promise<boolean>; | Added|
| ohos.accessibility | accessibility | function isOpenAccessibility(callback: AsyncCallback<boolean>): void;<br>function isOpenAccessibility(): Promise<boolean>; | Added|
# JS API Changes of the Account Subsystem
The table below lists the APIs changes of the account subsystem in OpenHarmony 3.1 Release over OpenHarmony 3.0 LTS.
## API Changes
| Module| Class| Method/Attribute/Enumeration/Constant| Change Type|
|---|---|---|---|
| ohos.account.osAccount | OsAccountType | GUEST | Added|
| ohos.account.osAccount | OsAccountType | NORMAL | Added|
| ohos.account.osAccount | OsAccountType | ADMIN = 0 | Added|
| ohos.account.osAccount | DomainAccountInfo | accountName: string; | Added|
| ohos.account.osAccount | DomainAccountInfo | domain: string; | Added|
| ohos.account.osAccount | OsAccountInfo | domainInfo: DomainAccountInfo; | Added|
| ohos.account.osAccount | OsAccountInfo | distributedInfo: distributedAccount.DistributedInfo; | Added|
| ohos.account.osAccount | OsAccountInfo | isCreateCompleted: boolean; | Added|
| ohos.account.osAccount | OsAccountInfo | isActived: boolean; | Added|
| ohos.account.osAccount | OsAccountInfo | serialNumber: number; | Added|
| ohos.account.osAccount | OsAccountInfo | lastLoginTime: number; | Added|
| ohos.account.osAccount | OsAccountInfo | createTime: number; | Added|
| ohos.account.osAccount | OsAccountInfo | photo: string; | Added|
| ohos.account.osAccount | OsAccountInfo | isVerified: boolean; | Added|
| ohos.account.osAccount | OsAccountInfo | constraints: Array<string>; | Added|
| ohos.account.osAccount | OsAccountInfo | type: OsAccountType; | Added|
| ohos.account.osAccount | OsAccountInfo | localName: string; | Added|
| ohos.account.osAccount | OsAccountInfo | localId: number; | Added|
| ohos.account.osAccount | AccountManager | getSerialNumberByOsAccountLocalId(localId: number, callback: AsyncCallback<number>): void;<br>getSerialNumberByOsAccountLocalId(localId: number): Promise<number>; | Added|
| ohos.account.osAccount | AccountManager | getOsAccountLocalIdBySerialNumber(serialNumber: number, callback: AsyncCallback<number>): void;<br>getOsAccountLocalIdBySerialNumber(serialNumber: number): Promise<number>; | Added|
| ohos.account.osAccount | AccountManager | getDistributedVirtualDeviceId(callback: AsyncCallback<string>): void;<br>getDistributedVirtualDeviceId(): Promise<string>; | Added|
| ohos.account.osAccount | AccountManager | getOsAccountTypeFromProcess(callback: AsyncCallback<OsAccountType>): void;<br>getOsAccountTypeFromProcess(): Promise<OsAccountType>; | Added|
| ohos.account.osAccount | AccountManager | queryCurrentOsAccount(callback: AsyncCallback<OsAccountInfo>): void;<br>queryCurrentOsAccount(): Promise<OsAccountInfo>; | Added|
| ohos.account.osAccount | AccountManager | queryActivatedOsAccountIds(callback: AsyncCallback<Array<number>>): void;<br>queryActivatedOsAccountIds(): Promise<Array<number>>; | Added|
| ohos.account.osAccount | AccountManager | getOsAccountAllConstraints(localId: number, callback: AsyncCallback<Array<string>>): void;<br>getOsAccountAllConstraints(localId: number): Promise<Array<string>>; | Added|
| ohos.account.osAccount | AccountManager | getOsAccountLocalIdFromDomain(domainInfo: DomainAccountInfo, callback: AsyncCallback<number>): void;<br>getOsAccountLocalIdFromDomain(domainInfo: DomainAccountInfo): Promise<number>; | Added|
| ohos.account.osAccount | AccountManager | getOsAccountLocalIdFromUid(uid: number, callback: AsyncCallback<number>): void;<br>getOsAccountLocalIdFromUid(uid: number): Promise<number>; | Added|
| ohos.account.osAccount | AccountManager | getOsAccountLocalIdFromProcess(callback: AsyncCallback<number>): void;<br>getOsAccountLocalIdFromProcess(): Promise<number>; | Added|
| ohos.account.osAccount | AccountManager | getCreatedOsAccountsCount(callback: AsyncCallback<number>): void;<br>getCreatedOsAccountsCount(): Promise<number>; | Added|
| ohos.account.osAccount | AccountManager | isOsAccountVerified(callback: AsyncCallback<boolean>): void;<br>isOsAccountVerified(localId: number, callback: AsyncCallback<boolean>): void;<br>isOsAccountVerified(localId?: number): Promise<boolean>; | Added|
| ohos.account.osAccount | AccountManager | isTestOsAccount(callback: AsyncCallback<boolean>): void;<br>isTestOsAccount(): Promise<boolean>; | Added|
| ohos.account.osAccount | AccountManager | isOsAccountConstraintEnable(localId: number, constraint: string, callback: AsyncCallback<boolean>): void;<br>isOsAccountConstraintEnable(localId: number, constraint: string): Promise<boolean>; | Added|
| ohos.account.osAccount | AccountManager | isOsAccountActived(localId: number, callback: AsyncCallback<boolean>): void;<br>isOsAccountActived(localId: number): Promise<boolean>; | Added|
| ohos.account.osAccount | AccountManager | isMultiOsAccountEnable(callback: AsyncCallback<boolean>): void;<br>isMultiOsAccountEnable(): Promise<boolean>; | Added|
| ohos.account.osAccount | osAccount | function getAccountManager(): AccountManager; | Added|
| ohos.account.appAccount | Authenticator | authenticate(name: string, authType: string, callerBundleName: string, options: {[key: string]: any}, callback: AuthenticatorCallback): void; | Added|
| ohos.account.appAccount | Authenticator | addAccountImplicitly(authType: string, callerBundleName: string, options: {[key: string]: any}, callback: AuthenticatorCallback): void; | Added|
| ohos.account.appAccount | AuthenticatorCallback | onRequestRedirected: (request: Want) => void; | Added|
| ohos.account.appAccount | AuthenticatorCallback | onResult: (code: number, result: {[key: string]: any}) => void; | Added|
| ohos.account.appAccount | ResultCode | ERROR_PERMISSION_DENIED = 10018 | Added|
| ohos.account.appAccount | ResultCode | ERROR_OAUTH_UNSUPPORT_AUTH_TYPE = 10017 | Added|
| ohos.account.appAccount | ResultCode | ERROR_OAUTH_UNSUPPORT_ACTION = 10016 | Added|
| ohos.account.appAccount | ResultCode | ERROR_OAUTH_TOKEN_TOO_MANY = 10015 | Added|
| ohos.account.appAccount | ResultCode | ERROR_OAUTH_TOKEN_NOT_EXIST = 10014 | Added|
| ohos.account.appAccount | ResultCode | ERROR_OAUTH_TIMEOUT = 10013 | Added|
| ohos.account.appAccount | ResultCode | ERROR_OAUTH_SESSION_NOT_EXIST = 10012 | Added|
| ohos.account.appAccount | ResultCode | ERROR_OAUTH_SERVICE_EXCEPTION = 10011 | Added|
| ohos.account.appAccount | ResultCode | ERROR_OAUTH_SERVICE_BUSY = 10010 | Added|
| ohos.account.appAccount | ResultCode | ERROR_OAUTH_LIST_TOO_LARGE = 10009 | Added|
| ohos.account.appAccount | ResultCode | ERROR_OAUTH_CANCELED = 10008 | Added|
| ohos.account.appAccount | ResultCode | ERROR_OAUTH_AUTHENTICATOR_NOT_EXIST = 10007 | Added|
| ohos.account.appAccount | ResultCode | ERROR_NETWORK_EXCEPTION = 10006 | Added|
| ohos.account.appAccount | ResultCode | ERROR_INVALID_RESPONSE = 10005 | Added|
| ohos.account.appAccount | ResultCode | ERROR_INVALID_REQUEST = 10004 | Added|
| ohos.account.appAccount | ResultCode | ERROR_INVALID_PASSWORD = 10003 | Added|
| ohos.account.appAccount | ResultCode | ERROR_APP_ACCOUNT_SERVICE_EXCEPTION = 10002 | Added|
| ohos.account.appAccount | ResultCode | ERROR_ACCOUNT_NOT_EXIST = 10001 | Added|
| ohos.account.appAccount | ResultCode | SUCCESS = 0 | Added|
| ohos.account.appAccount | Constants | KEY_CALLER_BUNDLE_NAME = "callerBundleName" | Added|
| ohos.account.appAccount | Constants | KEY_CALLER_UID = "callerUid" | Added|
| ohos.account.appAccount | Constants | KEY_CALLER_PID = "callerPid" | Added|
| ohos.account.appAccount | Constants | KEY_SESSION_ID = "sessionId" | Added|
| ohos.account.appAccount | Constants | KEY_AUTH_TYPE = "authType" | Added|
| ohos.account.appAccount | Constants | KEY_ACTION = "action" | Added|
| ohos.account.appAccount | Constants | KEY_TOKEN = "token" | Added|
| ohos.account.appAccount | Constants | KEY_OWNER = "owner" | Added|
| ohos.account.appAccount | Constants | KEY_NAME = "name" | Added|
| ohos.account.appAccount | Constants | ACTION_AUTHENTICATE = "authenticate" | Added|
| ohos.account.appAccount | Constants | ACTION_ADD_ACCOUNT_IMPLICITLY = "addAccountImplicitly" | Added|
| ohos.account.appAccount | AuthenticatorInfo | labelId: number; | Added|
| ohos.account.appAccount | AuthenticatorInfo | iconId: number; | Added|
| ohos.account.appAccount | AuthenticatorInfo | owner: string; | Added|
| ohos.account.appAccount | OAuthTokenInfo | token: string; | Added|
| ohos.account.appAccount | OAuthTokenInfo | authType: string; | Added|
| ohos.account.appAccount | AppAccountInfo | name: string; | Added|
| ohos.account.appAccount | AppAccountInfo | owner: string; | Added|
| ohos.account.appAccount | AppAccountManager | getAuthenticatorInfo(owner: string, callback: AsyncCallback<AuthenticatorInfo>): void;<br>getAuthenticatorInfo(owner: string): Promise<AuthenticatorInfo>; | Added|
| ohos.account.appAccount | AppAccountManager | getAuthenticatorCallback(sessionId: string, callback: AsyncCallback<AuthenticatorCallback>): void;<br>getAuthenticatorCallback(sessionId: string): Promise<AuthenticatorCallback>; | Added|
| ohos.account.appAccount | AppAccountManager | getOAuthList(name: string, authType: string, callback: AsyncCallback<Array<string>>): void;<br>getOAuthList(name: string, authType: string): Promise<Array<string>>; | Added|
| ohos.account.appAccount | AppAccountManager | getAllOAuthTokens(name: string, owner: string, callback: AsyncCallback<Array<OAuthTokenInfo>>): void;<br>getAllOAuthTokens(name: string, owner: string): Promise<Array<OAuthTokenInfo>>; | Added|
| ohos.account.appAccount | AppAccountManager | checkOAuthTokenVisibility(name: string, authType: string, bundleName: string, callback: AsyncCallback<boolean>): void;<br>checkOAuthTokenVisibility(name: string, authType: string, bundleName: string): Promise<boolean>; | Added|
| ohos.account.appAccount | AppAccountManager | setOAuthTokenVisibility(name: string, authType: string, bundleName: string, isVisible: boolean, callback: AsyncCallback<void>): void;<br>setOAuthTokenVisibility(name: string, authType: string, bundleName: string, isVisible: boolean): Promise<void>; | Added|
| ohos.account.appAccount | AppAccountManager | deleteOAuthToken(name: string, owner: string, authType: string, token: string, callback: AsyncCallback<void>): void;<br>deleteOAuthToken(name: string, owner: string, authType: string, token: string): Promise<void>; | Added|
| ohos.account.appAccount | AppAccountManager | setOAuthToken(name: string, authType: string, token: string, callback: AsyncCallback<void>): void;<br>setOAuthToken(name: string, authType: string, token: string): Promise<void>; | Added|
| ohos.account.appAccount | AppAccountManager | getOAuthToken(name: string, owner: string, authType: string, callback: AsyncCallback<string>): void;<br>getOAuthToken(name: string, owner: string, authType: string): Promise<string>; | Added|
| ohos.account.appAccount | AppAccountManager | authenticate(name: string, owner: string, authType: string, options: {[key: string]: any}, callback: AuthenticatorCallback): void; | Added|
| ohos.account.appAccount | AppAccountManager | off(type: 'change', callback?: Callback<Array<AppAccountInfo>>): void; | Added|
| ohos.account.appAccount | AppAccountManager | on(type: 'change', owners: Array<string>, callback: Callback<Array<AppAccountInfo>>): void; | Added|
| ohos.account.appAccount | AppAccountManager | getAssociatedData(name: string, key: string, callback: AsyncCallback<string>): void;<br>getAssociatedData(name: string, key: string): Promise<string>; | Added|
| ohos.account.appAccount | AppAccountManager | getAccountExtraInfo(name: string, callback: AsyncCallback<string>): void;<br>getAccountExtraInfo(name: string): Promise<string>; | Added|
| ohos.account.appAccount | AppAccountManager | getAccountCredential(name: string, credentialType: string, callback: AsyncCallback<string>): void;<br>getAccountCredential(name: string, credentialType: string): Promise<string>; | Added|
| ohos.account.appAccount | AppAccountManager | getAllAccounts(owner: string, callback: AsyncCallback<Array<AppAccountInfo>>): void;<br>getAllAccounts(owner: string): Promise<Array<AppAccountInfo>>; | Added|
| ohos.account.appAccount | AppAccountManager | getAllAccessibleAccounts(callback: AsyncCallback<Array<AppAccountInfo>>): void;<br>getAllAccessibleAccounts(): Promise<Array<AppAccountInfo>>; | Added|
| ohos.account.appAccount | AppAccountManager | setAssociatedData(name: string, key: string, value: string, callback: AsyncCallback<void>): void;<br>setAssociatedData(name: string, key: string, value: string): Promise<void>; | Added|
| ohos.account.appAccount | AppAccountManager | setAppAccountSyncEnable(name: string, isEnable: boolean, callback: AsyncCallback<void>): void;<br>setAppAccountSyncEnable(name: string, isEnable: boolean): Promise<void>; | Added|
| ohos.account.appAccount | AppAccountManager | setAccountExtraInfo(name: string, extraInfo: string, callback: AsyncCallback<void>): void;<br>setAccountExtraInfo(name: string, extraInfo: string): Promise<void>; | Added|
| ohos.account.appAccount | AppAccountManager | setAccountCredential(name: string, credentialType: string, credential: string, callback: AsyncCallback<void>): void;<br>setAccountCredential(name: string, credentialType: string, credential: string): Promise<void>; | Added|
| ohos.account.appAccount | AppAccountManager | checkAppAccountSyncEnable(name: string, callback: AsyncCallback<boolean>): void;<br>checkAppAccountSyncEnable(name: string): Promise<boolean>; | Added|
| ohos.account.appAccount | AppAccountManager | enableAppAccess(name: string, bundleName: string, callback: AsyncCallback<void>): void;<br>enableAppAccess(name: string, bundleName: string): Promise<void>; | Added|
| ohos.account.appAccount | AppAccountManager | disableAppAccess(name: string, bundleName: string, callback: AsyncCallback<void>): void;<br>disableAppAccess(name: string, bundleName: string): Promise<void>; | Added|
| ohos.account.appAccount | AppAccountManager | deleteAccount(name: string, callback: AsyncCallback<void>): void;<br>deleteAccount(name: string): Promise<void>; | Added|
| ohos.account.appAccount | AppAccountManager | addAccountImplicitly(owner: string, authType: string, options: {[key: string]: any}, callback: AuthenticatorCallback): void; | Added|
| ohos.account.appAccount | AppAccountManager | addAccount(name: string, callback: AsyncCallback<void>): void;<br>addAccount(name: string, extraInfo: string, callback: AsyncCallback<void>): void;<br>addAccount(name: string, extraInfo?: string): Promise<void>; | Added|
| ohos.account.appAccount | appAccount | function createAppAccountManager(): AppAccountManager; | Added|
# JS API Changes of the ArkUI Development Framework
The table below lists the APIs changes of the ArkUI development framework in OpenHarmony 3.1 Release over OpenHarmony 3.0 LTS.
## API Changes
| Component Type | Component Name | Change Type| Change Description |
| ---------- | ----------------------------- | -------- | ------------------------------------------------------------ |
| Universal event | onFocus/onBlur | Added | Added the focus events. |
| Universal event | onHover/onMouse | Added | Added the mouse events. |
| Universal event | onAreaChange| Added | Added the event indicating component area (including the size and position) changes. |
| Universal attribute | stateStyles | Added | Added the attribute for polymorphic style settings. |
| Universal attribute | responseRegion | Added | Added the attribute for touch hotspot settings. |
| Universal attribute | touchable | Added | Added the attribute that specifies whether a component is touchable. |
| Universal attribute | focusable | Added | Added the attribute that specifies whether a component can gain focus. |
| Universal attribute | bindPopup | Added | Added the layout customization capability for pop-up windows. |
| Universal attribute | bindMenu | Added | Added the layout customization capability for menus. |
| Universal attribute | hoverEffect | Added | Added the attribute that specifies the hover effect of a component. |
| General gesture | SwipeGesture | Added | Added the swipe gesture. |
| Basic component | Image | Added | Added the **syncLoad** attribute to specify whether data is loaded synchronously. |
| Basic component | Swiper | Added | Added the **cachedCount** attribute to set the number of preloaded child components. |
| Basic component | Swiper | Added | Added the **disableSwipe** attribute to disable component swipe. |
| Basic component | Slider | Added | Added the vertical slider. |
| Basic component | TabContent | Added | Added the **tabbar** attribute to provide the layout customization capability. |
| Basic component | Marquee | Added | Added the **\<Marquee>** component. |
| Basic component | Gauge | Added | Added the **\<Gauge>** component. |
| Basic component | PluginComponent | Added | Added the **\<PluginComponent>** component. |
| Basic component | TextArea | Added | Added the **\<TextArea>** component. |
| Basic component | TextInput | Added | Added the **\<TextInput>** component. |
| Basic component | Toggle | Added | Added the **\<Toggle>** component. |
| Container component | List | Added | Added the **\<List>** component. |
| Container component | ScrollBar | Added | Added the **\<ScrollBar>** component. |
| Container component | Navigation | Added | Added the **\<Navigation>** component. |
| Container component | Stepper | Added | Added the **\<Stepper>** component. |
| Container component | StepperItem | Added | Added the **\<StepperItem>** component. |
| Canvas component | Canvas | Added | Added the **\<Canvas>** component. |
| Canvas component | Lottie | Added | Added the support for the Lottie library. |
| Global UI method| ActionSheet | Added | Added the support for the list selection dialog box. |
| Basic component | Web | Added | Added the **\<Web>** component. |
| Basic component | Checkbox | Added | Added the **\<Checkbox>** component to enable or disable an option. |
| Basic component | CheckboxGroup | Added | Added the **\<CheckboxGroup>** component to select or deselect all check boxes in a group. |
| Basic component | DatePicker | Added | Added the **\<DatePicker>** component to allow users to select a date from the given range. |
| Basic component | TextPicker | Added | Added the **\<TextPicker>** component. |
| Basic component | PatternLock | Added | Added the **\<PatternLock>** component to allow users to use a pattern password for authentication.|
| Basic component | RichText | Added | Added the **\<RichText>** component to parse and display HTML text. |
| Basic component | Search | Added | Added the **\<Search>** component to provide an input area for users to search. |
| Basic component | Select | Added | Added the **\<Select>** component to provide a drop-down list box that allows users to select among multiple options. |
| Basic component | TextClock | Added | Added the **\<TextClock>** component. |
| Container component | Refresh | Added | Added the **\<Refresh>** component. |
| Container component | SideBarContainer | Added | Added the **\<SideBarContainer>** component. |
| Global UI method| TextPickerDialog | Added | Added the **\<TextPickerDialog>** component. |
| Global UI method| TimePickerDialog | Added | Added the **\<TimePickerDialog>** component. |
| Global UI method| DatePickerDialog | Added | Added the **\<DatePickerDialog>** component. |
# JS API Changes of the Power Management Subsystem
The table below lists the APIs changes of the power management subsystem in OpenHarmony 3.1 Release over OpenHarmony 3.0 LTS.
## API Changes
| Module| Class| Method/Attribute/Enumeration/Constant| Change Type|
|---|---|---|---|
| ohos.thermal | thermal | function getThermalLevel(): ThermalLevel; | Added|
| ohos.thermal | thermal | function unsubscribeThermalLevel(callback?: AsyncCallback<void>): void; | Added|
| ohos.thermal | thermal | function subscribeThermalLevel(callback: AsyncCallback<ThermalLevel>): void; | Added|
| ohos.thermal | ThermalLevel | EMERGENCY = 6 | Added|
| ohos.thermal | ThermalLevel | WARNING = 5 | Added|
| ohos.thermal | ThermalLevel | OVERHEATED = 4 | Added|
| ohos.thermal | ThermalLevel | HOT = 3 | Added|
| ohos.thermal | ThermalLevel | WARM = 2 | Added|
| ohos.thermal | ThermalLevel | NORMAL = 1 | Added|
| ohos.thermal | ThermalLevel | COOL = 0 | Added|
| ohos.runninglock | runningLock | function createRunningLock(name: string, type: RunningLockType, callback: AsyncCallback<RunningLock>): void;<br>function createRunningLock(name: string, type: RunningLockType): Promise<RunningLock>; | Added|
| ohos.runninglock | runningLock | function isRunningLockTypeSupported(type: RunningLockType, callback: AsyncCallback<boolean>): void;<br>function isRunningLockTypeSupported(type: RunningLockType): Promise<boolean>; | Added|
# JS API Changes of the Bundle Management Framework
The table below lists the APIs changes of the bundle management framework in OpenHarmony 3.1 Release over OpenHarmony 3.0 LTS.
## API Changes
| Module| Class| Method/Attribute/Enumeration/Constant| Change Type|
|---|---|---|---|
| shortcutInfo | ShortcutInfo | readonly labelId: number; | Added|
| shortcutInfo | ShortcutInfo | readonly iconId: number; | Added|
| launcherAbilityInfo | LauncherAbilityInfo | readonly installTime : number; | Added|
| launcherAbilityInfo | LauncherAbilityInfo | readonly userId: number; | Added|
| launcherAbilityInfo | LauncherAbilityInfo | readonly iconId: number; | Added|
| launcherAbilityInfo | LauncherAbilityInfo | readonly labelId: number; | Added|
| launcherAbilityInfo | LauncherAbilityInfo | readonly elementName : ElementName; | Added|
| launcherAbilityInfo | LauncherAbilityInfo | readonly applicationInfo: ApplicationInfo; | Added|
| bundleInfo | BundleInfo | readonly reqPermissionStates: Array<number>; | Added|
| bundleInfo | BundleInfo | readonly hapModuleInfos: Array<HapModuleInfo>; | Added|
| bundleInfo | BundleInfo | readonly abilityInfos: Array<AbilityInfo>; | Added|
| abilityInfo | AbilityInfo | readonly enabled: boolean; | Added|
| abilityInfo | AbilityInfo | readonly metaData: Array<CustomizeData>; | Added|
| ohos.zlib | zlib | function unzipFile(inFile:string, outFile:string, options: Options): Promise<void>; | Added|
| ohos.zlib | zlib | function zipFile(inFile:string, outFile:string, options: Options): Promise<void>; | Added|
| ohos.zlib | Options | strategy?: CompressStrategy; | Added|
| ohos.zlib | Options | memLevel?: MemLevel; | Added|
| ohos.zlib | Options | level?: CompressLevel; | Added|
| ohos.zlib | MemLevel | MEM_LEVEL_DEFAULT = 8 | Added|
| ohos.zlib | MemLevel | MEM_LEVEL_MAX = 9 | Added|
| ohos.zlib | MemLevel | MEM_LEVEL_MIN = 1 | Added|
| ohos.zlib | CompressStrategy | COMPRESS_STRATEGY_FIXED = 4 | Added|
| ohos.zlib | CompressStrategy | COMPRESS_STRATEGY_RLE = 3 | Added|
| ohos.zlib | CompressStrategy | COMPRESS_STRATEGY_HUFFMAN_ONLY = 2 | Added|
| ohos.zlib | CompressStrategy | COMPRESS_STRATEGY_FILTERED = 1 | Added|
| ohos.zlib | CompressStrategy | COMPRESS_STRATEGY_DEFAULT_STRATEGY = 0 | Added|
| ohos.zlib | CompressLevel | COMPRESS_LEVEL_DEFAULT_COMPRESSION = -1 | Added|
| ohos.zlib | CompressLevel | COMPRESS_LEVEL_BEST_COMPRESSION = 9 | Added|
| ohos.zlib | CompressLevel | COMPRESS_LEVEL_BEST_SPEED = 1 | Added|
| ohos.zlib | CompressLevel | COMPRESS_LEVEL_NO_COMPRESSION = 0 | Added|
| ohos.zlib | ErrorCode | ERROR_CODE_ERRNO = -1 | Added|
| ohos.zlib | ErrorCode | ERROR_CODE_OK = 0 | Added|
| ohos.bundle | bundle | function isApplicationEnabled(bundleName: string, callback: AsyncCallback<boolean>): void;<br>function isApplicationEnabled(bundleName: string): Promise<boolean>; | Added|
| ohos.bundle | bundle | function isAbilityEnabled(info: AbilityInfo, callback: AsyncCallback<boolean>): void;<br>function isAbilityEnabled(info: AbilityInfo): Promise<boolean>; | Added|
| ohos.bundle | bundle | function getAbilityIcon(bundleName: string, abilityName: string, callback: AsyncCallback<image.PixelMap>): void;<br>function getAbilityIcon(bundleName: string, abilityName: string): Promise<image.PixelMap>; | Added|
| ohos.bundle | bundle | function getAbilityLabel(bundleName: string, abilityName: string, callback: AsyncCallback<string>): void;<br>function getAbilityLabel(bundleName: string, abilityName: string): Promise<string>; | Added|
| ohos.bundle | bundle | function getNameForUid(uid: number, callback: AsyncCallback<string>) : void<br>function getNameForUid(uid: number) : Promise<string>; | Added|
| ohos.bundle | bundle | function getAbilityInfo(bundleName: string, abilityName: string, callback: AsyncCallback<AbilityInfo>): void;<br>function getAbilityInfo(bundleName: string, abilityName: string): Promise<AbilityInfo>; | Added|
| ohos.bundle | InstallErrorCode | STATUS_UNINSTALL_PERMISSION_DENIED = 0x45 | Added|
| ohos.bundle | InstallErrorCode | STATUS_INSTALL_PERMISSION_DENIED = 0x44 | Added|
| ohos.bundle | InstallErrorCode | STATUS_GRANT_REQUEST_PERMISSIONS_FAILED = 0x43 | Added|
| ohos.bundle | InstallErrorCode | STATUS_FAILED_NO_SPACE_LEFT = 0x42 | Added|
| ohos.bundle | InstallErrorCode | STATUS_RECOVER_FAILURE_INVALID = 0x0D | Added|
| ohos.bundle | BundleOptions | userId?: number; | Added|
| ohos.bundle | ColorMode | LIGHT_MODE = 1 | Added|
| ohos.bundle | ColorMode | DARK_MODE = 0 | Added|
| ohos.bundle | ColorMode | AUTO_MODE = -1 | Added|
| ohos.bundle | BundleFlag | GET_APPLICATION_INFO_WITH_DISABLE = 0x00000200 | Added|
| ohos.bundle | BundleFlag | GET_ABILITY_INFO_WITH_DISABLE = 0x00000100 | Added|
| ohos.bundle | BundleFlag | GET_ABILITY_INFO_SYSTEMAPP_ONLY = 0x00000080 | Added|
| ohos.bundle | BundleFlag | GET_APPLICATION_INFO_WITH_METADATA = 0x00000040 | Added|
| ohos.bundle | BundleFlag | GET_ABILITY_INFO_WITH_METADATA = 0x00000020 | Added|
| ohos.bundle | BundleFlag | GET_ALL_APPLICATION_INFO = 0xFFFF0000 | Added|
| ohos.bundle | BundleFlag | GET_BUNDLE_WITH_REQUESTED_PERMISSION = 0x00000010 | Added|
| ohos.bundle | BundleFlag | GET_ABILITY_INFO_WITH_APPLICATION = 0x00000004 | Added|
| ohos.bundle | BundleFlag | GET_ABILITY_INFO_WITH_PERMISSION = 0x00000002 | Added|
# JS API Changes of the Communication Subsystem
The table below lists the APIs changes of the communication subsystem in OpenHarmony 3.1 Release over OpenHarmony 3.0 LTS.
## API Changes
| Module| Class| Method/Attribute/Enumeration/Constant| Change Type|
|---|---|---|---|
| tagSession | TagSession | getMaxSendLength(): number; | Added|
| tagSession | TagSession | sendData(data: number[]): Promise<number[]>;<br>sendData(data: number[], callback: AsyncCallback<number[]>): void; | Added|
| tagSession | TagSession | getSendDataTimeout(): number; | Added|
| tagSession | TagSession | setSendDataTimeout(timeout: number): boolean; | Added|
| tagSession | TagSession | isTagConnected(): boolean; | Added|
| tagSession | TagSession | reset(): void; | Added|
| tagSession | TagSession | connectTag(): boolean; | Added|
| tagSession | TagSession | getTagInfo(): tag.TagInfo; | Added|
| nfctech | NfcVTag | getDsfId(): number; | Added|
| nfctech | NfcVTag | getResponseFlags(): number; | Added|
| nfctech | NfcFTag | getPmm(): number[]; | Added|
| nfctech | NfcFTag | getSystemCode(): number[]; | Added|
| nfctech | NfcBTag | getRespProtocol(): number[]; | Added|
| nfctech | NfcBTag | getRespAppData(): number[]; | Added|
| nfctech | NfcATag | getAtqa(): number[]; | Added|
| nfctech | NfcATag | getSak(): number; | Added|
| ohos.wifiext | PowerModel | THROUGH_WALL = 2 | Added|
| ohos.wifiext | PowerModel | GENERAL = 1 | Added|
| ohos.wifiext | PowerModel | SLEEPING = 0 | Added|
| ohos.wifiext | wifiext | function setPowerModel(model: PowerModel) : boolean | Added|
| ohos.wifiext | wifiext | function getPowerModel (): Promise<PowerModel>;<br>function getPowerModel (callback: AsyncCallback<PowerModel>): void; | Added|
| ohos.wifiext | wifiext | function getSupportedPowerModel(): Promise<Array<PowerModel>>;<br>function getSupportedPowerModel(callback: AsyncCallback<Array<PowerModel>>): void; | Added|
| ohos.wifiext | wifiext | function disableHotspot(): boolean; | Added|
| ohos.wifiext | wifiext | function enableHotspot(): boolean; | Added|
| ohos.wifi | GroupOwnerBand | GO_BAND_5GHZ = 2 | Added|
| ohos.wifi | GroupOwnerBand | GO_BAND_2GHZ = 1 | Added|
| ohos.wifi | GroupOwnerBand | GO_BAND_AUTO = 0 | Added|
| ohos.wifi | P2pDeviceStatus | UNAVAILABLE = 4 | Added|
| ohos.wifi | P2pDeviceStatus | AVAILABLE = 3 | Added|
| ohos.wifi | P2pDeviceStatus | FAILED = 2 | Added|
| ohos.wifi | P2pDeviceStatus | INVITED = 1 | Added|
| ohos.wifi | P2pDeviceStatus | CONNECTED = 0 | Added|
| ohos.wifi | WifiP2pLinkedInfo | groupOwnerAddr: string; | Added|
| ohos.wifi | WifiP2pLinkedInfo | isGroupOwner: boolean; | Added|
| ohos.wifi | WifiP2pLinkedInfo | connectState: P2pConnectState; | Added|
| ohos.wifi | P2pConnectState | CONNECTED = 1 | Added|
| ohos.wifi | P2pConnectState | DISCONNECTED = 0 | Added|
| ohos.wifi | WifiP2pGroupInfo | goIpAddress: string; | Added|
| ohos.wifi | WifiP2pGroupInfo | clientDevices: WifiP2pDevice[]; | Added|
| ohos.wifi | WifiP2pGroupInfo | frequency: number; | Added|
| ohos.wifi | WifiP2pGroupInfo | networkId: number; | Added|
| ohos.wifi | WifiP2pGroupInfo | groupName: string; | Added|
| ohos.wifi | WifiP2pGroupInfo | interface: string; | Added|
| ohos.wifi | WifiP2pGroupInfo | passphrase: string; | Added|
| ohos.wifi | WifiP2pGroupInfo | ownerInfo: WifiP2pDevice; | Added|
| ohos.wifi | WifiP2pGroupInfo | isP2pGo: boolean; | Added|
| ohos.wifi | WifiP2PConfig | goBand: GroupOwnerBand; | Added|
| ohos.wifi | WifiP2PConfig | groupName: string; | Added|
| ohos.wifi | WifiP2PConfig | passphrase: string; | Added|
| ohos.wifi | WifiP2PConfig | netId: number; | Added|
| ohos.wifi | WifiP2PConfig | deviceAddress: string; | Added|
| ohos.wifi | WifiP2pDevice | groupCapabilitys: number; | Added|
| ohos.wifi | WifiP2pDevice | deviceStatus: P2pDeviceStatus; | Added|
| ohos.wifi | WifiP2pDevice | primaryDeviceType: string; | Added|
| ohos.wifi | WifiP2pDevice | deviceAddress: string; | Added|
| ohos.wifi | WifiP2pDevice | deviceName: string; | Added|
| ohos.wifi | ConnState | UNKNOWN | Added|
| ohos.wifi | ConnState | DISCONNECTED | Added|
| ohos.wifi | ConnState | DISCONNECTING | Added|
| ohos.wifi | ConnState | CONNECTED | Added|
| ohos.wifi | ConnState | OBTAINING_IPADDR | Added|
| ohos.wifi | ConnState | AUTHENTICATING | Added|
| ohos.wifi | ConnState | CONNECTING | Added|
| ohos.wifi | ConnState | SCANNING | Added|
| ohos.wifi | IpInfo | leaseDuration: number; | Added|
| ohos.wifi | IpInfo | serverIp: number; | Added|
| ohos.wifi | IpInfo | secondDns: number; | Added|
| ohos.wifi | IpInfo | primaryDns: number; | Added|
| ohos.wifi | IpInfo | netmask: number; | Added|
| ohos.wifi | IpInfo | gateway: number; | Added|
| ohos.wifi | IpInfo | ipAddress: number; | Added|
| ohos.wifi | WifiLinkedInfo | connState: ConnState; | Added|
| ohos.wifi | WifiLinkedInfo | ipAddress: number; | Added|
| ohos.wifi | WifiLinkedInfo | macAddress: string; | Added|
| ohos.wifi | WifiLinkedInfo | isRestricted: boolean; | Added|
| ohos.wifi | WifiLinkedInfo | isHidden: boolean; | Added|
| ohos.wifi | WifiLinkedInfo | frequency: number; | Added|
| ohos.wifi | WifiLinkedInfo | linkSpeed: number; | Added|
| ohos.wifi | WifiLinkedInfo | band: number; | Added|
| ohos.wifi | WifiLinkedInfo | rssi: number; | Added|
| ohos.wifi | WifiLinkedInfo | bssid: string; | Added|
| ohos.wifi | WifiLinkedInfo | ssid: string; | Added|
| ohos.wifi | WifiScanInfo | channelWidth: number; | Added|
| ohos.wifi | WifiScanInfo | capabilities: string; | Added|
| ohos.wifi | wifi | function off(type: "p2pDiscoveryChange", callback?: Callback<number>): void; | Added|
| ohos.wifi | wifi | function on(type: "p2pDiscoveryChange", callback: Callback<number>): void; | Added|
| ohos.wifi | wifi | function off(type: "p2pPersistentGroupChange", callback?: Callback<void>): void; | Added|
| ohos.wifi | wifi | function on(type: "p2pPersistentGroupChange", callback: Callback<void>): void; | Added|
| ohos.wifi | wifi | function off(type: "p2pPeerDeviceChange", callback?: Callback<WifiP2pDevice[]>): void; | Added|
| ohos.wifi | wifi | function on(type: "p2pPeerDeviceChange", callback: Callback<WifiP2pDevice[]>): void; | Added|
| ohos.wifi | wifi | function off(type: "p2pDeviceChange", callback?: Callback<WifiP2pDevice>): void; | Added|
| ohos.wifi | wifi | function on(type: "p2pDeviceChange", callback: Callback<WifiP2pDevice>): void; | Added|
| ohos.wifi | wifi | function off(type: "p2pConnectionChange", callback?: Callback<WifiP2pLinkedInfo>): void; | Added|
| ohos.wifi | wifi | function on(type: "p2pConnectionChange", callback: Callback<WifiP2pLinkedInfo>): void; | Added|
| ohos.wifi | wifi | function off(type: "p2pStateChange", callback?: Callback<number>): void; | Added|
| ohos.wifi | wifi | function on(type: "p2pStateChange", callback: Callback<number>): void; | Added|
| ohos.wifi | wifi | function off(type: "hotspotStateChange", callback?: Callback<number>): void; | Added|
| ohos.wifi | wifi | function on(type: "hotspotStateChange", callback: Callback<number>): void; | Added|
| ohos.wifi | wifi | function off(type: "wifiRssiChange", callback?: Callback<number>): void; | Added|
| ohos.wifi | wifi | function on(type: "wifiRssiChange", callback: Callback<number>): void; | Added|
| ohos.wifi | wifi | function off(type: "wifiScanStateChange", callback?: Callback<number>): void; | Added|
| ohos.wifi | wifi | function on(type: "wifiScanStateChange", callback: Callback<number>): void; | Added|
| ohos.wifi | wifi | function off(type: "wifiConnectionChange", callback?: Callback<number>): void; | Added|
| ohos.wifi | wifi | function on(type: "wifiConnectionChange", callback: Callback<number>): void; | Added|
| ohos.wifi | wifi | function off(type: "wifiStateChange", callback?: Callback<number>): void; | Added|
| ohos.wifi | wifi | function on(type: "wifiStateChange", callback: Callback<number>): void; | Added|
| ohos.wifi | wifi | function stopDiscoverDevices(): boolean; | Added|
| ohos.wifi | wifi | function startDiscoverDevices(): boolean; | Added|
| ohos.wifi | wifi | function p2pCancelConnect(): boolean; | Added|
| ohos.wifi | wifi | function p2pConnect(config: WifiP2PConfig): boolean; | Added|
| ohos.wifi | wifi | function removeGroup(): boolean; | Added|
| ohos.wifi | wifi | function createGroup(config: WifiP2PConfig): boolean; | Added|
| ohos.wifi | wifi | function getP2pPeerDevices(): Promise<WifiP2pDevice[]>;<br>function getP2pPeerDevices(callback: AsyncCallback<WifiP2pDevice[]>): void; | Added|
| ohos.wifi | wifi | function getCurrentGroup(): Promise<WifiP2pGroupInfo>;<br>function getCurrentGroup(callback: AsyncCallback<WifiP2pGroupInfo>): void; | Added|
| ohos.wifi | wifi | function getP2pLinkedInfo(): Promise<WifiP2pLinkedInfo>;<br>function getP2pLinkedInfo(callback: AsyncCallback<WifiP2pLinkedInfo>): void; | Added|
| ohos.wifi | wifi | function getCountryCode(): string; | Added|
| ohos.wifi | wifi | function getIpInfo(): IpInfo; | Added|
| ohos.wifi | wifi | function isFeatureSupported(featureId: number): boolean; | Added|
| ohos.wifi | wifi | function isConnected(): boolean; | Added|
| ohos.wifi | wifi | function getLinkedInfo(): Promise<WifiLinkedInfo>;<br>function getLinkedInfo(callback: AsyncCallback<WifiLinkedInfo>): void; | Added|
| ohos.wifi | wifi | function removeUntrustedConfig(config: WifiDeviceConfig): Promise<boolean>;<br>function removeUntrustedConfig(config: WifiDeviceConfig, callback: AsyncCallback<boolean>): void; | Added|
| ohos.wifi | wifi | function addUntrustedConfig(config: WifiDeviceConfig): Promise<boolean>;<br>function addUntrustedConfig(config: WifiDeviceConfig, callback: AsyncCallback<boolean>): void; | Added|
| ohos.nfc.tag | TagInfo | supportedProfiles: number[]; | Added|
| ohos.nfc.tag | tag | function getNfcVTag(tagInfo: TagInfo): NfcVTag | Added|
| ohos.nfc.tag | tag | function getNfcFTag(tagInfo: TagInfo): NfcFTag | Added|
| ohos.nfc.tag | tag | function getNfcBTag(tagInfo: TagInfo): NfcBTag | Added|
| ohos.nfc.tag | tag | function getNfcATag(tagInfo: TagInfo): NfcATag | Added|
| ohos.nfc.tag | tag | const MIFARE_ULTRALIGHT = 9; | Added|
| ohos.nfc.tag | tag | const MIFARE_CLASSIC = 8; | Added|
| ohos.nfc.tag | tag | const NDEF = 6; | Added|
| ohos.nfc.tag | tag | const NFC_V = 5; | Added|
| ohos.nfc.tag | tag | const NFC_F = 4; | Added|
| ohos.nfc.tag | tag | const ISO_DEP = 3; | Added|
| ohos.nfc.tag | tag | const NFC_B = 2; | Added|
| ohos.nfc.tag | tag | const NFC_A = 1; | Added|
| ohos.nfc.controller | nfcController | function getNfcState(): NfcState | Added|
| ohos.nfc.controller | nfcController | function isNfcOpen(): boolean | Added|
| ohos.nfc.controller | nfcController | function closeNfc(): boolean | Added|
| ohos.nfc.controller | nfcController | function openNfc(): boolean | Added|
| ohos.nfc.controller | nfcController | function off(type: "nfcStateChange", callback?: Callback<NfcState>): void | Added|
| ohos.nfc.controller | nfcController | function on(type: "nfcStateChange", callback: Callback<NfcState>): void | Added|
| ohos.nfc.controller | nfcController | function isNfcAvailable(): boolean | Added|
| ohos.nfc.controller | NfcState | STATE_TURNING_OFF = 4 | Added|
| ohos.nfc.controller | NfcState | STATE_ON = 3 | Added|
| ohos.nfc.controller | NfcState | STATE_TURNING_ON = 2 | Added|
| ohos.nfc.controller | NfcState | STATE_OFF = 1 | Added|
| ohos.nfc.cardEmulation | HceService | sendResponse(responseApdu: number[]): void; | Added|
| ohos.nfc.cardEmulation | HceService | on(type: "hceCmd", callback: AsyncCallback<number[]>): void; | Added|
| ohos.nfc.cardEmulation | HceService | stopHCE(): boolean; | Added|
| ohos.nfc.cardEmulation | HceService | startHCE(aidList: string[]): boolean; | Added|
| ohos.nfc.cardEmulation | cardEmulation | function isSupported(feature: number): boolean; | Added|
| ohos.nfc.cardEmulation | FeatureType | ESE = 2 | Added|
| ohos.nfc.cardEmulation | FeatureType | UICC = 1 | Added|
| ohos.nfc.cardEmulation | FeatureType | HCE = 0 | Added|
| ohos.connectedTag | NfcRfType | NFC_RF_ENTER = 1 | Added|
| ohos.connectedTag | NfcRfType | NFC_RF_LEAVE = 0 | Added|
| ohos.connectedTag | connectedTag | function off(type: "notify", callback?:Callback<number>): void; | Added|
| ohos.connectedTag | connectedTag | function on(type: "notify", callback: Callback<number>): void; | Added|
| ohos.connectedTag | connectedTag | function writeNdefTag(data: string): Promise<void>;<br>function writeNdefTag(data: string, callback: AsyncCallback<void>): void; | Added|
| ohos.connectedTag | connectedTag | function readNdefTag(): Promise<string>;<br>function readNdefTag(callback: AsyncCallback<string>): void; | Added|
| ohos.connectedTag | connectedTag | function uninit(): boolean; | Added|
| ohos.connectedTag | connectedTag | function init(): boolean; | Added|
| ohos.bluetooth | ProfileId | PROFILE_HANDS_FREE_AUDIO_GATEWAY = 4 | Added|
| ohos.bluetooth | ProfileId | PROFILE_A2DP_SOURCE = 1 | Added|
| ohos.bluetooth | PlayingState | STATE_PLAYING | Added|
| ohos.bluetooth | PlayingState | STATE_NOT_PLAYING | Added|
| ohos.bluetooth | StateChangeParam | state: ProfileConnectionState; | Added|
| ohos.bluetooth | StateChangeParam | deviceId: string; | Added|
| ohos.bluetooth | MajorMinorClass | HEALTH_PERSONAL_MOBILITY_DEVICE = 0x093C | Added|
| ohos.bluetooth | MajorMinorClass | HEALTH_GENERIC_HEALTH_MANAGER = 0x0938 | Added|
| ohos.bluetooth | MajorMinorClass | HEALTH_ANKLE_PROSTHESIS = 0x0934 | Added|
| ohos.bluetooth | MajorMinorClass | HEALTH_KNEE_PROSTHESIS = 0x0930 | Added|
| ohos.bluetooth | MajorMinorClass | HEALTH_MEDICATION_MONITOR = 0x092C | Added|
| ohos.bluetooth | MajorMinorClass | HEALTH_PEAK_FLOW_MOITOR = 0x0928 | Added|
| ohos.bluetooth | MajorMinorClass | HEALTH_BODY_COMPOSITION_ANALYZER = 0x0924 | Added|
| ohos.bluetooth | MajorMinorClass | HEALTH_STEP_COUNTER = 0x0920 | Added|
| ohos.bluetooth | MajorMinorClass | HEALTH_DATA_DISPLAY = 0x091C | Added|
| ohos.bluetooth | MajorMinorClass | HEALTH_PULSE_RATE = 0x0918 | Added|
| ohos.bluetooth | MajorMinorClass | HEALTH_PULSE_OXIMETER = 0x0914 | Added|
| ohos.bluetooth | MajorMinorClass | HEALTH_GLUCOSE = 0x0910 | Added|
| ohos.bluetooth | MajorMinorClass | HEALTH_WEIGHING = 0x090C | Added|
| ohos.bluetooth | MajorMinorClass | HEALTH_THERMOMETER = 0x0908 | Added|
| ohos.bluetooth | MajorMinorClass | HEALTH_BLOOD_PRESSURE = 0x0904 | Added|
| ohos.bluetooth | MajorMinorClass | HEALTH_UNCATEGORIZED = 0x0900 | Added|
| ohos.bluetooth | MajorMinorClass | TOY_GAME = 0x0814 | Added|
| ohos.bluetooth | MajorMinorClass | TOY_CONTROLLER = 0x0810 | Added|
| ohos.bluetooth | MajorMinorClass | TOY_DOLL_ACTION_FIGURE = 0x080C | Added|
| ohos.bluetooth | MajorMinorClass | TOY_VEHICLE = 0x0808 | Added|
| ohos.bluetooth | MajorMinorClass | TOY_ROBOT = 0x0804 | Added|
| ohos.bluetooth | MajorMinorClass | TOY_UNCATEGORIZED = 0x0800 | Added|
| ohos.bluetooth | MajorMinorClass | WEARABLE_GLASSES = 0x0714 | Added|
| ohos.bluetooth | MajorMinorClass | WEARABLE_HELMET = 0x0710 | Added|
| ohos.bluetooth | MajorMinorClass | WEARABLE_JACKET = 0x070C | Added|
| ohos.bluetooth | MajorMinorClass | WEARABLE_PAGER = 0x0708 | Added|
| ohos.bluetooth | MajorMinorClass | WEARABLE_WRIST_WATCH = 0x0704 | Added|
| ohos.bluetooth | MajorMinorClass | WEARABLE_UNCATEGORIZED = 0x0700 | Added|
| ohos.bluetooth | MajorMinorClass | IMAGING_PRINTER = 0x0680 | Added|
| ohos.bluetooth | MajorMinorClass | IMAGING_SCANNER = 0x0640 | Added|
| ohos.bluetooth | MajorMinorClass | IMAGING_CAMERA = 0x0620 | Added|
| ohos.bluetooth | MajorMinorClass | IMAGING_DISPLAY = 0x0610 | Added|
| ohos.bluetooth | MajorMinorClass | IMAGING_UNCATEGORIZED = 0x0600 | Added|
| ohos.bluetooth | MajorMinorClass | PERIPHERAL_GESTURAL_INPUT = 0x0522 | Added|
| ohos.bluetooth | MajorMinorClass | PERIPHERAL_SCANNER_RFID = 0x0520 | Added|
| ohos.bluetooth | MajorMinorClass | PERIPHERAL_DIGITAL_PEN = 0x051C | Added|
| ohos.bluetooth | MajorMinorClass | PERIPHERAL_CARD_READER = 0x0518 | Added|
| ohos.bluetooth | MajorMinorClass | PERIPHERAL_DIGITIZER_TABLET = 0x0514 | Added|
| ohos.bluetooth | MajorMinorClass | PERIPHERAL_SENSING_DEVICE = 0x0510 | Added|
| ohos.bluetooth | MajorMinorClass | PERIPHERAL_REMOTE_CONTROL = 0x05C0 | Added|
| ohos.bluetooth | MajorMinorClass | PERIPHERAL_GAMEPAD = 0x0508 | Added|
| ohos.bluetooth | MajorMinorClass | PERIPHERAL_JOYSTICK = 0x0504 | Added|
| ohos.bluetooth | MajorMinorClass | PERIPHERAL_UNCATEGORIZED = 0x0500 | Added|
| ohos.bluetooth | MajorMinorClass | PERIPHERAL_KEYBOARD_POINTING = 0x05C0 | Added|
| ohos.bluetooth | MajorMinorClass | PERIPHERAL_POINTING_DEVICE = 0x0580 | Added|
| ohos.bluetooth | MajorMinorClass | PERIPHERAL_KEYBOARD = 0x0540 | Added|
| ohos.bluetooth | MajorMinorClass | PERIPHERAL_NON_KEYBOARD_NON_POINTING = 0x0500 | Added|
| ohos.bluetooth | MajorMinorClass | AUDIO_VIDEO_VIDEO_GAMING_TOY = 0x0448 | Added|
| ohos.bluetooth | MajorMinorClass | AUDIO_VIDEO_VIDEO_CONFERENCING = 0x0440 | Added|
| ohos.bluetooth | MajorMinorClass | AUDIO_VIDEO_VIDEO_DISPLAY_AND_LOUDSPEAKER = 0x043C | Added|
| ohos.bluetooth | MajorMinorClass | AUDIO_VIDEO_VIDEO_MONITOR = 0x0438 | Added|
| ohos.bluetooth | MajorMinorClass | AUDIO_VIDEO_CAMCORDER = 0x0434 | Added|
| ohos.bluetooth | MajorMinorClass | AUDIO_VIDEO_VIDEO_CAMERA = 0x0430 | Added|
| ohos.bluetooth | MajorMinorClass | AUDIO_VIDEO_VCR = 0x042C | Added|
| ohos.bluetooth | MajorMinorClass | AUDIO_VIDEO_HIFI_AUDIO = 0x0428 | Added|
| ohos.bluetooth | MajorMinorClass | AUDIO_VIDEO_SET_TOP_BOX = 0x0424 | Added|
| ohos.bluetooth | MajorMinorClass | AUDIO_VIDEO_CAR_AUDIO = 0x0420 | Added|
| ohos.bluetooth | MajorMinorClass | AUDIO_VIDEO_PORTABLE_AUDIO = 0x041C | Added|
| ohos.bluetooth | MajorMinorClass | AUDIO_VIDEO_HEADPHONES = 0x0418 | Added|
| ohos.bluetooth | MajorMinorClass | AUDIO_VIDEO_LOUDSPEAKER = 0x0414 | Added|
| ohos.bluetooth | MajorMinorClass | AUDIO_VIDEO_MICROPHONE = 0x0410 | Added|
| ohos.bluetooth | MajorMinorClass | AUDIO_VIDEO_HANDSFREE = 0x0408 | Added|
| ohos.bluetooth | MajorMinorClass | AUDIO_VIDEO_WEARABLE_HEADSET = 0x0404 | Added|
| ohos.bluetooth | MajorMinorClass | AUDIO_VIDEO_UNCATEGORIZED = 0x0400 | Added|
| ohos.bluetooth | MajorMinorClass | NETWORK_NO_SERVICE = 0x03E0 | Added|
| ohos.bluetooth | MajorMinorClass | NETWORK_83_TO_99_UTILIZED = 0x03C0 | Added|
| ohos.bluetooth | MajorMinorClass | NETWORK_67_TO_83_UTILIZED = 0x03A0 | Added|
| ohos.bluetooth | MajorMinorClass | NETWORK_60_TO_67_UTILIZED = 0x0380 | Added|
| ohos.bluetooth | MajorMinorClass | NETWORK_33_TO_50_UTILIZED = 0x0360 | Added|
| ohos.bluetooth | MajorMinorClass | NETWORK_17_TO_33_UTILIZED = 0x0340 | Added|
| ohos.bluetooth | MajorMinorClass | NETWORK_1_TO_17_UTILIZED = 0x0320 | Added|
| ohos.bluetooth | MajorMinorClass | NETWORK_FULLY_AVAILABLE = 0x0300 | Added|
| ohos.bluetooth | MajorMinorClass | PHONE_ISDN = 0x0214 | Added|
| ohos.bluetooth | MajorMinorClass | PHONE_MODEM_OR_GATEWAY = 0x0210 | Added|
| ohos.bluetooth | MajorMinorClass | PHONE_SMART = 0x020C | Added|
| ohos.bluetooth | MajorMinorClass | PHONE_CORDLESS = 0x0208 | Added|
| ohos.bluetooth | MajorMinorClass | PHONE_CELLULAR = 0x0204 | Added|
| ohos.bluetooth | MajorMinorClass | PHONE_UNCATEGORIZED = 0x0200 | Added|
| ohos.bluetooth | MajorMinorClass | COMPUTER_TABLET = 0x011C | Added|
| ohos.bluetooth | MajorMinorClass | COMPUTER_WEARABLE = 0x0118 | Added|
| ohos.bluetooth | MajorMinorClass | COMPUTER_PALM_SIZE_PC_PDA = 0x0114 | Added|
| ohos.bluetooth | MajorMinorClass | COMPUTER_HANDHELD_PC_PDA = 0x0110 | Added|
| ohos.bluetooth | MajorMinorClass | COMPUTER_LAPTOP = 0x010C | Added|
| ohos.bluetooth | MajorMinorClass | COMPUTER_SERVER = 0x0108 | Added|
| ohos.bluetooth | MajorMinorClass | COMPUTER_DESKTOP = 0x0104 | Added|
| ohos.bluetooth | MajorMinorClass | COMPUTER_UNCATEGORIZED = 0x0100 | Added|
| ohos.bluetooth | MajorClass | MAJOR_UNCATEGORIZED = 0x1F00 | Added|
| ohos.bluetooth | MajorClass | MAJOR_HEALTH = 0x0900 | Added|
| ohos.bluetooth | MajorClass | MAJOR_TOY = 0x0800 | Added|
| ohos.bluetooth | MajorClass | MAJOR_WEARABLE = 0x0700 | Added|
| ohos.bluetooth | MajorClass | MAJOR_IMAGING = 0x0600 | Added|
| ohos.bluetooth | MajorClass | MAJOR_PERIPHERAL = 0x0500 | Added|
| ohos.bluetooth | MajorClass | MAJOR_AUDIO_VIDEO = 0x0400 | Added|
| ohos.bluetooth | MajorClass | MAJOR_NETWORKING = 0x0300 | Added|
| ohos.bluetooth | MajorClass | MAJOR_PHONE = 0x0200 | Added|
| ohos.bluetooth | MajorClass | MAJOR_COMPUTER = 0x0100 | Added|
| ohos.bluetooth | MajorClass | MAJOR_MISC = 0x0000 | Added|
| ohos.bluetooth | BondState | BOND_STATE_BONDED = 2 | Added|
| ohos.bluetooth | BondState | BOND_STATE_BONDING = 1 | Added|
| ohos.bluetooth | BondState | BOND_STATE_INVALID = 0 | Added|
| ohos.bluetooth | ScanMode | SCAN_MODE_CONNECTABLE_LIMITED_DISCOVERABLE = 5 | Added|
| ohos.bluetooth | ScanMode | SCAN_MODE_CONNECTABLE_GENERAL_DISCOVERABLE = 4 | Added|
| ohos.bluetooth | ScanMode | SCAN_MODE_LIMITED_DISCOVERABLE = 3 | Added|
| ohos.bluetooth | ScanMode | SCAN_MODE_GENERAL_DISCOVERABLE = 2 | Added|
| ohos.bluetooth | ScanMode | SCAN_MODE_CONNECTABLE = 1 | Added|
| ohos.bluetooth | ScanMode | SCAN_MODE_NONE = 0 | Added|
| ohos.bluetooth | SppType | SPP_RFCOMM | Added|
| ohos.bluetooth | BluetoothState | STATE_BLE_TURNING_OFF = 6 | Added|
| ohos.bluetooth | BluetoothState | STATE_BLE_ON = 5 | Added|
| ohos.bluetooth | BluetoothState | STATE_BLE_TURNING_ON = 4 | Added|
| ohos.bluetooth | BluetoothState | STATE_TURNING_OFF = 3 | Added|
| ohos.bluetooth | BluetoothState | STATE_ON = 2 | Added|
| ohos.bluetooth | BluetoothState | STATE_TURNING_ON = 1 | Added|
| ohos.bluetooth | BluetoothState | STATE_OFF = 0 | Added|
| ohos.bluetooth | ProfileConnectionState | STATE_DISCONNECTING = 3 | Added|
| ohos.bluetooth | ProfileConnectionState | STATE_CONNECTED = 2 | Added|
| ohos.bluetooth | ProfileConnectionState | STATE_CONNECTING = 1 | Added|
| ohos.bluetooth | ProfileConnectionState | STATE_DISCONNECTED = 0 | Added|
| ohos.bluetooth | MatchMode | MATCH_MODE_STICKY = 2 | Added|
| ohos.bluetooth | MatchMode | MATCH_MODE_AGGRESSIVE = 1 | Added|
| ohos.bluetooth | ScanDuty | SCAN_MODE_LOW_LATENCY = 2 | Added|
| ohos.bluetooth | ScanDuty | SCAN_MODE_BALANCED = 1 | Added|
| ohos.bluetooth | ScanDuty | SCAN_MODE_LOW_POWER = 0 | Added|
| ohos.bluetooth | BondStateParam | state: BondState; | Added|
| ohos.bluetooth | BondStateParam | deviceId: string; | Added|
| ohos.bluetooth | DeviceClass | classOfDevice: number; | Added|
| ohos.bluetooth | DeviceClass | majorMinorClass: MajorMinorClass; | Added|
| ohos.bluetooth | DeviceClass | majorClass: MajorClass; | Added|
| ohos.bluetooth | PinRequiredParam | pinCode: string; | Added|
| ohos.bluetooth | PinRequiredParam | deviceId: string; | Added|
| ohos.bluetooth | SppOption | type: SppType; | Added|
| ohos.bluetooth | SppOption | secure: boolean; | Added|
| ohos.bluetooth | SppOption | uuid: string; | Added|
| ohos.bluetooth | ScanOptions | matchMode?: MatchMode; | Added|
| ohos.bluetooth | ScanOptions | dutyMode?: ScanDuty; | Added|
| ohos.bluetooth | ScanOptions | interval?: number; | Added|
| ohos.bluetooth | ScanFilter | serviceUuid?: string; | Added|
| ohos.bluetooth | ScanFilter | name?: string; | Added|
| ohos.bluetooth | ScanFilter | deviceId?: string; | Added|
| ohos.bluetooth | ServiceData | serviceValue: ArrayBuffer; | Added|
| ohos.bluetooth | ServiceData | serviceUuid: string; | Added|
| ohos.bluetooth | ManufactureData | manufactureValue: ArrayBuffer; | Added|
| ohos.bluetooth | ManufactureData | manufactureId: number; | Added|
| ohos.bluetooth | AdvertiseData | serviceData: Array<ServiceData>; | Added|
| ohos.bluetooth | AdvertiseData | manufactureData: Array<ManufactureData>; | Added|
| ohos.bluetooth | AdvertiseData | serviceUuids: Array<string>; | Added|
| ohos.bluetooth | AdvertiseSetting | connectable?: boolean; | Added|
| ohos.bluetooth | AdvertiseSetting | txPower?: number; | Added|
| ohos.bluetooth | AdvertiseSetting | interval?: number; | Added|
| ohos.bluetooth | ScanResult | data: ArrayBuffer; | Added|
| ohos.bluetooth | ScanResult | rssi: number; | Added|
| ohos.bluetooth | ScanResult | deviceId: string; | Added|
| ohos.bluetooth | BLEConnectChangedState | state: ProfileConnectionState; | Added|
| ohos.bluetooth | BLEConnectChangedState | deviceId: string; | Added|
| ohos.bluetooth | ServerResponse | value: ArrayBuffer; | Added|
| ohos.bluetooth | ServerResponse | offset: number; | Added|
| ohos.bluetooth | ServerResponse | status: number; | Added|
| ohos.bluetooth | ServerResponse | transId: number; | Added|
| ohos.bluetooth | ServerResponse | deviceId: string; | Added|
| ohos.bluetooth | DescriptorWriteReq | serviceUuid: string; | Added|
| ohos.bluetooth | DescriptorWriteReq | characteristicUuid: string; | Added|
| ohos.bluetooth | DescriptorWriteReq | descriptorUuid: string; | Added|
| ohos.bluetooth | DescriptorWriteReq | value: ArrayBuffer; | Added|
| ohos.bluetooth | DescriptorWriteReq | needRsp: boolean; | Added|
| ohos.bluetooth | DescriptorWriteReq | isPrep: boolean; | Added|
| ohos.bluetooth | DescriptorWriteReq | offset: number; | Added|
| ohos.bluetooth | DescriptorWriteReq | transId: number; | Added|
| ohos.bluetooth | DescriptorWriteReq | deviceId: string; | Added|
| ohos.bluetooth | DescriptorReadReq | serviceUuid: string; | Added|
| ohos.bluetooth | DescriptorReadReq | characteristicUuid: string; | Added|
| ohos.bluetooth | DescriptorReadReq | descriptorUuid: string; | Added|
| ohos.bluetooth | DescriptorReadReq | offset: number; | Added|
| ohos.bluetooth | DescriptorReadReq | transId: number; | Added|
| ohos.bluetooth | DescriptorReadReq | deviceId: string; | Added|
| ohos.bluetooth | CharacteristicWriteReq | serviceUuid: string; | Added|
| ohos.bluetooth | CharacteristicWriteReq | characteristicUuid: string; | Added|
| ohos.bluetooth | CharacteristicWriteReq | value: ArrayBuffer; | Added|
| ohos.bluetooth | CharacteristicWriteReq | needRsp: boolean; | Added|
| ohos.bluetooth | CharacteristicWriteReq | isPrep: boolean; | Added|
| ohos.bluetooth | CharacteristicWriteReq | offset: number; | Added|
| ohos.bluetooth | CharacteristicWriteReq | transId: number; | Added|
| ohos.bluetooth | CharacteristicWriteReq | deviceId: string; | Added|
| ohos.bluetooth | CharacteristicReadReq | serviceUuid: string; | Added|
| ohos.bluetooth | CharacteristicReadReq | characteristicUuid: string; | Added|
| ohos.bluetooth | CharacteristicReadReq | offset: number; | Added|
| ohos.bluetooth | CharacteristicReadReq | transId: number; | Added|
| ohos.bluetooth | CharacteristicReadReq | deviceId: string; | Added|
| ohos.bluetooth | NotifyCharacteristic | confirm: boolean; | Added|
| ohos.bluetooth | NotifyCharacteristic | characteristicValue: ArrayBuffer; | Added|
| ohos.bluetooth | NotifyCharacteristic | characteristicUuid: string; | Added|
| ohos.bluetooth | NotifyCharacteristic | serviceUuid: string; | Added|
| ohos.bluetooth | BLEDescriptor | descriptorValue: ArrayBuffer; | Added|
| ohos.bluetooth | BLEDescriptor | descriptorUuid: string; | Added|
| ohos.bluetooth | BLEDescriptor | characteristicUuid: string; | Added|
| ohos.bluetooth | BLEDescriptor | serviceUuid: string; | Added|
| ohos.bluetooth | BLECharacteristic | descriptors: Array<BLEDescriptor>; | Added|
| ohos.bluetooth | BLECharacteristic | characteristicValue: ArrayBuffer; | Added|
| ohos.bluetooth | BLECharacteristic | characteristicUuid: string; | Added|
| ohos.bluetooth | BLECharacteristic | serviceUuid: string; | Added|
| ohos.bluetooth | GattService | includeServices?: Array<GattService>; | Added|
| ohos.bluetooth | GattService | characteristics: Array<BLECharacteristic>; | Added|
| ohos.bluetooth | GattService | isPrimary: boolean; | Added|
| ohos.bluetooth | GattService | serviceUuid: string; | Added|
| ohos.bluetooth | GattClientDevice | off(type: "BLEConnectionStateChange", callback?: Callback<BLEConnectChangedState>): void; | Added|
| ohos.bluetooth | GattClientDevice | on(type: "BLEConnectionStateChange", callback: Callback<BLEConnectChangedState>): void; | Added|
| ohos.bluetooth | GattClientDevice | off(type: "BLECharacteristicChange", callback?: Callback<BLECharacteristic>): void; | Added|
| ohos.bluetooth | GattClientDevice | on(type: "BLECharacteristicChange", callback: Callback<BLECharacteristic>): void; | Added|
| ohos.bluetooth | GattClientDevice | setNotifyCharacteristicChanged(characteristic: BLECharacteristic, enable: boolean): boolean; | Added|
| ohos.bluetooth | GattClientDevice | setBLEMtuSize(mtu: number): boolean; | Added|
| ohos.bluetooth | GattClientDevice | getRssiValue(callback: AsyncCallback<number>): void;<br>getRssiValue(): Promise<number>; | Added|
| ohos.bluetooth | GattClientDevice | writeDescriptorValue(descriptor: BLEDescriptor): boolean; | Added|
| ohos.bluetooth | GattClientDevice | writeCharacteristicValue(characteristic: BLECharacteristic): boolean; | Added|
| ohos.bluetooth | GattClientDevice | readDescriptorValue(descriptor: BLEDescriptor, callback: AsyncCallback<BLEDescriptor>): void;<br>readDescriptorValue(descriptor: BLEDescriptor): Promise<BLEDescriptor>; | Added|
| ohos.bluetooth | GattClientDevice | readCharacteristicValue(characteristic: BLECharacteristic, callback: AsyncCallback<BLECharacteristic>): void;<br>readCharacteristicValue(characteristic: BLECharacteristic): Promise<BLECharacteristic>; | Added|
| ohos.bluetooth | GattClientDevice | getServices(callback: AsyncCallback<Array<GattService>>): void;<br>getServices(): Promise<Array<GattService>>; | Added|
| ohos.bluetooth | GattClientDevice | getDeviceName(callback: AsyncCallback<string>): void;<br>getDeviceName(): Promise<string>; | Added|
| ohos.bluetooth | GattClientDevice | close(): boolean; | Added|
| ohos.bluetooth | GattClientDevice | disconnect(): boolean; | Added|
| ohos.bluetooth | GattClientDevice | connect(): boolean; | Added|
| ohos.bluetooth | GattServer | off(type: "connectStateChange", callback?: Callback<BLEConnectChangedState>): void; | Added|
| ohos.bluetooth | GattServer | on(type: "connectStateChange", callback: Callback<BLEConnectChangedState>): void; | Added|
| ohos.bluetooth | GattServer | off(type: "descriptorWrite", callback?: Callback<DescriptorWriteReq>): void; | Added|
| ohos.bluetooth | GattServer | on(type: "descriptorWrite", callback: Callback<DescriptorWriteReq>): void; | Added|
| ohos.bluetooth | GattServer | off(type: "descriptorRead", callback?: Callback<DescriptorReadReq>): void; | Added|
| ohos.bluetooth | GattServer | on(type: "descriptorRead", callback: Callback<DescriptorReadReq>): void; | Added|
| ohos.bluetooth | GattServer | off(type: "characteristicWrite", callback?: Callback<CharacteristicWriteReq>): void; | Added|
| ohos.bluetooth | GattServer | on(type: "characteristicWrite", callback: Callback<CharacteristicWriteReq>): void; | Added|
| ohos.bluetooth | GattServer | off(type: "characteristicRead", callback?: Callback<CharacteristicReadReq>): void; | Added|
| ohos.bluetooth | GattServer | on(type: "characteristicRead", callback: Callback<CharacteristicReadReq>): void; | Added|
| ohos.bluetooth | GattServer | sendResponse(serverResponse: ServerResponse): boolean; | Added|
| ohos.bluetooth | GattServer | notifyCharacteristicChanged(deviceId: string, notifyCharacteristic: NotifyCharacteristic): boolean; | Added|
| ohos.bluetooth | GattServer | close(): void; | Added|
| ohos.bluetooth | GattServer | removeService(serviceUuid: string): boolean; | Added|
| ohos.bluetooth | GattServer | addService(service: GattService): boolean; | Added|
| ohos.bluetooth | GattServer | stopAdvertising(): void; | Added|
| ohos.bluetooth | GattServer | startAdvertising(setting: AdvertiseSetting, advData: AdvertiseData, advResponse?: AdvertiseData): void; | Added|
| ohos.bluetooth | BLE | function off(type: "BLEDeviceFind", callback?: Callback<Array<ScanResult>>): void; | Added|
| ohos.bluetooth | BLE | function on(type: "BLEDeviceFind", callback: Callback<Array<ScanResult>>): void; | Added|
| ohos.bluetooth | BLE | function stopBLEScan(): void; | Added|
| ohos.bluetooth | BLE | function startBLEScan(filters: Array<ScanFilter>, options?: ScanOptions): void; | Added|
| ohos.bluetooth | BLE | function getConnectedBLEDevices(): Array<string>; | Added|
| ohos.bluetooth | BLE | function createGattClientDevice(deviceId: string): GattClientDevice; | Added|
| ohos.bluetooth | BLE | function createGattServer(): GattServer; | Added|
| ohos.bluetooth | HandsFreeAudioGatewayProfile | off(type: "connectionStateChange", callback?: Callback<StateChangeParam>): void; | Added|
| ohos.bluetooth | HandsFreeAudioGatewayProfile | on(type: "connectionStateChange", callback: Callback<StateChangeParam>): void; | Added|
| ohos.bluetooth | HandsFreeAudioGatewayProfile | disconnect(device: string): boolean; | Added|
| ohos.bluetooth | HandsFreeAudioGatewayProfile | connect(device: string): boolean; | Added|
| ohos.bluetooth | A2dpSourceProfile | getPlayingState(device: string): PlayingState; | Added|
| ohos.bluetooth | A2dpSourceProfile | off(type: "connectionStateChange", callback?: Callback<StateChangeParam>): void; | Added|
| ohos.bluetooth | A2dpSourceProfile | on(type: "connectionStateChange", callback: Callback<StateChangeParam>): void; | Added|
| ohos.bluetooth | A2dpSourceProfile | disconnect(device: string): boolean; | Added|
| ohos.bluetooth | A2dpSourceProfile | connect(device: string): boolean; | Added|
| ohos.bluetooth | BaseProfile | getDeviceState(device: string): ProfileConnectionState; | Added|
| ohos.bluetooth | BaseProfile | getConnectionDevices(): Array<string>; | Added|
| ohos.bluetooth | bluetooth | function getProfile(profileId: ProfileId): A2dpSourceProfile \| HandsFreeAudioGatewayProfile; | Added|
| ohos.bluetooth | bluetooth | function off(type: "sppRead", clientSocket: number, callback?: Callback<ArrayBuffer>): void; | Added|
| ohos.bluetooth | bluetooth | function on(type: "sppRead", clientSocket: number, callback: Callback<ArrayBuffer>): void; | Added|
| ohos.bluetooth | bluetooth | function sppWrite(clientSocket: number, data: ArrayBuffer): boolean; | Added|
| ohos.bluetooth | bluetooth | function sppCloseClientSocket(socket: number): void; | Added|
| ohos.bluetooth | bluetooth | function sppCloseServerSocket(socket: number): void; | Added|
| ohos.bluetooth | bluetooth | function sppConnect(device: string, option: SppOption, callback: AsyncCallback<number>): void; | Added|
| ohos.bluetooth | bluetooth | function sppAccept(serverSocket: number, callback: AsyncCallback<number>): void; | Added|
| ohos.bluetooth | bluetooth | function sppListen(name: string, option: SppOption, callback: AsyncCallback<number>): void; | Added|
| ohos.bluetooth | bluetooth | function off(type: "stateChange", callback?: Callback<BluetoothState>): void; | Added|
| ohos.bluetooth | bluetooth | function on(type: "stateChange", callback: Callback<BluetoothState>): void; | Added|
| ohos.bluetooth | bluetooth | function off(type: "pinRequired", callback?: Callback<PinRequiredParam>): void; | Added|
| ohos.bluetooth | bluetooth | function on(type: "pinRequired", callback: Callback<PinRequiredParam>): void; | Added|
| ohos.bluetooth | bluetooth | function off(type: "bondStateChange", callback?: Callback<BondStateParam>): void; | Added|
| ohos.bluetooth | bluetooth | function on(type: "bondStateChange", callback: Callback<BondStateParam>): void; | Added|
| ohos.bluetooth | bluetooth | function off(type: "bluetoothDeviceFind", callback?: Callback<Array<string>>): void; | Added|
| ohos.bluetooth | bluetooth | function on(type: "bluetoothDeviceFind", callback: Callback<Array<string>>): void; | Added|
| ohos.bluetooth | bluetooth | function stopBluetoothDiscovery(): boolean; | Added|
| ohos.bluetooth | bluetooth | function startBluetoothDiscovery(): boolean; | Added|
| ohos.bluetooth | bluetooth | function getBluetoothScanMode(): ScanMode; | Added|
| ohos.bluetooth | bluetooth | function setBluetoothScanMode(mode: ScanMode, duration: number): boolean; | Added|
| ohos.bluetooth | bluetooth | function setLocalName(name: string): boolean; | Added|
| ohos.bluetooth | bluetooth | function setDevicePairingConfirmation(device: string, accept: boolean): boolean; | Added|
| ohos.bluetooth | bluetooth | function getProfileConnState(profileId: ProfileId): ProfileConnectionState; | Added|
| ohos.bluetooth | bluetooth | function getPairedDevices(): Array<string>; | Added|
| ohos.bluetooth | bluetooth | function getLocalName(): string; | Added|
| ohos.bluetooth | bluetooth | function disableBluetooth(): boolean; | Added|
| ohos.bluetooth | bluetooth | function enableBluetooth(): boolean; | Added|
| ohos.bluetooth | bluetooth | function getRemoteDeviceClass(deviceId: string): DeviceClass; | Added|
| ohos.bluetooth | bluetooth | function getRemoteDeviceName(deviceId: string): string; | Added|
| ohos.bluetooth | bluetooth | function pairDevice(deviceId: string): boolean; | Added|
| ohos.bluetooth | bluetooth | function getBtConnectionState(): ProfileConnectionState; | Added|
| ohos.bluetooth | bluetooth | function getState(): BluetoothState; | Added|
# JS API Changes of the Utils Subsystem
The table below lists the APIs changes of the Utils subsystem in OpenHarmony 3.1 Release over OpenHarmony 3.0 LTS.
## API Changes
| Module| Class| Method/Attribute/Enumeration/Constant| Change Type|
|---|---|---|---|
| ohos.xml | XmlPullParser | parse(option: ParseOptions): void; | Added|
| ohos.xml | XmlPullParser | constructor(buffer: ArrayBuffer \| DataView, encoding?: string); | Added|
| ohos.xml | ParseOptions | tokenValueCallbackFunction?: (eventType: EventType, value: ParseInfo) => boolean; | Added|
| ohos.xml | ParseOptions | attributeValueCallbackFunction?: (name: string, value: string) => boolean; | Added|
| ohos.xml | ParseOptions | tagValueCallbackFunction?: (name: string, value: string) => boolean; | Added|
| ohos.xml | ParseOptions | ignoreNameSpace?: boolean; | Added|
| ohos.xml | ParseOptions | supportDoctype?: boolean; | Added|
| ohos.xml | ParseInfo | getAttributeCount(): number; | Added|
| ohos.xml | ParseInfo | isWhitespace(): boolean; | Added|
| ohos.xml | ParseInfo | isEmptyElementTag(): boolean; | Added|
| ohos.xml | ParseInfo | getText(): string; | Added|
| ohos.xml | ParseInfo | getPrefix(): string; | Added|
| ohos.xml | ParseInfo | getNamespace(): string; | Added|
| ohos.xml | ParseInfo | getName(): string; | Added|
| ohos.xml | ParseInfo | getLineNumber(): number; | Added|
| ohos.xml | ParseInfo | getDepth(): number; | Added|
| ohos.xml | ParseInfo | getColumnNumber(): number; | Added|
| ohos.xml | EventType | WHITESPACE | Added|
| ohos.xml | EventType | ENTITY_REFERENCE | Added|
| ohos.xml | EventType | INSTRUCTION | Added|
| ohos.xml | EventType | DOCDECL | Added|
| ohos.xml | EventType | COMMENT | Added|
| ohos.xml | EventType | CDSECT | Added|
| ohos.xml | EventType | TEXT | Added|
| ohos.xml | EventType | END_TAG | Added|
| ohos.xml | EventType | START_TAG | Added|
| ohos.xml | EventType | END_DOCUMENT | Added|
| ohos.xml | EventType | START_DOCUMENT | Added|
| ohos.xml | XmlSerializer | setDocType(text: string): void; | Added|
| ohos.xml | XmlSerializer | setText(text: string): void; | Added|
| ohos.xml | XmlSerializer | setCDATA(text: string): void; | Added|
| ohos.xml | XmlSerializer | setComment(text: string): void; | Added|
| ohos.xml | XmlSerializer | setNamespace(prefix: string, namespace: string): void; | Added|
| ohos.xml | XmlSerializer | endElement(): void; | Added|
| ohos.xml | XmlSerializer | startElement(name: string): void; | Added|
| ohos.xml | XmlSerializer | setDeclaration(): void; | Added|
| ohos.xml | XmlSerializer | addEmptyElement(name: string): void; | Added|
| ohos.xml | XmlSerializer | setAttributes(name: string, value: string): void; | Added|
| ohos.xml | XmlSerializer | constructor(buffer: ArrayBuffer \| DataView, encoding?: string); | Added|
| ohos.util.Vector | Vector | [Symbol.iterator](): IterableIterator<T>; | Added|
| ohos.util.Vector | Vector | copyToArray(array: Array<T>): void; | Added|
| ohos.util.Vector | Vector | trimToCurrentLength(): void; | Added|
| ohos.util.Vector | Vector | toString(): string; | Added|
| ohos.util.Vector | Vector | increaseCapacityTo(newCapacity: number): void; | Added|
| ohos.util.Vector | Vector | isEmpty(): boolean; | Added|
| ohos.util.Vector | Vector | convertToArray(): Array<T>; | Added|
| ohos.util.Vector | Vector | getCapacity(): number; | Added|
| ohos.util.Vector | Vector | setLength(newSize: number): void; | Added|
| ohos.util.Vector | Vector | clone(): Vector<T>; | Added|
| ohos.util.Vector | Vector | clear(): void; | Added|
| ohos.util.Vector | Vector | subVector(fromIndex: number, toIndex: number): Vector<T>; | Added|
| ohos.util.Vector | Vector | sort(comparator?: (firstValue: T, secondValue: T) => number): void; | Added|
| ohos.util.Vector | Vector | forEach(callbackfn: (value: T, index?: number, vector?: Vector<T>) => void, thisArg?: Object): void; | Added|
| ohos.util.Vector | Vector | replaceAllElements(callbackfn: (value: T, index?: number, vector?: Vector<T>) => T, thisArg?: Object): void; | Added|
| ohos.util.Vector | Vector | removeByRange(fromIndex: number, toIndex: number): void; | Added|
| ohos.util.Vector | Vector | getIndexFrom(element: T, index: number): number; | Added|
| ohos.util.Vector | Vector | getLastIndexFrom(element: T, index: number): number; | Added|
| ohos.util.Vector | Vector | getLastIndexOf(element: T): number; | Added|
| ohos.util.Vector | Vector | set(index: number, element: T): T; | Added|
| ohos.util.Vector | Vector | remove(element: T): boolean; | Added|
| ohos.util.Vector | Vector | removeByIndex(index: number): T; | Added|
| ohos.util.Vector | Vector | getLastElement(): T; | Added|
| ohos.util.Vector | Vector | getFirstElement(): T; | Added|
| ohos.util.Vector | Vector | getIndexOf(element: T): number; | Added|
| ohos.util.Vector | Vector | get(index: number): T; | Added|
| ohos.util.Vector | Vector | has(element: T): boolean; | Added|
| ohos.util.Vector | Vector | insert(element: T, index: number): void; | Added|
| ohos.util.Vector | Vector | add(element: T): boolean; | Added|
| ohos.util.Vector | Vector | length: number; | Added|
| ohos.util.Vector | Vector | constructor(); | Added|
| ohos.util.TreeSet | TreeSet | [Symbol.iterator](): IterableIterator<T>; | Added|
| ohos.util.TreeSet | TreeSet | entries(): IterableIterator<[T, T]>; | Added|
| ohos.util.TreeSet | TreeSet | values(): IterableIterator<T>; | Added|
| ohos.util.TreeSet | TreeSet | forEach(callbackfn: (value?: T, key?: T, set?: TreeSet<T>) => void, thisArg?: Object): void;| Added|
| ohos.util.TreeSet | TreeSet | popLast(): T; | Added|
| ohos.util.TreeSet | TreeSet | popFirst(): T; | Added|
| ohos.util.TreeSet | TreeSet | getHigherValue(key: T): T; | Added|
| ohos.util.TreeSet | TreeSet | getLowerValue(key: T): T; | Added|
| ohos.util.TreeSet | TreeSet | getLastValue(): T; | Added|
| ohos.util.TreeSet | TreeSet | getFirstValue(): T; | Added|
| ohos.util.TreeSet | TreeSet | clear(): void; | Added|
| ohos.util.TreeSet | TreeSet | remove(value: T): boolean; | Added|
| ohos.util.TreeSet | TreeSet | add(value: T): boolean; | Added|
| ohos.util.TreeSet | TreeSet | has(value: T): boolean; | Added|
| ohos.util.TreeSet | TreeSet | isEmpty(): boolean; | Added|
| ohos.util.TreeSet | TreeSet | length: number; | Added|
| ohos.util.TreeSet | TreeSet | constructor(comparator?: (firstValue: T, secondValue: T) => boolean) | Added|
| ohos.util.TreeMap | TreeMap | [Symbol.iterator](): IterableIterator<[K, V]>; | Added|
| ohos.util.TreeMap | TreeMap | entries(): IterableIterator<[K, V]>; | Added|
| ohos.util.TreeMap | TreeMap | forEach(callbackfn: (value?: V, key?: K, map?: TreeMap<K, V>) => void, thisArg?: Object): void; | Added|
| ohos.util.TreeMap | TreeMap | replace(key: K, newValue: V): boolean; | Added|
| ohos.util.TreeMap | TreeMap | values(): IterableIterator<V>; | Added|
| ohos.util.TreeMap | TreeMap | keys(): IterableIterator<K>; | Added|
| ohos.util.TreeMap | TreeMap | getHigherKey(key: K): K; | Added|
| ohos.util.TreeMap | TreeMap | getLowerKey(key: K): K; | Added|
| ohos.util.TreeMap | TreeMap | clear(): void; | Added|
| ohos.util.TreeMap | TreeMap | remove(key: K): V; | Added|
| ohos.util.TreeMap | TreeMap | set(key: K, value: V): Object; | Added|
| ohos.util.TreeMap | TreeMap | setAll(map: TreeMap<K, V>): void; | Added|
| ohos.util.TreeMap | TreeMap | getLastKey(): K; | Added|
| ohos.util.TreeMap | TreeMap | getFirstKey(): K; | Added|
| ohos.util.TreeMap | TreeMap | get(key: K): V; | Added|
| ohos.util.TreeMap | TreeMap | hasValue(value: V): boolean; | Added|
| ohos.util.TreeMap | TreeMap | hasKey(key: K): boolean; | Added|
| ohos.util.TreeMap | TreeMap | isEmpty(): boolean; | Added|
| ohos.util.TreeMap | TreeMap | length: number; | Added|
| ohos.util.TreeMap | TreeMap | constructor(comparator?: (firstValue: K, secondValue: K) => boolean); | Added|
| ohos.util.Stack | Stack | [Symbol.iterator](): IterableIterator<T>; | Added|
| ohos.util.Stack | Stack | forEach(callbackfn: (value: T, index?: number, stack?: Stack<T>) => void, thisArg?: Object): void; | Added|
| ohos.util.Stack | Stack | locate(element: T): number; | Added|
| ohos.util.Stack | Stack | push(item: T): T; | Added|
| ohos.util.Stack | Stack | pop(): T; | Added|
| ohos.util.Stack | Stack | peek(): T; | Added|
| ohos.util.Stack | Stack | isEmpty(): boolean; | Added|
| ohos.util.Stack | Stack | length: number; | Added|
| ohos.util.Stack | Stack | constructor(); | Added|
| ohos.util.Queue | Queue | [Symbol.iterator](): IterableIterator<T>; | Added|
| ohos.util.Queue | Queue | forEach(callbackfn: (value: T, index?: number, Queue?: Queue<T>) => void, thisArg?: Object): void; | Added|
| ohos.util.Queue | Queue | pop(): T; | Added|
| ohos.util.Queue | Queue | getFirst(): T; | Added|
| ohos.util.Queue | Queue | add(element: T): boolean; | Added|
| ohos.util.Queue | Queue | length: number; | Added|
| ohos.util.Queue | Queue | constructor(); | Added|
| ohos.util.PlainArray | PlainArray | [Symbol.iterator](): IterableIterator<[number, T]>; | Added|
| ohos.util.PlainArray | PlainArray | forEach(callbackfn: (value: T, index?: number, PlainArray?: PlainArray<T>) => void, thisArg?: Object): void; | Added|
| ohos.util.PlainArray | PlainArray | getValueAt(index: number): T; | Added|
| ohos.util.PlainArray | PlainArray | toString(): String; | Added|
| ohos.util.PlainArray | PlainArray | setValueAt(index: number, value: T): void; | Added|
| ohos.util.PlainArray | PlainArray | removeRangeFrom(index: number, size: number): number; | Added|
| ohos.util.PlainArray | PlainArray | removeAt(index: number): T; | Added|
| ohos.util.PlainArray | PlainArray | remove(key: number): T; | Added|
| ohos.util.PlainArray | PlainArray | getKeyAt(index: number): number; | Added|
| ohos.util.PlainArray | PlainArray | isEmpty(): boolean; | Added|
| ohos.util.PlainArray | PlainArray | getIndexOfValue(value: T): number; | Added|
| ohos.util.PlainArray | PlainArray | getIndexOfKey(key: number): number; | Added|
| ohos.util.PlainArray | PlainArray | get(key: number): T; | Added|
| ohos.util.PlainArray | PlainArray | has(key: number): boolean; | Added|
| ohos.util.PlainArray | PlainArray | clone(): PlainArray<T>; | Added|
| ohos.util.PlainArray | PlainArray | clear(): void; | Added|
| ohos.util.PlainArray | PlainArray | add(key: number, value: T): void; | Added|
| ohos.util.PlainArray | PlainArray | length: number; | Added|
| ohos.util.PlainArray | PlainArray | constructor(); | Added|
| ohos.util.List | List | [Symbol.iterator](): IterableIterator<T>; | Added|
| ohos.util.List | List | isEmpty(): boolean; | Added|
| ohos.util.List | List | convertToArray(): Array<T>; | Added|
| ohos.util.List | List | replaceAllElements(callbackfn: (value: T, index?: number, list?: List<T>) => T, thisArg?: Object): void; | Added|
| ohos.util.List | List | getSubList(fromIndex: number, toIndex: number): List<T>; | Added|
| ohos.util.List | List | clear(): void; | Added|
| ohos.util.List | List | sort(comparator: (firstValue: T, secondValue: T) => number): void; | Added|
| ohos.util.List | List | forEach(callbackfn: (value: T, index?: number, List?: List<T>) => void, thisArg?: Object): void; | Added|
| ohos.util.List | List | equal(obj: Object): boolean; | Added|
| ohos.util.List | List | set(index: number, element: T): T; | Added|
| ohos.util.List | List | getLast(): T; | Added|
| ohos.util.List | List | getFirst(): T; | Added|
| ohos.util.List | List | getLastIndexOf(element: T): number; | Added|
| ohos.util.List | List | remove(element: T): boolean; | Added|
| ohos.util.List | List | removeByIndex(index: number): T; | Added|
| ohos.util.List | List | getIndexOf(element: T): number; | Added|
| ohos.util.List | List | has(element: T): boolean; | Added|
| ohos.util.List | List | get(index: number): T; | Added|
| ohos.util.List | List | insert(element: T, index: number): void; | Added|
| ohos.util.List | List | add(element: T): boolean; | Added|
| ohos.util.List | List | length: number; | Added|
| ohos.util.List | List | constructor(); | Added|
| ohos.util.LinkedList | LinkedList | [Symbol.iterator](): IterableIterator<T>; | Added|
| ohos.util.LinkedList | LinkedList | convertToArray(): Array<T>; | Added|
| ohos.util.LinkedList | LinkedList | clone(): LinkedList<T>; | Added|
| ohos.util.LinkedList | LinkedList | clear(): void; | Added|
| ohos.util.LinkedList | LinkedList | forEach(callbackfn: (value: T, index?: number, LinkedList?: LinkedList<T>) => void, thisArg?: Object): void; | Added|
| ohos.util.LinkedList | LinkedList | set(index: number, element: T): T; | Added|
| ohos.util.LinkedList | LinkedList | getLast(): T; | Added|
| ohos.util.LinkedList | LinkedList | getFirst(): T; | Added|
| ohos.util.LinkedList | LinkedList | getLastIndexOf(element: T): number; | Added|
| ohos.util.LinkedList | LinkedList | removeLastFound(element: T): boolean; | Added|
| ohos.util.LinkedList | LinkedList | removeFirstFound(element: T): boolean; | Added|
| ohos.util.LinkedList | LinkedList | remove(element: T): boolean; | Added|
| ohos.util.LinkedList | LinkedList | removeByIndex(index: number): T; | Added|
| ohos.util.LinkedList | LinkedList | getIndexOf(element: T): number; | Added|
| ohos.util.LinkedList | LinkedList | has(element: T): boolean; | Added|
| ohos.util.LinkedList | LinkedList | removeLast(): T; | Added|
| ohos.util.LinkedList | LinkedList | removeFirst(): T; | Added|
| ohos.util.LinkedList | LinkedList | addFirst(element: T): void; | Added|
| ohos.util.LinkedList | LinkedList | get(index: number): T; | Added|
| ohos.util.LinkedList | LinkedList | insert(index: number, element: T): void; | Added|
| ohos.util.LinkedList | LinkedList | add(element: T): boolean; | Added|
| ohos.util.LinkedList | LinkedList | length: number; | Added|
| ohos.util.LinkedList | LinkedList | constructor(); | Added|
| ohos.util.LightWeightSet | LightWeightSet | isEmpty(): boolean; | Added|
| ohos.util.LightWeightSet | LightWeightSet | entries(): IterableIterator<[T, T]>; | Added|
| ohos.util.LightWeightSet | LightWeightSet | values(): IterableIterator<T>; | Added|
| ohos.util.LightWeightSet | LightWeightSet | getValueAt(index: number): T; | Added|
| ohos.util.LightWeightSet | LightWeightSet | toArray(): Array<T>; | Added|
| ohos.util.LightWeightSet | LightWeightSet | toString(): String; | Added|
| ohos.util.LightWeightSet | LightWeightSet | [Symbol.iterator](): IterableIterator<T>; | Added|
| ohos.util.LightWeightSet | LightWeightSet | forEach(callbackfn: (value?: T, key?: T, set?: LightWeightSet<T>) => void, thisArg?: Object): void; | Added|
| ohos.util.LightWeightSet | LightWeightSet | clear(): void; | Added|
| ohos.util.LightWeightSet | LightWeightSet | removeAt(index: number): boolean; | Added|
| ohos.util.LightWeightSet | LightWeightSet | remove(key: T): T; | Added|
| ohos.util.LightWeightSet | LightWeightSet | getIndexOf(key: T): number; | Added|
| ohos.util.LightWeightSet | LightWeightSet | increaseCapacityTo(minimumCapacity: number): void; | Added|
| ohos.util.LightWeightSet | LightWeightSet | equal(obj: Object): boolean; | Added|
| ohos.util.LightWeightSet | LightWeightSet | has(key: T): boolean; | Added|
| ohos.util.LightWeightSet | LightWeightSet | hasAll(set: LightWeightSet<T>): boolean; | Added|
| ohos.util.LightWeightSet | LightWeightSet | addAll(set: LightWeightSet<T>): boolean; | Added|
| ohos.util.LightWeightSet | LightWeightSet | add(obj: T): boolean; | Added|
| ohos.util.LightWeightSet | LightWeightSet | length: number; | Added|
| ohos.util.LightWeightSet | LightWeightSet | constructor(); | Added|
| ohos.util.LightWeightMap | LightWeightMap | values(): IterableIterator<V>; | Added|
| ohos.util.LightWeightMap | LightWeightMap | getValueAt(index: number): V; | Added|
| ohos.util.LightWeightMap | LightWeightMap | toString(): String; | Added|
| ohos.util.LightWeightMap | LightWeightMap | [Symbol.iterator](): IterableIterator<[K, V]>; | Added|
| ohos.util.LightWeightMap | LightWeightMap | forEach(callbackfn: (value?: V, key?: K, map?: LightWeightMap<K, V>) => void, thisArg?: Object): void; | Added|
| ohos.util.LightWeightMap | LightWeightMap | setValueAt(index: number, newValue: V): boolean; | Added|
| ohos.util.LightWeightMap | LightWeightMap | clear(): void; | Added|
| ohos.util.LightWeightMap | LightWeightMap | removeAt(index: number): boolean; | Added|
| ohos.util.LightWeightMap | LightWeightMap | remove(key: K): V; | Added|
| ohos.util.LightWeightMap | LightWeightMap | set(key: K, value: V): Object; | Added|
| ohos.util.LightWeightMap | LightWeightMap | setAll(map: LightWeightMap<K, V>): void; | Added|
| ohos.util.LightWeightMap | LightWeightMap | keys(): IterableIterator<K>; | Added|
| ohos.util.LightWeightMap | LightWeightMap | getKeyAt(index: number): K; | Added|
| ohos.util.LightWeightMap | LightWeightMap | isEmpty(): boolean; | Added|
| ohos.util.LightWeightMap | LightWeightMap | getIndexOfValue(value: V): number; | Added|
| ohos.util.LightWeightMap | LightWeightMap | getIndexOfKey(key: K): number; | Added|
| ohos.util.LightWeightMap | LightWeightMap | get(key: K): V; | Added|
| ohos.util.LightWeightMap | LightWeightMap | entries(): IterableIterator<[K, V]>; | Added|
| ohos.util.LightWeightMap | LightWeightMap | increaseCapacityTo(minimumCapacity: number): void; | Added|
| ohos.util.LightWeightMap | LightWeightMap | hasValue(value: V): boolean; | Added|
| ohos.util.LightWeightMap | LightWeightMap | hasKey(key: K): boolean; | Added|
| ohos.util.LightWeightMap | LightWeightMap | hasAll(map: LightWeightMap<K, V>): boolean; | Added|
| ohos.util.LightWeightMap | LightWeightMap | length: number; | Added|
| ohos.util.LightWeightMap | LightWeightMap | constructor(); | Added|
| ohos.util.HashSet | HashSet | [Symbol.iterator](): IterableIterator<T>; | Added|
| ohos.util.HashSet | HashSet | entries(): IterableIterator<[T, T]>; | Added|
| ohos.util.HashSet | HashSet | values(): IterableIterator<T>; | Added|
| ohos.util.HashSet | HashSet | forEach(callbackfn: (value?: T, key?: T, set?: HashSet<T>) => void, thisArg?: Object): void; | Added|
| ohos.util.HashSet | HashSet | clear(): void; | Added|
| ohos.util.HashSet | HashSet | remove(value: T): boolean; | Added|
| ohos.util.HashSet | HashSet | add(value: T): boolean; | Added|
| ohos.util.HashSet | HashSet | has(value: T): boolean; | Added|
| ohos.util.HashSet | HashSet | isEmpty(): boolean; | Added|
| ohos.util.HashSet | HashSet | length: number; | Added|
| ohos.util.HashSet | HashSet | constructor(); | Added|
| ohos.util.HashMap | HashMap | [Symbol.iterator](): IterableIterator<[K, V]>; | Added|
| ohos.util.HashMap | HashMap | entries(): IterableIterator<[K, V]>; | Added|
| ohos.util.HashMap | HashMap | forEach(callbackfn: (value?: V, key?: K, map?: HashMap<K, V>) => void, thisArg?: Object): void; | Added|
| ohos.util.HashMap | HashMap | replace(key: K, newValue: V): boolean; | Added|
| ohos.util.HashMap | HashMap | values(): IterableIterator<V>; | Added|
| ohos.util.HashMap | HashMap | keys(): IterableIterator<K>; | Added|
| ohos.util.HashMap | HashMap | clear(): void; | Added|
| ohos.util.HashMap | HashMap | remove(key: K): V; | Added|
| ohos.util.HashMap | HashMap | set(key: K, value: V): Object; | Added|
| ohos.util.HashMap | HashMap | setAll(map: HashMap<K, V>): void; | Added|
| ohos.util.HashMap | HashMap | get(key: K): V; | Added|
| ohos.util.HashMap | HashMap | hasValue(value: V): boolean; | Added|
| ohos.util.HashMap | HashMap | hasKey(key: K): boolean; | Added|
| ohos.util.HashMap | HashMap | isEmpty(): boolean; | Added|
| ohos.util.HashMap | HashMap | length: number; | Added|
| ohos.util.HashMap | HashMap | constructor(); | Added|
| ohos.util.Deque | Deque | [Symbol.iterator](): IterableIterator<T>; | Added|
| ohos.util.Deque | Deque | forEach(callbackfn: (value: T, index?: number, deque?: Deque<T>) => void, thisArg?: Object): void; | Added|
| ohos.util.Deque | Deque | popLast(): T; | Added|
| ohos.util.Deque | Deque | popFirst(): T; | Added|
| ohos.util.Deque | Deque | getLast(): T; | Added|
| ohos.util.Deque | Deque | getFirst(): T; | Added|
| ohos.util.Deque | Deque | has(element: T): boolean; | Added|
| ohos.util.Deque | Deque | insertEnd(element: T): void; | Added|
| ohos.util.Deque | Deque | insertFront(element: T): void; | Added|
| ohos.util.Deque | Deque | length: number; | Added|
| ohos.util.Deque | Deque | constructor(); | Added|
| ohos.util | types | isWeakSet(value: Object): boolean; | Added|
| ohos.util | types | isWeakMap(value: Object): boolean; | Added|
| ohos.util | types | isUint32Array(value: Object): boolean; | Added|
| ohos.util | types | isUint16Array(value: Object): boolean; | Added|
| ohos.util | types | isUint8ClampedArray(value: Object): boolean; | Added|
| ohos.util | types | isUint8Array(value: Object): boolean; | Added|
| ohos.util | types | isTypedArray(value: Object): boolean; | Added|
| ohos.util | types | isSymbolObject(value: Object): boolean; | Added|
| ohos.util | types | isStringObject(value: Object): boolean; | Added|
| ohos.util | types | isSharedArrayBuffer(value: Object): boolean; | Added|
| ohos.util | types | isSetIterator(value: Object): boolean; | Added|
| ohos.util | types | isSet(value: Object): boolean; | Added|
| ohos.util | types | isRegExp(value: Object): boolean; | Added|
| ohos.util | types | isProxy(value: Object): boolean; | Added|
| ohos.util | types | isPromise(value: Object): boolean; | Added|
| ohos.util | types | isNumberObject(value: Object): boolean; | Added|
| ohos.util | types | isNativeError(value: Object): boolean; | Added|
| ohos.util | types | isModuleNamespaceObject(value: Object): boolean; | Added|
| ohos.util | types | isMapIterator(value: Object): boolean; | Added|
| ohos.util | types | isMap(value: Object): boolean; | Added|
| ohos.util | types | isInt32Array(value: Object): boolean; | Added|
| ohos.util | types | isInt16Array(value: Object): boolean; | Added|
| ohos.util | types | isInt8Array(value: Object): boolean; | Added|
| ohos.util | types | isGeneratorObject(value: Object): boolean; | Added|
| ohos.util | types | isGeneratorFunction(value: Object): boolean; | Added|
| ohos.util | types | isFloat64Array(value: Object): boolean; | Added|
| ohos.util | types | isFloat32Array(value: Object): boolean; | Added|
| ohos.util | types | isExternal(value: Object): boolean; | Added|
| ohos.util | types | isDate(value: Object): boolean; | Added|
| ohos.util | types | isDataView(value: Object): boolean; | Added|
| ohos.util | types | isBoxedPrimitive(value: Object): boolean; | Added|
| ohos.util | types | isBooleanObject(value: Object): boolean; | Added|
| ohos.util | types | isBigUint64Array(value: Object): boolean; | Added|
| ohos.util | types | isBigInt64Array(value: Object): boolean; | Added|
| ohos.util | types | isAsyncFunction(value: Object): boolean; | Added|
| ohos.util | types | isArrayBuffer(value: Object): boolean; | Added|
| ohos.util | types | isArgumentsObject(value: Object): boolean; | Added|
| ohos.util | types | isArrayBufferView(value: Object): boolean; | Added|
| ohos.util | types | isAnyArrayBuffer(value: Object): boolean; | Added|
| ohos.util | types | constructor(); | Added|
| ohos.util | Base64 | decodeSync(src: Uint8Array \| string): Uint8Array; | Added|
| ohos.util | Base64 | encodeToStringSync(src: Uint8Array): string; | Added|
| ohos.util | Base64 | encodeSync(src: Uint8Array): Uint8Array; | Added|
| ohos.util | LruBuffer | getCapacity(): number; | Added|
| ohos.util | LruBuffer | length:number | Added|
| ohos.util | RationalNumber | valueOf(): number; | Added|
| ohos.util.ArrayList | ArrayList | [Symbol.iterator](): IterableIterator<T>; | Added|
| ohos.util.ArrayList | ArrayList | trimToCurrentLength(): void; | Added|
| ohos.util.ArrayList | ArrayList | increaseCapacityTo(newCapacity: number): void; | Added|
| ohos.util.ArrayList | ArrayList | isEmpty(): boolean; | Added|
| ohos.util.ArrayList | ArrayList | convertToArray(): Array<T>; | Added|
| ohos.util.ArrayList | ArrayList | getCapacity(): number; | Added|
| ohos.util.ArrayList | ArrayList | clone(): ArrayList<T>; | Added|
| ohos.util.ArrayList | ArrayList | clear(): void; | Added|
| ohos.util.ArrayList | ArrayList | subArrayList(fromIndex: number, toIndex: number): ArrayList<T>; | Added|
| ohos.util.ArrayList | ArrayList | sort(comparator?: (firstValue: T, secondValue: T) => number): void; | Added|
| ohos.util.ArrayList | ArrayList | forEach(callbackfn: (value: T, index?: number, arrlist?: ArrayList<T>) => void, thisArg?: Object): void; | Added|
| ohos.util.ArrayList | ArrayList | replaceAllElements(callbackfn: (value: T, index?: number, arrlist?: ArrayList<T>) => T, thisArg?: Object): void; | Added|
| ohos.util.ArrayList | ArrayList | removeByRange(fromIndex: number, toIndex: number): void; | Added|
| ohos.util.ArrayList | ArrayList | getLastIndexOf(element: T): number; | Added|
| ohos.util.ArrayList | ArrayList | remove(element: T): boolean; | Added|
| ohos.util.ArrayList | ArrayList | removeByIndex(index: number): T; | Added|
| ohos.util.ArrayList | ArrayList | getIndexOf(element: T): number; | Added|
| ohos.util.ArrayList | ArrayList | has(element: T): boolean; | Added|
| ohos.util.ArrayList | ArrayList | insert(element: T, index: number): void; | Added|
| ohos.util.ArrayList | ArrayList | add(element: T): boolean; | Added|
| ohos.util.ArrayList | ArrayList | length: number; | Added|
| ohos.util.ArrayList | ArrayList | constructor(); | Added|
| ohos.uri | URI | ssp: string; | Added|
| ohos.uri | URI | authority: string; | Added|
| ohos.uri | URI | fragment: string; | Added|
| ohos.uri | URI | query: string; | Added|
| ohos.uri | URI | path: string; | Added|
| ohos.uri | URI | port: string; | Added|
| ohos.uri | URI | host: string; | Added|
| ohos.uri | URI | userInfo: string; | Added|
| ohos.uri | URI | scheme: string; | Added|
| ohos.uri | URI | normalize(): URI; | Added|
| ohos.uri | URI | checkIsAbsolute(): boolean; | Added|
| ohos.uri | URI | equals(other: URI): boolean; | Added|
| ohos.uri | URI | toString(): string | Added|
| ohos.uri | URI | constructor(uri: string); | Added|
| ohos.convertxml | ConvertXML | convert(xml: string, options?: ConvertOptions) : Object; | Added|
| ohos.convertxml | ConvertOptions | elementsKey: string; | Added|
| ohos.convertxml | ConvertOptions | nameKey: string; | Added|
| ohos.convertxml | ConvertOptions | typeKey: string; | Added|
| ohos.convertxml | ConvertOptions | parentKey: string; | Added|
| ohos.convertxml | ConvertOptions | commentKey: string; | Added|
| ohos.convertxml | ConvertOptions | doctypeKey: string; | Added|
| ohos.convertxml | ConvertOptions | cdataKey: string; | Added|
| ohos.convertxml | ConvertOptions | textKey: string; | Added|
| ohos.convertxml | ConvertOptions | attributesKey: string; | Added|
| ohos.convertxml | ConvertOptions | instructionKey: string; | Added|
| ohos.convertxml | ConvertOptions | declarationKey: string; | Added|
| ohos.convertxml | ConvertOptions | ignoreText?: boolean; | Added|
| ohos.convertxml | ConvertOptions | ignoreDoctype?: boolean; | Added|
| ohos.convertxml | ConvertOptions | ignoreCDATA?: boolean; | Added|
| ohos.convertxml | ConvertOptions | ignoreComment?: boolean; | Added|
| ohos.convertxml | ConvertOptions | ignoreAttributes?: boolean; | Added|
| ohos.convertxml | ConvertOptions | ignoreInstruction?: boolean; | Added|
| ohos.convertxml | ConvertOptions | ignoreDeclaration?: boolean; | Added|
| ohos.convertxml | ConvertOptions | trim: boolean; | Added|
# JS API Changes of the DFX Subsystem
The table below lists the APIs changes of the DFX subsystem in OpenHarmony 3.1 Release over OpenHarmony 3.0 LTS.
## API Changes
| Module| Class| Method/Attribute/Enumeration/Constant| Change Type|
|---|---|---|---|
| ohos.hiTraceMeter | hiTraceMeter | function traceByValue(name: string, count: number): void; | Added|
| ohos.hiTraceMeter | hiTraceMeter | function finishTrace(name: string, taskId: number): void; | Added|
| ohos.hiTraceMeter | hiTraceMeter | function startTrace(name: string, taskId: number): void; | Added|
| ohos.hiTraceChain | hiTraceChain | function enableFlag(id: HiTraceId, flag: HiTraceFlag): void; | Added|
| ohos.hiTraceChain | hiTraceChain | function isFlagEnabled(id: HiTraceId, flag: HiTraceFlag): boolean; | Added|
| ohos.hiTraceChain | hiTraceChain | function isValid(id: HiTraceId): boolean; | Added|
| ohos.hiTraceChain | hiTraceChain | function tracepoint(mode: HiTraceCommunicationMode, type: HiTraceTracepointType, id: HiTraceId, msg?: string): void; | Added|
| ohos.hiTraceChain | hiTraceChain | function createSpan(): HiTraceId; | Added|
| ohos.hiTraceChain | hiTraceChain | function clearId(): void; | Added|
| ohos.hiTraceChain | hiTraceChain | function setId(id: HiTraceId): void; | Added|
| ohos.hiTraceChain | hiTraceChain | function getId(): HiTraceId; | Added|
| ohos.hiTraceChain | hiTraceChain | function end(id: HiTraceId): void; | Added|
| ohos.hiTraceChain | hiTraceChain | function begin(name: string, flags: number = HiTraceFlag.DEFAULT): HiTraceId; | Added|
| ohos.hiTraceChain | HiTraceId | flags?: number; | Added|
| ohos.hiTraceChain | HiTraceId | parentSpanId?: number; | Added|
| ohos.hiTraceChain | HiTraceId | spanId?: number; | Added|
| ohos.hiTraceChain | HiTraceId | chainId: bigint; | Added|
| ohos.hiTraceChain | HiTraceCommunicationMode | DEVICE = 3 | Added|
| ohos.hiTraceChain | HiTraceCommunicationMode | PROCESS = 2 | Added|
| ohos.hiTraceChain | HiTraceCommunicationMode | THREAD = 1 | Added|
| ohos.hiTraceChain | HiTraceCommunicationMode | DEFAULT = 0 | Added|
| ohos.hiTraceChain | HiTraceTracepointType | GENERAL = 4 | Added|
| ohos.hiTraceChain | HiTraceTracepointType | SR = 3 | Added|
| ohos.hiTraceChain | HiTraceTracepointType | SS = 2 | Added|
| ohos.hiTraceChain | HiTraceTracepointType | CR = 1 | Added|
| ohos.hiTraceChain | HiTraceTracepointType | CS = 0 | Added|
| ohos.hiTraceChain | HiTraceFlag | D2D_TP_INFO = 1 << 6 | Added|
| ohos.hiTraceChain | HiTraceFlag | FAILURE_TRIGGER = 1 << 5 | Added|
| ohos.hiTraceChain | HiTraceFlag | DISABLE_LOG = 1 << 4 | Added|
| ohos.hiTraceChain | HiTraceFlag | NO_BE_INFO = 1 << 3 | Added|
| ohos.hiTraceChain | HiTraceFlag | TP_INFO = 1 << 2 | Added|
| ohos.hiTraceChain | HiTraceFlag | DONOT_CREATE_SPAN = 1 << 1 | Added|
| ohos.hiTraceChain | HiTraceFlag | INCLUDE_ASYNC = 1 | Added|
| ohos.hiTraceChain | HiTraceFlag | DEFAULT = 0 | Added|
| ohos.hilog | LogLevel | FATAL = 7 | Added|
| ohos.hilog | LogLevel | ERROR = 6 | Added|
| ohos.hilog | LogLevel | WARN = 5 | Added|
| ohos.hilog | LogLevel | INFO = 4 | Added|
| ohos.hilog | LogLevel | DEBUG = 3 | Added|
| ohos.hilog | hilog | function isLoggable(domain: number, tag: string, level: LogLevel) : boolean; | Added|
| ohos.hilog | hilog | function fatal(domain: number, tag: string, format: string, ...args: any[]) : void; | Added|
| ohos.hilog | hilog | function error(domain: number, tag: string, format: string, ...args: any[]) : void; | Added|
| ohos.hilog | hilog | function warn(domain: number, tag: string, format: string, ...args: any[]) : void; | Added|
| ohos.hilog | hilog | function info(domain: number, tag: string, format: string, ...args: any[]) : void; | Added|
| ohos.hilog | hilog | function debug(domain: number, tag: string, format: string, ...args: any[]) : void; | Added|
| ohos.hidebug | hidebug | function dumpHeapData(filename : string) : void; | Added|
| ohos.hidebug | hidebug | function stopProfiling() : void; | Added|
| ohos.hidebug | hidebug | function startProfiling(filename : string) : void; | Added|
| ohos.hidebug | hidebug | function getSharedDirty() : bigint; | Added|
| ohos.hidebug | hidebug | function getPss() : bigint; | Added|
| ohos.hidebug | hidebug | function getNativeHeapFreeSize() : bigint; | Added|
| ohos.hidebug | hidebug | function getNativeHeapAllocatedSize() : bigint; | Added|
| ohos.hidebug | hidebug | function getNativeHeapSize() : bigint; | Added|
| ohos.hichecker | hichecker | function contains(rule: bigint) : boolean; | Added|
| ohos.hichecker | hichecker | function getRule() : bigint; | Added|
| ohos.hichecker | hichecker | function removeRule(rule: bigint) : void; | Added|
| ohos.hichecker | hichecker | function addRule(rule: bigint) : void; | Added|
| ohos.hichecker | hichecker | const RULE_CHECK_ABILITY_CONNECTION_LEAK: 8589934592n; | Added|
| ohos.hichecker | hichecker | const RULE_THREAD_CHECK_SLOW_PROCESS: 1n; | Added|
| ohos.hichecker | hichecker | const RULE_CAUTION_TRIGGER_CRASH: 4611686018427387904n; | Added|
| ohos.hichecker | hichecker | const RULE_CAUTION_PRINT_LOG: 9223372036854775808n; | Added|
| ohos.faultLogger | FaultLogInfo | fullLog: string; | Added|
| ohos.faultLogger | FaultLogInfo | summary: string; | Added|
| ohos.faultLogger | FaultLogInfo | module: string; | Added|
| ohos.faultLogger | FaultLogInfo | reason: string; | Added|
| ohos.faultLogger | FaultLogInfo | timestamp: number; | Added|
| ohos.faultLogger | FaultLogInfo | type: FaultType; | Added|
| ohos.faultLogger | FaultLogInfo | uid: number; | Added|
| ohos.faultLogger | FaultLogInfo | pid: number; | Added|
| ohos.faultLogger | FaultLogger | function querySelfFaultLog(faultType: FaultType, callback: AsyncCallback<Array<FaultLogInfo>>) : void;<br>function querySelfFaultLog(faultType: FaultType) : Promise<Array<FaultLogInfo>>; | Added|
| ohos.faultLogger | FaultType | APP_FREEZE = 4 | Added|
| ohos.faultLogger | FaultType | JS_CRASH = 3 | Added|
| ohos.faultLogger | FaultType | CPP_CRASH = 2 | Added|
| ohos.faultLogger | FaultType | NO_SPECIFIC = 0 | Added|
# JS API Changes of the Distributed Data Management Subsystem
The table below lists the APIs changes of the distributed data management subsystem in OpenHarmony 3.1 Release over OpenHarmony 3.0 LTS.
## API Changes
| Module| Class| Method/Attribute/Enumeration/Constant| Change Type|
|---|---|---|---|
| ohos.data.rdb | RdbPredicates | inAllDevices(): RdbPredicates; | Added|
| ohos.data.rdb | RdbPredicates | inDevices(devices: Array<string>): RdbPredicates; | Added|
| ohos.data.rdb | RdbStore | off(event:'dataChange', type: SubscribeType, observer: Callback<Array<string>>): void; | Added|
| ohos.data.rdb | RdbStore | on(event: 'dataChange', type: SubscribeType, observer: Callback<Array<string>>): void; | Added|
| ohos.data.rdb | RdbStore | sync(mode: SyncMode, predicates: RdbPredicates, callback: AsyncCallback<Array<[string, number]>>): void;<br>sync(mode: SyncMode, predicates: RdbPredicates): Promise<Array<[string, number]>>; | Added|
| ohos.data.rdb | RdbStore | obtainDistributedTableName(device: string, table: string, callback: AsyncCallback<string>): void;<br>obtainDistributedTableName(device: string, table: string): Promise<string>; | Added|
| ohos.data.rdb | RdbStore | setDistributedTables(tables: Array<string>, callback: AsyncCallback<void>): void;<br>setDistributedTables(tables: Array<string>): Promise<void>; | Added|
| ohos.data.rdb | RdbStore | rollBack():void; | Added|
| ohos.data.rdb | RdbStore | commit():void; | Added|
| ohos.data.rdb | RdbStore | beginTransaction():void; | Added|
| ohos.data.rdb | RdbStore | querySql(sql: string, bindArgs: Array<ValueType>, callback: AsyncCallback<ResultSet>): void;<br>querySql(sql: string, bindArgs?: Array<ValueType>): Promise<ResultSet>; | Added|
| ohos.data.rdb | SubscribeType | SUBSCRIBE_TYPE_REMOTE = 0 | Added|
| ohos.data.rdb | SyncMode | SYNC_MODE_PULL = 1 | Added|
| ohos.data.rdb | SyncMode | SYNC_MODE_PUSH = 0 | Added|
| ohos.data.distributedDataObject | DistributedObject | off(type: 'status', callback?: Callback<{ sessionId: string, deviceId: string, status: 'online' \| 'offline' }>): void; | Added|
| ohos.data.distributedDataObject | DistributedObject | on(type: 'status', callback: Callback<{ sessionId: string, networkId: string, status: 'online' \| 'offline' }>): void; | Added|
| ohos.data.distributedDataObject | DistributedObject | off(type: 'change', callback?: Callback<{ sessionId: string, fields: Array<string> }>): void; | Added|
| ohos.data.distributedDataObject | DistributedObject | on(type: 'change', callback: Callback<{ sessionId: string, fields: Array<string> }>): void; | Added|
| ohos.data.distributedDataObject | DistributedObject | setSessionId(sessionId?: string): boolean; | Added|
| ohos.data.distributedDataObject | distributedDataObject | function genSessionId(): string; | Added|
| ohos.data.distributedDataObject | distributedDataObject | function createDistributedObject(source: object): DistributedObject; | Added|
| ohos.data.distributedData | KVManager | off(event: 'distributedDataServiceDie', deathCallback?: Callback<void>): void; | Added|
| ohos.data.distributedData | KVManager | on(event: 'distributedDataServiceDie', deathCallback: Callback<void>): void; | Added|
| ohos.data.distributedData | KVManager | getAllKVStoreId(appId: string, callback: AsyncCallback<string[]>): void;<br>getAllKVStoreId(appId: string): Promise<string[]>; | Added|
| ohos.data.distributedData | KVManager | deleteKVStore(appId: string, storeId: string, callback: AsyncCallback<void>): void;<br>deleteKVStore(appId: string, storeId: string): Promise<void>; | Added|
| ohos.data.distributedData | KVManager | closeKVStore(appId: string, storeId: string, kvStore: KVStore, callback: AsyncCallback<void>): void;<br>closeKVStore(appId: string, storeId: string, kvStore: KVStore): Promise<void>; | Added|
| ohos.data.distributedData | DeviceKVStore | off(event: 'syncComplete', syncCallback?: Callback<Array<[string, number]>>): void; | Added|
| ohos.data.distributedData | DeviceKVStore | on(event: 'syncComplete', syncCallback: Callback<Array<[string, number]>>): void; | Added|
| ohos.data.distributedData | DeviceKVStore | sync(deviceIdList: string[], mode: SyncMode, allowedDelayMs?: number): void; | Added|
| ohos.data.distributedData | DeviceKVStore | removeDeviceData(deviceId: string, callback: AsyncCallback<void>): void;<br>removeDeviceData(deviceId: string): Promise<void>; | Added|
| ohos.data.distributedData | DeviceKVStore | getResultSize(query: Query, callback: AsyncCallback<number>): void;<br>getResultSize(query: Query): Promise<number>;<br>getResultSize(deviceId: string, query: Query, callback: AsyncCallback<number>): void;<br>getResultSize(deviceId: string, query: Query): Promise<number>; | Added|
| ohos.data.distributedData | DeviceKVStore | closeResultSet(resultSet: KvStoreResultSet, callback: AsyncCallback<void>): void;<br>closeResultSet(resultSet: KvStoreResultSet): Promise<void>; | Added|
| ohos.data.distributedData | DeviceKVStore | getResultSet(deviceId: string, keyPrefix: string, callback: AsyncCallback<KvStoreResultSet>): void;<br>getResultSet(deviceId: string, keyPrefix: string): Promise<KvStoreResultSet>;<br>getResultSet(query: Query, callback: AsyncCallback<KvStoreResultSet>): void;<br>getResultSet(query: Query): Promise<KvStoreResultSet>;<br>getResultSet(deviceId: string, query: Query, callback: AsyncCallback<KvStoreResultSet>): void;<br>getResultSet(deviceId: string, query: Query): Promise<KvStoreResultSet>; | Added|
| ohos.data.distributedData | DeviceKVStore | getEntries(deviceId: string, keyPrefix: string, callback: AsyncCallback<Entry[]>): void;<br>getEntries(deviceId: string, keyPrefix: string): Promise<Entry[]>;<br>getEntries(query: Query, callback: AsyncCallback<Entry[]>): void;<br>getEntries(query: Query): Promise<Entry[]>;<br>getEntries(deviceId: string, query: Query, callback: AsyncCallback<Entry[]>): void;<br>getEntries(deviceId: string, query: Query): Promise<Entry[]>; | Added|
| ohos.data.distributedData | DeviceKVStore | get(deviceId: string, key: string, callback: AsyncCallback<boolean\|string\|number\|Uint8Array>): void;<br>get(deviceId: string, key: string): Promise<boolean\|string\|number\|Uint8Array>; | Added|
| ohos.data.distributedData | SingleKVStore | getSecurityLevel(callback: AsyncCallback<SecurityLevel>): void;<br>getSecurityLevel(): Promise<SecurityLevel>; | Added|
| ohos.data.distributedData | SingleKVStore | setSyncParam(defaultAllowedDelayMs: number, callback: AsyncCallback<void>): void;<br>setSyncParam(defaultAllowedDelayMs: number): Promise<void>; | Added|
| ohos.data.distributedData | SingleKVStore | off(event: 'syncComplete', syncCallback?: Callback<Array<[string, number]>>): void; | Added|
| ohos.data.distributedData | SingleKVStore | on(event: 'syncComplete', syncCallback: Callback<Array<[string, number]>>): void; | Added|
| ohos.data.distributedData | SingleKVStore | removeDeviceData(deviceId: string, callback: AsyncCallback<void>): void;<br>removeDeviceData(deviceId: string): Promise<void>; | Added|
| ohos.data.distributedData | SingleKVStore | getResultSize(query: Query, callback: AsyncCallback<number>): void;<br>getResultSize(query: Query): Promise<number>; | Added|
| ohos.data.distributedData | SingleKVStore | closeResultSet(resultSet: KvStoreResultSet, callback: AsyncCallback<void>): void;<br>closeResultSet(resultSet: KvStoreResultSet): Promise<void>; | Added|
| ohos.data.distributedData | SingleKVStore | getResultSet(keyPrefix: string, callback: AsyncCallback<KvStoreResultSet>): void;<br>getResultSet(keyPrefix: string): Promise<KvStoreResultSet>;<br>getResultSet(query: Query, callback: AsyncCallback<KvStoreResultSet>): void;<br>getResultSet(query: Query): Promise<KvStoreResultSet>; | Added|
| ohos.data.distributedData | SingleKVStore | getEntries(keyPrefix: string, callback: AsyncCallback<Entry[]>): void;<br>getEntries(keyPrefix: string): Promise<Entry[]>;<br>getEntries(query: Query, callback: AsyncCallback<Entry[]>): void;<br>getEntries(query: Query): Promise<Entry[]>; | Added|
| ohos.data.distributedData | KVStore | setSyncRange(localLabels: string[], remoteSupportLabels: string[], callback: AsyncCallback<void>): void;<br>setSyncRange(localLabels: string[], remoteSupportLabels: string[]): Promise<void>; | Added|
| ohos.data.distributedData | KVStore | enableSync(enabled: boolean, callback: AsyncCallback<void>): void;<br>enableSync(enabled: boolean): Promise<void>; | Added|
| ohos.data.distributedData | KVStore | rollback(callback: AsyncCallback<void>): void;<br>rollback(): Promise<void>; | Added|
| ohos.data.distributedData | KVStore | commit(callback: AsyncCallback<void>): void;<br>commit(): Promise<void>; | Added|
| ohos.data.distributedData | KVStore | startTransaction(callback: AsyncCallback<void>): void;<br>startTransaction(): Promise<void>; | Added|
| ohos.data.distributedData | KVStore | deleteBatch(keys: string[], callback: AsyncCallback<void>): void;<br>deleteBatch(keys: string[]): Promise<void>; | Added|
| ohos.data.distributedData | KVStore | putBatch(entries: Entry[], callback: AsyncCallback<void>): void;<br>putBatch(entries: Entry[]): Promise<void>; | Added|
| ohos.data.distributedData | KVStore | off(event:'dataChange', observer?: Callback<ChangeNotification>): void; | Added|
| ohos.data.distributedData | Query | getSqlLike():string; | Added|
| ohos.data.distributedData | Query | deviceId(deviceId:string):Query; | Added|
| ohos.data.distributedData | Query | setSuggestIndex(index: string): Query; | Added|
| ohos.data.distributedData | Query | prefixKey(prefix: string): Query; | Added|
| ohos.data.distributedData | Query | endGroup(): Query; | Added|
| ohos.data.distributedData | Query | beginGroup(): Query; | Added|
| ohos.data.distributedData | Query | isNotNull(field: string): Query; | Added|
| ohos.data.distributedData | Query | limit(total: number, offset: number): Query; | Added|
| ohos.data.distributedData | Query | orderByDesc(field: string): Query; | Added|
| ohos.data.distributedData | Query | orderByAsc(field: string): Query; | Added|
| ohos.data.distributedData | Query | or(): Query; | Added|
| ohos.data.distributedData | Query | and(): Query; | Added|
| ohos.data.distributedData | Query | unlike(field: string, value: string): Query; | Added|
| ohos.data.distributedData | Query | like(field: string, value: string): Query; | Added|
| ohos.data.distributedData | Query | notInString(field: string, valueList: string[]): Query; | Added|
| ohos.data.distributedData | Query | notInNumber(field: string, valueList: number[]): Query; | Added|
| ohos.data.distributedData | Query | inString(field: string, valueList: string[]): Query; | Added|
| ohos.data.distributedData | Query | inNumber(field: string, valueList: number[]): Query; | Added|
| ohos.data.distributedData | Query | isNull(field: string): Query; | Added|
| ohos.data.distributedData | Query | lessThanOrEqualTo(field: string, value: number\|string): Query; | Added|
| ohos.data.distributedData | Query | greaterThanOrEqualTo(field: string, value: number\|string): Query; | Added|
| ohos.data.distributedData | Query | lessThan(field: string, value: number\|string): Query; | Added|
| ohos.data.distributedData | Query | greaterThan(field: string, value: number\|string\|boolean): Query; | Added|
| ohos.data.distributedData | Query | notEqualTo(field: string, value: number\|string\|boolean): Query; | Added|
| ohos.data.distributedData | Query | equalTo(field: string, value: number\|string\|boolean): Query; | Added|
| ohos.data.distributedData | Query | reset(): Query; | Added|
| ohos.data.distributedData | Query | constructor() | Added|
| ohos.data.distributedData | KvStoreResultSet | getEntry(): Entry; | Added|
| ohos.data.distributedData | KvStoreResultSet | isAfterLast(): boolean; | Added|
| ohos.data.distributedData | KvStoreResultSet | isBeforeFirst(): boolean; | Added|
| ohos.data.distributedData | KvStoreResultSet | isLast(): boolean; | Added|
| ohos.data.distributedData | KvStoreResultSet | isFirst(): boolean; | Added|
| ohos.data.distributedData | KvStoreResultSet | moveToPosition(position: number): boolean; | Added|
| ohos.data.distributedData | KvStoreResultSet | move(offset: number): boolean; | Added|
| ohos.data.distributedData | KvStoreResultSet | moveToPrevious(): boolean; | Added|
| ohos.data.distributedData | KvStoreResultSet | moveToNext(): boolean; | Added|
| ohos.data.distributedData | KvStoreResultSet | moveToLast(): boolean; | Added|
| ohos.data.distributedData | KvStoreResultSet | moveToFirst(): boolean; | Added|
| ohos.data.distributedData | KvStoreResultSet | getPosition(): number; | Added|
| ohos.data.distributedData | KvStoreResultSet | getCount(): number; | Added|
| ohos.data.distributedData | FieldNode | type: number; | Added|
| ohos.data.distributedData | FieldNode | nullable: boolean; | Added|
| ohos.data.distributedData | FieldNode | default: string; | Added|
| ohos.data.distributedData | FieldNode | appendChild(child: FieldNode): boolean; | Added|
| ohos.data.distributedData | FieldNode | constructor(name: string) | Added|
| ohos.data.distributedData | Schema | skip: number; | Added|
| ohos.data.distributedData | Schema | mode: number; | Added|
| ohos.data.distributedData | Schema | indexes: Array<string>; | Added|
| ohos.data.distributedData | Schema | root: FieldNode; | Added|
| ohos.data.distributedData | Schema | constructor() | Added|
| ohos.data.distributedData | Options | schema?: Schema; | Added|
# JS API Changes of the Distributed Hardware Subsystem
The table below lists the APIs changes of the Distributed Data Management subsystem in OpenHarmony 3.1 Release over OpenHarmony 3.0 LTS.
## API Changes
| Module | API | Change Type | Change Description |
| -------- | -------- | -------- | -------- |
| Distributed Hardware Subsystem - DeviceManager| release(): void | Deleted| This API is deleted to reduce security risks.|
| Distributed Hardware Subsystem - DeviceManager| getTrustedDeviceListSync(): Array<DeviceInfo> | Deleted| This API is deleted to reduce security risks.|
| Distributed Hardware Subsystem - DeviceManager| on(type: 'deviceStateChange', callback: Callback<{ action: DeviceStateChangeAction, device: DeviceInfo }>): void | Deleted| This API is deleted to reduce security risks.|
| Distributed Hardware Subsystem - DeviceManager| off(type: 'deviceStateChange', callback?: Call back<{ action: DeviceStateChangeAction, device: DeviceInfo }>): void | Deleted| This API is deleted to reduce security risks.|
| Distributed Hardware Subsystem - DeviceManager| on(type: 'serviceDie', callback: () => void): void | Deleted| This API is deleted to reduce security risks.|
| Distributed Hardware Subsystem - DeviceManager| off(type: 'serviceDie', callback?: () => void): void | Deleted| This API is deleted to reduce security risks.|
# JS API Changes of the Common Event and Notification Framework
The table below lists the APIs changes of the common event and notification framework in OpenHarmony 3.1 Release over OpenHarmony 3.0 LTS.
## API Changes
| Module| Class| Method/Attribute/Enumeration/Constant| Change Type|
|---|---|---|---|
| notificationUserInput | NotificationUserInput | inputKey: string; | Added|
| notificationTemplate | NotificationTemplate | data: {[key: string]: Object}; | Added|
| notificationTemplate | NotificationTemplate | name: string; | Added|
| notificationRequest | DistributedOptions | supportOperateDevices?: Array<string>; | Added|
| notificationRequest | DistributedOptions | supportDisplayDevices?: Array<string>; | Added|
| notificationRequest | DistributedOptions | isDistributed?: boolean; | Added|
| notificationRequest | NotificationRequest | readonly notificationFlags?: NotificationFlags; | Added|
| notificationRequest | NotificationRequest | distributedOption?: DistributedOptions; | Added|
| notificationRequest | NotificationRequest | template?: NotificationTemplate; | Added|
| notificationRequest | NotificationRequest | readonly creatorUserId?: number; | Added|
| notificationRequest | NotificationRequest | groupName?: string; | Added|
| notificationActionButton | NotificationActionButton | userInput?: NotificationUserInput; | Added|
| ohos.notification | notification | function isDistributedEnabled(callback: AsyncCallback<boolean>): void;<br>function isDistributedEnabled(): Promise<boolean>; | Added|
| ohos.notification | notification | function requestEnableNotification(callback: AsyncCallback<void>): void;<br>function requestEnableNotification(): Promise<void>; | Added|
| ohos.notification | notification | function isSupportTemplate(templateName: string, callback: AsyncCallback<boolean>): void;<br>function isSupportTemplate(templateName: string): Promise<boolean>; | Added|
| ohos.notification | notification | function cancelGroup(groupName: string, callback: AsyncCallback<void>): void;<br>function cancelGroup(groupName: string): Promise<void>; | Added|
| ohos.events.emitter | EventPriority | IDLE | Added|
| ohos.events.emitter | EventPriority | LOW | Added|
| ohos.events.emitter | EventPriority | HIGH | Added|
| ohos.events.emitter | EventPriority | IMMEDIATE = 0 | Added|
| ohos.events.emitter | InnerEvent | priority?: EventPriority; | Added|
| ohos.events.emitter | InnerEvent | eventId: number; | Added|
| ohos.events.emitter | EventData | data?: {[key: string]: any}; | Added|
| ohos.events.emitter | emitter | function emit(event: InnerEvent, data?: EventData): void; | Added|
| ohos.events.emitter | emitter | function off(eventId: number): void; | Added|
| ohos.events.emitter | emitter | function once(event: InnerEvent, callback: Callback<EventData>): void; | Added|
| ohos.events.emitter | emitter | function on(event: InnerEvent, callback: Callback<EventData>): void; | Added|
| ohos.commonEvent | Support | COMMON_EVENT_SPLIT_SCREEN = "common.event.SPLIT_SCREEN" | Added|
| ohos.commonEvent | Support | COMMON_EVENT_THERMAL_LEVEL_CHANGED = "usual.event.THERMAL_LEVEL_CHANGED" | Added|
# JS API Changes of the File Management Subsystem
The table below lists the APIs changes of the file management subsystem in OpenHarmony 3.1 Release over OpenHarmony 3.0 LTS.
## API Changes
| Module| Class| Method/Attribute/Enumeration/Constant| Change Type|
|---|---|---|---|
| ohos.statfs | Statfs | function getTotalBytes(path: string, callback: AsyncCallback<number>): void;<br>function getTotalBytes(path: string): Promise<number>; | Added|
| ohos.statfs | Statfs | function getFreeBytes(path: string, callback: AsyncCallback<number>): void;<br>function getFreeBytes(path: string): Promise<number>; | Added|
| ohos.fileio | Watcher | stop(): Promise<void>;<br>stop(callback: AsyncCallback<void>): void; | Added|
| ohos.fileio | ReadOut | buffer: ArrayBuffer; | Added|
| ohos.fileio | ReadOut | offset: number; | Added|
| ohos.fileio | ReadOut | bytesRead: number; | Added|
| ohos.fileio | Stream | read(buffer: ArrayBuffer, options?: { position?: number; offset?: number; length?: number; }): Promise<ReadOut>;<br>read(buffer: ArrayBuffer, callback: AsyncCallback<ReadOut>): void;<br>read(buffer: ArrayBuffer, options: { position?: number; offset?: number; length?: number; }, callback: AsyncCallback<ReadOut>): void; | Added|
| ohos.fileio | Stream | write(buffer: ArrayBuffer \| string, options?: { offset?: number; length?: number; position?: number; encoding?: string; }): Promise<number>;<br>write(buffer: ArrayBuffer \| string, callback: AsyncCallback<number>): void;<br>write(buffer: ArrayBuffer \| string, options: { offset?: number; length?: number; position?: number; encoding?: string; }, callback: AsyncCallback<number>): void; | Added|
| ohos.fileio | Stream | flush(): Promise<void>;<br>flush(callback: AsyncCallback<void>): void; | Added|
| ohos.fileio | Stream | close(): Promise<void>;<br>close(callback: AsyncCallback<void>): void; | Added|
| ohos.fileio | Dir | close(): Promise<void>;<br>close(callback: AsyncCallback<void>): void; | Added|
| ohos.fileio | Dir | read(): Promise<Dirent>;<br>read(callback: AsyncCallback<Dirent>): void; | Added|
| ohos.fileio | fileIO | function createWatcher(filename: string, events: number, callback: AsyncCallback<number>): Watcher; | Added|
| ohos.fileio | fileIO | function write(fd: number, buffer: ArrayBuffer \| string, options?: { offset?: number; length?: number; position?: number; encoding?: string; }): Promise<number>;<br>function write(fd: number, buffer: ArrayBuffer \| string, callback: AsyncCallback<number>): void;<br>function write(fd: number, buffer: ArrayBuffer \| string, options: { offset?: number; length?: number; position?: number; encoding?: string; }, callback: AsyncCallback<number>): void; | Added|
| ohos.fileio | fileIO | function unlink(path: string): Promise<void>;<br>function unlink(path: string, callback: AsyncCallback<void>): void; | Added|
| ohos.fileio | fileIO | function truncate(path: string, len?: number): Promise<void>;<br>function truncate(path: string, callback: AsyncCallback<void>): void;<br>function truncate(path: string, len: number, callback: AsyncCallback<void>): void; | Added|
| ohos.fileio | fileIO | function symlinkSync(target: string, srcPath: string): void; | Added|
| ohos.fileio | fileIO | function symlink(target: string, srcPath: string): Promise<void>;<br>function symlink(target: string, srcPath: string, callback: AsyncCallback<void>): void; | Added|
| ohos.fileio | fileIO | function stat(path: string): Promise<Stat>;<br>function stat(path: string, callback: AsyncCallback<Stat>): void; | Added|
| ohos.fileio | fileIO | function rmdir(path: string): Promise<void>;<br>function rmdir(path: string, callback: AsyncCallback<void>): void; | Added|
| ohos.fileio | fileIO | function rename(oldPath: string, newPath: string): Promise<void>;<br>function rename(oldPath: string, newPath: string, callback: AsyncCallback<void>): void; | Added|
| ohos.fileio | fileIO | function read(fd: number, buffer: ArrayBuffer, options?: { offset?: number; length?: number; position?: number; }): Promise<ReadOut><br>function read(fd: number, buffer: ArrayBuffer, callback: AsyncCallback<ReadOut>): void;<br>function read(fd: number, buffer: ArrayBuffer, options: { offset?: number; length?: number; position?: number; }, callback: AsyncCallback<ReadOut>): void; | Added|
| ohos.fileio | fileIO | function readTextSync(filePath: string, options?: { position?: number; length?: number; encoding?: string; }): string;| Added|
| ohos.fileio | fileIO | function readText(filePath: string, options?: { position?: number; length?: number; encoding?: string; }): Promise<string>;<br>function readText(filePath: string, options: { position?: number; length?: number; encoding?: string; }, callback: AsyncCallback<string>): void; | Added|
| ohos.fileio | fileIO | function opendir(path: string): Promise<Dir>;<br>function opendir(path: string, callback: AsyncCallback<Dir>): void; | Added|
| ohos.fileio | fileIO | function open(path: string, flags?: number, mode?: number): Promise<number>;<br>function open(path: string, callback: AsyncCallback<number>): void;<br>function open(path: string, flags: number, callback: AsyncCallback<number>): void;<br>function open(path: string, flags: number, mode: number, callback: AsyncCallback<number>): void; | Added|
| ohos.fileio | fileIO | function mkdtempSync(prefix: string): string; | Added|
| ohos.fileio | fileIO | function mkdtemp(prefix: string): Promise<string>;<br>function mkdtemp(prefix: string, callback: AsyncCallback<string>): void; | Added|
| ohos.fileio | fileIO | function mkdir(path: string, mode?: number): Promise<void>;<br>function mkdir(path: string, callback: AsyncCallback<void>): void;<br>function mkdir(path: string, mode: number, callback: AsyncCallback<void>): void; | Added|
| ohos.fileio | fileIO | function lstatSync(path: string): Stat; | Added|
| ohos.fileio | fileIO | function lstat(path: string): Promise<Stat>;<br>function lstat(path: string, callback: AsyncCallback<Stat>): void; | Added|
| ohos.fileio | fileIO | function lchownSync(path: string, uid: number, gid: number): void; | Added|
| ohos.fileio | fileIO | function lchown(path: string, uid: number, gid: number): Promise<void>;<br>function lchown(path: string, uid: number, gid: number, callback: AsyncCallback<void>): void; | Added|
| ohos.fileio | fileIO | function hash(path: string, algorithm: string): Promise<string>;<br>function hash(path: string, algorithm: string, callback: AsyncCallback<string>): void; | Added|
| ohos.fileio | fileIO | function fdopenStream(fd: number, mode: string): Promise<Stream>;<br>function fdopenStream(fd: number, mode: string, callback: AsyncCallback<Stream>): void; | Added|
| ohos.fileio | fileIO | function fchmod(fd: number, mode: number): Promise<void>;<br>function fchmod(fd: number, mode: number, callback: AsyncCallback<void>): void; | Added|
| ohos.fileio | fileIO | function fchown(fd: number, uid: number, gid: number): Promise<void>;<br>function fchown(fd: number, uid: number, gid: number, callback: AsyncCallback<void>): void; | Added|
| ohos.fileio | fileIO | function fdatasyncSync(fd: number): void; | Added|
| ohos.fileio | fileIO | function fdatasync(fd: number): Promise<void>;<br>function fdatasync(fd: number, callback: AsyncCallback<void>): void; | Added|
| ohos.fileio | fileIO | function fstat(fd: number): Promise<Stat>;<br>function fstat(fd: number, callback: AsyncCallback<Stat>): void; | Added|
| ohos.fileio | fileIO | function fsync(fd: number): Promise<void>;<br>function fsync(fd: number, callback: AsyncCallback<void>): void; | Added|
| ohos.fileio | fileIO | function ftruncate(fd: number, len?: number): Promise<void>;<br>function ftruncate(fd: number, callback: AsyncCallback<void>): void;<br>function ftruncate(fd: number, len: number, callback: AsyncCallback<void>): void; | Added|
| ohos.fileio | fileIO | function chmod(path: string, mode: number): Promise<void>;<br>function chmod(path: string, mode: number, callback: AsyncCallback<void>): void; | Added|
| ohos.fileio | fileIO | function chown(path: string, uid: number, gid: number): Promise<void>;<br>function chown(path: string, uid: number, gid: number, callback: AsyncCallback<void>): void; | Added|
| ohos.fileio | fileIO | function createStream(path: string, mode: string): Promise<Stream>;<br>function createStream(path: string, mode: string, callback: AsyncCallback<Stream>): void; | Added|
| ohos.fileio | fileIO | function copyFile(src: string \| number, dest: string \| number, mode?: number): Promise<void>;<br>function copyFile(src: string \| number, dest: string \| number, callback: AsyncCallback<void>): void;<br>function copyFile(src: string \| number, dest: string \| number, mode: number, callback: AsyncCallback<void>): void; | Added|
| ohos.fileio | fileIO | function close(fd: number): Promise<void>;<br>function close(fd: number, callback: AsyncCallback<void>): void; | Added|
| ohos.fileio | fileIO | function access(path: string, mode?: number): Promise<void>;<br>function access(path: string, callback: AsyncCallback<void>): void;<br>function access(path: string, mode: number, callback: AsyncCallback<void>): void; | Added|
| ohos.document | document | function show(uri: string, type: string): Promise<void>;<br>function show(uri: string, type: string, callback: AsyncCallback<void>): void; | Added|
| ohos.document | document | function choose(types?: string[]): Promise<string>;<br>function choose(callback: AsyncCallback<string>): void;<br>function choose(types: string[], callback: AsyncCallback<string>): void; | Added|
# JS API Changes of the Location Subsystem
The table below lists the APIs changes of the location subsystem in OpenHarmony 3.1 Release over OpenHarmony 3.0 LTS.
## API Changes
| Module| Class| Method/Attribute/Enumeration/Constant| Change Type|
|---|---|---|---|
| ohos.geolocation | LocationCommand | command: string; | Added|
| ohos.geolocation | LocationCommand | scenario: LocationRequestScenario; | Added|
| ohos.geolocation | LocationPrivacyType | CORE_LOCATION | Added|
| ohos.geolocation | LocationPrivacyType | STARTUP | Added|
| ohos.geolocation | LocationPrivacyType | OTHERS = 0 | Added|
| ohos.geolocation | GeoLocationErrorCode | LOCATION_REQUEST_TIMEOUT_ERROR | Added|
| ohos.geolocation | GeoLocationErrorCode | LAST_KNOWN_LOCATION_ERROR | Added|
| ohos.geolocation | GeoLocationErrorCode | LOCATION_SWITCH_ERROR | Added|
| ohos.geolocation | GeoLocationErrorCode | LOCATOR_ERROR | Added|
| ohos.geolocation | GeoLocationErrorCode | GEOCODE_ERROR | Added|
| ohos.geolocation | GeoLocationErrorCode | REVERSE_GEOCODE_ERROR | Added|
| ohos.geolocation | GeoLocationErrorCode | INPUT_PARAMS_ERROR = 101 | Added|
| ohos.geolocation | LocationRequestScenario | NO_POWER | Added|
| ohos.geolocation | LocationRequestScenario | DAILY_LIFE_SERVICE | Added|
| ohos.geolocation | LocationRequestScenario | CAR_HAILING | Added|
| ohos.geolocation | LocationRequestScenario | TRAJECTORY_TRACKING | Added|
| ohos.geolocation | LocationRequestScenario | NAVIGATION | Added|
| ohos.geolocation | LocationRequestScenario | UNSET = 0x300 | Added|
| ohos.geolocation | LocationRequestPriority | FIRST_FIX | Added|
| ohos.geolocation | LocationRequestPriority | LOW_POWER | Added|
| ohos.geolocation | LocationRequestPriority | ACCURACY | Added|
| ohos.geolocation | LocationRequestPriority | UNSET = 0x200 | Added|
| ohos.geolocation | Location | additionSize?: number; | Added|
| ohos.geolocation | Location | additions?: Array<string>; | Added|
| ohos.geolocation | Location | timeSinceBoot: number; | Added|
| ohos.geolocation | Location | direction: number; | Added|
| ohos.geolocation | Location | timeStamp: number; | Added|
| ohos.geolocation | Location | speed: number; | Added|
| ohos.geolocation | Location | accuracy: number; | Added|
| ohos.geolocation | Location | altitude: number; | Added|
| ohos.geolocation | Location | longitude: number; | Added|
| ohos.geolocation | Location | latitude: number; | Added|
| ohos.geolocation | CurrentLocationRequest | timeoutMs?: number; | Added|
| ohos.geolocation | CurrentLocationRequest | maxAccuracy?: number; | Added|
| ohos.geolocation | CurrentLocationRequest | scenario?: LocationRequestScenario; | Added|
| ohos.geolocation | CurrentLocationRequest | priority?: LocationRequestPriority; | Added|
| ohos.geolocation | LocationRequest | maxAccuracy?: number; | Added|
| ohos.geolocation | LocationRequest | distanceInterval?: number; | Added|
| ohos.geolocation | LocationRequest | timeInterval?: number; | Added|
| ohos.geolocation | LocationRequest | scenario?: LocationRequestScenario; | Added|
| ohos.geolocation | LocationRequest | priority?: LocationRequestPriority; | Added|
| ohos.geolocation | GeoAddress | descriptionsSize?: number; | Added|
| ohos.geolocation | GeoAddress | descriptions?: Array<string>; | Added|
| ohos.geolocation | GeoAddress | addressUrl?: string; | Added|
| ohos.geolocation | GeoAddress | phoneNumber?: string; | Added|
| ohos.geolocation | GeoAddress | postalCode?: string; | Added|
| ohos.geolocation | GeoAddress | premises?: string; | Added|
| ohos.geolocation | GeoAddress | subRoadName?: string; | Added|
| ohos.geolocation | GeoAddress | roadName?: string; | Added|
| ohos.geolocation | GeoAddress | subLocality?: string; | Added|
| ohos.geolocation | GeoAddress | locality?: string; | Added|
| ohos.geolocation | GeoAddress | subAdministrativeArea?: string; | Added|
| ohos.geolocation | GeoAddress | administrativeArea?: string; | Added|
| ohos.geolocation | GeoAddress | countryName?: string; | Added|
| ohos.geolocation | GeoAddress | countryCode?: string; | Added|
| ohos.geolocation | GeoAddress | placeName?: string; | Added|
| ohos.geolocation | GeoAddress | locale?: string; | Added|
| ohos.geolocation | GeoAddress | longitude?: number; | Added|
| ohos.geolocation | GeoAddress | latitude?: number; | Added|
| ohos.geolocation | GeoCodeRequest | maxLongitude?: number; | Added|
| ohos.geolocation | GeoCodeRequest | maxLatitude?: number; | Added|
| ohos.geolocation | GeoCodeRequest | minLongitude?: number; | Added|
| ohos.geolocation | GeoCodeRequest | minLatitude?: number; | Added|
| ohos.geolocation | GeoCodeRequest | maxItems?: number; | Added|
| ohos.geolocation | GeoCodeRequest | description: string; | Added|
| ohos.geolocation | GeoCodeRequest | locale?: string; | Added|
| ohos.geolocation | ReverseGeoCodeRequest | maxItems?: number; | Added|
| ohos.geolocation | ReverseGeoCodeRequest | longitude: number; | Added|
| ohos.geolocation | ReverseGeoCodeRequest | latitude: number; | Added|
| ohos.geolocation | ReverseGeoCodeRequest | locale?: string; | Added|
| ohos.geolocation | Geofence | expiration: number; | Added|
| ohos.geolocation | Geofence | radius: number; | Added|
| ohos.geolocation | Geofence | longitude: number; | Added|
| ohos.geolocation | Geofence | latitude: number; | Added|
| ohos.geolocation | GeofenceRequest | geofence: Geofence; | Added|
| ohos.geolocation | GeofenceRequest | scenario: LocationRequestScenario; | Added|
| ohos.geolocation | GeofenceRequest | priority: LocationRequestPriority; | Added|
| ohos.geolocation | CachedGnssLocationsRequest | wakeUpCacheQueueFull: boolean; | Added|
| ohos.geolocation | CachedGnssLocationsRequest | reportingPeriodSec: number; | Added|
| ohos.geolocation | SatelliteStatusInfo | carrierFrequencies: Array<number>; | Added|
| ohos.geolocation | SatelliteStatusInfo | azimuths: Array<number>; | Added|
| ohos.geolocation | SatelliteStatusInfo | altitudes: Array<number>; | Added|
| ohos.geolocation | SatelliteStatusInfo | carrierToNoiseDensitys: Array<number>; | Added|
| ohos.geolocation | SatelliteStatusInfo | satelliteIds: Array<number>; | Added|
| ohos.geolocation | SatelliteStatusInfo | satellitesNumber: number; | Added|
| ohos.geolocation | geolocation | function sendCommand(command: LocationCommand, callback: AsyncCallback<boolean>) : void;<br>function sendCommand(command: LocationCommand) : Promise<boolean>; | Added|
| ohos.geolocation | geolocation | function flushCachedGnssLocations(callback: AsyncCallback<boolean>) : void;<br>function flushCachedGnssLocations() : Promise<boolean>; | Added|
| ohos.geolocation | geolocation | function getCachedGnssLocationsSize(callback: AsyncCallback<number>) : void;<br>function getCachedGnssLocationsSize() : Promise<number>; | Added|
| ohos.geolocation | geolocation | function isGeoServiceAvailable(callback: AsyncCallback<boolean>) : void;<br>function isGeoServiceAvailable() : Promise<boolean>; | Added|
| ohos.geolocation | geolocation | function getAddressesFromLocationName(request: GeoCodeRequest, callback: AsyncCallback<Array<GeoAddress>>) : void;<br>function getAddressesFromLocationName(request: GeoCodeRequest) : Promise<Array<GeoAddress>>; | Added|
| ohos.geolocation | geolocation | function getAddressesFromLocation(request: ReverseGeoCodeRequest, callback: AsyncCallback<Array<GeoAddress>>) : void;<br>function getAddressesFromLocation(request: ReverseGeoCodeRequest) : Promise<Array<GeoAddress>>; | Added|
| ohos.geolocation | geolocation | function requestEnableLocation(callback: AsyncCallback<boolean>) : void;<br>function requestEnableLocation() : Promise<boolean>; | Added|
| ohos.geolocation | geolocation | function isLocationEnabled(callback: AsyncCallback<boolean>) : void;<br>function isLocationEnabled() : Promise<boolean>; | Added|
| ohos.geolocation | geolocation | function getLastLocation(callback: AsyncCallback<Location>) : void;<br>function getLastLocation() : Promise<Location>; | Added|
| ohos.geolocation | geolocation | function getCurrentLocation(request: CurrentLocationRequest, callback: AsyncCallback<Location>) : void;<br>function getCurrentLocation(callback: AsyncCallback<Location>) : void;<br>function getCurrentLocation(request?: CurrentLocationRequest) : Promise<Location>; | Added|
| ohos.geolocation | geolocation | function off(type: 'fenceStatusChange', request: GeofenceRequest, want: WantAgent) : void; | Added|
| ohos.geolocation | geolocation | function on(type: 'fenceStatusChange', request: GeofenceRequest, want: WantAgent) : void; | Added|
| ohos.geolocation | geolocation | function off(type: 'nmeaMessageChange', callback?: Callback<string>) : void; | Added|
| ohos.geolocation | geolocation | function on(type: 'nmeaMessageChange', callback: Callback<string>) : void; | Added|
| ohos.geolocation | geolocation | function off(type: 'gnssStatusChange', callback?: Callback<SatelliteStatusInfo>) : void; | Added|
| ohos.geolocation | geolocation | function on(type: 'gnssStatusChange', callback: Callback<SatelliteStatusInfo>) : void; | Added|
| ohos.geolocation | geolocation | function off(type: 'cachedGnssLocationsReporting', callback?: Callback<Array<Location>>) : void; | Added|
| ohos.geolocation | geolocation | function on(type: 'cachedGnssLocationsReporting', request: CachedGnssLocationsRequest, callback: Callback<Array<Location>>) : void; | Added|
| ohos.geolocation | geolocation | function off(type: 'locationServiceState', callback?: Callback<boolean>) : void; | Added|
| ohos.geolocation | geolocation | function on(type: 'locationServiceState', callback: Callback<boolean>) : void; | Added|
| ohos.geolocation | geolocation | function off(type: 'locationChange', callback?: Callback<Location>) : void; | Added|
| ohos.geolocation | geolocation | function on(type: 'locationChange', request: LocationRequest, callback: Callback<Location>) : void; | Added|
# JS API Changes of the Globalization Subsystem
The table below lists the APIs changes of the globalization subsystem in OpenHarmony 3.1 Release over OpenHarmony 3.0 LTS.
## API Changes
| Module| Class| Method/Attribute/Enumeration/Constant| Change Type|
|---|---|---|---|
| rawFileDescriptor | RawFileDescriptor | length: number; | Added|
| rawFileDescriptor | RawFileDescriptor | offset: number; | Added|
| rawFileDescriptor | RawFileDescriptor | fd: number; | Added|
| ohos.resourceManager | ResourceManager | release(); | Added|
| ohos.resourceManager | ResourceManager | closeRawFileDescriptor(path: string, callback: AsyncCallback<void>): void;<br>closeRawFileDescriptor(path: string): Promise<void>; | Added|
| ohos.resourceManager | ResourceManager | getRawFileDescriptor(path: string, callback: AsyncCallback<RawFileDescriptor>): void;<br>getRawFileDescriptor(path: string): Promise<RawFileDescriptor>; | Added|
| ohos.resourceManager | ResourceManager | getRawFile(path: string, callback: AsyncCallback<Uint8Array>): void;<br>getRawFile(path: string): Promise<Uint8Array>; | Added|
| ohos.resourceManager | resourceManager | function getResourceManager(callback: AsyncCallback<ResourceManager>): void;<br>export function getResourceManager(bundleName: string, callback: AsyncCallback<ResourceManager>): void;<br>export function getResourceManager(): Promise<ResourceManager>;<br>export function getResourceManager(bundleName: string): Promise<ResourceManager>; | Added|
| ohos.intl | RelativeTimeFormat | resolvedOptions(): RelativeTimeFormatResolvedOptions; | Added|
| ohos.intl | RelativeTimeFormat | formatToParts(value: number, unit: string): Array<object>; | Added|
| ohos.intl | RelativeTimeFormat | format(value: number, unit: string): string; | Added|
| ohos.intl | RelativeTimeFormat | constructor(); | Added|
| ohos.intl | RelativeTimeFormatResolvedOptions | numberingSystem: string; | Added|
| ohos.intl | RelativeTimeFormatResolvedOptions | numeric: string; | Added|
| ohos.intl | RelativeTimeFormatResolvedOptions | style: string; | Added|
| ohos.intl | RelativeTimeFormatResolvedOptions | locale: string; | Added|
| ohos.intl | RelativeTimeFormatInputOptions | style: string; | Added|
| ohos.intl | RelativeTimeFormatInputOptions | numeric: string; | Added|
| ohos.intl | RelativeTimeFormatInputOptions | localeMatcher: string; | Added|
| ohos.intl | PluralRules | select(n: number): string; | Added|
| ohos.intl | PluralRules | constructor(); | Added|
| ohos.intl | PluralRulesOptions | maximumSignificantDigits: number; | Added|
| ohos.intl | PluralRulesOptions | minimumSignificantDigits: number; | Added|
| ohos.intl | PluralRulesOptions | maximumFractionDigits: number; | Added|
| ohos.intl | PluralRulesOptions | minimumFractionDigits: number; | Added|
| ohos.intl | PluralRulesOptions | minimumIntegerDigits: number; | Added|
| ohos.intl | PluralRulesOptions | type: string; | Added|
| ohos.intl | PluralRulesOptions | localeMatcher: string; | Added|
| ohos.intl | Collator | resolvedOptions(): CollatorOptions; | Added|
| ohos.intl | Collator | compare(first: string, second: string): number; | Added|
| ohos.intl | Collator | constructor(); | Added|
| ohos.intl | CollatorOptions | caseFirst: string; | Added|
| ohos.intl | CollatorOptions | numeric: boolean; | Added|
| ohos.intl | CollatorOptions | collation: string; | Added|
| ohos.intl | CollatorOptions | ignorePunctuation: boolean; | Added|
| ohos.intl | CollatorOptions | sensitivity: string; | Added|
| ohos.intl | CollatorOptions | usage: string; | Added|
| ohos.intl | CollatorOptions | localeMatcher: string; | Added|
| ohos.intl | NumberOptions | unitUsage: string | Added|
| ohos.intl | LocaleOptions | caseFirst: string; | Added|
| ohos.intl | LocaleOptions | numeric: boolean; | Added|
| ohos.intl | LocaleOptions | numberingSystem: string; | Added|
| ohos.intl | LocaleOptions | hourCycle: string; | Added|
| ohos.intl | LocaleOptions | collation: string; | Added|
| ohos.intl | LocaleOptions | calendar: string; | Added|
| ohos.i18n | TimeZone | getOffset(date?: number): number; | Added|
| ohos.i18n | TimeZone | getRawOffset(): number; | Added|
| ohos.i18n | TimeZone | getDisplayName(locale?: string, isDST?: boolean): string; | Added|
| ohos.i18n | TimeZone | getID(): string; | Added|
| ohos.i18n | i18n | function getTimeZone(zoneID?: string): TimeZone; | Added|
| ohos.i18n | i18n | function getFirstPreferredLanguage(): string; | Added|
| ohos.i18n | i18n | function getPreferredLanguageList(): Array<string>; | Added|
| ohos.i18n | i18n | function removePreferredLanguage(index: number): boolean; | Added|
| ohos.i18n | i18n | function addPreferredLanguage(language: string, index?: number): boolean; | Added|
| ohos.i18n | i18n | function set24HourClock(option: boolean): boolean; | Added|
| ohos.i18n | i18n | function is24HourClock(): boolean; | Added|
| ohos.i18n | Character | getType(char: string): string; | Added|
| ohos.i18n | Character | isUpperCase(char: string): boolean; | Added|
| ohos.i18n | Character | isLowerCase(char: string): boolean; | Added|
| ohos.i18n | Character | isLetter(char: string): boolean; | Added|
| ohos.i18n | Character | isIdeograph(char: string): boolean; | Added|
| ohos.i18n | Character | isRTL(char: string): boolean; | Added|
| ohos.i18n | Character | isWhitespace(char: string): boolean; | Added|
| ohos.i18n | Character | isSpaceChar(char: string): boolean; | Added|
| ohos.i18n | Character | isDigit(char: string): boolean; | Added|
| ohos.i18n | IndexUtil | getIndex(text: string): string; | Added|
| ohos.i18n | IndexUtil | addLocale(locale: string): void; | Added|
| ohos.i18n | IndexUtil | getIndexList(): Array<string>; | Added|
| ohos.i18n | i18n | function getInstance(locale?:string): IndexUtil; | Added|
| ohos.i18n | BreakIterator | isBoundary(offset: number): boolean; | Added|
| ohos.i18n | BreakIterator | getLineBreakText(): string; | Added|
| ohos.i18n | BreakIterator | following(offset: number): number; | Added|
| ohos.i18n | BreakIterator | setLineBreakText(text: string): void; | Added|
| ohos.i18n | BreakIterator | previous(): number; | Added|
| ohos.i18n | BreakIterator | next(index?: number): number; | Added|
| ohos.i18n | BreakIterator | last(): number; | Added|
| ohos.i18n | BreakIterator | first(): number; | Added|
| ohos.i18n | BreakIterator | current(): number; | Added|
| ohos.i18n | i18n | function getLineInstance(locale: string): BreakIterator; | Added|
| ohos.i18n | i18n | function isRTL(locale: string): boolean; | Added|
| ohos.i18n | Calendar | isWeekend(date?: Date): boolean; | Added|
| ohos.i18n | Calendar | getDisplayName(locale: string): string; | Added|
| ohos.i18n | Calendar | get(field: string): number; | Added|
| ohos.i18n | Calendar | setMinimalDaysInFirstWeek(value: number): void; | Added|
| ohos.i18n | Calendar | getMinimalDaysInFirstWeek(): number; | Added|
| ohos.i18n | Calendar | setFirstDayOfWeek(value: number): void; | Added|
| ohos.i18n | Calendar | getFirstDayOfWeek(): number; | Added|
| ohos.i18n | Calendar | getTimeZone(): string; | Added|
| ohos.i18n | Calendar | setTimeZone(timezone: string): void; | Added|
| ohos.i18n | Calendar | set(year: number, month: number, date:number, hour?: number, minute?: number, second?: number): void; | Added|
| ohos.i18n | Calendar | setTime(date: Date): void;<br>setTime(time: number): void; | Added|
| ohos.i18n | i18n | function getCalendar(locale: string, type?: string): Calendar; | Added|
| ohos.i18n | PhoneNumberFormat | format(number: string): string; | Added|
| ohos.i18n | PhoneNumberFormat | isValidNumber(number: string): boolean; | Added|
| ohos.i18n | PhoneNumberFormat | constructor(country: string, options?: PhoneNumberFormatOptions); | Added|
| ohos.i18n | PhoneNumberFormatOptions | type: string; | Added|
| ohos.i18n | UnitInfo | measureSystem: string | Added|
| ohos.i18n | UnitInfo | unit: string | Added|
| ohos.i18n | Util | unitConvert(fromUnit: UnitInfo, toUnit: UnitInfo, value: number, locale: string, style?: string): string; | Added|
# JS API Changes of the Graphics Subsystem
The table below lists the APIs changes of the graphics subsystem in OpenHarmony 3.1 Release over OpenHarmony 3.0 LTS.
## API Changes
| Module| Class| Method/Attribute/Enumeration/Constant| Change Type|
|---|---|---|---|
| webgl2 | WebGL2RenderingContextOverloads | readPixels(x: GLint, y: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, dstData: ArrayBufferView \| null): void;<br>readPixels(x: GLint, y: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, offset: GLintptr): void;<br>readPixels(x: GLint, y: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, dstData: ArrayBufferView, dstOffset: GLuint): void; | Added|
| webgl2 | WebGL2RenderingContextOverloads | uniformMatrix4fv(location: WebGLUniformLocation \| null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void; | Added|
| webgl2 | WebGL2RenderingContextOverloads | uniformMatrix3fv(location: WebGLUniformLocation \| null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void; | Added|
| webgl2 | WebGL2RenderingContextOverloads | uniformMatrix2fv(location: WebGLUniformLocation \| null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void; | Added|
| webgl2 | WebGL2RenderingContextOverloads | uniform4iv(location: WebGLUniformLocation \| null, data: Int32List, srcOffset?: GLuint, srcLength?: GLuint): void; | Added|
| webgl2 | WebGL2RenderingContextOverloads | uniform3iv(location: WebGLUniformLocation \| null, data: Int32List, srcOffset?: GLuint, srcLength?: GLuint): void; | Added|
| webgl2 | WebGL2RenderingContextOverloads | uniform2iv(location: WebGLUniformLocation \| null, data: Int32List, srcOffset?: GLuint, srcLength?: GLuint): void; | Added|
| webgl2 | WebGL2RenderingContextOverloads | uniform1iv(location: WebGLUniformLocation \| null, data: Int32List, srcOffset?: GLuint, srcLength?: GLuint): void; | Added|
| webgl2 | WebGL2RenderingContextOverloads | uniform4fv(location: WebGLUniformLocation \| null, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void; | Added|
| webgl2 | WebGL2RenderingContextOverloads | uniform3fv(location: WebGLUniformLocation \| null, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void; | Added|
| webgl2 | WebGL2RenderingContextOverloads | uniform2fv(location: WebGLUniformLocation \| null, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void; | Added|
| webgl2 | WebGL2RenderingContextOverloads | uniform1fv(location: WebGLUniformLocation \| null, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void; | Added|
| webgl2 | WebGL2RenderingContextOverloads | compressedTexSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, imageSize: GLsizei, offset: GLintptr): void;<br>compressedTexSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, srcData: ArrayBufferView, srcOffset?: GLuint, srcLengthOverride?: GLuint): void; | Added|
| webgl2 | WebGL2RenderingContextOverloads | compressedTexImage2D(target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, border: GLint, imageSize: GLsizei, offset: GLintptr): void;<br>compressedTexImage2D(target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, border: GLint, srcData: ArrayBufferView, srcOffset?: GLuint, srcLengthOverride?: GLuint): void; | Added|
| webgl2 | WebGL2RenderingContextOverloads | texSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, pixels: ArrayBufferView \| null): void;<br>texSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, format: GLenum, type: GLenum, source: TexImageSource): void;<br>texSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, pboOffset: GLintptr): void;<br>texSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, source: TexImageSource): void;<br>texSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, srcData: ArrayBufferView, srcOffset: GLuint): void; | Added|
| webgl2 | WebGL2RenderingContextOverloads | texImage2D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, border: GLint, format: GLenum, type: GLenum, pixels: ArrayBufferView \| null): void;<br>texImage2D(target: GLenum, level: GLint, internalformat: GLint, format: GLenum, type: GLenum, source: TexImageSource): void;<br>texImage2D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, border: GLint, format: GLenum, type: GLenum, pboOffset: GLintptr): void;<br>texImage2D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, border: GLint, format: GLenum, type: GLenum, source: TexImageSource): void;<br>texImage2D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, border: GLint, format: GLenum, type: GLenum, srcData: ArrayBufferView, srcOffset: GLuint): void; | Added|
| webgl2 | WebGL2RenderingContextOverloads | bufferSubData(target: GLenum, dstByteOffset: GLintptr, srcData: BufferSource): void;<br>bufferSubData(target: GLenum, dstByteOffset: GLintptr, srcData: ArrayBufferView, srcOffset: GLuint, length?: GLuint): void; | Added|
| webgl2 | WebGL2RenderingContextOverloads | bufferData(target: GLenum, size: GLsizeiptr, usage: GLenum): void;<br>bufferData(target: GLenum, srcData: BufferSource \| null, usage: GLenum): void;<br>bufferData(target: GLenum, srcData: ArrayBufferView, usage: GLenum, srcOffset: GLuint, length?: GLuint): void; | Added|
| webgl2 | WebGL2RenderingContextBase | bindVertexArray(array: WebGLVertexArrayObject \| null): void; | Added|
| webgl2 | WebGL2RenderingContextBase | isVertexArray(vertexArray: WebGLVertexArrayObject \| null): GLboolean; | Added|
| webgl2 | WebGL2RenderingContextBase | deleteVertexArray(vertexArray: WebGLVertexArrayObject \| null): void; | Added|
| webgl2 | WebGL2RenderingContextBase | createVertexArray(): WebGLVertexArrayObject \| null; | Added|
| webgl2 | WebGL2RenderingContextBase | uniformBlockBinding(program: WebGLProgram, uniformBlockIndex: GLuint, uniformBlockBinding: GLuint): void; | Added|
| webgl2 | WebGL2RenderingContextBase | getActiveUniformBlockName(program: WebGLProgram, uniformBlockIndex: GLuint): string \| null; | Added|
| webgl2 | WebGL2RenderingContextBase | getActiveUniformBlockParameter(program: WebGLProgram, uniformBlockIndex: GLuint, pname: GLenum): any; | Added|
| webgl2 | WebGL2RenderingContextBase | getUniformBlockIndex(program: WebGLProgram, uniformBlockName: string): GLuint; | Added|
| webgl2 | WebGL2RenderingContextBase | getActiveUniforms(program: WebGLProgram, uniformIndices: GLuint[], pname: GLenum): any; | Added|
| webgl2 | WebGL2RenderingContextBase | getUniformIndices(program: WebGLProgram, uniformNames: string[]): GLuint[] \| null; | Added|
| webgl2 | WebGL2RenderingContextBase | getIndexedParameter(target: GLenum, index: GLuint): any; | Added|
| webgl2 | WebGL2RenderingContextBase | bindBufferRange(target: GLenum, index: GLuint, buffer: WebGLBuffer \| null, offset: GLintptr, size: GLsizeiptr): void; | Added|
| webgl2 | WebGL2RenderingContextBase | bindBufferBase(target: GLenum, index: GLuint, buffer: WebGLBuffer \| null): void; | Added|
| webgl2 | WebGL2RenderingContextBase | resumeTransformFeedback(): void; | Added|
| webgl2 | WebGL2RenderingContextBase | pauseTransformFeedback(): void; | Added|
| webgl2 | WebGL2RenderingContextBase | getTransformFeedbackVarying(program: WebGLProgram, index: GLuint): WebGLActiveInfo \| null; | Added|
| webgl2 | WebGL2RenderingContextBase | transformFeedbackVaryings(program: WebGLProgram, varyings: string[], bufferMode: GLenum): void; | Added|
| webgl2 | WebGL2RenderingContextBase | endTransformFeedback(): void; | Added|
| webgl2 | WebGL2RenderingContextBase | beginTransformFeedback(primitiveMode: GLenum): void; | Added|
| webgl2 | WebGL2RenderingContextBase | bindTransformFeedback(target: GLenum, tf: WebGLTransformFeedback \| null): void; | Added|
| webgl2 | WebGL2RenderingContextBase | isTransformFeedback(tf: WebGLTransformFeedback \| null): GLboolean; | Added|
| webgl2 | WebGL2RenderingContextBase | deleteTransformFeedback(tf: WebGLTransformFeedback \| null): void; | Added|
| webgl2 | WebGL2RenderingContextBase | createTransformFeedback(): WebGLTransformFeedback \| null; | Added|
| webgl2 | WebGL2RenderingContextBase | getSyncParameter(sync: WebGLSync, pname: GLenum): any; | Added|
| webgl2 | WebGL2RenderingContextBase | waitSync(sync: WebGLSync, flags: GLbitfield, timeout: GLint64): void; | Added|
| webgl2 | WebGL2RenderingContextBase | clientWaitSync(sync: WebGLSync, flags: GLbitfield, timeout: GLuint64): GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | deleteSync(sync: WebGLSync \| null): void; | Added|
| webgl2 | WebGL2RenderingContextBase | isSync(sync: WebGLSync \| null): GLboolean; | Added|
| webgl2 | WebGL2RenderingContextBase | fenceSync(condition: GLenum, flags: GLbitfield): WebGLSync \| null; | Added|
| webgl2 | WebGL2RenderingContextBase | getSamplerParameter(sampler: WebGLSampler, pname: GLenum): any; | Added|
| webgl2 | WebGL2RenderingContextBase | samplerParameterf(sampler: WebGLSampler, pname: GLenum, param: GLfloat): void; | Added|
| webgl2 | WebGL2RenderingContextBase | samplerParameteri(sampler: WebGLSampler, pname: GLenum, param: GLint): void; | Added|
| webgl2 | WebGL2RenderingContextBase | bindSampler(unit: GLuint, sampler: WebGLSampler \| null): void; | Added|
| webgl2 | WebGL2RenderingContextBase | isSampler(sampler: WebGLSampler \| null): GLboolean; | Added|
| webgl2 | WebGL2RenderingContextBase | deleteSampler(sampler: WebGLSampler \| null): void; | Added|
| webgl2 | WebGL2RenderingContextBase | createSampler(): WebGLSampler \| null; | Added|
| webgl2 | WebGL2RenderingContextBase | getQueryParameter(query: WebGLQuery, pname: GLenum): any; | Added|
| webgl2 | WebGL2RenderingContextBase | getQuery(target: GLenum, pname: GLenum): WebGLQuery \| null; | Added|
| webgl2 | WebGL2RenderingContextBase | endQuery(target: GLenum): void; | Added|
| webgl2 | WebGL2RenderingContextBase | beginQuery(target: GLenum, query: WebGLQuery): void; | Added|
| webgl2 | WebGL2RenderingContextBase | isQuery(query: WebGLQuery \| null): GLboolean; | Added|
| webgl2 | WebGL2RenderingContextBase | deleteQuery(query: WebGLQuery \| null): void; | Added|
| webgl2 | WebGL2RenderingContextBase | createQuery(): WebGLQuery \| null; | Added|
| webgl2 | WebGL2RenderingContextBase | clearBufferfi(buffer: GLenum, drawbuffer: GLint, depth: GLfloat, stencil: GLint): void; | Added|
| webgl2 | WebGL2RenderingContextBase | clearBufferuiv(buffer: GLenum, drawbuffer: GLint, values: Uint32List, srcOffset?: GLuint): void; | Added|
| webgl2 | WebGL2RenderingContextBase | clearBufferiv(buffer: GLenum, drawbuffer: GLint, values: Int32List, srcOffset?: GLuint): void; | Added|
| webgl2 | WebGL2RenderingContextBase | clearBufferfv(buffer: GLenum, drawbuffer: GLint, values: Float32List, srcOffset?: GLuint): void; | Added|
| webgl2 | WebGL2RenderingContextBase | drawBuffers(buffers: GLenum[]): void; | Added|
| webgl2 | WebGL2RenderingContextBase | drawRangeElements(mode: GLenum, start: GLuint, end: GLuint, count: GLsizei, type: GLenum, offset: GLintptr): void; | Added|
| webgl2 | WebGL2RenderingContextBase | drawElementsInstanced(mode: GLenum, count: GLsizei, type: GLenum, offset: GLintptr, instanceCount: GLsizei): void; | Added|
| webgl2 | WebGL2RenderingContextBase | drawArraysInstanced(mode: GLenum, first: GLint, count: GLsizei, instanceCount: GLsizei): void; | Added|
| webgl2 | WebGL2RenderingContextBase | vertexAttribDivisor(index: GLuint, divisor: GLuint): void; | Added|
| webgl2 | WebGL2RenderingContextBase | vertexAttribIPointer(index: GLuint, size: GLint, type: GLenum, stride: GLsizei, offset: GLintptr): void; | Added|
| webgl2 | WebGL2RenderingContextBase | vertexAttribI4uiv(index: GLuint, values: Uint32List): void; | Added|
| webgl2 | WebGL2RenderingContextBase | vertexAttribI4ui(index: GLuint, x: GLuint, y: GLuint, z: GLuint, w: GLuint): void; | Added|
| webgl2 | WebGL2RenderingContextBase | vertexAttribI4iv(index: GLuint, values: Int32List): void; | Added|
| webgl2 | WebGL2RenderingContextBase | vertexAttribI4i(index: GLuint, x: GLint, y: GLint, z: GLint, w: GLint): void; | Added|
| webgl2 | WebGL2RenderingContextBase | uniformMatrix3x4fv(location: WebGLUniformLocation \| null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void; | Added|
| webgl2 | WebGL2RenderingContextBase | uniformMatrix2x4fv(location: WebGLUniformLocation \| null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void; | Added|
| webgl2 | WebGL2RenderingContextBase | uniformMatrix4x3fv(location: WebGLUniformLocation \| null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void; | Added|
| webgl2 | WebGL2RenderingContextBase | uniformMatrix2x3fv(location: WebGLUniformLocation \| null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void; | Added|
| webgl2 | WebGL2RenderingContextBase | uniformMatrix4x2fv(location: WebGLUniformLocation \| null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void; | Added|
| webgl2 | WebGL2RenderingContextBase | uniformMatrix3x2fv(location: WebGLUniformLocation \| null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void; | Added|
| webgl2 | WebGL2RenderingContextBase | uniform4uiv(location: WebGLUniformLocation \| null, data: Uint32List, srcOffset?: GLuint, srcLength?: GLuint): void; | Added|
| webgl2 | WebGL2RenderingContextBase | uniform3uiv(location: WebGLUniformLocation \| null, data: Uint32List, srcOffset?: GLuint, srcLength?: GLuint): void; | Added|
| webgl2 | WebGL2RenderingContextBase | uniform2uiv(location: WebGLUniformLocation \| null, data: Uint32List, srcOffset?: GLuint, srcLength?: GLuint): void; | Added|
| webgl2 | WebGL2RenderingContextBase | uniform1uiv(location: WebGLUniformLocation \| null, data: Uint32List, srcOffset?: GLuint, srcLength?: GLuint): void; | Added|
| webgl2 | WebGL2RenderingContextBase | uniform4ui(location: WebGLUniformLocation \| null, v0: GLuint, v1: GLuint, v2: GLuint, v3: GLuint): void; | Added|
| webgl2 | WebGL2RenderingContextBase | uniform3ui(location: WebGLUniformLocation \| null, v0: GLuint, v1: GLuint, v2: GLuint): void; | Added|
| webgl2 | WebGL2RenderingContextBase | uniform2ui(location: WebGLUniformLocation \| null, v0: GLuint, v1: GLuint): void; | Added|
| webgl2 | WebGL2RenderingContextBase | uniform1ui(location: WebGLUniformLocation \| null, v0: GLuint): void; | Added|
| webgl2 | WebGL2RenderingContextBase | getFragDataLocation(program: WebGLProgram, name: string): GLint; | Added|
| webgl2 | WebGL2RenderingContextBase | compressedTexSubImage3D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, imageSize: GLsizei, offset: GLintptr): void;<br>compressedTexSubImage3D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, srcData: ArrayBufferView, srcOffset?: GLuint, srcLengthOverride?: GLuint): void; | Added|
| webgl2 | WebGL2RenderingContextBase | compressedTexImage3D(target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, imageSize: GLsizei, offset: GLintptr): void;<br>compressedTexImage3D(target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, srcData: ArrayBufferView, srcOffset?: GLuint, srcLengthOverride?: GLuint): void; | Added|
| webgl2 | WebGL2RenderingContextBase | copyTexSubImage3D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, x: GLint, y: GLint, width: GLsizei, height: GLsizei): void; | Added|
| webgl2 | WebGL2RenderingContextBase | texSubImage3D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, type: GLenum, pboOffset: GLintptr): void;<br>texSubImage3D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, type: GLenum, source: TexImageSource): void;<br>texSubImage3D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, type: GLenum, srcData: ArrayBufferView \| null, srcOffset?: GLuint): void; | Added|
| webgl2 | WebGL2RenderingContextBase | texImage3D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, format: GLenum, type: GLenum, pboOffset: GLintptr): void;<br>texImage3D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, format: GLenum, type: GLenum, source: TexImageSource): void;<br>texImage3D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, format: GLenum, type: GLenum, srcData: ArrayBufferView \| null): void;<br>texImage3D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, format: GLenum, type: GLenum, srcData: ArrayBufferView, srcOffset: GLuint): void; | Added|
| webgl2 | WebGL2RenderingContextBase | texStorage3D(target: GLenum, levels: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei): void; | Added|
| webgl2 | WebGL2RenderingContextBase | texStorage2D(target: GLenum, levels: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei): void; | Added|
| webgl2 | WebGL2RenderingContextBase | renderbufferStorageMultisample(target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei): void; | Added|
| webgl2 | WebGL2RenderingContextBase | getInternalformatParameter(target: GLenum, internalformat: GLenum, pname: GLenum): any; | Added|
| webgl2 | WebGL2RenderingContextBase | readBuffer(src: GLenum): void; | Added|
| webgl2 | WebGL2RenderingContextBase | invalidateSubFramebuffer(target: GLenum, attachments: GLenum[], x: GLint, y: GLint, width: GLsizei, height: GLsizei): void; | Added|
| webgl2 | WebGL2RenderingContextBase | invalidateFramebuffer(target: GLenum, attachments: GLenum[]): void; | Added|
| webgl2 | WebGL2RenderingContextBase | framebufferTextureLayer(target: GLenum, attachment: GLenum, texture: WebGLTexture \| null, level: GLint, layer: GLint): void; | Added|
| webgl2 | WebGL2RenderingContextBase | blitFramebuffer(srcX0: GLint, srcY0: GLint, srcX1: GLint, srcY1: GLint, dstX0: GLint, dstY0: GLint, dstX1: GLint, dstY1: GLint, mask: GLbitfield, filter: GLenum): void; | Added|
| webgl2 | WebGL2RenderingContextBase | getBufferSubData(target: GLenum, srcByteOffset: GLintptr, dstBuffer: ArrayBufferView, dstOffset?: GLuint, length?: GLuint): void; | Added|
| webgl2 | WebGL2RenderingContextBase | copyBufferSubData(readTarget: GLenum, writeTarget: GLenum, readOffset: GLintptr, writeOffset: GLintptr, size: GLsizeiptr): void; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly MAX_CLIENT_WAIT_TIMEOUT_WEBGL: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly TIMEOUT_IGNORED: GLint64; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly TEXTURE_IMMUTABLE_LEVELS: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly MAX_ELEMENT_INDEX: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly TEXTURE_IMMUTABLE_FORMAT: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly TRANSFORM_FEEDBACK_BINDING: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly TRANSFORM_FEEDBACK_ACTIVE: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly TRANSFORM_FEEDBACK_PAUSED: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly TRANSFORM_FEEDBACK: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly INT_2_10_10_10_REV: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly RGB10_A2UI: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly SAMPLER_BINDING: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly ANY_SAMPLES_PASSED_CONSERVATIVE: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly ANY_SAMPLES_PASSED: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly VERTEX_ATTRIB_ARRAY_DIVISOR: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly SYNC_FLUSH_COMMANDS_BIT: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly WAIT_FAILED: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly CONDITION_SATISFIED: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly TIMEOUT_EXPIRED: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly ALREADY_SIGNALED: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly SIGNALED: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly UNSIGNALED: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly SYNC_GPU_COMMANDS_COMPLETE: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly SYNC_FENCE: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly SYNC_FLAGS: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly SYNC_STATUS: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly SYNC_CONDITION: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly OBJECT_TYPE: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly MAX_SERVER_WAIT_TIMEOUT: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly MAX_FRAGMENT_INPUT_COMPONENTS: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly MAX_VERTEX_OUTPUT_COMPONENTS: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly INVALID_INDEX: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly UNIFORM_BLOCK_ACTIVE_UNIFORMS: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly UNIFORM_BLOCK_DATA_SIZE: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly UNIFORM_BLOCK_BINDING: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly UNIFORM_IS_ROW_MAJOR: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly UNIFORM_MATRIX_STRIDE: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly UNIFORM_ARRAY_STRIDE: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly UNIFORM_OFFSET: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly UNIFORM_BLOCK_INDEX: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly UNIFORM_SIZE: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly UNIFORM_TYPE: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly ACTIVE_UNIFORM_BLOCKS: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly UNIFORM_BUFFER_OFFSET_ALIGNMENT: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly MAX_UNIFORM_BLOCK_SIZE: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly MAX_UNIFORM_BUFFER_BINDINGS: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly MAX_COMBINED_UNIFORM_BLOCKS: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly MAX_FRAGMENT_UNIFORM_BLOCKS: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly MAX_VERTEX_UNIFORM_BLOCKS: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly UNIFORM_BUFFER_SIZE: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly UNIFORM_BUFFER_START: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly UNIFORM_BUFFER_BINDING: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly UNIFORM_BUFFER: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly COPY_WRITE_BUFFER_BINDING: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly COPY_READ_BUFFER_BINDING: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly COPY_WRITE_BUFFER: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly COPY_READ_BUFFER: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly SIGNED_NORMALIZED: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly RGBA8_SNORM: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly RGB8_SNORM: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly RG8_SNORM: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly R8_SNORM: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly VERTEX_ARRAY_BINDING: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly RG32UI: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly RG32I: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly RG16UI: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly RG16I: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly RG8UI: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly RG8I: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly R32UI: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly R32I: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly R16UI: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly R16I: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly R8UI: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly R8I: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly RG32F: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly RG16F: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly R32F: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly R16F: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly RG8: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly R8: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly RG_INTEGER: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly RG: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly HALF_FLOAT: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly MAX_SAMPLES: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly COLOR_ATTACHMENT15: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly COLOR_ATTACHMENT14: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly COLOR_ATTACHMENT13: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly COLOR_ATTACHMENT12: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly COLOR_ATTACHMENT11: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly COLOR_ATTACHMENT10: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly COLOR_ATTACHMENT9: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly COLOR_ATTACHMENT8: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly COLOR_ATTACHMENT7: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly COLOR_ATTACHMENT6: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly COLOR_ATTACHMENT5: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly COLOR_ATTACHMENT4: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly COLOR_ATTACHMENT3: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly COLOR_ATTACHMENT2: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly COLOR_ATTACHMENT1: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly MAX_COLOR_ATTACHMENTS: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly RENDERBUFFER_SAMPLES: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly READ_FRAMEBUFFER_BINDING: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly DRAW_FRAMEBUFFER: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly READ_FRAMEBUFFER: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly DRAW_FRAMEBUFFER_BINDING: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly UNSIGNED_NORMALIZED: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly DEPTH24_STENCIL8: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly UNSIGNED_INT_24_8: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly FRAMEBUFFER_DEFAULT: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly FRAMEBUFFER_ATTACHMENT_RED_SIZE: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly FLOAT_32_UNSIGNED_INT_24_8_REV: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly DEPTH32F_STENCIL8: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly DEPTH_COMPONENT32F: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly UNSIGNED_INT_SAMPLER_2D_ARRAY: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly UNSIGNED_INT_SAMPLER_CUBE: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly UNSIGNED_INT_SAMPLER_3D: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly UNSIGNED_INT_SAMPLER_2D: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly INT_SAMPLER_2D_ARRAY: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly INT_SAMPLER_CUBE: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly INT_SAMPLER_3D: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly INT_SAMPLER_2D: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly UNSIGNED_INT_VEC4: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly UNSIGNED_INT_VEC3: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly UNSIGNED_INT_VEC2: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly SAMPLER_CUBE_SHADOW: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly SAMPLER_2D_ARRAY_SHADOW: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly SAMPLER_2D_ARRAY: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly RGBA_INTEGER: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly RGB_INTEGER: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly RED_INTEGER: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly RGB8I: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly RGBA8I: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly RGB16I: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly RGBA16I: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly RGB32I: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly RGBA32I: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly RGB8UI: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly RGBA8UI: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly RGB16UI: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly RGBA16UI: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly RGB32UI: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly RGBA32UI: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly TRANSFORM_FEEDBACK_BUFFER_BINDING: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly TRANSFORM_FEEDBACK_BUFFER: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly SEPARATE_ATTRIBS: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly INTERLEAVED_ATTRIBS: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly RASTERIZER_DISCARD: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly TRANSFORM_FEEDBACK_BUFFER_SIZE: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly TRANSFORM_FEEDBACK_BUFFER_START: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly TRANSFORM_FEEDBACK_VARYINGS: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly TRANSFORM_FEEDBACK_BUFFER_MODE: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly UNSIGNED_INT_5_9_9_9_REV: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly RGB9_E5: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly UNSIGNED_INT_10F_11F_11F_REV: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly R11F_G11F_B10F: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly TEXTURE_BINDING_2D_ARRAY: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly TEXTURE_2D_ARRAY: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly MAX_VARYING_COMPONENTS: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly MAX_PROGRAM_TEXEL_OFFSET: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly MIN_PROGRAM_TEXEL_OFFSET: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly MAX_ARRAY_TEXTURE_LAYERS: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly VERTEX_ATTRIB_ARRAY_INTEGER: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly RGB16F: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly RGBA16F: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly RGB32F: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly RGBA32F: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly COMPARE_REF_TO_TEXTURE: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly SRGB8_ALPHA8: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly SRGB8: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly SRGB: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly FLOAT_MAT4x3: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly FLOAT_MAT4x2: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly FLOAT_MAT3x4: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly FLOAT_MAT3x2: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly FLOAT_MAT2x4: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly FLOAT_MAT2x3: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly PIXEL_UNPACK_BUFFER_BINDING: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly PIXEL_PACK_BUFFER_BINDING: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly PIXEL_UNPACK_BUFFER: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly PIXEL_PACK_BUFFER: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly FRAGMENT_SHADER_DERIVATIVE_HINT: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly SAMPLER_2D_SHADOW: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly SAMPLER_3D: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly MAX_VERTEX_UNIFORM_COMPONENTS: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly MAX_FRAGMENT_UNIFORM_COMPONENTS: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly DRAW_BUFFER15: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly DRAW_BUFFER14: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly DRAW_BUFFER13: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly DRAW_BUFFER12: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly DRAW_BUFFER11: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly DRAW_BUFFER10: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly DRAW_BUFFER9: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly DRAW_BUFFER8: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly DRAW_BUFFER7: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly DRAW_BUFFER6: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly DRAW_BUFFER5: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly DRAW_BUFFER4: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly DRAW_BUFFER3: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly DRAW_BUFFER2: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly DRAW_BUFFER1: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly DRAW_BUFFER0: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly MAX_DRAW_BUFFERS: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly DYNAMIC_COPY: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly DYNAMIC_READ: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly STATIC_COPY: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly STATIC_READ: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly STREAM_COPY: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly STREAM_READ: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly QUERY_RESULT_AVAILABLE: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly QUERY_RESULT: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly CURRENT_QUERY: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly TEXTURE_COMPARE_FUNC: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly TEXTURE_COMPARE_MODE: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly MAX_TEXTURE_LOD_BIAS: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly DEPTH_COMPONENT24: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly MAX: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly MIN: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly TEXTURE_MAX_LEVEL: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly TEXTURE_BASE_LEVEL: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly TEXTURE_MAX_LOD: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly TEXTURE_MIN_LOD: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly MAX_ELEMENTS_INDICES: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly MAX_ELEMENTS_VERTICES: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly UNSIGNED_INT_2_10_10_10_REV: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly MAX_3D_TEXTURE_SIZE: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly TEXTURE_WRAP_R: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly TEXTURE_3D: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly UNPACK_IMAGE_HEIGHT: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly UNPACK_SKIP_IMAGES: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly TEXTURE_BINDING_3D: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly RGB10_A2: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly RGBA8: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly RGB8: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly RED: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly STENCIL: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly DEPTH: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly COLOR: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly PACK_SKIP_PIXELS: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly PACK_SKIP_ROWS: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly PACK_ROW_LENGTH: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly UNPACK_SKIP_PIXELS: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly UNPACK_SKIP_ROWS: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly UNPACK_ROW_LENGTH: GLenum; | Added|
| webgl2 | WebGL2RenderingContextBase | readonly READ_BUFFER: GLenum; | Added|
| webgl | WebGLRenderingContextOverloads | uniformMatrix4fv(location: WebGLUniformLocation \| null, transpose: GLboolean, value: Float32List): void; | Added|
| webgl | WebGLRenderingContextOverloads | uniformMatrix3fv(location: WebGLUniformLocation \| null, transpose: GLboolean, value: Float32List): void; | Added|
| webgl | WebGLRenderingContextOverloads | uniformMatrix2fv(location: WebGLUniformLocation \| null, transpose: GLboolean, value: Float32List): void; | Added|
| webgl | WebGLRenderingContextOverloads | uniform4iv(location: WebGLUniformLocation \| null, v: Int32List): void; | Added|
| webgl | WebGLRenderingContextOverloads | uniform3iv(location: WebGLUniformLocation \| null, v: Int32List): void; | Added|
| webgl | WebGLRenderingContextOverloads | uniform2iv(location: WebGLUniformLocation \| null, v: Int32List): void; | Added|
| webgl | WebGLRenderingContextOverloads | uniform1iv(location: WebGLUniformLocation \| null, v: Int32List): void; | Added|
| webgl | WebGLRenderingContextOverloads | uniform4fv(location: WebGLUniformLocation \| null, v: Float32List): void; | Added|
| webgl | WebGLRenderingContextOverloads | uniform3fv(location: WebGLUniformLocation \| null, v: Float32List): void; | Added|
| webgl | WebGLRenderingContextOverloads | uniform2fv(location: WebGLUniformLocation \| null, v: Float32List): void; | Added|
| webgl | WebGLRenderingContextOverloads | uniform1fv(location: WebGLUniformLocation \| null, v: Float32List): void; | Added|
| webgl | WebGLRenderingContextOverloads | texSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, pixels: ArrayBufferView \| null): void;<br>texSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, format: GLenum, type: GLenum, source: TexImageSource): void; | Added|
| webgl | WebGLRenderingContextOverloads | texImage2D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, border: GLint, format: GLenum, type: GLenum, pixels: ArrayBufferView \| null): void;<br>texImage2D(target: GLenum, level: GLint, internalformat: GLint, format: GLenum, type: GLenum, source: TexImageSource): void; | Added|
| webgl | WebGLRenderingContextOverloads | readPixels(x: GLint, y: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, pixels: ArrayBufferView \| null): void; | Added|
| webgl | WebGLRenderingContextOverloads | compressedTexSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, data: ArrayBufferView): void; | Added|
| webgl | WebGLRenderingContextOverloads | compressedTexImage2D(target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, border: GLint, data: ArrayBufferView): void; | Added|
| webgl | WebGLRenderingContextOverloads | bufferSubData(target: GLenum, offset: GLintptr, data: BufferSource): void; | Added|
| webgl | WebGLRenderingContextOverloads | bufferData(target: GLenum, size: GLsizeiptr, usage: GLenum): void;<br>bufferData(target: GLenum, data: BufferSource \| null, usage: GLenum): void; | Added|
| webgl | WebGLRenderingContextBase | viewport(x: GLint, y: GLint, width: GLsizei, height: GLsizei): void; | Added|
| webgl | WebGLRenderingContextBase | vertexAttribPointer(index: GLuint, size: GLint, type: GLenum, normalized: GLboolean, stride: GLsizei, offset: GLintptr): void; | Added|
| webgl | WebGLRenderingContextBase | vertexAttrib4fv(index: GLuint, values: Float32List): void; | Added|
| webgl | WebGLRenderingContextBase | vertexAttrib3fv(index: GLuint, values: Float32List): void; | Added|
| webgl | WebGLRenderingContextBase | vertexAttrib2fv(index: GLuint, values: Float32List): void; | Added|
| webgl | WebGLRenderingContextBase | vertexAttrib1fv(index: GLuint, values: Float32List): void; | Added|
| webgl | WebGLRenderingContextBase | vertexAttrib4f(index: GLuint, x: GLfloat, y: GLfloat, z: GLfloat, w: GLfloat): void; | Added|
| webgl | WebGLRenderingContextBase | vertexAttrib3f(index: GLuint, x: GLfloat, y: GLfloat, z: GLfloat): void; | Added|
| webgl | WebGLRenderingContextBase | vertexAttrib2f(index: GLuint, x: GLfloat, y: GLfloat): void; | Added|
| webgl | WebGLRenderingContextBase | vertexAttrib1f(index: GLuint, x: GLfloat): void; | Added|
| webgl | WebGLRenderingContextBase | validateProgram(program: WebGLProgram): void; | Added|
| webgl | WebGLRenderingContextBase | useProgram(program: WebGLProgram \| null): void; | Added|
| webgl | WebGLRenderingContextBase | uniform4i(location: WebGLUniformLocation \| null, x: GLint, y: GLint, z: GLint, w: GLint): void; | Added|
| webgl | WebGLRenderingContextBase | uniform3i(location: WebGLUniformLocation \| null, x: GLint, y: GLint, z: GLint): void; | Added|
| webgl | WebGLRenderingContextBase | uniform2i(location: WebGLUniformLocation \| null, x: GLint, y: GLint): void; | Added|
| webgl | WebGLRenderingContextBase | uniform1i(location: WebGLUniformLocation \| null, x: GLint): void; | Added|
| webgl | WebGLRenderingContextBase | uniform4f(location: WebGLUniformLocation \| null, x: GLfloat, y: GLfloat, z: GLfloat, w: GLfloat): void; | Added|
| webgl | WebGLRenderingContextBase | uniform3f(location: WebGLUniformLocation \| null, x: GLfloat, y: GLfloat, z: GLfloat): void; | Added|
| webgl | WebGLRenderingContextBase | uniform2f(location: WebGLUniformLocation \| null, x: GLfloat, y: GLfloat): void; | Added|
| webgl | WebGLRenderingContextBase | uniform1f(location: WebGLUniformLocation \| null, x: GLfloat): void; | Added|
| webgl | WebGLRenderingContextBase | texParameteri(target: GLenum, pname: GLenum, param: GLint): void; | Added|
| webgl | WebGLRenderingContextBase | texParameterf(target: GLenum, pname: GLenum, param: GLfloat): void; | Added|
| webgl | WebGLRenderingContextBase | stencilOpSeparate(face: GLenum, fail: GLenum, zfail: GLenum, zpass: GLenum): void; | Added|
| webgl | WebGLRenderingContextBase | stencilOp(fail: GLenum, zfail: GLenum, zpass: GLenum): void; | Added|
| webgl | WebGLRenderingContextBase | stencilMaskSeparate(face: GLenum, mask: GLuint): void; | Added|
| webgl | WebGLRenderingContextBase | stencilMask(mask: GLuint): void; | Added|
| webgl | WebGLRenderingContextBase | stencilFuncSeparate(face: GLenum, func: GLenum, ref: GLint, mask: GLuint): void; | Added|
| webgl | WebGLRenderingContextBase | stencilFunc(func: GLenum, ref: GLint, mask: GLuint): void; | Added|
| webgl | WebGLRenderingContextBase | shaderSource(shader: WebGLShader, source: string): void; | Added|
| webgl | WebGLRenderingContextBase | scissor(x: GLint, y: GLint, width: GLsizei, height: GLsizei): void; | Added|
| webgl | WebGLRenderingContextBase | sampleCoverage(value: GLclampf, invert: GLboolean): void; | Added|
| webgl | WebGLRenderingContextBase | renderbufferStorage(target: GLenum, internalformat: GLenum, width: GLsizei, height: GLsizei): void; | Added|
| webgl | WebGLRenderingContextBase | polygonOffset(factor: GLfloat, units: GLfloat): void; | Added|
| webgl | WebGLRenderingContextBase | pixelStorei(pname: GLenum, param: GLint \| GLboolean): void; | Added|
| webgl | WebGLRenderingContextBase | linkProgram(program: WebGLProgram): void; | Added|
| webgl | WebGLRenderingContextBase | lineWidth(width: GLfloat): void; | Added|
| webgl | WebGLRenderingContextBase | isTexture(texture: WebGLTexture \| null): GLboolean; | Added|
| webgl | WebGLRenderingContextBase | isShader(shader: WebGLShader \| null): GLboolean; | Added|
| webgl | WebGLRenderingContextBase | isRenderbuffer(renderbuffer: WebGLRenderbuffer \| null): GLboolean; | Added|
| webgl | WebGLRenderingContextBase | isProgram(program: WebGLProgram \| null): GLboolean; | Added|
| webgl | WebGLRenderingContextBase | isFramebuffer(framebuffer: WebGLFramebuffer \| null): GLboolean; | Added|
| webgl | WebGLRenderingContextBase | isEnabled(cap: GLenum): GLboolean; | Added|
| webgl | WebGLRenderingContextBase | isBuffer(buffer: WebGLBuffer \| null): GLboolean; | Added|
| webgl | WebGLRenderingContextBase | hint(target: GLenum, mode: GLenum): void; | Added|
| webgl | WebGLRenderingContextBase | getVertexAttribOffset(index: GLuint, pname: GLenum): GLintptr; | Added|
| webgl | WebGLRenderingContextBase | getVertexAttrib(index: GLuint, pname: GLenum): any; | Added|
| webgl | WebGLRenderingContextBase | getUniformLocation(program: WebGLProgram, name: string): WebGLUniformLocation \| null; | Added|
| webgl | WebGLRenderingContextBase | getUniform(program: WebGLProgram, location: WebGLUniformLocation): any; | Added|
| webgl | WebGLRenderingContextBase | getTexParameter(target: GLenum, pname: GLenum): any; | Added|
| webgl | WebGLRenderingContextBase | getShaderSource(shader: WebGLShader): string \| null; | Added|
| webgl | WebGLRenderingContextBase | getShaderInfoLog(shader: WebGLShader): string \| null; | Added|
| webgl | WebGLRenderingContextBase | getShaderPrecisionFormat(shadertype: GLenum, precisiontype: GLenum): WebGLShaderPrecisionFormat \| null; | Added|
| webgl | WebGLRenderingContextBase | getShaderParameter(shader: WebGLShader, pname: GLenum): any; | Added|
| webgl | WebGLRenderingContextBase | getRenderbufferParameter(target: GLenum, pname: GLenum): any; | Added|
| webgl | WebGLRenderingContextBase | getProgramInfoLog(program: WebGLProgram): string \| null; | Added|
| webgl | WebGLRenderingContextBase | getProgramParameter(program: WebGLProgram, pname: GLenum): any; | Added|
| webgl | WebGLRenderingContextBase | getFramebufferAttachmentParameter(target: GLenum, attachment: GLenum, pname: GLenum): any; | Added|
| webgl | WebGLRenderingContextBase | getError(): GLenum; | Added|
| webgl | WebGLRenderingContextBase | getParameter(pname: GLenum): any; | Added|
| webgl | WebGLRenderingContextBase | getBufferParameter(target: GLenum, pname: GLenum): any; | Added|
| webgl | WebGLRenderingContextBase | getAttribLocation(program: WebGLProgram, name: string): GLint; | Added|
| webgl | WebGLRenderingContextBase | getAttachedShaders(program: WebGLProgram): WebGLShader[] \| null; | Added|
| webgl | WebGLRenderingContextBase | getActiveUniform(program: WebGLProgram, index: GLuint): WebGLActiveInfo \| null; | Added|
| webgl | WebGLRenderingContextBase | getActiveAttrib(program: WebGLProgram, index: GLuint): WebGLActiveInfo \| null; | Added|
| webgl | WebGLRenderingContextBase | generateMipmap(target: GLenum): void; | Added|
| webgl | WebGLRenderingContextBase | frontFace(mode: GLenum): void; | Added|
| webgl | WebGLRenderingContextBase | framebufferTexture2D(target: GLenum, attachment: GLenum, textarget: GLenum, texture: WebGLTexture \| null, level: GLint): void; | Added|
| webgl | WebGLRenderingContextBase | framebufferRenderbuffer(target: GLenum, attachment: GLenum, renderbuffertarget: GLenum, renderbuffer: WebGLRenderbuffer \| null): void; | Added|
| webgl | WebGLRenderingContextBase | flush(): void; | Added|
| webgl | WebGLRenderingContextBase | finish(): void; | Added|
| webgl | WebGLRenderingContextBase | enableVertexAttribArray(index: GLuint): void; | Added|
| webgl | WebGLRenderingContextBase | enable(cap: GLenum): void; | Added|
| webgl | WebGLRenderingContextBase | drawElements(mode: GLenum, count: GLsizei, type: GLenum, offset: GLintptr): void; | Added|
| webgl | WebGLRenderingContextBase | drawArrays(mode: GLenum, first: GLint, count: GLsizei): void; | Added|
| webgl | WebGLRenderingContextBase | disableVertexAttribArray(index: GLuint): void; | Added|
| webgl | WebGLRenderingContextBase | disable(cap: GLenum): void; | Added|
| webgl | WebGLRenderingContextBase | detachShader(program: WebGLProgram, shader: WebGLShader): void; | Added|
| webgl | WebGLRenderingContextBase | depthRange(zNear: GLclampf, zFar: GLclampf): void; | Added|
| webgl | WebGLRenderingContextBase | depthMask(flag: GLboolean): void; | Added|
| webgl | WebGLRenderingContextBase | depthFunc(func: GLenum): void; | Added|
| webgl | WebGLRenderingContextBase | deleteTexture(texture: WebGLTexture \| null): void; | Added|
| webgl | WebGLRenderingContextBase | deleteShader(shader: WebGLShader \| null): void; | Added|
| webgl | WebGLRenderingContextBase | deleteRenderbuffer(renderbuffer: WebGLRenderbuffer \| null): void; | Added|
| webgl | WebGLRenderingContextBase | deleteProgram(program: WebGLProgram \| null): void; | Added|
| webgl | WebGLRenderingContextBase | deleteFramebuffer(framebuffer: WebGLFramebuffer \| null): void; | Added|
| webgl | WebGLRenderingContextBase | deleteBuffer(buffer: WebGLBuffer \| null): void; | Added|
| webgl | WebGLRenderingContextBase | cullFace(mode: GLenum): void; | Added|
| webgl | WebGLRenderingContextBase | createTexture(): WebGLTexture \| null; | Added|
| webgl | WebGLRenderingContextBase | createShader(type: GLenum): WebGLShader \| null; | Added|
| webgl | WebGLRenderingContextBase | createRenderbuffer(): WebGLRenderbuffer \| null; | Added|
| webgl | WebGLRenderingContextBase | createProgram(): WebGLProgram \| null; | Added|
| webgl | WebGLRenderingContextBase | createFramebuffer(): WebGLFramebuffer \| null; | Added|
| webgl | WebGLRenderingContextBase | createBuffer(): WebGLBuffer \| null; | Added|
| webgl | WebGLRenderingContextBase | copyTexSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, x: GLint, y: GLint, width: GLsizei, height: GLsizei): void; | Added|
| webgl | WebGLRenderingContextBase | copyTexImage2D(target: GLenum, level: GLint, internalformat: GLenum, x: GLint, y: GLint, width: GLsizei, height: GLsizei, border: GLint): void; | Added|
| webgl | WebGLRenderingContextBase | compileShader(shader: WebGLShader): void; | Added|
| webgl | WebGLRenderingContextBase | colorMask(red: GLboolean, green: GLboolean, blue: GLboolean, alpha: GLboolean): void; | Added|
| webgl | WebGLRenderingContextBase | clearStencil(s: GLint): void; | Added|
| webgl | WebGLRenderingContextBase | clearDepth(depth: GLclampf): void; | Added|
| webgl | WebGLRenderingContextBase | clearColor(red: GLclampf, green: GLclampf, blue: GLclampf, alpha: GLclampf): void; | Added|
| webgl | WebGLRenderingContextBase | clear(mask: GLbitfield): void; | Added|
| webgl | WebGLRenderingContextBase | checkFramebufferStatus(target: GLenum): GLenum; | Added|
| webgl | WebGLRenderingContextBase | blendFuncSeparate(srcRGB: GLenum, dstRGB: GLenum, srcAlpha: GLenum, dstAlpha: GLenum): void; | Added|
| webgl | WebGLRenderingContextBase | blendFunc(sfactor: GLenum, dfactor: GLenum): void; | Added|
| webgl | WebGLRenderingContextBase | blendEquationSeparate(modeRGB: GLenum, modeAlpha: GLenum): void; | Added|
| webgl | WebGLRenderingContextBase | blendEquation(mode: GLenum): void; | Added|
| webgl | WebGLRenderingContextBase | blendColor(red: GLclampf, green: GLclampf, blue: GLclampf, alpha: GLclampf): void; | Added|
| webgl | WebGLRenderingContextBase | bindTexture(target: GLenum, texture: WebGLTexture \| null): void; | Added|
| webgl | WebGLRenderingContextBase | bindRenderbuffer(target: GLenum, renderbuffer: WebGLRenderbuffer \| null): void; | Added|
| webgl | WebGLRenderingContextBase | bindFramebuffer(target: GLenum, framebuffer: WebGLFramebuffer \| null): void; | Added|
| webgl | WebGLRenderingContextBase | bindBuffer(target: GLenum, buffer: WebGLBuffer \| null): void; | Added|
| webgl | WebGLRenderingContextBase | bindAttribLocation(program: WebGLProgram, index: GLuint, name: string): void; | Added|
| webgl | WebGLRenderingContextBase | attachShader(program: WebGLProgram, shader: WebGLShader): void; | Added|
| webgl | WebGLRenderingContextBase | activeTexture(texture: GLenum): void; | Added|
| webgl | WebGLRenderingContextBase | getExtension(name: string): any; | Added|
| webgl | WebGLRenderingContextBase | getSupportedExtensions(): string[] \| null; | Added|
| webgl | WebGLRenderingContextBase | isContextLost(): boolean; | Added|
| webgl | WebGLRenderingContextBase | getContextAttributes(): WebGLContextAttributes \| null; | Added|
| webgl | WebGLRenderingContextBase | readonly drawingBufferHeight: GLsizei; | Added|
| webgl | WebGLRenderingContextBase | readonly drawingBufferWidth: GLsizei; | Added|
| webgl | WebGLRenderingContextBase | readonly canvas: HTMLCanvasElement \| OffscreenCanvas; | Added|
| webgl | WebGLRenderingContextBase | readonly BROWSER_DEFAULT_WEBGL: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly UNPACK_COLORSPACE_CONVERSION_WEBGL: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly CONTEXT_LOST_WEBGL: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly UNPACK_PREMULTIPLY_ALPHA_WEBGL: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly UNPACK_FLIP_Y_WEBGL: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly INVALID_FRAMEBUFFER_OPERATION: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly MAX_RENDERBUFFER_SIZE: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly RENDERBUFFER_BINDING: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly FRAMEBUFFER_BINDING: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly FRAMEBUFFER_UNSUPPORTED: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly FRAMEBUFFER_INCOMPLETE_DIMENSIONS: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly FRAMEBUFFER_INCOMPLETE_ATTACHMENT: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly FRAMEBUFFER_COMPLETE: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly NONE: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly DEPTH_STENCIL_ATTACHMENT: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly STENCIL_ATTACHMENT: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly DEPTH_ATTACHMENT: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly COLOR_ATTACHMENT0: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly RENDERBUFFER_STENCIL_SIZE: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly RENDERBUFFER_DEPTH_SIZE: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly RENDERBUFFER_ALPHA_SIZE: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly RENDERBUFFER_BLUE_SIZE: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly RENDERBUFFER_GREEN_SIZE: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly RENDERBUFFER_RED_SIZE: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly RENDERBUFFER_INTERNAL_FORMAT: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly RENDERBUFFER_HEIGHT: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly RENDERBUFFER_WIDTH: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly DEPTH_STENCIL: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly STENCIL_INDEX8: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly DEPTH_COMPONENT16: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly RGB565: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly RGB5_A1: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly RGBA4: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly RENDERBUFFER: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly FRAMEBUFFER: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly HIGH_INT: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly MEDIUM_INT: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly LOW_INT: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly HIGH_FLOAT: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly MEDIUM_FLOAT: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly LOW_FLOAT: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly COMPILE_STATUS: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly IMPLEMENTATION_COLOR_READ_FORMAT: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly IMPLEMENTATION_COLOR_READ_TYPE: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly VERTEX_ATTRIB_ARRAY_POINTER: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly VERTEX_ATTRIB_ARRAY_NORMALIZED: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly VERTEX_ATTRIB_ARRAY_TYPE: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly VERTEX_ATTRIB_ARRAY_STRIDE: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly VERTEX_ATTRIB_ARRAY_SIZE: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly VERTEX_ATTRIB_ARRAY_ENABLED: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly SAMPLER_CUBE: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly SAMPLER_2D: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly FLOAT_MAT4: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly FLOAT_MAT3: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly FLOAT_MAT2: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly BOOL_VEC4: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly BOOL_VEC3: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly BOOL_VEC2: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly BOOL: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly INT_VEC4: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly INT_VEC3: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly INT_VEC2: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly FLOAT_VEC4: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly FLOAT_VEC3: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly FLOAT_VEC2: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly MIRRORED_REPEAT: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly CLAMP_TO_EDGE: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly REPEAT: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly ACTIVE_TEXTURE: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly TEXTURE31: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly TEXTURE30: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly TEXTURE29: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly TEXTURE28: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly TEXTURE27: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly TEXTURE26: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly TEXTURE25: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly TEXTURE24: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly TEXTURE23: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly TEXTURE22: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly TEXTURE21: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly TEXTURE20: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly TEXTURE19: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly TEXTURE18: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly TEXTURE17: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly TEXTURE16: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly TEXTURE15: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly TEXTURE14: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly TEXTURE13: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly TEXTURE12: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly TEXTURE11: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly TEXTURE10: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly TEXTURE9: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly TEXTURE8: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly TEXTURE7: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly TEXTURE6: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly TEXTURE5: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly TEXTURE4: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly TEXTURE3: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly TEXTURE2: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly TEXTURE1: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly TEXTURE0: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly MAX_CUBE_MAP_TEXTURE_SIZE: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly TEXTURE_CUBE_MAP_NEGATIVE_Z: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly TEXTURE_CUBE_MAP_POSITIVE_Z: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly TEXTURE_CUBE_MAP_NEGATIVE_Y: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly TEXTURE_CUBE_MAP_POSITIVE_Y: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly TEXTURE_CUBE_MAP_NEGATIVE_X: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly TEXTURE_CUBE_MAP_POSITIVE_X: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly TEXTURE_BINDING_CUBE_MAP: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly TEXTURE_CUBE_MAP: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly TEXTURE: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly TEXTURE_2D: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly TEXTURE_WRAP_T: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly TEXTURE_WRAP_S: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly TEXTURE_MIN_FILTER: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly TEXTURE_MAG_FILTER: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly LINEAR_MIPMAP_LINEAR: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly NEAREST_MIPMAP_LINEAR: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly LINEAR_MIPMAP_NEAREST: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly NEAREST_MIPMAP_NEAREST: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly LINEAR: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly NEAREST: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly VERSION: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly RENDERER: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly VENDOR: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly DECR_WRAP: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly INCR_WRAP: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly INVERT: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly DECR: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly INCR: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly REPLACE: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly KEEP: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly ALWAYS: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly GEQUAL: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly NOTEQUAL: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly GREATER: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly LEQUAL: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly EQUAL: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly LESS: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly NEVER: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly CURRENT_PROGRAM: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly SHADING_LANGUAGE_VERSION: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly ACTIVE_ATTRIBUTES: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly ACTIVE_UNIFORMS: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly ATTACHED_SHADERS: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly VALIDATE_STATUS: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly LINK_STATUS: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly DELETE_STATUS: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly SHADER_TYPE: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly MAX_FRAGMENT_UNIFORM_VECTORS: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly MAX_TEXTURE_IMAGE_UNITS: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly MAX_VERTEX_TEXTURE_IMAGE_UNITS: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly MAX_COMBINED_TEXTURE_IMAGE_UNITS: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly MAX_VARYING_VECTORS: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly MAX_VERTEX_UNIFORM_VECTORS: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly MAX_VERTEX_ATTRIBS: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly VERTEX_SHADER: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly FRAGMENT_SHADER: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly UNSIGNED_SHORT_5_6_5: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly UNSIGNED_SHORT_5_5_5_1: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly UNSIGNED_SHORT_4_4_4_4: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly LUMINANCE_ALPHA: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly LUMINANCE: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly RGBA: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly RGB: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly ALPHA: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly DEPTH_COMPONENT: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly FLOAT: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly UNSIGNED_INT: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly INT: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly UNSIGNED_SHORT: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly SHORT: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly UNSIGNED_BYTE: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly BYTE: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly GENERATE_MIPMAP_HINT: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly NICEST: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly FASTEST: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly DONT_CARE: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly COMPRESSED_TEXTURE_FORMATS: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly SAMPLE_COVERAGE_INVERT: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly SAMPLE_COVERAGE_VALUE: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly SAMPLES: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly SAMPLE_BUFFERS: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly TEXTURE_BINDING_2D: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly POLYGON_OFFSET_FACTOR: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly POLYGON_OFFSET_UNITS: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly STENCIL_BITS: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly DEPTH_BITS: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly ALPHA_BITS: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly BLUE_BITS: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly GREEN_BITS: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly RED_BITS: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly SUBPIXEL_BITS: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly MAX_VIEWPORT_DIMS: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly MAX_TEXTURE_SIZE: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly PACK_ALIGNMENT: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly UNPACK_ALIGNMENT: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly COLOR_WRITEMASK: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly COLOR_CLEAR_VALUE: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly SCISSOR_BOX: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly VIEWPORT: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly STENCIL_BACK_WRITEMASK: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly STENCIL_BACK_VALUE_MASK: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly STENCIL_BACK_REF: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly STENCIL_BACK_PASS_DEPTH_PASS: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly STENCIL_BACK_PASS_DEPTH_FAIL: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly STENCIL_BACK_FAIL: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly STENCIL_BACK_FUNC: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly STENCIL_WRITEMASK: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly STENCIL_VALUE_MASK: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly STENCIL_REF: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly STENCIL_PASS_DEPTH_PASS: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly STENCIL_PASS_DEPTH_FAIL: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly STENCIL_FAIL: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly STENCIL_FUNC: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly STENCIL_CLEAR_VALUE: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly DEPTH_FUNC: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly DEPTH_CLEAR_VALUE: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly DEPTH_WRITEMASK: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly DEPTH_RANGE: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly FRONT_FACE: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly CULL_FACE_MODE: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly ALIASED_LINE_WIDTH_RANGE: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly ALIASED_POINT_SIZE_RANGE: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly LINE_WIDTH: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly CCW: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly CW: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly OUT_OF_MEMORY: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly INVALID_OPERATION: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly INVALID_VALUE: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly INVALID_ENUM: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly NO_ERROR: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly SAMPLE_COVERAGE: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly SAMPLE_ALPHA_TO_COVERAGE: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly POLYGON_OFFSET_FILL: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly SCISSOR_TEST: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly DEPTH_TEST: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly STENCIL_TEST: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly DITHER: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly BLEND: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly CULL_FACE: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly FRONT_AND_BACK: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly BACK: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly FRONT: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly CURRENT_VERTEX_ATTRIB: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly BUFFER_USAGE: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly BUFFER_SIZE: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly DYNAMIC_DRAW: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly STATIC_DRAW: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly STREAM_DRAW: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly ELEMENT_ARRAY_BUFFER_BINDING: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly ARRAY_BUFFER_BINDING: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly ELEMENT_ARRAY_BUFFER: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly ARRAY_BUFFER: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly BLEND_COLOR: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly ONE_MINUS_CONSTANT_ALPHA: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly CONSTANT_ALPHA: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly ONE_MINUS_CONSTANT_COLOR: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly CONSTANT_COLOR: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly BLEND_SRC_ALPHA: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly BLEND_DST_ALPHA: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly BLEND_SRC_RGB: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly BLEND_DST_RGB: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly FUNC_REVERSE_SUBTRACT: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly FUNC_SUBTRACT: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly BLEND_EQUATION_ALPHA: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly BLEND_EQUATION_RGB: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly BLEND_EQUATION: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly FUNC_ADD: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly SRC_ALPHA_SATURATE: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly ONE_MINUS_DST_COLOR: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly DST_COLOR: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly ONE_MINUS_DST_ALPHA: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly DST_ALPHA: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly ONE_MINUS_SRC_ALPHA: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly SRC_ALPHA: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly ONE_MINUS_SRC_COLOR: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly SRC_COLOR: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly ONE: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly ZERO: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly TRIANGLE_FAN: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly TRIANGLE_STRIP: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly TRIANGLES: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly LINE_STRIP: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly LINE_LOOP: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly LINES: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly POINTS: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly COLOR_BUFFER_BIT: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly STENCIL_BUFFER_BIT: GLenum; | Added|
| webgl | WebGLRenderingContextBase | readonly DEPTH_BUFFER_BIT: GLenum; | Added|
| webgl | WebGLShaderPrecisionFormat | readonly precision: GLint; | Added|
| webgl | WebGLShaderPrecisionFormat | readonly rangeMax: GLint; | Added|
| webgl | WebGLShaderPrecisionFormat | readonly rangeMin: GLint; | Added|
| webgl | WebGLActiveInfo | readonly name: string; | Added|
| webgl | WebGLActiveInfo | readonly type: GLenum; | Added|
| webgl | WebGLActiveInfo | readonly size: GLint; | Added|
| webgl | WebGLContextAttributes | desynchronized?: boolean; | Added|
| webgl | WebGLContextAttributes | failIfMajorPerformanceCaveat?: boolean; | Added|
| webgl | WebGLContextAttributes | powerPreference?: WebGLPowerPreference; | Added|
| webgl | WebGLContextAttributes | preserveDrawingBuffer?: boolean; | Added|
| webgl | WebGLContextAttributes | premultipliedAlpha?: boolean; | Added|
| webgl | WebGLContextAttributes | antialias?: boolean; | Added|
| webgl | WebGLContextAttributes | stencil?: boolean; | Added|
| webgl | WebGLContextAttributes | depth?: boolean; | Added|
| webgl | WebGLContextAttributes | alpha?: boolean; | Added|
# JS API Changes of the Misc Services Subsystem
The table below lists the APIs changes of the Misc services subsystem in OpenHarmony 3.1 Release over OpenHarmony 3.0 LTS.
## API Changes
| Module| Class| Method/Attribute/Enumeration/Constant| Change Type|
|---|---|---|---|
| ohos.wallpaper | RgbaColor | alpha: number; | Added|
| ohos.wallpaper | RgbaColor | blue: number; | Added|
| ohos.wallpaper | RgbaColor | green: number; | Added|
| ohos.wallpaper | RgbaColor | red: number; | Added|
| ohos.wallpaper | wallpaper | function off(type: 'colorChange', callback?: (colors: Array<RgbaColor>, wallpaperType: WallpaperType) => void): void; | Added|
| ohos.wallpaper | wallpaper | function on(type: 'colorChange', callback: (colors: Array<RgbaColor>, wallpaperType: WallpaperType) => void): void; | Added|
| ohos.wallpaper | wallpaper | function setWallpaper(source: string \| image.PixelMap, wallpaperType: WallpaperType, callback: AsyncCallback<void>): void;<br>function setWallpaper(source: string \| image.PixelMap, wallpaperType: WallpaperType): Promise<void>; | Added|
| ohos.wallpaper | wallpaper | function reset(wallpaperType: WallpaperType, callback: AsyncCallback<void>): void;<br>function reset(wallpaperType: WallpaperType): Promise<void>; | Added|
| ohos.wallpaper | wallpaper | function isOperationAllowed(callback: AsyncCallback<boolean>): void;<br>function isOperationAllowed(): Promise<boolean>; | Added|
| ohos.wallpaper | wallpaper | function isChangePermitted(callback: AsyncCallback<boolean>): void;<br>function isChangePermitted(): Promise<boolean>; | Added|
| ohos.wallpaper | wallpaper | function getMinWidth(callback: AsyncCallback<number>): void;<br>function getMinWidth(): Promise<number>; | Added|
| ohos.wallpaper | wallpaper | function getMinHeight(callback: AsyncCallback<number>): void;<br>function getMinHeight(): Promise<number>; | Added|
| ohos.wallpaper | wallpaper | function getFile(wallpaperType: WallpaperType, callback: AsyncCallback<number>): void;<br>function getFile(wallpaperType: WallpaperType): Promise<number>; | Added|
| ohos.wallpaper | wallpaper | function getId(wallpaperType: WallpaperType, callback: AsyncCallback<number>): void;<br>function getId(wallpaperType: WallpaperType): Promise<number>; | Added|
| ohos.wallpaper | wallpaper | function getColors(wallpaperType: WallpaperType, callback: AsyncCallback<Array<RgbaColor>>): void;<br>function getColors(wallpaperType: WallpaperType): Promise<Array<RgbaColor>>; | Added|
| ohos.wallpaper | WallpaperType | WALLPAPER_LOCKSCREEN | Added|
| ohos.wallpaper | WallpaperType | WALLPAPER_SYSTEM | Added|
| ohos.systemTime | systemTime | function getTimezone(callback: AsyncCallback<string>): void;<br>function getTimezone(): Promise<string>; | Added|
| ohos.systemTime | systemTime | function getDate(callback: AsyncCallback<Date>): void;<br>function getDate(): Promise<Date>; | Added|
| ohos.systemTime | systemTime | function getRealTime(isNano?: boolean, callback: AsyncCallback<number>): void;<br>function getRealTime(isNano?: boolean): Promise<number>; | Added|
| ohos.systemTime | systemTime | function getRealActiveTime(isNano?: boolean, callback: AsyncCallback<number>): void;<br>function getRealActiveTime(isNano?: boolean): Promise<number>; | Added|
| ohos.systemTime | systemTime | function getCurrentTime(isNano?: boolean, callback: AsyncCallback<number>): void;<br>function getCurrentTime(isNano?: boolean): Promise<number>; | Added|
| ohos.screenLock | screenLock | function unlockScreen(callback: AsyncCallback<void>): void;<br>function unlockScreen():Promise<void>; | Added|
| ohos.screenLock | screenLock | function isSecureMode(callback: AsyncCallback<boolean>): void;<br>function isSecureMode(): Promise<boolean>; | Added|
| ohos.screenLock | screenLock | function isScreenLocked(callback: AsyncCallback<boolean>): void;<br>function isScreenLocked(): Promise<boolean>; | Added|
| ohos.request | UploadTask | remove(callback: AsyncCallback<boolean>): void;<br>remove(): Promise<boolean>; | Added|
| ohos.request | UploadTask | off(type: 'headerReceive', callback?: (header: object) => void): void; | Added|
| ohos.request | UploadTask | on(type: 'headerReceive', callback: (header: object) => void): void; | Added|
| ohos.request | UploadTask | off(type: 'progress', callback?: (uploadedSize: number, totalSize: number) => void): void; | Added|
| ohos.request | UploadTask | on(type: 'progress', callback: (uploadedSize: number, totalSize: number) => void): void; | Added|
| ohos.request | UploadConfig | data: Array<RequestData>; | Added|
| ohos.request | UploadConfig | files: Array<File>; | Added|
| ohos.request | UploadConfig | method: string; | Added|
| ohos.request | UploadConfig | header: Object; | Added|
| ohos.request | UploadConfig | url: string; | Added|
| ohos.request | RequestData | value: string; | Added|
| ohos.request | RequestData | name: string; | Added|
| ohos.request | File | type: string; | Added|
| ohos.request | File | uri: string; | Added|
| ohos.request | File | name: string; | Added|
| ohos.request | File | filename: string; | Added|
| ohos.request | DownloadTask | queryMimeType(callback: AsyncCallback<string>): void;<br>queryMimeType(): Promise<string>; | Added|
| ohos.request | DownloadTask | query(callback: AsyncCallback<DownloadInfo>): void;<br>query(): Promise<DownloadInfo>; | Added|
| ohos.request | DownloadTask | resume(callback: AsyncCallback<void>): void;<br>resume(): Promise<void>; | Added|
| ohos.request | DownloadTask | pause(callback: AsyncCallback<void>): void;<br>pause(): Promise<void>; | Added|
| ohos.request | DownloadTask | remove(callback: AsyncCallback<boolean>): void;<br>remove(): Promise<boolean>; | Added|
| ohos.request | DownloadTask | off(type: 'fail', callback?: (err: number) => void): void; | Added|
| ohos.request | DownloadTask | on(type: 'fail', callback: (err: number) => void): void; | Added|
| ohos.request | DownloadTask | off(type: 'complete' \| 'pause' \| 'remove', callback?: () => void): void; | Added|
| ohos.request | DownloadTask | off(type: 'complete' \| 'pause' \| 'remove', callback?: () => void): void; | Added|
| ohos.request | DownloadTask | off(type: 'complete' \| 'pause' \| 'remove', callback?: () => void): void; | Added|
| ohos.request | DownloadTask | on(type: 'complete' \| 'pause' \| 'remove', callback: () => void): void; | Added|
| ohos.request | DownloadTask | on(type: 'complete' \| 'pause' \| 'remove', callback: () => void): void; | Added|
| ohos.request | DownloadTask | on(type: 'complete' \| 'pause' \| 'remove', callback: () => void): void; | Added|
| ohos.request | DownloadTask | off(type: 'progress', callback?: (receivedSize: number, totalSize: number) => void): void; | Added|
| ohos.request | DownloadTask | on(type: 'progress', callback: (receivedSize: number, totalSize: number) => void): void; | Added|
| ohos.request | DownloadInfo | downloadTotalBytes: number; | Added|
| ohos.request | DownloadInfo | downloadTitle: string; | Added|
| ohos.request | DownloadInfo | targetURI: string; | Added|
| ohos.request | DownloadInfo | status: number; | Added|
| ohos.request | DownloadInfo | pausedReason: number; | Added|
| ohos.request | DownloadInfo | filePath: string; | Added|
| ohos.request | DownloadInfo | fileName: string; | Added|
| ohos.request | DownloadInfo | failedReason: number; | Added|
| ohos.request | DownloadInfo | downloadId: number; | Added|
| ohos.request | DownloadInfo | downloadedBytes: number; | Added|
| ohos.request | DownloadInfo | description: string; | Added|
| ohos.request | DownloadConfig | title?: string; | Added|
| ohos.request | DownloadConfig | filePath?: string; | Added|
| ohos.request | DownloadConfig | networkType?: number; | Added|
| ohos.request | DownloadConfig | description?: string; | Added|
| ohos.request | DownloadConfig | enableRoaming?: boolean; | Added|
| ohos.request | DownloadConfig | enableMetered?: boolean; | Added|
| ohos.request | DownloadConfig | header?: Object; | Added|
| ohos.request | DownloadConfig | url: string; | Added|
| ohos.request | request | function upload(config: UploadConfig, callback: AsyncCallback<UploadTask>): void;<br>function upload(config: UploadConfig): Promise<UploadTask>; | Added|
| ohos.request | request | function download(config: DownloadConfig, callback: AsyncCallback<DownloadTask>): void;<br>function download(config: DownloadConfig): Promise<DownloadTask>; | Added|
| ohos.request | request | const SESSION_SUCCESSFUL: number; | Added|
| ohos.request | request | const SESSION_RUNNING: number; | Added|
| ohos.request | request | const SESSION_PENDING: number; | Added|
| ohos.request | request | const SESSION_PAUSED: number; | Added|
| ohos.request | request | const SESSION_FAILED: number; | Added|
| ohos.request | request | const PAUSED_WAITING_TO_RETRY: number; | Added|
| ohos.request | request | const PAUSED_WAITING_FOR_NETWORK: number; | Added|
| ohos.request | request | const PAUSED_UNKNOWN: number; | Added|
| ohos.request | request | const PAUSED_QUEUED_FOR_WIFI: number; | Added|
| ohos.request | request | const ERROR_UNKNOWN: number; | Added|
| ohos.request | request | const ERROR_UNHANDLED_HTTP_CODE: number; | Added|
| ohos.request | request | const ERROR_TOO_MANY_REDIRECTS: number; | Added|
| ohos.request | request | const ERROR_INSUFFICIENT_SPACE: number; | Added|
| ohos.request | request | const ERROR_HTTP_DATA_ERROR: number; | Added|
| ohos.request | request | const ERROR_FILE_ERROR: number; | Added|
| ohos.request | request | const ERROR_FILE_ALREADY_EXISTS: number; | Added|
| ohos.request | request | const ERROR_DEVICE_NOT_FOUND: number; | Added|
| ohos.request | request | const ERROR_CANNOT_RESUME: number; | Added|
| ohos.request | request | const NETWORK_WIFI: number; | Added|
| ohos.request | request | const NETWORK_MOBILE: number; | Added|
| ohos.pasteboard | SystemPasteboard | setPasteData(data: PasteData, callback: AsyncCallback<void>): void;<br>setPasteData(data: PasteData): Promise<void>; | Added|
| ohos.pasteboard | SystemPasteboard | hasPasteData(callback: AsyncCallback<boolean>): void;<br>hasPasteData(): Promise<boolean>; | Added|
| ohos.pasteboard | SystemPasteboard | getPasteData(callback: AsyncCallback<PasteData>): void;<br>getPasteData(): Promise<PasteData>; | Added|
| ohos.pasteboard | SystemPasteboard | clear(callback: AsyncCallback<void>): void;<br>clear(): Promise<void>; | Added|
| ohos.pasteboard | SystemPasteboard | off(type: 'update', callback?: () => void): void; | Added|
| ohos.pasteboard | SystemPasteboard | on(type: 'update', callback: () => void): void; | Added|
| ohos.pasteboard | PasteData | replaceRecordAt(index: number, record: PasteDataRecord): boolean; | Added|
| ohos.pasteboard | PasteData | removeRecordAt(index: number): boolean; | Added|
| ohos.pasteboard | PasteData | hasMimeType(mimeType: string): boolean; | Added|
| ohos.pasteboard | PasteData | getTag(): string; | Added|
| ohos.pasteboard | PasteData | getRecordCount(): number; | Added|
| ohos.pasteboard | PasteData | getRecordAt(index: number): PasteDataRecord; | Added|
| ohos.pasteboard | PasteData | getProperty(): PasteDataProperty; | Added|
| ohos.pasteboard | PasteData | getPrimaryUri(): string; | Added|
| ohos.pasteboard | PasteData | getPrimaryText(): string; | Added|
| ohos.pasteboard | PasteData | getPrimaryMimeType(): string; | Added|
| ohos.pasteboard | PasteData | getPrimaryWant(): Want; | Added|
| ohos.pasteboard | PasteData | getPrimaryHtml(): string; | Added|
| ohos.pasteboard | PasteData | getMimeTypes(): Array<string>; | Added|
| ohos.pasteboard | PasteData | addUriRecord(uri: string): void; | Added|
| ohos.pasteboard | PasteData | addTextRecord(text: string): void; | Added|
| ohos.pasteboard | PasteData | addRecord(record: PasteDataRecord): void; | Added|
| ohos.pasteboard | PasteData | addWantRecord(want: Want): void; | Added|
| ohos.pasteboard | PasteData | addHtmlRecord(htmlText: string): void; | Added|
| ohos.pasteboard | PasteDataRecord | convertToText(callback: AsyncCallback<string>): void;<br>convertToText(): Promise<string>; | Added|
| ohos.pasteboard | PasteDataRecord | uri: string; | Added|
| ohos.pasteboard | PasteDataRecord | plainText: string; | Added|
| ohos.pasteboard | PasteDataRecord | mimeType: string; | Added|
| ohos.pasteboard | PasteDataRecord | want: Want; | Added|
| ohos.pasteboard | PasteDataRecord | htmlText: string; | Added|
| ohos.pasteboard | PasteDataProperty | localOnly: boolean; | Added|
| ohos.pasteboard | PasteDataProperty | readonly timestamp: number; | Added|
| ohos.pasteboard | PasteDataProperty | tag: string; | Added|
| ohos.pasteboard | PasteDataProperty | readonly mimeTypes: Array<string>; | Added|
| ohos.pasteboard | PasteDataProperty | additions: { [key: string]: object } | Added|
| ohos.pasteboard | pasteboard | function getSystemPasteboard(): SystemPasteboard; | Added|
| ohos.pasteboard | pasteboard | function createUriRecord(uri: string): PasteDataRecord; | Added|
| ohos.pasteboard | pasteboard | function createPlainTextRecord(text: string): PasteDataRecord; | Added|
| ohos.pasteboard | pasteboard | function createWantRecord(want: Want): PasteDataRecord; | Added|
| ohos.pasteboard | pasteboard | function createHtmlTextRecord(htmlText: string): PasteDataRecord; | Added|
| ohos.pasteboard | pasteboard | function createUriData(uri: string): PasteData; | Added|
| ohos.pasteboard | pasteboard | function createPlainTextData(text: string): PasteData; | Added|
| ohos.pasteboard | pasteboard | function createWantData(want: Want): PasteData; | Added|
| ohos.pasteboard | pasteboard | function createHtmlData(htmlText: string): PasteData; | Added|
| ohos.pasteboard | pasteboard | const MIMETYPE_TEXT_URI: string; | Added|
| ohos.pasteboard | pasteboard | const MIMETYPE_TEXT_PLAIN: string; | Added|
| ohos.pasteboard | pasteboard | const MIMETYPE_TEXT_WANT: string; | Added|
| ohos.pasteboard | pasteboard | const MIMETYPE_TEXT_HTML: string; | Added|
| ohos.pasteboard | pasteboard | const MAX_RECORD_NUM: number; | Added|
| ohos.inputmethodengine | KeyEvent | readonly keyAction: number; | Added|
| ohos.inputmethodengine | KeyEvent | readonly keyCode: number; | Added|
| ohos.inputmethodengine | EditorAttribute | readonly enterKeyType: number; | Added|
| ohos.inputmethodengine | EditorAttribute | readonly inputPattern: number; | Added|
| ohos.inputmethodengine | KeyboardDelegate | off(type: 'textChange', callback?: (text: string) => void): void; | Added|
| ohos.inputmethodengine | KeyboardDelegate | on(type: 'textChange', callback: (text: string) => void): void; | Added|
| ohos.inputmethodengine | KeyboardDelegate | off(type: 'selectionChange', callback?: (oldBegin: number, oldEnd: number, newBegin: number, newEnd: number) => void): void; | Added|
| ohos.inputmethodengine | KeyboardDelegate | on(type: 'selectionChange', callback: (oldBegin: number, oldEnd: number, newBegin: number, newEnd: number) => void): void; | Added|
| ohos.inputmethodengine | KeyboardDelegate | off(type: 'cursorContextChange', callback?: (x: number, y: number, height: number) => void): void; | Added|
| ohos.inputmethodengine | KeyboardDelegate | on(type: 'cursorContextChange', callback: (x: number, y: number, height: number) => void): void; | Added|
| ohos.inputmethodengine | KeyboardDelegate | off(type: 'keyDown'\|'keyUp', callback?: (event: KeyEvent) => boolean): void; | Added|
| ohos.inputmethodengine | KeyboardDelegate | off(type: 'keyDown'\|'keyUp', callback?: (event: KeyEvent) => boolean): void; | Added|
| ohos.inputmethodengine | KeyboardDelegate | on(type: 'keyDown'\|'keyUp', callback: (event: KeyEvent) => boolean): void; | Added|
| ohos.inputmethodengine | KeyboardDelegate | on(type: 'keyDown'\|'keyUp', callback: (event: KeyEvent) => boolean): void; | Added|
| ohos.inputmethodengine | TextInputClient | getEditorAttribute(callback: AsyncCallback<EditorAttribute>): void;<br>getEditorAttribute(): Promise<EditorAttribute>; | Added|
| ohos.inputmethodengine | TextInputClient | getBackward(length: number, callback: AsyncCallback<string>): void;<br>getBackward(length: number): Promise<string>; | Added|
| ohos.inputmethodengine | TextInputClient | getForward(length: number, callback: AsyncCallback<string>): void;<br>getForward(length: number): Promise<string>; | Added|
| ohos.inputmethodengine | TextInputClient | insertText(text: string, callback: AsyncCallback<boolean>): void;<br>insertText(text: string): Promise<boolean>; | Added|
| ohos.inputmethodengine | TextInputClient | deleteBackward(length: number, callback: AsyncCallback<boolean>): void;<br>deleteBackward(length: number): Promise<boolean>; | Added|
| ohos.inputmethodengine | TextInputClient | deleteForward(length: number, callback: AsyncCallback<boolean>): void;<br>deleteForward(length: number): Promise<boolean>; | Added|
| ohos.inputmethodengine | TextInputClient | sendKeyFunction(action: number, callback: AsyncCallback<boolean>): void;<br>sendKeyFunction(action: number): Promise<boolean>; | Added|
| ohos.inputmethodengine | InputMethodEngine | off(type: 'keyboardShow'\|'keyboardHide', callback?: () => void): void; | Added|
| ohos.inputmethodengine | InputMethodEngine | off(type: 'keyboardShow'\|'keyboardHide', callback?: () => void): void; | Added|
| ohos.inputmethodengine | InputMethodEngine | on(type: 'keyboardShow'\|'keyboardHide', callback: () => void): void; | Added|
| ohos.inputmethodengine | InputMethodEngine | on(type: 'keyboardShow'\|'keyboardHide', callback: () => void): void; | Added|
| ohos.inputmethodengine | InputMethodEngine | off(type: 'inputStart', callback?: (kbController: KeyboardController, textInputClient: TextInputClient) => void): void; | Added|
| ohos.inputmethodengine | InputMethodEngine | on(type: 'inputStart', callback: (kbController: KeyboardController, textInputClient: TextInputClient) => void): void; | Added|
| ohos.inputmethodengine | KeyboardController | hideKeyboard(callback: AsyncCallback<void>): void;<br>hideKeyboard(): Promise<void>; | Added|
| ohos.inputmethodengine | inputMethodEngine | function createKeyboardDelegate(): KeyboardDelegate; | Added|
| ohos.inputmethodengine | inputMethodEngine | function getInputMethodEngine(): InputMethodEngine; | Added|
| ohos.inputmethodengine | inputMethodEngine | const OPTION_NO_FULLSCREEN: number; | Added|
| ohos.inputmethodengine | inputMethodEngine | const OPTION_MULTI_LINE: number; | Added|
| ohos.inputmethodengine | inputMethodEngine | const OPTION_AUTO_WORDS: number; | Added|
| ohos.inputmethodengine | inputMethodEngine | const OPTION_AUTO_CAP_SENTENCES: number; | Added|
| ohos.inputmethodengine | inputMethodEngine | const OPTION_AUTO_CAP_CHARACTERS: number; | Added|
| ohos.inputmethodengine | inputMethodEngine | const OPTION_NONE: number; | Added|
| ohos.inputmethodengine | inputMethodEngine | const OPTION_ASCII: number; | Added|
| ohos.inputmethodengine | inputMethodEngine | const DISPLAY_MODE_FULL: number; | Added|
| ohos.inputmethodengine | inputMethodEngine | const DISPLAY_MODE_PART: number; | Added|
| ohos.inputmethodengine | inputMethodEngine | const FLAG_SINGLE_LINE: number; | Added|
| ohos.inputmethodengine | inputMethodEngine | const FLAG_SELECTING: number; | Added|
| ohos.inputmethodengine | inputMethodEngine | const PATTERN_PASSWORD: number; | Added|
| ohos.inputmethodengine | inputMethodEngine | const PATTERN_URI: number; | Added|
| ohos.inputmethodengine | inputMethodEngine | const PATTERN_EMAIL: number; | Added|
| ohos.inputmethodengine | inputMethodEngine | const PATTERN_DATETIME: number; | Added|
| ohos.inputmethodengine | inputMethodEngine | const PATTERN_PHONE: number; | Added|
| ohos.inputmethodengine | inputMethodEngine | const PATTERN_NUMBER: number; | Added|
| ohos.inputmethodengine | inputMethodEngine | const PATTERN_TEXT: number; | Added|
| ohos.inputmethodengine | inputMethodEngine | const PATTERN_NULL: number; | Added|
| ohos.inputmethodengine | inputMethodEngine | const ENTER_KEY_TYPE_PREVIOUS: number; | Added|
| ohos.inputmethodengine | inputMethodEngine | const ENTER_KEY_TYPE_DONE: number; | Added|
| ohos.inputmethodengine | inputMethodEngine | const ENTER_KEY_TYPE_NEXT: number; | Added|
| ohos.inputmethodengine | inputMethodEngine | const ENTER_KEY_TYPE_SEND: number; | Added|
| ohos.inputmethodengine | inputMethodEngine | const ENTER_KEY_TYPE_SEARCH: number; | Added|
| ohos.inputmethodengine | inputMethodEngine | const ENTER_KEY_TYPE_GO: number; | Added|
| ohos.inputmethodengine | inputMethodEngine | const ENTER_KEY_TYPE_UNSPECIFIED: number; | Added|
| ohos.inputmethod | InputMethodProperty | readonly methodId: string; | Added|
| ohos.inputmethod | InputMethodProperty | readonly packageName: string; | Added|
| ohos.inputmethod | InputMethodController | stopInput(callback: AsyncCallback<boolean>): void;<br>stopInput(): Promise<boolean>; | Added|
| ohos.inputmethod | InputMethodSetting | displayOptionalInputMethod(callback: AsyncCallback<void>): void;<br>displayOptionalInputMethod(): Promise<void>; | Added|
| ohos.inputmethod | InputMethodSetting | listInputMethod(callback: AsyncCallback<Array<InputMethodProperty>>): void;<br>listInputMethod(): Promise<Array<InputMethodProperty>>; | Added|
| ohos.inputmethod | inputMethod | function getInputMethodController(): InputMethodController; | Added|
| ohos.inputmethod | inputMethod | function getInputMethodSetting(): InputMethodSetting; | Added|
| ohos.inputmethod | inputMethod | const MAX_TYPE_NUM: number | Added|
# JS API Changes of the Multimodal Input Subsystem
The table below lists the APIs changes of the multimodal input subsystem in OpenHarmony 3.1 Release over OpenHarmony 3.0 LTS.
## API Changes
| Module| Class| Method/Attribute/Enumeration/Constant| Change Type|
|---|---|---|---|
| ohos.multimodalInput.inputDevice | inputDevice | function getDevice(deviceId: number, callback: AsyncCallback<InputDeviceData>): void;<br>function getDevice(deviceId: number): Promise<InputDeviceData>; | Added|
| ohos.multimodalInput.inputDevice | inputDevice | function getDeviceIds(callback: AsyncCallback<Array<number>>): void;<br>function getDeviceIds(): Promise<Array<number>>; | Added|
| ohos.multimodalInput.inputDevice | InputDeviceData | axisRanges : Array<AxisRange>; | Added|
| ohos.multimodalInput.inputDevice | InputDeviceData | sources : Array<SourceType>; | Added|
| ohos.multimodalInput.inputDevice | InputDeviceData | name: string; | Added|
| ohos.multimodalInput.inputDevice | InputDeviceData | id: number; | Added|
| ohos.multimodalInput.inputDevice | AxisRange | min: number; | Added|
| ohos.multimodalInput.inputDevice | AxisRange | max : number; | Added|
| ohos.multimodalInput.inputDevice | AxisRange | axis : AxisType; | Added|
| ohos.multimodalInput.inputDevice | AxisRange | source: SourceType; | Added|
# JS API Changes of the Multimedia Subsystem
The table below lists the APIs changes of the multimedia subsystem in OpenHarmony 3.1 Release over OpenHarmony 3.0 LTS.
## API Changes
| Module| Class| Method/Attribute/Enumeration/Constant| Change Type|
|---|---|---|---|
| ohos.multimedia.mediaLibrary | Size | height: number; | Added|
| ohos.multimedia.mediaLibrary | Size | width: number; | Added|
| ohos.multimedia.mediaLibrary | MediaLibrary | release(callback: AsyncCallback<void>): void;<br>release(): Promise<void>; | Added|
| ohos.multimedia.mediaLibrary | MediaLibrary | startMediaSelect(option: MediaSelectOption, callback: AsyncCallback<Array<string>>): void;<br>startMediaSelect(option: MediaSelectOption): Promise<Array<string>>; | Added|
| ohos.multimedia.mediaLibrary | MediaLibrary | startImagePreview(images: Array<string>, index: number, callback: AsyncCallback<void>): void;<br>startImagePreview(images: Array<string>, callback: AsyncCallback<void>): void;<br>startImagePreview(images: Array<string>, index?: number): Promise<void>; | Added|
| ohos.multimedia.mediaLibrary | MediaLibrary | storeMediaAsset(option: MediaAssetOption, callback: AsyncCallback<string>): void;<br>storeMediaAsset(option: MediaAssetOption): Promise<string>; | Added|
| ohos.multimedia.mediaLibrary | MediaLibrary | getAlbums(options: MediaFetchOptions, callback: AsyncCallback<Array<Album>>): void;<br>getAlbums(options: MediaFetchOptions): Promise<Array<Album>>; | Added|
| ohos.multimedia.mediaLibrary | MediaLibrary | createAsset(mediaType: MediaType, displayName: string, relativePath: string, callback: AsyncCallback<FileAsset>): void;<br>createAsset(mediaType: MediaType, displayName: string, relativePath: string): Promise<FileAsset>; | Added|
| ohos.multimedia.mediaLibrary | MediaLibrary | off(type: 'deviceChange'\|'albumChange'\|'imageChange'\|'audioChange'\|'videoChange'\|'fileChange'\|'remoteFileChange', callback?: Callback<void>): void; | Added|
| ohos.multimedia.mediaLibrary | MediaLibrary | off(type: 'deviceChange'\|'albumChange'\|'imageChange'\|'audioChange'\|'videoChange'\|'fileChange'\|'remoteFileChange', callback?: Callback<void>): void; | Added|
| ohos.multimedia.mediaLibrary | MediaLibrary | off(type: 'deviceChange'\|'albumChange'\|'imageChange'\|'audioChange'\|'videoChange'\|'fileChange'\|'remoteFileChange', callback?: Callback<void>): void; | Added|
| ohos.multimedia.mediaLibrary | MediaLibrary | off(type: 'deviceChange'\|'albumChange'\|'imageChange'\|'audioChange'\|'videoChange'\|'fileChange'\|'remoteFileChange', callback?: Callback<void>): void; | Added|
| ohos.multimedia.mediaLibrary | MediaLibrary | off(type: 'deviceChange'\|'albumChange'\|'imageChange'\|'audioChange'\|'videoChange'\|'fileChange'\|'remoteFileChange', callback?: Callback<void>): void; | Added|
| ohos.multimedia.mediaLibrary | MediaLibrary | off(type: 'deviceChange'\|'albumChange'\|'imageChange'\|'audioChange'\|'videoChange'\|'fileChange'\|'remoteFileChange', callback?: Callback<void>): void; | Added|
| ohos.multimedia.mediaLibrary | MediaLibrary | off(type: 'deviceChange'\|'albumChange'\|'imageChange'\|'audioChange'\|'videoChange'\|'fileChange'\|'remoteFileChange', callback?: Callback<void>): void; | Added|
| ohos.multimedia.mediaLibrary | MediaLibrary | on(type: 'deviceChange'\|'albumChange'\|'imageChange'\|'audioChange'\|'videoChange'\|'fileChange'\|'remoteFileChange', callback: Callback<void>): void; | Added|
| ohos.multimedia.mediaLibrary | MediaLibrary | on(type: 'deviceChange'\|'albumChange'\|'imageChange'\|'audioChange'\|'videoChange'\|'fileChange'\|'remoteFileChange', callback: Callback<void>): void; | Added|
| ohos.multimedia.mediaLibrary | MediaLibrary | on(type: 'deviceChange'\|'albumChange'\|'imageChange'\|'audioChange'\|'videoChange'\|'fileChange'\|'remoteFileChange', callback: Callback<void>): void; | Added|
| ohos.multimedia.mediaLibrary | MediaLibrary | on(type: 'deviceChange'\|'albumChange'\|'imageChange'\|'audioChange'\|'videoChange'\|'fileChange'\|'remoteFileChange', callback: Callback<void>): void; | Added|
| ohos.multimedia.mediaLibrary | MediaLibrary | on(type: 'deviceChange'\|'albumChange'\|'imageChange'\|'audioChange'\|'videoChange'\|'fileChange'\|'remoteFileChange', callback: Callback<void>): void; | Added|
| ohos.multimedia.mediaLibrary | MediaLibrary | on(type: 'deviceChange'\|'albumChange'\|'imageChange'\|'audioChange'\|'videoChange'\|'fileChange'\|'remoteFileChange', callback: Callback<void>): void; | Added|
| ohos.multimedia.mediaLibrary | MediaLibrary | on(type: 'deviceChange'\|'albumChange'\|'imageChange'\|'audioChange'\|'videoChange'\|'fileChange'\|'remoteFileChange', callback: Callback<void>): void; | Added|
| ohos.multimedia.mediaLibrary | MediaLibrary | getFileAssets(options: MediaFetchOptions, callback: AsyncCallback<FetchFileResult>): void;<br>getFileAssets(options: MediaFetchOptions): Promise<FetchFileResult>; | Added|
| ohos.multimedia.mediaLibrary | MediaLibrary | getPublicDirectory(type: DirectoryType, callback: AsyncCallback<string>): void;<br>getPublicDirectory(type: DirectoryType): Promise<string>; | Added|
| ohos.multimedia.mediaLibrary | DirectoryType | DIR_DOWNLOAD | Added|
| ohos.multimedia.mediaLibrary | DirectoryType | DIR_DOCUMENTS | Added|
| ohos.multimedia.mediaLibrary | DirectoryType | DIR_AUDIO | Added|
| ohos.multimedia.mediaLibrary | DirectoryType | DIR_IMAGE | Added|
| ohos.multimedia.mediaLibrary | DirectoryType | DIR_VIDEO | Added|
| ohos.multimedia.mediaLibrary | DirectoryType | DIR_CAMERA = 0 | Added|
| ohos.multimedia.mediaLibrary | Album | getFileAssets(callback: AsyncCallback<FetchFileResult>): void;<br>getFileAssets(options: MediaFetchOptions, callback: AsyncCallback<FetchFileResult>): void;<br>getFileAssets(options?: MediaFetchOptions): Promise<FetchFileResult>; | Added|
| ohos.multimedia.mediaLibrary | Album | commitModify(callback: AsyncCallback<void>): void;<br>commitModify(): Promise<void>; | Added|
| ohos.multimedia.mediaLibrary | Album | readonly coverUri: string; | Added|
| ohos.multimedia.mediaLibrary | Album | readonly relativePath: string; | Added|
| ohos.multimedia.mediaLibrary | Album | readonly count: number; | Added|
| ohos.multimedia.mediaLibrary | Album | readonly dateModified: number; | Added|
| ohos.multimedia.mediaLibrary | Album | readonly albumUri: string; | Added|
| ohos.multimedia.mediaLibrary | Album | albumName: string; | Added|
| ohos.multimedia.mediaLibrary | Album | readonly albumId: number; | Added|
| ohos.multimedia.mediaLibrary | FetchFileResult | getAllObject(callback: AsyncCallback<Array<FileAsset>>): void;<br>getAllObject(): Promise<Array<FileAsset>>; | Added|
| ohos.multimedia.mediaLibrary | FetchFileResult | getPositionObject(index: number, callback: AsyncCallback<FileAsset>): void;<br>getPositionObject(index: number): Promise<FileAsset>; | Added|
| ohos.multimedia.mediaLibrary | FetchFileResult | getLastObject(callback: AsyncCallback<FileAsset>): void;<br>getLastObject(): Promise<FileAsset>; | Added|
| ohos.multimedia.mediaLibrary | FetchFileResult | getNextObject(callback: AsyncCallback<FileAsset>): void;<br>getNextObject(): Promise<FileAsset>; | Added|
| ohos.multimedia.mediaLibrary | FetchFileResult | getFirstObject(callback: AsyncCallback<FileAsset>): void;<br>getFirstObject(): Promise<FileAsset>; | Added|
| ohos.multimedia.mediaLibrary | FetchFileResult | close(): void; | Added|
| ohos.multimedia.mediaLibrary | FetchFileResult | isAfterLast(): boolean; | Added|
| ohos.multimedia.mediaLibrary | FetchFileResult | getCount(): number; | Added|
| ohos.multimedia.mediaLibrary | MediaFetchOptions | extendArgs?: string; | Added|
| ohos.multimedia.mediaLibrary | MediaFetchOptions | networkId?: string; | Added|
| ohos.multimedia.mediaLibrary | MediaFetchOptions | uri?: string; | Added|
| ohos.multimedia.mediaLibrary | MediaFetchOptions | order?: string; | Added|
| ohos.multimedia.mediaLibrary | MediaFetchOptions | selectionArgs: Array<string>; | Added|
| ohos.multimedia.mediaLibrary | MediaFetchOptions | selections: string; | Added|
| ohos.multimedia.mediaLibrary | FileKey | ALBUM_NAME = "bucket_display_name" | Added|
| ohos.multimedia.mediaLibrary | FileKey | ALBUM_ID = "bucket_id" | Added|
| ohos.multimedia.mediaLibrary | FileKey | ORIENTATION = "orientation" | Added|
| ohos.multimedia.mediaLibrary | FileKey | HEIGHT = "height" | Added|
| ohos.multimedia.mediaLibrary | FileKey | WIDTH = "width" | Added|
| ohos.multimedia.mediaLibrary | FileKey | DURATION = "duration" | Added|
| ohos.multimedia.mediaLibrary | FileKey | AUDIOALBUM = "audio_album" | Added|
| ohos.multimedia.mediaLibrary | FileKey | ARTIST = "artist" | Added|
| ohos.multimedia.mediaLibrary | FileKey | TITLE = "title" | Added|
| ohos.multimedia.mediaLibrary | FileKey | DATE_TAKEN = "date_taken" | Added|
| ohos.multimedia.mediaLibrary | FileKey | DATE_MODIFIED = "date_modified" | Added|
| ohos.multimedia.mediaLibrary | FileKey | DATE_ADDED = "date_added" | Added|
| ohos.multimedia.mediaLibrary | FileKey | SIZE = "size" | Added|
| ohos.multimedia.mediaLibrary | FileKey | MEDIA_TYPE = "media_type" | Added|
| ohos.multimedia.mediaLibrary | FileKey | MIME_TYPE = "mime_type" | Added|
| ohos.multimedia.mediaLibrary | FileKey | PARENT = "parent" | Added|
| ohos.multimedia.mediaLibrary | FileKey | DISPLAY_NAME = "display_name" | Added|
| ohos.multimedia.mediaLibrary | FileKey | RELATIVE_PATH = "relative_path" | Added|
| ohos.multimedia.mediaLibrary | FileKey | ID = "file_id" | Added|
| ohos.multimedia.mediaLibrary | FileAsset | isTrash(callback: AsyncCallback<boolean>): void;<br>isTrash():Promise<boolean>; | Added|
| ohos.multimedia.mediaLibrary | FileAsset | trash(isTrash: boolean, callback: AsyncCallback<void>): void;<br>trash(isTrash: boolean): Promise<void>; | Added|
| ohos.multimedia.mediaLibrary | FileAsset | isFavorite(callback: AsyncCallback<boolean>): void;<br>isFavorite():Promise<boolean>; | Added|
| ohos.multimedia.mediaLibrary | FileAsset | favorite(isFavorite: boolean, callback: AsyncCallback<void>): void;<br>favorite(isFavorite: boolean): Promise<void>; | Added|
| ohos.multimedia.mediaLibrary | FileAsset | getThumbnail(callback: AsyncCallback<image.PixelMap>): void;<br>getThumbnail(size: Size, callback: AsyncCallback<image.PixelMap>): void;<br>getThumbnail(size?: Size): Promise<image.PixelMap>; | Added|
| ohos.multimedia.mediaLibrary | FileAsset | close(fd: number, callback: AsyncCallback<void>): void;<br>close(fd: number): Promise<void>; | Added|
| ohos.multimedia.mediaLibrary | FileAsset | open(mode: string, callback: AsyncCallback<number>): void;<br>open(mode: string): Promise<number>; | Added|
| ohos.multimedia.mediaLibrary | FileAsset | commitModify(callback: AsyncCallback<void>): void;<br>commitModify(): Promise<void>; | Added|
| ohos.multimedia.mediaLibrary | FileAsset | isDirectory(callback: AsyncCallback<boolean>): void;<br>isDirectory():Promise<boolean>; | Added|
| ohos.multimedia.mediaLibrary | FileAsset | readonly albumName: string; | Added|
| ohos.multimedia.mediaLibrary | FileAsset | readonly albumUri: string; | Added|
| ohos.multimedia.mediaLibrary | FileAsset | readonly albumId: number; | Added|
| ohos.multimedia.mediaLibrary | FileAsset | readonly duration: number; | Added|
| ohos.multimedia.mediaLibrary | FileAsset | orientation: number; | Added|
| ohos.multimedia.mediaLibrary | FileAsset | readonly height: number; | Added|
| ohos.multimedia.mediaLibrary | FileAsset | readonly width: number; | Added|
| ohos.multimedia.mediaLibrary | FileAsset | readonly audioAlbum: string; | Added|
| ohos.multimedia.mediaLibrary | FileAsset | readonly artist: string; | Added|
| ohos.multimedia.mediaLibrary | FileAsset | readonly dateTaken: number; | Added|
| ohos.multimedia.mediaLibrary | FileAsset | readonly dateModified: number; | Added|
| ohos.multimedia.mediaLibrary | FileAsset | readonly dateAdded: number; | Added|
| ohos.multimedia.mediaLibrary | FileAsset | readonly size: number; | Added|
| ohos.multimedia.mediaLibrary | FileAsset | readonly parent: number; | Added|
| ohos.multimedia.mediaLibrary | FileAsset | relativePath: string; | Added|
| ohos.multimedia.mediaLibrary | FileAsset | title: string; | Added|
| ohos.multimedia.mediaLibrary | FileAsset | displayName: string; | Added|
| ohos.multimedia.mediaLibrary | FileAsset | readonly mediaType: MediaType; | Added|
| ohos.multimedia.mediaLibrary | FileAsset | readonly mimeType: string; | Added|
| ohos.multimedia.mediaLibrary | FileAsset | readonly uri: string; | Added|
| ohos.multimedia.mediaLibrary | FileAsset | readonly id: number; | Added|
| ohos.multimedia.mediaLibrary | MediaSelectOption | count: number; | Added|
| ohos.multimedia.mediaLibrary | MediaSelectOption | type: 'image' \| 'video' \| 'media'; | Added|
| ohos.multimedia.mediaLibrary | MediaAssetOption | relativePath?: string; | Added|
| ohos.multimedia.mediaLibrary | MediaAssetOption | mimeType: string; | Added|
| ohos.multimedia.mediaLibrary | MediaAssetOption | src: string; | Added|
| ohos.multimedia.mediaLibrary | MediaType | AUDIO | Added|
| ohos.multimedia.mediaLibrary | MediaType | VIDEO | Added|
| ohos.multimedia.mediaLibrary | MediaType | IMAGE | Added|
| ohos.multimedia.mediaLibrary | MediaType | FILE = 0 | Added|
| ohos.multimedia.mediaLibrary | mediaLibrary | function getMediaLibrary(): MediaLibrary;<br>function getMediaLibrary(context: Context): MediaLibrary; | Added|
| ohos.multimedia.media | CodecMimeType | AUDIO_FLAC = 'audio/flac' | Added|
| ohos.multimedia.media | CodecMimeType | AUDIO_VORBIS = 'audio/vorbis' | Added|
| ohos.multimedia.media | CodecMimeType | AUDIO_AAC = 'audio/mp4a-latm' | Added|
| ohos.multimedia.media | CodecMimeType | VIDEO_VP8 = 'video/x-vnd.on2.vp8' | Added|
| ohos.multimedia.media | CodecMimeType | VIDEO_MPEG4 = 'video/mp4v-es' | Added|
| ohos.multimedia.media | CodecMimeType | VIDEO_MPEG2 = 'video/mpeg2' | Added|
| ohos.multimedia.media | CodecMimeType | VIDEO_AVC = 'video/avc' | Added|
| ohos.multimedia.media | CodecMimeType | VIDEO_H263 = 'video/h263' | Added|
| ohos.multimedia.media | SeekMode | SEEK_PREV_SYNC = 1 | Added|
| ohos.multimedia.media | SeekMode | SEEK_NEXT_SYNC = 0 | Added|
| ohos.multimedia.media | MediaDescription | [key : string]: Object; | Added|
| ohos.multimedia.media | MediaDescriptionKey | MD_KEY_AUD_SAMPLE_RATE = "sample_rate" | Added|
| ohos.multimedia.media | MediaDescriptionKey | MD_KEY_AUD_CHANNEL_COUNT = "channel_count" | Added|
| ohos.multimedia.media | MediaDescriptionKey | MD_KEY_FRAME_RATE = "frame_rate" | Added|
| ohos.multimedia.media | MediaDescriptionKey | MD_KEY_HEIGHT = "height" | Added|
| ohos.multimedia.media | MediaDescriptionKey | MD_KEY_WIDTH = "width" | Added|
| ohos.multimedia.media | MediaDescriptionKey | MD_KEY_BITRATE = "bitrate" | Added|
| ohos.multimedia.media | MediaDescriptionKey | MD_KEY_DURATION = "duration" | Added|
| ohos.multimedia.media | MediaDescriptionKey | MD_KEY_CODEC_MIME = "codec_mime" | Added|
| ohos.multimedia.media | MediaDescriptionKey | MD_KEY_TRACK_TYPE = "track_type" | Added|
| ohos.multimedia.media | MediaDescriptionKey | MD_KEY_TRACK_INDEX = "track_index" | Added|
| ohos.multimedia.media | MediaType | MEDIA_TYPE_VID = 1 | Added|
| ohos.multimedia.media | MediaType | MEDIA_TYPE_AUD = 0 | Added|
| ohos.multimedia.media | ContainerFormatType | CFT_MPEG_4A = "m4a" | Added|
| ohos.multimedia.media | ContainerFormatType | CFT_MPEG_4 = "mp4" | Added|
| ohos.multimedia.media | VideoPlayer | on(type: 'error', callback: ErrorCallback): void; | Added|
| ohos.multimedia.media | VideoPlayer | on(type: 'videoSizeChanged', callback: (width: number, height: number) => void): void; | Added|
| ohos.multimedia.media | VideoPlayer | on(type: 'startRenderFrame', callback: Callback<void>): void; | Added|
| ohos.multimedia.media | VideoPlayer | on(type: 'bufferingUpdate', callback: (infoType: BufferingInfoType, value: number) => void): void; | Added|
| ohos.multimedia.media | VideoPlayer | on(type: 'playbackCompleted', callback: Callback<void>): void; | Added|
| ohos.multimedia.media | VideoPlayer | setSpeed(speed:number, callback: AsyncCallback<number>): void;<br>setSpeed(speed:number): Promise<number>; | Added|
| ohos.multimedia.media | VideoPlayer | readonly height: number; | Added|
| ohos.multimedia.media | VideoPlayer | readonly width: number; | Added|
| ohos.multimedia.media | VideoPlayer | readonly state: VideoPlayState; | Added|
| ohos.multimedia.media | VideoPlayer | readonly duration: number; | Added|
| ohos.multimedia.media | VideoPlayer | readonly currentTime: number; | Added|
| ohos.multimedia.media | VideoPlayer | loop: boolean; | Added|
| ohos.multimedia.media | VideoPlayer | url: string; | Added|
| ohos.multimedia.media | VideoPlayer | getTrackDescription(callback: AsyncCallback<Array<MediaDescription>>): void;<br>getTrackDescription() : Promise<Array<MediaDescription>>; | Added|
| ohos.multimedia.media | VideoPlayer | release(callback: AsyncCallback<void>): void;<br>release(): Promise<void>; | Added|
| ohos.multimedia.media | VideoPlayer | setVolume(vol: number, callback: AsyncCallback<void>): void;<br>setVolume(vol: number): Promise<void>; | Added|
| ohos.multimedia.media | VideoPlayer | seek(timeMs: number, callback: AsyncCallback<number>): void;<br>seek(timeMs: number, mode:SeekMode, callback: AsyncCallback<number>): void;<br>seek(timeMs: number, mode?:SeekMode): Promise<number>; | Added|
| ohos.multimedia.media | VideoPlayer | reset(callback: AsyncCallback<void>): void;<br>reset(): Promise<void>; | Added|
| ohos.multimedia.media | VideoPlayer | stop(callback: AsyncCallback<void>): void;<br>stop(): Promise<void>; | Added|
| ohos.multimedia.media | VideoPlayer | pause(callback: AsyncCallback<void>): void;<br>pause(): Promise<void>; | Added|
| ohos.multimedia.media | VideoPlayer | play(callback: AsyncCallback<void>): void;<br>play(): Promise<void>; | Added|
| ohos.multimedia.media | VideoPlayer | prepare(callback: AsyncCallback<void>): void;<br>prepare(): Promise<void>; | Added|
| ohos.multimedia.media | VideoPlayer | setDisplaySurface(surfaceId: string, callback: AsyncCallback<void>): void;<br>setDisplaySurface(surfaceId: string): Promise<void>; | Added|
| ohos.multimedia.media | PlaybackSpeed | SPEED_FORWARD_2_00_X = 4 | Added|
| ohos.multimedia.media | PlaybackSpeed | SPEED_FORWARD_1_75_X = 3 | Added|
| ohos.multimedia.media | PlaybackSpeed | SPEED_FORWARD_1_25_X = 2 | Added|
| ohos.multimedia.media | PlaybackSpeed | SPEED_FORWARD_1_00_X = 1 | Added|
| ohos.multimedia.media | PlaybackSpeed | SPEED_FORWARD_0_75_X = 0 | Added|
| ohos.multimedia.media | AudioRecorder | on(type: 'error', callback: ErrorCallback): void; | Added|
| ohos.multimedia.media | AudioRecorder | on(type: 'prepare' \| 'start' \| 'pause' \| 'resume' \| 'stop' \| 'release' \| 'reset', callback: () => void): void; | Added|
| ohos.multimedia.media | AudioRecorder | on(type: 'prepare' \| 'start' \| 'pause' \| 'resume' \| 'stop' \| 'release' \| 'reset', callback: () => void): void; | Added|
| ohos.multimedia.media | AudioRecorder | on(type: 'prepare' \| 'start' \| 'pause' \| 'resume' \| 'stop' \| 'release' \| 'reset', callback: () => void): void; | Added|
| ohos.multimedia.media | AudioRecorder | on(type: 'prepare' \| 'start' \| 'pause' \| 'resume' \| 'stop' \| 'release' \| 'reset', callback: () => void): void; | Added|
| ohos.multimedia.media | AudioRecorder | on(type: 'prepare' \| 'start' \| 'pause' \| 'resume' \| 'stop' \| 'release' \| 'reset', callback: () => void): void; | Added|
| ohos.multimedia.media | AudioRecorder | on(type: 'prepare' \| 'start' \| 'pause' \| 'resume' \| 'stop' \| 'release' \| 'reset', callback: () => void): void; | Added|
| ohos.multimedia.media | AudioRecorder | on(type: 'prepare' \| 'start' \| 'pause' \| 'resume' \| 'stop' \| 'release' \| 'reset', callback: () => void): void; | Added|
| ohos.multimedia.media | AudioRecorder | reset(): void; | Added|
| ohos.multimedia.media | AudioRecorder | release(): void; | Added|
| ohos.multimedia.media | AudioRecorder | stop(): void; | Added|
| ohos.multimedia.media | AudioRecorder | resume(): void; | Added|
| ohos.multimedia.media | AudioRecorder | pause(): void; | Added|
| ohos.multimedia.media | AudioRecorder | start(): void; | Added|
| ohos.multimedia.media | AudioRecorder | prepare(config: AudioRecorderConfig): void; | Added|
| ohos.multimedia.media | AudioRecorderConfig | fileFormat?: ContainerFormatType; | Added|
| ohos.multimedia.media | AudioRecorderConfig | audioEncoderMime?: CodecMimeType; | Added|
| ohos.multimedia.media | AudioRecorderConfig | location?: Location; | Added|
| ohos.multimedia.media | AudioRecorderConfig | uri: string; | Added|
| ohos.multimedia.media | AudioRecorderConfig | format?: AudioOutputFormat; | Added|
| ohos.multimedia.media | AudioRecorderConfig | numberOfChannels?: number; | Added|
| ohos.multimedia.media | AudioRecorderConfig | audioSampleRate?: number; | Added|
| ohos.multimedia.media | AudioRecorderConfig | audioEncodeBitRate?: number; | Added|
| ohos.multimedia.media | AudioRecorderConfig | audioEncoder?: AudioEncoder; | Added|
| ohos.multimedia.media | Location | longitude: number; | Added|
| ohos.multimedia.media | Location | latitude: number; | Added|
| ohos.multimedia.media | AudioOutputFormat | AAC_ADTS = 6 | Added|
| ohos.multimedia.media | AudioOutputFormat | AMR_WB = 4 | Added|
| ohos.multimedia.media | AudioOutputFormat | AMR_NB = 3 | Added|
| ohos.multimedia.media | AudioOutputFormat | MPEG_4 = 2 | Added|
| ohos.multimedia.media | AudioOutputFormat | DEFAULT = 0 | Added|
| ohos.multimedia.media | AudioEncoder | HE_AAC = 4 | Added|
| ohos.multimedia.media | AudioEncoder | AAC_LC = 3 | Added|
| ohos.multimedia.media | AudioEncoder | AMR_WB = 2 | Added|
| ohos.multimedia.media | AudioEncoder | AMR_NB = 1 | Added|
| ohos.multimedia.media | AudioEncoder | DEFAULT = 0 | Added|
| ohos.multimedia.media | AudioPlayer | on(type: 'play' \| 'pause' \| 'stop' \| 'reset' \| 'dataLoad' \| 'finish' \| 'volumeChange', callback: () => void): void; | Added|
| ohos.multimedia.media | AudioPlayer | on(type: 'bufferingUpdate', callback: (infoType: BufferingInfoType, value: number) => void): void; | Added|
| ohos.multimedia.media | AudioPlayer | getTrackDescription(callback: AsyncCallback<Array<MediaDescription>>): void;<br>getTrackDescription() : Promise<Array<MediaDescription>>; | Added|
| ohos.multimedia.media | AudioPlayer | reset(): void; | Added|
| ohos.multimedia.media | BufferingInfoType | CACHED_DURATION = 4 | Added|
| ohos.multimedia.media | BufferingInfoType | BUFFERING_PERCENT = 3 | Added|
| ohos.multimedia.media | BufferingInfoType | BUFFERING_END = 2 | Added|
| ohos.multimedia.media | BufferingInfoType | BUFFERING_START = 1 | Added|
| ohos.multimedia.media | MediaErrorCode | MSERR_UNSUPPORTED = 9 | Added|
| ohos.multimedia.media | MediaErrorCode | MSERR_INVALID_STATE = 8 | Added|
| ohos.multimedia.media | MediaErrorCode | MSERR_SERVICE_DIED = 7 | Added|
| ohos.multimedia.media | MediaErrorCode | MSERR_UNKNOWN = 6 | Added|
| ohos.multimedia.media | MediaErrorCode | MSERR_TIMEOUT = 5 | Added|
| ohos.multimedia.media | MediaErrorCode | MSERR_IO = 4 | Added|
| ohos.multimedia.media | MediaErrorCode | MSERR_INVALID_VAL = 3 | Added|
| ohos.multimedia.media | MediaErrorCode | MSERR_OPERATION_NOT_PERMIT = 2 | Added|
| ohos.multimedia.media | MediaErrorCode | MSERR_NO_MEMORY = 1 | Added|
| ohos.multimedia.media | MediaErrorCode | MSERR_OK = 0 | Added|
| ohos.multimedia.media | media | function createVideoPlayer(callback: AsyncCallback<VideoPlayer>): void;<br>function createVideoPlayer() : Promise<VideoPlayer>; | Added|
| ohos.multimedia.media | media | function createAudioRecorder(): AudioRecorder; | Added|
| ohos.multimedia.image | ImagePacker | readonly supportedFormats: Array<string>; | Added|
| ohos.multimedia.image | ImagePacker | release(callback: AsyncCallback<void>): void;<br>release(): Promise<void>; | Added|
| ohos.multimedia.image | ImagePacker | packing(source: ImageSource, option: PackingOption, callback: AsyncCallback<ArrayBuffer>): void;<br>packing(source: ImageSource, option: PackingOption): Promise<ArrayBuffer>;<br>packing(source: PixelMap, option: PackingOption, callback: AsyncCallback<ArrayBuffer>): void;<br>packing(source: PixelMap, option: PackingOption): Promise<ArrayBuffer>; | Added|
| ohos.multimedia.image | ImageSource | readonly supportedFormats: Array<string>; | Added|
| ohos.multimedia.image | ImageSource | release(callback: AsyncCallback<void>): void;<br>release(): Promise<void>; | Added|
| ohos.multimedia.image | ImageSource | getImageProperty(key:string, options?: GetImagePropertyOptions): Promise<string>;<br>getImageProperty(key:string, callback: AsyncCallback<string>): void;<br>getImageProperty(key:string, options: GetImagePropertyOptions, callback: AsyncCallback<string>): void; | Added|
| ohos.multimedia.image | ImageSource | createPixelMap(options?: DecodingOptions): Promise<PixelMap>;<br>createPixelMap(callback: AsyncCallback<PixelMap>): void;<br>createPixelMap(options: DecodingOptions, callback: AsyncCallback<PixelMap>): void; | Added|
| ohos.multimedia.image | ImageSource | getImageInfo(index: number, callback: AsyncCallback<ImageInfo>): void;<br>getImageInfo(callback: AsyncCallback<ImageInfo>): void;<br>getImageInfo(index?: number): Promise<ImageInfo>; | Added|
| ohos.multimedia.image | PixelMap | release(callback: AsyncCallback<void>): void;<br>release(): Promise<void>; | Added|
| ohos.multimedia.image | PixelMap | getPixelBytesNumber(): number; | Added|
| ohos.multimedia.image | PixelMap | getBytesNumberPerRow(): number; | Added|
| ohos.multimedia.image | PixelMap | getImageInfo(): Promise<ImageInfo>;<br>getImageInfo(callback: AsyncCallback<ImageInfo>): void; | Added|
| ohos.multimedia.image | PixelMap | writeBufferToPixels(src: ArrayBuffer): Promise<void>;<br>writeBufferToPixels(src: ArrayBuffer, callback: AsyncCallback<void>): void; | Added|
| ohos.multimedia.image | PixelMap | writePixels(area: PositionArea): Promise<void>;<br>writePixels(area: PositionArea, callback: AsyncCallback<void>): void; | Added|
| ohos.multimedia.image | PixelMap | readPixels(area: PositionArea): Promise<void>;<br>readPixels(area: PositionArea, callback: AsyncCallback<void>): void; | Added|
| ohos.multimedia.image | PixelMap | readPixelsToBuffer(dst: ArrayBuffer): Promise<void>;<br>readPixelsToBuffer(dst: ArrayBuffer, callback: AsyncCallback<void>): void; | Added|
| ohos.multimedia.image | PixelMap | readonly isEditable: boolean; | Added|
| ohos.multimedia.image | image | function createImagePacker(): ImagePacker; | Added|
| ohos.multimedia.image | image | function createImageSource(uri: string): ImageSource;<br>function createImageSource(fd: number): ImageSource; | Added|
| ohos.multimedia.image | image | function createPixelMap(colors: ArrayBuffer, options: InitializationOptions, callback: AsyncCallback<PixelMap>): void;<br>function createPixelMap(colors: ArrayBuffer, options: InitializationOptions): Promise<PixelMap>; | Added|
| ohos.multimedia.image | InitializationOptions | editable?: boolean; | Added|
| ohos.multimedia.image | InitializationOptions | pixelFormat?: PixelMapFormat; | Added|
| ohos.multimedia.image | InitializationOptions | size: Size; | Added|
| ohos.multimedia.image | DecodingOptions | desiredPixelFormat?: PixelMapFormat; | Added|
| ohos.multimedia.image | DecodingOptions | desiredRegion?: Region; | Added|
| ohos.multimedia.image | DecodingOptions | desiredSize?: Size; | Added|
| ohos.multimedia.image | DecodingOptions | editable?: boolean; | Added|
| ohos.multimedia.image | DecodingOptions | rotate?: number; | Added|
| ohos.multimedia.image | DecodingOptions | sampleSize?: number; | Added|
| ohos.multimedia.image | DecodingOptions | index?: number; | Added|
| ohos.multimedia.image | GetImagePropertyOptions | defaultValue?: string; | Added|
| ohos.multimedia.image | GetImagePropertyOptions | index?: number; | Added|
| ohos.multimedia.image | PackingOption | quality: number; | Added|
| ohos.multimedia.image | PackingOption | format: string; | Added|
| ohos.multimedia.image | ImageInfo | size: Size; | Added|
| ohos.multimedia.image | PositionArea | region: Region; | Added|
| ohos.multimedia.image | PositionArea | stride: number; | Added|
| ohos.multimedia.image | PositionArea | offset: number; | Added|
| ohos.multimedia.image | PositionArea | pixels: ArrayBuffer; | Added|
| ohos.multimedia.image | Region | y: number; | Added|
| ohos.multimedia.image | Region | x: number; | Added|
| ohos.multimedia.image | Region | size: Size; | Added|
| ohos.multimedia.image | PropertyKey | GPS_LONGITUDE_REF = "GPSLongitudeRef" | Added|
| ohos.multimedia.image | PropertyKey | GPS_LATITUDE_REF = "GPSLatitudeRef" | Added|
| ohos.multimedia.image | PropertyKey | GPS_LONGITUDE = "GPSLongitude" | Added|
| ohos.multimedia.image | PropertyKey | GPS_LATITUDE = "GPSLatitude" | Added|
| ohos.multimedia.image | PropertyKey | IMAGE_WIDTH = "ImageWidth" | Added|
| ohos.multimedia.image | PropertyKey | IMAGE_LENGTH = "ImageLength" | Added|
| ohos.multimedia.image | PropertyKey | ORIENTATION = "Orientation" | Added|
| ohos.multimedia.image | PropertyKey | BITS_PER_SAMPLE = "BitsPerSample" | Added|
| ohos.multimedia.image | Size | width: number; | Added|
| ohos.multimedia.image | Size | height: number; | Added|
| ohos.multimedia.image | PixelMapFormat | RGBA_8888 = 3 | Added|
| ohos.multimedia.image | PixelMapFormat | RGB_565 = 2 | Added|
| ohos.multimedia.image | PixelMapFormat | UNKNOWN = 0 | Added|
| ohos.multimedia.audio | AudioCapturer | on(type: "stateChange", callback: Callback<AudioState>): void; | Added|
| ohos.multimedia.audio | AudioCapturer | off(type: "periodReach"): void; | Added|
| ohos.multimedia.audio | AudioCapturer | on(type: "periodReach", frame: number, callback: (position: number) => {}): void; | Added|
| ohos.multimedia.audio | AudioCapturer | off(type: "markReach"): void; | Added|
| ohos.multimedia.audio | AudioCapturer | on(type: "markReach", frame: number, callback: (position: number) => {}): void; | Added|
| ohos.multimedia.audio | AudioCapturer | getBufferSize(callback: AsyncCallback<number>): void;<br>getBufferSize(): Promise<number>; | Added|
| ohos.multimedia.audio | AudioCapturer | release(callback: AsyncCallback<void>): void;<br>release(): Promise<void>; | Added|
| ohos.multimedia.audio | AudioCapturer | stop(callback: AsyncCallback<void>): void;<br>stop(): Promise<void>; | Added|
| ohos.multimedia.audio | AudioCapturer | getAudioTime(callback: AsyncCallback<number>): void;<br>getAudioTime(): Promise<number>; | Added|
| ohos.multimedia.audio | AudioCapturer | read(size: number, isBlockingRead: boolean, callback: AsyncCallback<ArrayBuffer>): void;<br>read(size: number, isBlockingRead: boolean): Promise<ArrayBuffer>; | Added|
| ohos.multimedia.audio | AudioCapturer | start(callback: AsyncCallback<void>): void;<br>start(): Promise<void>; | Added|
| ohos.multimedia.audio | AudioCapturer | getStreamInfo(callback: AsyncCallback<AudioStreamInfo>): void;<br>getStreamInfo(): Promise<AudioStreamInfo>; | Added|
| ohos.multimedia.audio | AudioCapturer | getCapturerInfo(callback: AsyncCallback<AudioCapturerInfo>): void;<br>getCapturerInfo(): Promise<AudioCapturerInfo>; | Added|
| ohos.multimedia.audio | AudioCapturer | readonly state: AudioState; | Added|
| ohos.multimedia.audio | AudioCapturerOptions | capturerInfo: AudioCapturerInfo; | Added|
| ohos.multimedia.audio | AudioCapturerOptions | streamInfo: AudioStreamInfo; | Added|
| ohos.multimedia.audio | AudioCapturerInfo | capturerFlags: number; | Added|
| ohos.multimedia.audio | AudioCapturerInfo | source: SourceType; | Added|
| ohos.multimedia.audio | SourceType | SOURCE_TYPE_VOICE_COMMUNICATION = 7 | Added|
| ohos.multimedia.audio | SourceType | SOURCE_TYPE_MIC = 0 | Added|
| ohos.multimedia.audio | SourceType | SOURCE_TYPE_INVALID = -1 | Added|
| ohos.multimedia.audio | AudioRenderer | on(type: "stateChange", callback: Callback<AudioState>): void; | Added|
| ohos.multimedia.audio | AudioRenderer | off(type: "periodReach"): void; | Added|
| ohos.multimedia.audio | AudioRenderer | on(type: "periodReach", frame: number, callback: (position: number) => {}): void; | Added|
| ohos.multimedia.audio | AudioRenderer | off(type: "markReach"): void; | Added|
| ohos.multimedia.audio | AudioRenderer | on(type: "markReach", frame: number, callback: (position: number) => {}): void; | Added|
| ohos.multimedia.audio | AudioRenderer | getRenderRate(callback: AsyncCallback<AudioRendererRate>): void;<br>getRenderRate(): Promise<AudioRendererRate>; | Added|
| ohos.multimedia.audio | AudioRenderer | setRenderRate(rate: AudioRendererRate, callback: AsyncCallback<void>): void;<br>setRenderRate(rate: AudioRendererRate): Promise<void>; | Added|
| ohos.multimedia.audio | AudioRenderer | getBufferSize(callback: AsyncCallback<number>): void;<br>getBufferSize(): Promise<number>; | Added|
| ohos.multimedia.audio | AudioRenderer | release(callback: AsyncCallback<void>): void;<br>release(): Promise<void>; | Added|
| ohos.multimedia.audio | AudioRenderer | stop(callback: AsyncCallback<void>): void;<br>stop(): Promise<void>; | Added|
| ohos.multimedia.audio | AudioRenderer | pause(callback: AsyncCallback<void>): void;<br>pause(): Promise<void>; | Added|
| ohos.multimedia.audio | AudioRenderer | drain(callback: AsyncCallback<void>): void;<br>drain(): Promise<void>; | Added|
| ohos.multimedia.audio | AudioRenderer | getAudioTime(callback: AsyncCallback<number>): void;<br>getAudioTime(): Promise<number>; | Added|
| ohos.multimedia.audio | AudioRenderer | write(buffer: ArrayBuffer, callback: AsyncCallback<number>): void;<br>write(buffer: ArrayBuffer): Promise<number>; | Added|
| ohos.multimedia.audio | AudioRenderer | start(callback: AsyncCallback<void>): void;<br>start(): Promise<void>; | Added|
| ohos.multimedia.audio | AudioRenderer | getStreamInfo(callback: AsyncCallback<AudioStreamInfo>): void;<br>getStreamInfo(): Promise<AudioStreamInfo>; | Added|
| ohos.multimedia.audio | AudioRenderer | getRendererInfo(callback: AsyncCallback<AudioRendererInfo>): void;<br>getRendererInfo(): Promise<AudioRendererInfo>; | Added|
| ohos.multimedia.audio | AudioRenderer | readonly state: AudioState; | Added|
| ohos.multimedia.audio | DeviceChangeAction | deviceDescriptors: AudioDeviceDescriptors; | Added|
| ohos.multimedia.audio | DeviceChangeAction | type: DeviceChangeType; | Added|
| ohos.multimedia.audio | AudioInterrupt | pauseWhenDucked: boolean; | Added|
| ohos.multimedia.audio | AudioInterrupt | contentType: ContentType; | Added|
| ohos.multimedia.audio | AudioInterrupt | streamUsage: StreamUsage; | Added|
| ohos.multimedia.audio | InterruptAction | activated?: boolean; | Added|
| ohos.multimedia.audio | InterruptAction | hint?: InterruptHint; | Added|
| ohos.multimedia.audio | InterruptAction | type?: InterruptType; | Added|
| ohos.multimedia.audio | InterruptAction | actionType: InterruptActionType; | Added|
| ohos.multimedia.audio | AudioManager | off(type: 'interrupt', interrupt: AudioInterrupt, callback?: Callback<InterruptAction>): void; | Added|
| ohos.multimedia.audio | AudioManager | on(type: 'interrupt', interrupt: AudioInterrupt, callback: Callback<InterruptAction>): void; | Added|
| ohos.multimedia.audio | AudioManager | off(type: 'deviceChange', callback?: Callback<DeviceChangeAction>): void; | Added|
| ohos.multimedia.audio | AudioManager | on(type: 'deviceChange', callback: Callback<DeviceChangeAction>): void; | Added|
| ohos.multimedia.audio | AudioManager | getAudioScene(callback: AsyncCallback<AudioScene>): void;<br>getAudioScene(): Promise<AudioScene>; | Added|
| ohos.multimedia.audio | AudioManager | isDeviceActive(deviceType: ActiveDeviceType, callback: AsyncCallback<boolean>): void;<br>isDeviceActive(deviceType: ActiveDeviceType): Promise<boolean>; | Added|
| ohos.multimedia.audio | AudioManager | setDeviceActive(deviceType: ActiveDeviceType, active: boolean, callback: AsyncCallback<void>): void;<br>setDeviceActive(deviceType: ActiveDeviceType, active: boolean): Promise<void>; | Added|
| ohos.multimedia.audio | AudioManager | getAudioParameter(key: string, callback: AsyncCallback<string>): void;<br>getAudioParameter(key: string): Promise<string>; | Added|
| ohos.multimedia.audio | AudioManager | setAudioParameter(key: string, value: string, callback: AsyncCallback<void>): void;<br>setAudioParameter(key: string, value: string): Promise<void>; | Added|
| ohos.multimedia.audio | AudioManager | getRingerMode(callback: AsyncCallback<AudioRingMode>): void;<br>getRingerMode(): Promise<AudioRingMode>; | Added|
| ohos.multimedia.audio | AudioManager | setRingerMode(mode: AudioRingMode, callback: AsyncCallback<void>): void;<br>setRingerMode(mode: AudioRingMode): Promise<void>; | Added|
| ohos.multimedia.audio | AudioManager | isMicrophoneMute(callback: AsyncCallback<boolean>): void;<br>isMicrophoneMute(): Promise<boolean>; | Added|
| ohos.multimedia.audio | AudioManager | setMicrophoneMute(mute: boolean, callback: AsyncCallback<void>): void;<br>setMicrophoneMute(mute: boolean): Promise<void>; | Added|
| ohos.multimedia.audio | AudioManager | isActive(volumeType: AudioVolumeType, callback: AsyncCallback<boolean>): void;<br>isActive(volumeType: AudioVolumeType): Promise<boolean>; | Added|
| ohos.multimedia.audio | AudioManager | isMute(volumeType: AudioVolumeType, callback: AsyncCallback<boolean>): void;<br>isMute(volumeType: AudioVolumeType): Promise<boolean>; | Added|
| ohos.multimedia.audio | AudioManager | mute(volumeType: AudioVolumeType, mute: boolean, callback: AsyncCallback<void>): void;<br>mute(volumeType: AudioVolumeType, mute: boolean): Promise<void>; | Added|
| ohos.multimedia.audio | AudioScene | AUDIO_SCENE_VOICE_CHAT | Added|
| ohos.multimedia.audio | AudioScene | AUDIO_SCENE_DEFAULT = 0 | Added|
| ohos.multimedia.audio | DeviceChangeType | DISCONNECT = 1 | Added|
| ohos.multimedia.audio | DeviceChangeType | CONNECT = 0 | Added|
| ohos.multimedia.audio | InterruptActionType | TYPE_INTERRUPT = 1 | Added|
| ohos.multimedia.audio | InterruptActionType | TYPE_ACTIVATED = 0 | Added|
| ohos.multimedia.audio | InterruptHint | INTERRUPT_HINT_UNDUCK = 5 | Added|
| ohos.multimedia.audio | InterruptHint | INTERRUPT_HINT_DUCK = 4 | Added|
| ohos.multimedia.audio | InterruptHint | INTERRUPT_HINT_STOP = 3 | Added|
| ohos.multimedia.audio | InterruptHint | INTERRUPT_HINT_PAUSE = 2 | Added|
| ohos.multimedia.audio | InterruptHint | INTERRUPT_HINT_RESUME = 1 | Added|
| ohos.multimedia.audio | InterruptHint | INTERRUPT_HINT_NONE = 0 | Added|
| ohos.multimedia.audio | InterruptType | INTERRUPT_TYPE_END = 2 | Added|
| ohos.multimedia.audio | InterruptType | INTERRUPT_TYPE_BEGIN = 1 | Added|
| ohos.multimedia.audio | AudioRendererRate | RENDER_RATE_HALF = 2 | Added|
| ohos.multimedia.audio | AudioRendererRate | RENDER_RATE_DOUBLE = 1 | Added|
| ohos.multimedia.audio | AudioRendererRate | RENDER_RATE_NORMAL = 0 | Added|
| ohos.multimedia.audio | AudioRendererOptions | rendererInfo: AudioRendererInfo; | Added|
| ohos.multimedia.audio | AudioRendererOptions | streamInfo: AudioStreamInfo; | Added|
| ohos.multimedia.audio | AudioRendererInfo | rendererFlags: number; | Added|
| ohos.multimedia.audio | AudioRendererInfo | usage: StreamUsage; | Added|
| ohos.multimedia.audio | AudioRendererInfo | content: ContentType; | Added|
| ohos.multimedia.audio | AudioStreamInfo | encodingType: AudioEncodingType; | Added|
| ohos.multimedia.audio | AudioStreamInfo | sampleFormat: AudioSampleFormat; | Added|
| ohos.multimedia.audio | AudioStreamInfo | channels: AudioChannel; | Added|
| ohos.multimedia.audio | AudioStreamInfo | samplingRate: AudioSamplingRate; | Added|
| ohos.multimedia.audio | StreamUsage | STREAM_USAGE_NOTIFICATION_RINGTONE = 6 | Added|
| ohos.multimedia.audio | StreamUsage | STREAM_USAGE_VOICE_COMMUNICATION = 2 | Added|
| ohos.multimedia.audio | StreamUsage | STREAM_USAGE_MEDIA = 1 | Added|
| ohos.multimedia.audio | StreamUsage | STREAM_USAGE_UNKNOWN = 0 | Added|
| ohos.multimedia.audio | ContentType | CONTENT_TYPE_RINGTONE = 5 | Added|
| ohos.multimedia.audio | ContentType | CONTENT_TYPE_SONIFICATION = 4 | Added|
| ohos.multimedia.audio | ContentType | CONTENT_TYPE_MOVIE = 3 | Added|
| ohos.multimedia.audio | ContentType | CONTENT_TYPE_MUSIC = 2 | Added|
| ohos.multimedia.audio | ContentType | CONTENT_TYPE_SPEECH = 1 | Added|
| ohos.multimedia.audio | ContentType | CONTENT_TYPE_UNKNOWN = 0 | Added|
| ohos.multimedia.audio | AudioEncodingType | ENCODING_TYPE_RAW = 0 | Added|
| ohos.multimedia.audio | AudioEncodingType | ENCODING_TYPE_INVALID = -1 | Added|
| ohos.multimedia.audio | AudioSamplingRate | SAMPLE_RATE_96000 = 96000 | Added|
| ohos.multimedia.audio | AudioSamplingRate | SAMPLE_RATE_64000 = 64000 | Added|
| ohos.multimedia.audio | AudioSamplingRate | SAMPLE_RATE_48000 = 48000 | Added|
| ohos.multimedia.audio | AudioSamplingRate | SAMPLE_RATE_44100 = 44100 | Added|
| ohos.multimedia.audio | AudioSamplingRate | SAMPLE_RATE_32000 = 32000 | Added|
| ohos.multimedia.audio | AudioSamplingRate | SAMPLE_RATE_24000 = 24000 | Added|
| ohos.multimedia.audio | AudioSamplingRate | SAMPLE_RATE_22050 = 22050 | Added|
| ohos.multimedia.audio | AudioSamplingRate | SAMPLE_RATE_16000 = 16000 | Added|
| ohos.multimedia.audio | AudioSamplingRate | SAMPLE_RATE_12000 = 12000 | Added|
| ohos.multimedia.audio | AudioSamplingRate | SAMPLE_RATE_11025 = 11025 | Added|
| ohos.multimedia.audio | AudioSamplingRate | SAMPLE_RATE_8000 = 8000 | Added|
| ohos.multimedia.audio | AudioChannel | CHANNEL_2 = 0x1 << 1 | Added|
| ohos.multimedia.audio | AudioChannel | CHANNEL_1 = 0x1 << 0 | Added|
| ohos.multimedia.audio | AudioSampleFormat | SAMPLE_FORMAT_S32LE = 3 | Added|
| ohos.multimedia.audio | AudioSampleFormat | SAMPLE_FORMAT_S24LE = 2 | Added|
| ohos.multimedia.audio | AudioSampleFormat | SAMPLE_FORMAT_S16LE = 1 | Added|
| ohos.multimedia.audio | AudioSampleFormat | SAMPLE_FORMAT_U8 = 0 | Added|
| ohos.multimedia.audio | AudioSampleFormat | SAMPLE_FORMAT_INVALID = -1 | Added|
| ohos.multimedia.audio | AudioRingMode | RINGER_MODE_NORMAL = 2 | Added|
| ohos.multimedia.audio | AudioRingMode | RINGER_MODE_VIBRATE = 1 | Added|
| ohos.multimedia.audio | AudioRingMode | RINGER_MODE_SILENT = 0 | Added|
| ohos.multimedia.audio | ActiveDeviceType | BLUETOOTH_SCO = 7 | Added|
| ohos.multimedia.audio | ActiveDeviceType | SPEAKER = 2 | Added|
| ohos.multimedia.audio | DeviceType | USB_HEADSET = 22 | Added|
| ohos.multimedia.audio | DeviceType | WIRED_HEADPHONES = 4 | Added|
| ohos.multimedia.audio | DeviceType | EARPIECE = 1 | Added|
| ohos.multimedia.audio | AudioVolumeType | VOICE_ASSISTANT = 9 | Added|
| ohos.multimedia.audio | AudioVolumeType | VOICE_CALL = 0 | Added|
| ohos.multimedia.audio | AudioState | STATE_PAUSED | Added|
| ohos.multimedia.audio | AudioState | STATE_RELEASED | Added|
| ohos.multimedia.audio | AudioState | STATE_STOPPED | Added|
| ohos.multimedia.audio | AudioState | STATE_RUNNING | Added|
| ohos.multimedia.audio | AudioState | STATE_PREPARED | Added|
| ohos.multimedia.audio | AudioState | STATE_NEW | Added|
| ohos.multimedia.audio | AudioState | STATE_INVALID = -1 | Added|
| ohos.multimedia.audio | audio | function createAudioRenderer(options: AudioRendererOptions, callback: AsyncCallback<AudioRenderer>): void;<br>function createAudioRenderer(options: AudioRendererOptions): Promise<AudioRenderer>; | Added|
| ohos.multimedia.audio | audio | function createAudioCapturer(options: AudioCapturerOptions, callback: AsyncCallback<AudioCapturer>): void;<br>function createAudioCapturer(options: AudioCapturerOptions): Promise<AudioCapturer>; | Added|
# JS API Changes of the Network Management Subsystem
The table below lists the APIs changes of the network management subsystem in OpenHarmony 3.1 Release over OpenHarmony 3.0 LTS.
## API Changes
| Module| Class| Method/Attribute/Enumeration/Constant| Change Type|
|---|---|---|---|
| ohos.net.webSocket | WebSocket | off(type: 'error', callback?: ErrorCallback): void; | Added|
| ohos.net.webSocket | WebSocket | on(type: 'error', callback: ErrorCallback): void; | Added|
| ohos.net.webSocket | WebSocket | off(type: 'close', callback?: AsyncCallback<{ code: number, reason: string }>): void; | Added|
| ohos.net.webSocket | WebSocket | on(type: 'close', callback: AsyncCallback<{ code: number, reason: string }>): void; | Added|
| ohos.net.webSocket | WebSocket | off(type: 'message', callback?: AsyncCallback<string \| ArrayBuffer>): void; | Added|
| ohos.net.webSocket | WebSocket | on(type: 'message', callback: AsyncCallback<string \| ArrayBuffer>): void; | Added|
| ohos.net.webSocket | WebSocket | off(type: 'open', callback?: AsyncCallback<Object>): void; | Added|
| ohos.net.webSocket | WebSocket | on(type: 'open', callback: AsyncCallback<Object>): void; | Added|
| ohos.net.webSocket | WebSocket | close(callback: AsyncCallback<boolean>): void;<br>close(options: WebSocketCloseOptions, callback: AsyncCallback<boolean>): void;<br>close(options?: WebSocketCloseOptions): Promise<boolean>; | Added|
| ohos.net.webSocket | WebSocket | send(data: string \| ArrayBuffer, callback: AsyncCallback<boolean>): void;<br>send(data: string \| ArrayBuffer): Promise<boolean>; | Added|
| ohos.net.webSocket | WebSocket | connect(url: string, callback: AsyncCallback<boolean>): void;<br>connect(url: string, options: WebSocketRequestOptions, callback: AsyncCallback<boolean>): void;<br>connect(url: string, options?: WebSocketRequestOptions): Promise<boolean>; | Added|
| ohos.net.webSocket | WebSocketCloseOptions | reason?: string; | Added|
| ohos.net.webSocket | WebSocketCloseOptions | code?: number; | Added|
| ohos.net.webSocket | WebSocketRequestOptions | header?: Object; | Added|
| ohos.net.webSocket | webSocket | function createWebSocket(): WebSocket; | Added|
| ohos.net.socket | TCPSocket | off(type: 'error', callback?: ErrorCallback): void; | Added|
| ohos.net.socket | TCPSocket | on(type: 'error', callback: ErrorCallback): void; | Added|
| ohos.net.socket | TCPSocket | off(type: 'connect' \| 'close', callback?: Callback<void>): void; | Added|
| ohos.net.socket | TCPSocket | off(type: 'connect' \| 'close', callback?: Callback<void>): void; | Added|
| ohos.net.socket | TCPSocket | on(type: 'connect' \| 'close', callback: Callback<void>): void; | Added|
| ohos.net.socket | TCPSocket | on(type: 'connect' \| 'close', callback: Callback<void>): void; | Added|
| ohos.net.socket | TCPSocket | off(type: 'message', callback?: Callback<{message: ArrayBuffer, remoteInfo: SocketRemoteInfo}>): void; | Added|
| ohos.net.socket | TCPSocket | on(type: 'message', callback: Callback<{message: ArrayBuffer, remoteInfo: SocketRemoteInfo}>): void; | Added|
| ohos.net.socket | TCPSocket | setExtraOptions(options: TCPExtraOptions, callback: AsyncCallback<void>): void;<br>setExtraOptions(options: TCPExtraOptions): Promise<void>; | Added|
| ohos.net.socket | TCPSocket | getState(callback: AsyncCallback<SocketStateBase>): void;<br>getState(): Promise<SocketStateBase>; | Added|
| ohos.net.socket | TCPSocket | getRemoteAddress(callback: AsyncCallback<NetAddress>): void;<br>getRemoteAddress(): Promise<NetAddress>; | Added|
| ohos.net.socket | TCPSocket | close(callback: AsyncCallback<void>): void;<br>close(): Promise<void>; | Added|
| ohos.net.socket | TCPSocket | send(options: TCPSendOptions, callback: AsyncCallback<void>): void;<br>send(options: TCPSendOptions): Promise<void>; | Added|
| ohos.net.socket | TCPSocket | connect(options: TCPConnectOptions, callback: AsyncCallback<void>): void;<br>connect(options: TCPConnectOptions): Promise<void>; | Added|
| ohos.net.socket | TCPSocket | bind(address: NetAddress, callback: AsyncCallback<void>): void;<br>bind(address: NetAddress): Promise<void>; | Added|
| ohos.net.socket | TCPExtraOptions | socketLinger: {on: boolean, linger: number}; | Added|
| ohos.net.socket | TCPExtraOptions | TCPNoDelay?: boolean; | Added|
| ohos.net.socket | TCPExtraOptions | OOBInline?: boolean; | Added|
| ohos.net.socket | TCPExtraOptions | keepAlive?: boolean; | Added|
| ohos.net.socket | TCPSendOptions | encoding?: string; | Added|
| ohos.net.socket | TCPSendOptions | data: string \| ArrayBuffer; | Added|
| ohos.net.socket | TCPConnectOptions | timeout?: number; | Added|
| ohos.net.socket | TCPConnectOptions | address: NetAddress; | Added|
| ohos.net.socket | UDPSocket | off(type: 'error', callback?: ErrorCallback): void; | Added|
| ohos.net.socket | UDPSocket | on(type: 'error', callback: ErrorCallback): void; | Added|
| ohos.net.socket | UDPSocket | off(type: 'listening' \| 'close', callback?: Callback<void>): void; | Added|
| ohos.net.socket | UDPSocket | off(type: 'listening' \| 'close', callback?: Callback<void>): void; | Added|
| ohos.net.socket | UDPSocket | on(type: 'listening' \| 'close', callback: Callback<void>): void; | Added|
| ohos.net.socket | UDPSocket | on(type: 'listening' \| 'close', callback: Callback<void>): void; | Added|
| ohos.net.socket | UDPSocket | off(type: 'message', callback?: Callback<{message: ArrayBuffer, remoteInfo: SocketRemoteInfo}>): void; | Added|
| ohos.net.socket | UDPSocket | on(type: 'message', callback: Callback<{message: ArrayBuffer, remoteInfo: SocketRemoteInfo}>): void; | Added|
| ohos.net.socket | UDPSocket | setExtraOptions(options: UDPExtraOptions, callback: AsyncCallback<void>): void;<br>setExtraOptions(options: UDPExtraOptions): Promise<void>; | Added|
| ohos.net.socket | UDPSocket | getState(callback: AsyncCallback<SocketStateBase>): void;<br>getState(): Promise<SocketStateBase>; | Added|
| ohos.net.socket | UDPSocket | close(callback: AsyncCallback<void>): void;<br>close(): Promise<void>; | Added|
| ohos.net.socket | UDPSocket | send(options: UDPSendOptions, callback: AsyncCallback<void>): void;<br>send(options: UDPSendOptions): Promise<void>; | Added|
| ohos.net.socket | UDPSocket | bind(address: NetAddress, callback: AsyncCallback<void>): void;<br>bind(address: NetAddress): Promise<void>; | Added|
| ohos.net.socket | SocketRemoteInfo | size: number; | Added|
| ohos.net.socket | SocketRemoteInfo | port: number; | Added|
| ohos.net.socket | SocketRemoteInfo | family: 'IPv4' \| 'IPv6'; | Added|
| ohos.net.socket | SocketRemoteInfo | address: string; | Added|
| ohos.net.socket | SocketStateBase | isConnected: boolean; | Added|
| ohos.net.socket | SocketStateBase | isClose: boolean; | Added|
| ohos.net.socket | SocketStateBase | isBound: boolean; | Added|
| ohos.net.socket | UDPExtraOptions | broadcast?: boolean; | Added|
| ohos.net.socket | ExtraOptionsBase | socketTimeout?: number; | Added|
| ohos.net.socket | ExtraOptionsBase | reuseAddress?: boolean; | Added|
| ohos.net.socket | ExtraOptionsBase | sendBufferSize?: number; | Added|
| ohos.net.socket | ExtraOptionsBase | receiveBufferSize?: number; | Added|
| ohos.net.socket | UDPSendOptions | address: NetAddress; | Added|
| ohos.net.socket | UDPSendOptions | data: string \| ArrayBuffer; | Added|
| ohos.net.socket | socket | function constructTCPSocketInstance(): TCPSocket; | Added|
| ohos.net.socket | socket | function constructUDPSocketInstance(): UDPSocket; | Added|
| ohos.net.socket | socket | import NetAddress = connection.NetAddress; | Added|
| ohos.net.http | HttpResponse | cookies: string; | Added|
| ohos.net.http | HttpResponse | header: Object; | Added|
| ohos.net.http | HttpResponse | responseCode: ResponseCode \| number; | Added|
| ohos.net.http | HttpResponse | result: string \| Object \| ArrayBuffer; | Added|
| ohos.net.http | ResponseCode | VERSION | Added|
| ohos.net.http | ResponseCode | GATEWAY_TIMEOUT | Added|
| ohos.net.http | ResponseCode | UNAVAILABLE | Added|
| ohos.net.http | ResponseCode | BAD_GATEWAY | Added|
| ohos.net.http | ResponseCode | NOT_IMPLEMENTED | Added|
| ohos.net.http | ResponseCode | INTERNAL_ERROR = 500 | Added|
| ohos.net.http | ResponseCode | UNSUPPORTED_TYPE | Added|
| ohos.net.http | ResponseCode | REQ_TOO_LONG | Added|
| ohos.net.http | ResponseCode | ENTITY_TOO_LARGE | Added|
| ohos.net.http | ResponseCode | PRECON_FAILED | Added|
| ohos.net.http | ResponseCode | LENGTH_REQUIRED | Added|
| ohos.net.http | ResponseCode | GONE | Added|
| ohos.net.http | ResponseCode | CONFLICT | Added|
| ohos.net.http | ResponseCode | CLIENT_TIMEOUT | Added|
| ohos.net.http | ResponseCode | PROXY_AUTH | Added|
| ohos.net.http | ResponseCode | NOT_ACCEPTABLE | Added|
| ohos.net.http | ResponseCode | BAD_METHOD | Added|
| ohos.net.http | ResponseCode | NOT_FOUND | Added|
| ohos.net.http | ResponseCode | FORBIDDEN | Added|
| ohos.net.http | ResponseCode | PAYMENT_REQUIRED | Added|
| ohos.net.http | ResponseCode | UNAUTHORIZED | Added|
| ohos.net.http | ResponseCode | BAD_REQUEST = 400 | Added|
| ohos.net.http | ResponseCode | USE_PROXY | Added|
| ohos.net.http | ResponseCode | NOT_MODIFIED | Added|
| ohos.net.http | ResponseCode | SEE_OTHER | Added|
| ohos.net.http | ResponseCode | MOVED_TEMP | Added|
| ohos.net.http | ResponseCode | MOVED_PERM | Added|
| ohos.net.http | ResponseCode | MULT_CHOICE = 300 | Added|
| ohos.net.http | ResponseCode | PARTIAL | Added|
| ohos.net.http | ResponseCode | RESET | Added|
| ohos.net.http | ResponseCode | NO_CONTENT | Added|
| ohos.net.http | ResponseCode | NOT_AUTHORITATIVE | Added|
| ohos.net.http | ResponseCode | ACCEPTED | Added|
| ohos.net.http | ResponseCode | CREATED | Added|
| ohos.net.http | ResponseCode | OK = 200 | Added|
| ohos.net.http | RequestMethod | CONNECT = "CONNECT" | Added|
| ohos.net.http | RequestMethod | TRACE = "TRACE" | Added|
| ohos.net.http | RequestMethod | DELETE = "DELETE" | Added|
| ohos.net.http | RequestMethod | PUT = "PUT" | Added|
| ohos.net.http | RequestMethod | POST = "POST" | Added|
| ohos.net.http | RequestMethod | HEAD = "HEAD" | Added|
| ohos.net.http | RequestMethod | GET = "GET" | Added|
| ohos.net.http | RequestMethod | OPTIONS = "OPTIONS" | Added|
| ohos.net.http | HttpRequest | once(type: "headersReceive", callback: Callback<Object>): void; | Added|
| ohos.net.http | HttpRequest | off(type: "headersReceive", callback?: Callback<Object>): void; | Added|
| ohos.net.http | HttpRequest | on(type: "headersReceive", callback: Callback<Object>): void; | Added|
| ohos.net.http | HttpRequest | off(type: "headerReceive", callback?: AsyncCallback<Object>): void; | Added|
| ohos.net.http | HttpRequest | on(type: "headerReceive", callback: AsyncCallback<Object>): void; | Added|
| ohos.net.http | HttpRequest | destroy(): void; | Added|
| ohos.net.http | HttpRequest | request(url: string, callback: AsyncCallback<HttpResponse>): void;<br>request(url: string, options: HttpRequestOptions, callback: AsyncCallback<HttpResponse>): void;<br>request(url: string, options?: HttpRequestOptions): Promise<HttpResponse>; | Added|
| ohos.net.http | HttpRequestOptions | connectTimeout?: number; | Added|
| ohos.net.http | HttpRequestOptions | readTimeout?: number; | Added|
| ohos.net.http | HttpRequestOptions | header?: Object; | Added|
| ohos.net.http | HttpRequestOptions | extraData?: string \| Object \| ArrayBuffer; | Added|
| ohos.net.http | HttpRequestOptions | method?: RequestMethod; | Added|
| ohos.net.http | http | function createHttp(): HttpRequest; | Added|
| ohos.net.connection | NetAddress | port?: number; | Added|
| ohos.net.connection | NetAddress | family?: number; | Added|
| ohos.net.connection | NetAddress | address: string; | Added|
| ohos.net.connection | LinkAddress | prefixLength: number; | Added|
| ohos.net.connection | LinkAddress | address: NetAddress; | Added|
| ohos.net.connection | RouteInfo | isDefaultRoute: boolean; | Added|
| ohos.net.connection | RouteInfo | hasGateway: boolean; | Added|
| ohos.net.connection | RouteInfo | gateway: NetAddress; | Added|
| ohos.net.connection | RouteInfo | destination: LinkAddress; | Added|
| ohos.net.connection | RouteInfo | interface: string; | Added|
| ohos.net.connection | ConnectionProperties | mtu: number; | Added|
| ohos.net.connection | ConnectionProperties | routes: Array<RouteInfo>; | Added|
| ohos.net.connection | ConnectionProperties | dnses: Array<NetAddress>; | Added|
| ohos.net.connection | ConnectionProperties | linkAddresses: Array<LinkAddress>; | Added|
| ohos.net.connection | ConnectionProperties | domains: string; | Added|
| ohos.net.connection | ConnectionProperties | interfaceName: string; | Added|
| ohos.net.connection | NetBearType | BEARER_ETHERNET = 3 | Added|
| ohos.net.connection | NetBearType | BEARER_WIFI = 1 | Added|
| ohos.net.connection | NetBearType | BEARER_CELLULAR = 0 | Added|
| ohos.net.connection | NetCap | NET_CAPABILITY_VALIDATED = 16 | Added|
| ohos.net.connection | NetCap | NET_CAPABILITY_NOT_VPN = 15 | Added|
| ohos.net.connection | NetCap | NET_CAPABILITY_INTERNET = 12 | Added|
| ohos.net.connection | NetCap | NET_CAPABILITY_NOT_METERED = 11 | Added|
| ohos.net.connection | NetCap | NET_CAPABILITY_MMS = 0 | Added|
| ohos.net.connection | NetCapabilities | bearerTypes: Array<NetBearType>; | Added|
| ohos.net.connection | NetCapabilities | networkCap?: Array<NetCap>; | Added|
| ohos.net.connection | NetCapabilities | linkDownBandwidthKbps?: number; | Added|
| ohos.net.connection | NetCapabilities | linkUpBandwidthKbps?: number; | Added|
| ohos.net.connection | NetHandle | getAddressByName(host: string, callback: AsyncCallback<NetAddress>): void;<br>getAddressByName(host: string): Promise<NetAddress>; | Added|
| ohos.net.connection | NetHandle | getAddressesByName(host: string, callback: AsyncCallback<Array<NetAddress>>): void;<br>getAddressesByName(host: string): Promise<Array<NetAddress>>; | Added|
| ohos.net.connection | NetHandle | netId: number; | Added|
| ohos.net.connection | NetSpecifier | bearerPrivateIdentifier?: string; | Added|
| ohos.net.connection | NetSpecifier | netCapabilities: NetCapabilities; | Added|
| ohos.net.connection | NetConnection | unregister(callback: AsyncCallback<void>): void; | Added|
| ohos.net.connection | NetConnection | register(callback: AsyncCallback<void>): void; | Added|
| ohos.net.connection | NetConnection | on(type: 'netUnavailable', callback: Callback<void>): void; | Added|
| ohos.net.connection | NetConnection | on(type: 'netLost', callback: Callback<NetHandle>): void; | Added|
| ohos.net.connection | NetConnection | on(type: 'netConnectionPropertiesChange', callback: Callback<{ netHandle: NetHandle, connectionProperties: ConnectionProperties }>): void; | Added|
| ohos.net.connection | NetConnection | on(type: 'netCapabilitiesChange', callback: Callback<{ netHandle: NetHandle, netCap: NetCapabilities }>): void; | Added|
| ohos.net.connection | NetConnection | on(type: 'netBlockStatusChange', callback: Callback<{ netHandle: NetHandle, blocked: boolean }>): void; | Added|
| ohos.net.connection | NetConnection | on(type: 'netAvailable', callback: Callback<NetHandle>): void; | Added|
| ohos.net.connection | connection | function getAddressesByName(host: string, callback: AsyncCallback<Array<NetAddress>>): void;<br>function getAddressesByName(host: string): Promise<Array<NetAddress>>; | Added|
| ohos.net.connection | connection | function reportNetDisconnected(netHandle: NetHandle, callback: AsyncCallback<void>): void;<br>function reportNetDisconnected(netHandle: NetHandle): Promise<void>; | Added|
| ohos.net.connection | connection | function reportNetConnected(netHandle: NetHandle, callback: AsyncCallback<void>): void;<br>function reportNetConnected(netHandle: NetHandle): Promise<void>; | Added|
| ohos.net.connection | connection | function hasDefaultNet(callback: AsyncCallback<boolean>): void;<br>function hasDefaultNet(): Promise<boolean>; | Added|
| ohos.net.connection | connection | function getNetCapabilities(netHandle: NetHandle, callback: AsyncCallback<NetCapabilities>): void;<br>function getNetCapabilities(netHandle: NetHandle): Promise<NetCapabilities>; | Added|
| ohos.net.connection | connection | function getConnectionProperties(netHandle: NetHandle, callback: AsyncCallback<ConnectionProperties>): void;<br>function getConnectionProperties(netHandle: NetHandle): Promise<ConnectionProperties>; | Added|
| ohos.net.connection | connection | function getAllNets(callback: AsyncCallback<Array<NetHandle>>): void;<br>function getAllNets(): Promise<Array<NetHandle>>; | Added|
| ohos.net.connection | connection | function getDefaultNet(callback: AsyncCallback<NetHandle>): void;<br>function getDefaultNet(): Promise<NetHandle>; | Added|
| ohos.net.connection | connection | function createNetConnection(netSpecifier?: NetSpecifier, timeout?: number): NetConnection; | Added|
# JS API Changes of the Resource Scheduling Subsystem
The table below lists the APIs changes of the resource scheduling subsystem in OpenHarmony 3.1 Release over OpenHarmony 3.0 LTS.
## API Changes
| Module| Class| Method/Attribute/Enumeration/Constant| Change Type|
|---|---|---|---|
| ohos.reminderAgent | LocalDateTime | second?: number; | Added|
| ohos.reminderAgent | LocalDateTime | minute: number; | Added|
| ohos.reminderAgent | LocalDateTime | hour: number; | Added|
| ohos.reminderAgent | LocalDateTime | day: number; | Added|
| ohos.reminderAgent | LocalDateTime | month: number; | Added|
| ohos.reminderAgent | LocalDateTime | year: number; | Added|
| ohos.reminderAgent | ReminderRequestTimer | triggerTimeInSeconds: number; | Added|
| ohos.reminderAgent | ReminderRequestAlarm | daysOfWeek?: Array<number>; | Added|
| ohos.reminderAgent | ReminderRequestAlarm | minute: number; | Added|
| ohos.reminderAgent | ReminderRequestAlarm | hour: number; | Added|
| ohos.reminderAgent | ReminderRequestCalendar | repeatDays?: Array<number>; | Added|
| ohos.reminderAgent | ReminderRequestCalendar | repeatMonths?: Array<number>; | Added|
| ohos.reminderAgent | ReminderRequestCalendar | dateTime: LocalDateTime; | Added|
| ohos.reminderAgent | ReminderRequest | slotType?: notification.SlotType; | Added|
| ohos.reminderAgent | ReminderRequest | notificationId?: number; | Added|
| ohos.reminderAgent | ReminderRequest | snoozeContent?: string; | Added|
| ohos.reminderAgent | ReminderRequest | expiredContent?: string; | Added|
| ohos.reminderAgent | ReminderRequest | content?: string; | Added|
| ohos.reminderAgent | ReminderRequest | title?: string; | Added|
| ohos.reminderAgent | ReminderRequest | timeInterval?: number; | Added|
| ohos.reminderAgent | ReminderRequest | snoozeTimes?: number; | Added|
| ohos.reminderAgent | ReminderRequest | ringDuration?: number; | Added|
| ohos.reminderAgent | ReminderRequest | maxScreenWantAgent?: MaxScreenWantAgent; | Added|
| ohos.reminderAgent | ReminderRequest | wantAgent?: WantAgent; | Added|
| ohos.reminderAgent | ReminderRequest | actionButton?: [ActionButton?, ActionButton?]; | Added|
| ohos.reminderAgent | ReminderRequest | reminderType: ReminderType; | Added|
| ohos.reminderAgent | MaxScreenWantAgent | abilityName: string; | Added|
| ohos.reminderAgent | MaxScreenWantAgent | pkgName: string; | Added|
| ohos.reminderAgent | WantAgent | abilityName: string; | Added|
| ohos.reminderAgent | WantAgent | pkgName: string; | Added|
| ohos.reminderAgent | ActionButton | type: ActionButtonType; | Added|
| ohos.reminderAgent | ActionButton | title: string; | Added|
| ohos.reminderAgent | ReminderType | REMINDER_TYPE_ALARM = 2 | Added|
| ohos.reminderAgent | ReminderType | REMINDER_TYPE_CALENDAR = 1 | Added|
| ohos.reminderAgent | ReminderType | REMINDER_TYPE_TIMER = 0 | Added|
| ohos.reminderAgent | ActionButtonType | ACTION_BUTTON_TYPE_SNOOZE = 1 | Added|
| ohos.reminderAgent | ActionButtonType | ACTION_BUTTON_TYPE_CLOSE = 0 | Added|
| ohos.reminderAgent | reminderAgent | function removeNotificationSlot(slotType: notification.SlotType, callback: AsyncCallback<void>): void;<br>function removeNotificationSlot(slotType: notification.SlotType): Promise<void>; | Added|
| ohos.reminderAgent | reminderAgent | function addNotificationSlot(slot: NotificationSlot, callback: AsyncCallback<void>): void;<br>function addNotificationSlot(slot: NotificationSlot): Promise<void>; | Added|
| ohos.reminderAgent | reminderAgent | function cancelAllReminders(callback: AsyncCallback<void>): void;<br>function cancelAllReminders(): Promise<void>; | Added|
| ohos.reminderAgent | reminderAgent | function getValidReminders(callback: AsyncCallback<Array<ReminderRequest>>): void;<br>function getValidReminders(): Promise<Array<ReminderRequest>>; | Added|
| ohos.reminderAgent | reminderAgent | function cancelReminder(reminderId: number, callback: AsyncCallback<void>): void;<br>function cancelReminder(reminderId: number): Promise<void>; | Added|
| ohos.reminderAgent | reminderAgent | function publishReminder(reminderReq: ReminderRequest, callback: AsyncCallback<number>): void;<br>function publishReminder(reminderReq: ReminderRequest): Promise<number>; | Added|
| ohos.bundleState | bundleState | function queryCurrentBundleActiveStates(begin: number, end: number, callback: AsyncCallback<Array<BundleActiveState>>): void;<br>function queryCurrentBundleActiveStates(begin: number, end: number): Promise<Array<BundleActiveState>>; | Added|
| ohos.bundleState | IntervalType | BY_ANNUALLY = 4 | Added|
| ohos.bundleState | IntervalType | BY_MONTHLY = 3 | Added|
| ohos.bundleState | IntervalType | BY_WEEKLY = 2 | Added|
| ohos.bundleState | IntervalType | BY_DAILY = 1 | Added|
| ohos.bundleState | IntervalType | BY_OPTIMIZED = 0 | Added|
| ohos.bundleState | BundleActiveInfoResponse | [key: string]: BundleStateInfo; | Added|
| ohos.bundleState | bundleState | function queryAppUsagePriorityGroup(callback: AsyncCallback<number>): void;<br>function queryAppUsagePriorityGroup(): Promise<number>; | Added|
| ohos.bundleState | bundleState | function isIdleState(bundleName: string, callback: AsyncCallback<boolean>): void;<br>function isIdleState(bundleName: string): Promise<boolean>; | Added|
| ohos.bundleState | BundleActiveState | stateType?: number; | Added|
| ohos.bundleState | BundleActiveState | stateOccurredTime?: number; | Added|
| ohos.bundleState | BundleActiveState | nameOfClass?: string; | Added|
| ohos.bundleState | BundleActiveState | indexOfLink?: string; | Added|
| ohos.bundleState | BundleActiveState | bundleName?: string; | Added|
| ohos.bundleState | BundleActiveState | appUsagePriorityGroup?: number; | Added|
| ohos.bundleState | BundleStateInfo | merge(toMerge: BundleStateInfo): void; | Added|
| ohos.bundleState | BundleStateInfo | infosEndTime?: number; | Added|
| ohos.bundleState | BundleStateInfo | infosBeginTime?: number; | Added|
| ohos.bundleState | BundleStateInfo | fgAbilityPrevAccessTime?: number; | Added|
| ohos.bundleState | BundleStateInfo | fgAbilityAccessTotalTime?: number; | Added|
| ohos.bundleState | BundleStateInfo | bundleName?: string; | Added|
| ohos.bundleState | BundleStateInfo | abilitySeenTotalTime?: number; | Added|
| ohos.bundleState | BundleStateInfo | abilityPrevSeenTime?: number; | Added|
| ohos.bundleState | BundleStateInfo | abilityPrevAccessTime?: number; | Added|
| ohos.bundleState | BundleStateInfo | abilityInFgTotalTime?: number; | Added|
| ohos.bundleState | BundleStateInfo | id: number; | Added|
| ohos.backgroundTaskManager | BackgroundMode | TASK_KEEPING = 9 | Added|
| ohos.backgroundTaskManager | BackgroundMode | MULTI_DEVICE_CONNECTION = 6 | Added|
| ohos.backgroundTaskManager | BackgroundMode | BLUETOOTH_INTERACTION = 5 | Added|
| ohos.backgroundTaskManager | BackgroundMode | LOCATION = 4 | Added|
| ohos.backgroundTaskManager | BackgroundMode | AUDIO_RECORDING = 3 | Added|
| ohos.backgroundTaskManager | BackgroundMode | AUDIO_PLAYBACK = 2 | Added|
| ohos.backgroundTaskManager | BackgroundMode | DATA_TRANSFER = 1 | Added|
| ohos.backgroundTaskManager | backgroundTaskManager | function stopBackgroundRunning(context: Context, callback: AsyncCallback<void>): void;<br>function stopBackgroundRunning(context: Context): Promise<void>; | Added|
| ohos.backgroundTaskManager | backgroundTaskManager | function startBackgroundRunning(context: Context, bgMode: BackgroundMode, wantAgent: WantAgent, callback: AsyncCallback<void>): void;<br>function startBackgroundRunning(context: Context, bgMode: BackgroundMode, wantAgent: WantAgent): Promise<void>; | Added|
| ohos.backgroundTaskManager | backgroundTaskManager | function requestSuspendDelay(reason: string, callback: Callback<void>): DelaySuspendInfo; | Added|
| ohos.backgroundTaskManager | backgroundTaskManager | function getRemainingDelayTime(requestId: number, callback: AsyncCallback<number>): void;<br>function getRemainingDelayTime(requestId: number): Promise<number>; | Added|
| ohos.backgroundTaskManager | backgroundTaskManager | function cancelSuspendDelay(requestId: number): void; | Added|
| ohos.backgroundTaskManager | DelaySuspendInfo | actualDelayTime: number; | Added|
| ohos.backgroundTaskManager | DelaySuspendInfo | requestId: number; | Added|
# JS API Changes of the Security Subsystem
The table below lists the APIs changes of the security subsystem in OpenHarmony 3.1 Release over OpenHarmony 3.0 LTS.
## API Changes
| Module| Class| Method/Attribute/Enumeration/Constant| Change Type|
|---|---|---|---|
| ohos.security.huks | HuksTag | HUKS_TAG_ASYMMETRIC_PRIVATE_KEY_DATA = HuksTagType.HUKS_TAG_TYPE_BYTES \| 20003 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_ASYMMETRIC_PUBLIC_KEY_DATA = HuksTagType.HUKS_TAG_TYPE_BYTES \| 20002 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_SYMMETRIC_KEY_DATA = HuksTagType.HUKS_TAG_TYPE_BYTES \| 20001 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_OS_PATCHLEVEL = HuksTagType.HUKS_TAG_TYPE_UINT \| 10102 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_OS_VERSION = HuksTagType.HUKS_TAG_TYPE_UINT \| 10101 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_IS_KEY_HANDLE = HuksTagType.HUKS_TAG_TYPE_ULONG \| 10010 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_AE_TAG = HuksTagType.HUKS_TAG_TYPE_BYTES \| 10009 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_PAYLOAD_LEN = HuksTagType.HUKS_TAG_TYPE_UINT \| 10008 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_KEY_VERSION = HuksTagType.HUKS_TAG_TYPE_UINT \| 10007 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_KEY = HuksTagType.HUKS_TAG_TYPE_BYTES \| 10006 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_CRYPTO_CTX = HuksTagType.HUKS_TAG_TYPE_ULONG \| 10005 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_USES_TIME = HuksTagType.HUKS_TAG_TYPE_UINT \| 10004 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_ACCESS_TIME = HuksTagType.HUKS_TAG_TYPE_UINT \| 10003 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_PACKAGE_NAME = HuksTagType.HUKS_TAG_TYPE_BYTES \| 10002 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_PROCESS_NAME = HuksTagType.HUKS_TAG_TYPE_BYTES \| 10001 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_KEY_DOMAIN = HuksTagType.HUKS_TAG_TYPE_UINT \| 1011 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_SECURE_KEY_UUID = HuksTagType.HUKS_TAG_TYPE_BYTES \| 1010 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_SECURE_KEY_ALIAS = HuksTagType.HUKS_TAG_TYPE_BOOL \| 1009 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_IS_ASYNCHRONIZED = HuksTagType.HUKS_TAG_TYPE_UINT \| 1008 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_KEY_FLAG = HuksTagType.HUKS_TAG_TYPE_UINT \| 1007 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_KEY_ROLE = HuksTagType.HUKS_TAG_TYPE_UINT \| 1006 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_KEY_AUTH_ID = HuksTagType.HUKS_TAG_TYPE_BYTES \| 1005 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_KEY_WRAP_TYPE = HuksTagType.HUKS_TAG_TYPE_UINT \| 1004 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_IS_ALLOWED_WRAP = HuksTagType.HUKS_TAG_TYPE_BOOL \| 1003 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_KEY_STORAGE_FLAG = HuksTagType.HUKS_TAG_TYPE_UINT \| 1002 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_IS_KEY_ALIAS = HuksTagType.HUKS_TAG_TYPE_BOOL \| 1001 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_ATTESTATION_ID_VERSION_INFO = HuksTagType.HUKS_TAG_TYPE_BYTES \| 515 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_ATTESTATION_ID_SEC_LEVEL_INFO = HuksTagType.HUKS_TAG_TYPE_BYTES \| 514 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_ATTESTATION_ID_UDID = HuksTagType.HUKS_TAG_TYPE_BYTES \| 513 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_ATTESTATION_ID_SOCID = HuksTagType.HUKS_TAG_TYPE_BYTES \| 512 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_ATTESTATION_ID_ALIAS = HuksTagType.HUKS_TAG_TYPE_BYTES \| 511 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_ATTESTATION_ID_MODEL = HuksTagType.HUKS_TAG_TYPE_BYTES \| 510 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_ATTESTATION_ID_MANUFACTURER = HuksTagType.HUKS_TAG_TYPE_BYTES \| 509 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_ATTESTATION_ID_MEID = HuksTagType.HUKS_TAG_TYPE_BYTES \| 508 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_ATTESTATION_ID_IMEI = HuksTagType.HUKS_TAG_TYPE_BYTES \| 507 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_ATTESTATION_ID_SERIAL = HuksTagType.HUKS_TAG_TYPE_BYTES \| 506 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_ATTESTATION_ID_PRODUCT = HuksTagType.HUKS_TAG_TYPE_BYTES \| 505 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_ATTESTATION_ID_DEVICE = HuksTagType.HUKS_TAG_TYPE_BYTES \| 504 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_ATTESTATION_ID_BRAND = HuksTagType.HUKS_TAG_TYPE_BYTES \| 503 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_ATTESTATION_APPLICATION_ID = HuksTagType.HUKS_TAG_TYPE_BYTES \| 502 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_ATTESTATION_CHALLENGE = HuksTagType.HUKS_TAG_TYPE_BYTES \| 501 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_AUTH_TOKEN = HuksTagType.HUKS_TAG_TYPE_BYTES \| 306 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_AUTH_TIMEOUT = HuksTagType.HUKS_TAG_TYPE_UINT \| 305 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_USER_AUTH_TYPE = HuksTagType.HUKS_TAG_TYPE_UINT \| 304 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_NO_AUTH_REQUIRED = HuksTagType.HUKS_TAG_TYPE_BOOL \| 303 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_USER_ID = HuksTagType.HUKS_TAG_TYPE_UINT \| 302 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_ALL_USERS = HuksTagType.HUKS_TAG_TYPE_BOOL \| 301 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_CREATION_DATETIME = HuksTagType.HUKS_TAG_TYPE_ULONG \| 204 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_USAGE_EXPIRE_DATETIME = HuksTagType.HUKS_TAG_TYPE_ULONG \| 203 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_ORIGINATION_EXPIRE_DATETIME = HuksTagType.HUKS_TAG_TYPE_ULONG \| 202 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_ACTIVE_DATETIME = HuksTagType.HUKS_TAG_TYPE_ULONG \| 201 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_DERIVE_KEY_SIZE = HuksTagType.HUKS_TAG_TYPE_UINT \| 24 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_KEY_ALIAS = HuksTagType.HUKS_TAG_TYPE_BYTES \| 23 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_AGREE_PUBLIC_KEY = HuksTagType.HUKS_TAG_TYPE_BYTES \| 22 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_AGREE_PRIVATE_KEY_ALIAS = HuksTagType.HUKS_TAG_TYPE_BYTES \| 21 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_AGREE_PUBLIC_KEY_IS_KEY_ALIAS = HuksTagType.HUKS_TAG_TYPE_BOOL \| 20 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_AGREE_ALG = HuksTagType.HUKS_TAG_TYPE_UINT \| 19 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_DERIVE_ALG = HuksTagType.HUKS_TAG_TYPE_UINT \| 18 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_DERIVE_FACTOR = HuksTagType.HUKS_TAG_TYPE_BYTES \| 17 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_DERIVE_MAIN_KEY = HuksTagType.HUKS_TAG_TYPE_BYTES \| 16 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_KEY_GENERATE_TYPE = HuksTagType.HUKS_TAG_TYPE_UINT \| 15 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_ITERATION = HuksTagType.HUKS_TAG_TYPE_UINT \| 14 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_PWD = HuksTagType.HUKS_TAG_TYPE_BYTES \| 13 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_SALT = HuksTagType.HUKS_TAG_TYPE_BYTES \| 12 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_INFO = HuksTagType.HUKS_TAG_TYPE_BYTES \| 11 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_IV = HuksTagType.HUKS_TAG_TYPE_BYTES \| 10 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_NONCE = HuksTagType.HUKS_TAG_TYPE_BYTES \| 9 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_ASSOCIATED_DATA = HuksTagType.HUKS_TAG_TYPE_BYTES \| 8 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_KEY_TYPE = HuksTagType.HUKS_TAG_TYPE_UINT \| 7 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_BLOCK_MODE = HuksTagType.HUKS_TAG_TYPE_UINT \| 6 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_PADDING = HuksTagType.HUKS_TAG_TYPE_UINT \| 5 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_DIGEST = HuksTagType.HUKS_TAG_TYPE_UINT \| 4 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_KEY_SIZE = HuksTagType.HUKS_TAG_TYPE_UINT \| 3 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_PURPOSE = HuksTagType.HUKS_TAG_TYPE_UINT \| 2 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_ALGORITHM = HuksTagType.HUKS_TAG_TYPE_UINT \| 1 | Added|
| ohos.security.huks | HuksTag | HUKS_TAG_INVALID = HuksTagType.HUKS_TAG_TYPE_INVALID \| 0 | Added|
| ohos.security.huks | HuksTagType | HUKS_TAG_TYPE_BYTES = 5 << 28 | Added|
| ohos.security.huks | HuksTagType | HUKS_TAG_TYPE_BOOL = 4 << 28 | Added|
| ohos.security.huks | HuksTagType | HUKS_TAG_TYPE_ULONG = 3 << 28 | Added|
| ohos.security.huks | HuksTagType | HUKS_TAG_TYPE_UINT = 2 << 28 | Added|
| ohos.security.huks | HuksTagType | HUKS_TAG_TYPE_INT = 1 << 28 | Added|
| ohos.security.huks | HuksTagType | HUKS_TAG_TYPE_INVALID = 0 << 28 | Added|
| ohos.security.huks | HuksSendType | HUKS_SEND_TYPE_SYNC = 1 | Added|
| ohos.security.huks | HuksSendType | HUKS_SEND_TYPE_ASYNC = 0 | Added|
| ohos.security.huks | HuksKeyStorageType | HUKS_STORAGE_PERSISTENT = 1 | Added|
| ohos.security.huks | HuksKeyStorageType | HUKS_STORAGE_TEMP = 0 | Added|
| ohos.security.huks | HuksKeyFlag | HUKS_KEY_FLAG_DERIVE_KEY = 4 | Added|
| ohos.security.huks | HuksKeyFlag | HUKS_KEY_FLAG_AGREE_KEY = 3 | Added|
| ohos.security.huks | HuksKeyFlag | HUKS_KEY_FLAG_GENERATE_KEY = 2 | Added|
| ohos.security.huks | HuksKeyFlag | HUKS_KEY_FLAG_IMPORT_KEY = 1 | Added|
| ohos.security.huks | HuksKeyGenerateType | HUKS_KEY_GENERATE_TYPE_AGREE = 2 | Added|
| ohos.security.huks | HuksKeyGenerateType | HUKS_KEY_GENERATE_TYPE_DERIVE = 1 | Added|
| ohos.security.huks | HuksKeyGenerateType | HUKS_KEY_GENERATE_TYPE_DEFAULT = 0 | Added|
| ohos.security.huks | HuksKeyAlg | HUKS_ALG_DH = 103 | Added|
| ohos.security.huks | HuksKeyAlg | HUKS_ALG_ED25519 = 102 | Added|
| ohos.security.huks | HuksKeyAlg | HUKS_ALG_X25519 = 101 | Added|
| ohos.security.huks | HuksKeyAlg | HUKS_ALG_ECDH = 100 | Added|
| ohos.security.huks | HuksKeyAlg | HUKS_ALG_PBKDF2 = 52 | Added|
| ohos.security.huks | HuksKeyAlg | HUKS_ALG_HKDF = 51 | Added|
| ohos.security.huks | HuksKeyAlg | HUKS_ALG_HMAC = 50 | Added|
| ohos.security.huks | HuksKeyAlg | HUKS_ALG_AES = 20 | Added|
| ohos.security.huks | HuksKeyAlg | HUKS_ALG_DSA = 3 | Added|
| ohos.security.huks | HuksKeyAlg | HUKS_ALG_ECC = 2 | Added|
| ohos.security.huks | HuksKeyAlg | HUKS_ALG_RSA = 1 | Added|
| ohos.security.huks | HuksKeySize | HUKS_DH_KEY_SIZE_4096 = 4096 | Added|
| ohos.security.huks | HuksKeySize | HUKS_DH_KEY_SIZE_3072 = 3072 | Added|
| ohos.security.huks | HuksKeySize | HUKS_DH_KEY_SIZE_2048 = 2048 | Added|
| ohos.security.huks | HuksKeySize | HUKS_CURVE25519_KEY_SIZE_256 = 256 | Added|
| ohos.security.huks | HuksKeySize | HUKS_AES_KEY_SIZE_512 = 512 | Added|
| ohos.security.huks | HuksKeySize | HUKS_AES_KEY_SIZE_256 = 256 | Added|
| ohos.security.huks | HuksKeySize | HUKS_AES_KEY_SIZE_192 = 192 | Added|
| ohos.security.huks | HuksKeySize | HUKS_AES_KEY_SIZE_128 = 128 | Added|
| ohos.security.huks | HuksKeySize | HUKS_ECC_KEY_SIZE_521 = 521 | Added|
| ohos.security.huks | HuksKeySize | HUKS_ECC_KEY_SIZE_384 = 384 | Added|
| ohos.security.huks | HuksKeySize | HUKS_ECC_KEY_SIZE_256 = 256 | Added|
| ohos.security.huks | HuksKeySize | HUKS_ECC_KEY_SIZE_224 = 224 | Added|
| ohos.security.huks | HuksKeySize | HUKS_RSA_KEY_SIZE_4096 = 4096 | Added|
| ohos.security.huks | HuksKeySize | HUKS_RSA_KEY_SIZE_3072 = 3072 | Added|
| ohos.security.huks | HuksKeySize | HUKS_RSA_KEY_SIZE_2048 = 2048 | Added|
| ohos.security.huks | HuksKeySize | HUKS_RSA_KEY_SIZE_1024 = 1024 | Added|
| ohos.security.huks | HuksKeySize | HUKS_RSA_KEY_SIZE_768 = 768 | Added|
| ohos.security.huks | HuksKeySize | HUKS_RSA_KEY_SIZE_512 = 512 | Added|
| ohos.security.huks | HuksCipherMode | HUKS_MODE_GCM = 32 | Added|
| ohos.security.huks | HuksCipherMode | HUKS_MODE_CCM = 31 | Added|
| ohos.security.huks | HuksCipherMode | HUKS_MODE_OFB = 4 | Added|
| ohos.security.huks | HuksCipherMode | HUKS_MODE_CTR = 3 | Added|
| ohos.security.huks | HuksCipherMode | HUKS_MODE_CBC = 2 | Added|
| ohos.security.huks | HuksCipherMode | HUKS_MODE_ECB = 1 | Added|
| ohos.security.huks | HuksKeyPadding | HUKS_PADDING_PKCS7 = 5 | Added|
| ohos.security.huks | HuksKeyPadding | HUKS_PADDING_PKCS5 = 4 | Added|
| ohos.security.huks | HuksKeyPadding | HUKS_PADDING_PKCS1_V1_5 = 3 | Added|
| ohos.security.huks | HuksKeyPadding | HUKS_PADDING_PSS = 2 | Added|
| ohos.security.huks | HuksKeyPadding | HUKS_PADDING_OAEP = 1 | Added|
| ohos.security.huks | HuksKeyPadding | HUKS_PADDING_NONE = 0 | Added|
| ohos.security.huks | HuksKeyDigest | HUKS_DIGEST_SHA512 = 14 | Added|
| ohos.security.huks | HuksKeyDigest | HUKS_DIGEST_SHA384 = 13 | Added|
| ohos.security.huks | HuksKeyDigest | HUKS_DIGEST_SHA256 = 12 | Added|
| ohos.security.huks | HuksKeyDigest | HUKS_DIGEST_SHA224 = 11 | Added|
| ohos.security.huks | HuksKeyDigest | HUKS_DIGEST_SHA1 = 10 | Added|
| ohos.security.huks | HuksKeyDigest | HUKS_DIGEST_MD5 = 1 | Added|
| ohos.security.huks | HuksKeyDigest | HUKS_DIGEST_NONE = 0 | Added|
| ohos.security.huks | HuksKeyPurpose | HUKS_KEY_PURPOSE_AGREE = 256 | Added|
| ohos.security.huks | HuksKeyPurpose | HUKS_KEY_PURPOSE_MAC = 128 | Added|
| ohos.security.huks | HuksKeyPurpose | HUKS_KEY_PURPOSE_UNWRAP = 64 | Added|
| ohos.security.huks | HuksKeyPurpose | HUKS_KEY_PURPOSE_WRAP = 32 | Added|
| ohos.security.huks | HuksKeyPurpose | HUKS_KEY_PURPOSE_DERIVE = 16 | Added|
| ohos.security.huks | HuksKeyPurpose | HUKS_KEY_PURPOSE_VERIFY = 8 | Added|
| ohos.security.huks | HuksKeyPurpose | HUKS_KEY_PURPOSE_SIGN = 4 | Added|
| ohos.security.huks | HuksKeyPurpose | HUKS_KEY_PURPOSE_DECRYPT = 2 | Added|
| ohos.security.huks | HuksKeyPurpose | HUKS_KEY_PURPOSE_ENCRYPT = 1 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_UNKNOWN_ERROR = -1000 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_INTERNAL_ERROR = -999 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_INVALID_OPERATION = -125 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_INVALID_ITERATION = -124 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_INVALID_SALT = -123 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_INVALID_AE_TAG = -122 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_INVALID_NONCE = -121 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_INVALID_AAD = -120 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_INVALID_IV = -119 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_INVALID_SIGNATURE_SIZE = -118 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_INVALID_DIGEST = -117 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_INVALID_MODE = -116 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_INVALID_PURPOSE = -115 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_INVALID_PADDING = -114 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_INVALID_KEY_SIZE = -113 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_INVALID_ALGORITHM = -112 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_CHECK_GET_ITERATION_FAIL = -111 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_CHECK_GET_SALT_FAIL = -110 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_CHECK_GET_AE_TAG_FAIL = -109 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_CHECK_GET_IV_FAIL = -108 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_CHECK_GET_AAD_FAIL = -107 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_CHECK_GET_NONCE_FAIL = -106 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_CHECK_GET_MODE_FAIL = -105 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_CHECK_GET_DIGEST_FAIL = -104 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_CHECK_GET_PURPOSE_FAIL = -103 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_CHECK_GET_PADDING_FAIL = -102 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_CHECK_GET_KEY_SIZE_FAIL = -101 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_CHECK_GET_ALG_FAIL = -100 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_VERIFICATION_FAILED = -38 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_UPDATE_ROOT_KEY_MATERIAL_FAIL = -37 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_NEW_ROOT_KEY_MATERIAL_EXIST = -36 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_EFUSE_READ_FAIL = -35 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_IPC_DLOPEN_FAIL = -34 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_IPC_INIT_FAIL = -33 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_COMMUNICATION_TIMEOUT = -32 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_CRYPTO_ENGINE_ERROR = -31 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_PARAM_NOT_EXIST = -30 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_REQUEST_OVERFLOWS = -29 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_IPC_MSG_FAIL = -28 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_INVALID_KEY_FILE = -27 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_MAKE_DIR_FAIL = -26 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_CLOSE_FILE_FAIL = -25 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_OPEN_FILE_FAIL = -24 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_REMOVE_FILE_FAIL = -23 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_WRITE_FILE_FAIL = -22 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_MALLOC_FAIL = -21 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_HASH_NOT_EQUAL = -20 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_INVALID_KEY_INFO = -19 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_INVALID_PRIVATE_KEY = -18 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_INVALID_PUBLIC_KEY = -17 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_READ_FILE_FAIL = -16 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_FILE_SIZE_FAIL = -15 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_NULL_POINTER = -14 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_NOT_EXIST = -13 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_ALREADY_EXISTS = -12 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_HARDWARE_FAILURE = -11 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_STORAGE_FAILURE = -10 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_COMMUNICATION_FAILURE = -9 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_INSUFFICIENT_MEMORY = -8 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_BUFFER_TOO_SMALL = -7 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_INSUFFICIENT_DATA = -6 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_NO_PERMISSION = -5 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_NOT_SUPPORTED = -4 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_INVALID_ARGUMENT = -3 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_BAD_STATE = -2 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_FAILURE = -1 | Added|
| ohos.security.huks | HuksErrorCode | HUKS_SUCCESS = 0 | Added|
| ohos.security.huks | HuksResult | certChains?: Array<string>; | Added|
| ohos.security.huks | HuksResult | properties?: Array<HuksParam>; | Added|
| ohos.security.huks | HuksResult | outData?: Uint8Array; | Added|
| ohos.security.huks | HuksResult | errorCode: number; | Added|
| ohos.security.huks | HuksOptions | inData?: Uint8Array; | Added|
| ohos.security.huks | HuksOptions | properties?: Array<HuksParam>; | Added|
| ohos.security.huks | HuksHandle | token?: Uint8Array; | Added|
| ohos.security.huks | HuksHandle | handle: number; | Added|
| ohos.security.huks | HuksHandle | errorCode: number; | Added|
| ohos.security.huks | HuksParam | value: boolean \| number \| bigint \| Uint8Array; | Added|
| ohos.security.huks | HuksParam | tag: HuksTag; | Added|
| ohos.security.huks | huks | function getSdkVersion(options: HuksOptions) : string; | Added|
| ohos.security.huks | huks | function abort(handle: number, options: HuksOptions, callback: AsyncCallback<HuksResult>) : void;<br>function abort(handle: number, options: HuksOptions) : Promise<HuksResult>; | Added|
| ohos.security.huks | huks | function finish(handle: number, options: HuksOptions, callback: AsyncCallback<HuksResult>) : void;<br>function finish(handle: number, options: HuksOptions) : Promise<HuksResult>; | Added|
| ohos.security.huks | huks | function update(handle: number, token?: Uint8Array, options: HuksOptions, callback: AsyncCallback<HuksResult>) : void;<br>function update(handle: number, token?: Uint8Array, options: HuksOptions) : Promise<HuksResult>; | Added|
| ohos.security.huks | huks | function init(keyAlias: string, options: HuksOptions, callback: AsyncCallback<HuksHandle>) : void;<br>function init(keyAlias: string, options: HuksOptions) : Promise<HuksHandle>; | Added|
| ohos.security.huks | huks | function isKeyExist(keyAlias: string, options: HuksOptions, callback: AsyncCallback<boolean>) : void;<br>function isKeyExist(keyAlias: string, options: HuksOptions) : Promise<boolean>; | Added|
| ohos.security.huks | huks | function getKeyProperties(keyAlias: string, options: HuksOptions, callback: AsyncCallback<HuksResult>) : void;<br>function getKeyProperties(keyAlias: string, options: HuksOptions) : Promise<HuksResult>; | Added|
| ohos.security.huks | huks | function exportKey(keyAlias: string, options: HuksOptions, callback: AsyncCallback<HuksResult>) : void;<br>function exportKey(keyAlias: string, options: HuksOptions) : Promise<HuksResult>; | Added|
| ohos.security.huks | huks | function importKey(keyAlias: string, options: HuksOptions, callback: AsyncCallback<HuksResult>) : void;<br>function importKey(keyAlias: string, options: HuksOptions) : Promise<HuksResult>; | Added|
| ohos.security.huks | huks | function deleteKey(keyAlias: string, options: HuksOptions, callback: AsyncCallback<HuksResult>) : void;<br>function deleteKey(keyAlias: string, options: HuksOptions) : Promise<HuksResult>; | Added|
| ohos.security.huks | huks | function generateKey(keyAlias: string, options: HuksOptions, callback: AsyncCallback<HuksResult>) : void;<br>function generateKey(keyAlias: string, options: HuksOptions) : Promise<HuksResult>; | Added|
# JS API Changes of the Pan-Sensor Subsystem
The table below lists the APIs changes of the pan-sensor subsystem in OpenHarmony 3.1 Release over OpenHarmony 3.0 LTS.
## API Changes
| Module| Class| Method/Attribute/Enumeration/Constant| Change Type|
|---|---|---|---|
| ohos.vibrator | VibratorStopMode | VIBRATOR_STOP_MODE_PRESET = "preset" | Added|
| ohos.vibrator | VibratorStopMode | VIBRATOR_STOP_MODE_TIME = "time" | Added|
| ohos.vibrator | EffectId | EFFECT_CLOCK_TIMER = "haptic.clock.timer" | Added|
| ohos.vibrator | vibrator | function stop(stopMode: VibratorStopMode): Promise<void>;<br>function stop(stopMode: VibratorStopMode, callback?: AsyncCallback<void>): void; | Added|
| ohos.vibrator | vibrator | function vibrate(duration: number, callback?: AsyncCallback<void>): void;<br>function vibrate(duration: number): Promise<void>;<br>function vibrate(effectId: EffectId): Promise<void>;<br>function vibrate(effectId: EffectId, callback?: AsyncCallback<void>): void; | Added|
| ohos.sensor | WearDetectionResponse | value: number; | Added|
| ohos.sensor | HeartRateResponse | heartRate: number; | Added|
| ohos.sensor | BarometerResponse | pressure: number; | Added|
| ohos.sensor | AmbientTemperatureResponse | temperature: number; | Added|
| ohos.sensor | PedometerDetectionResponse | scalar: number; | Added|
| ohos.sensor | HumidityResponse | humidity: number; | Added|
| ohos.sensor | PedometerResponse | steps: number; | Added|
| ohos.sensor | MagneticFieldUncalibratedResponse | biasZ: number; | Added|
| ohos.sensor | MagneticFieldUncalibratedResponse | biasY: number; | Added|
| ohos.sensor | MagneticFieldUncalibratedResponse | biasX: number; | Added|
| ohos.sensor | MagneticFieldUncalibratedResponse | z: number; | Added|
| ohos.sensor | MagneticFieldUncalibratedResponse | y: number; | Added|
| ohos.sensor | MagneticFieldUncalibratedResponse | x: number; | Added|
| ohos.sensor | MagneticFieldResponse | z: number; | Added|
| ohos.sensor | MagneticFieldResponse | y: number; | Added|
| ohos.sensor | MagneticFieldResponse | x: number; | Added|
| ohos.sensor | HallResponse | status: number; | Added|
| ohos.sensor | LightResponse | intensity: number; | Added|
| ohos.sensor | ProximityResponse | distance: number; | Added|
| ohos.sensor | SignificantMotionResponse | scalar: number; | Added|
| ohos.sensor | GyroscopeUncalibratedResponse | biasZ: number; | Added|
| ohos.sensor | GyroscopeUncalibratedResponse | biasY: number; | Added|
| ohos.sensor | GyroscopeUncalibratedResponse | biasX: number; | Added|
| ohos.sensor | GyroscopeUncalibratedResponse | z: number; | Added|
| ohos.sensor | GyroscopeUncalibratedResponse | y: number; | Added|
| ohos.sensor | GyroscopeUncalibratedResponse | x: number; | Added|
| ohos.sensor | GyroscopeResponse | z: number; | Added|
| ohos.sensor | GyroscopeResponse | y: number; | Added|
| ohos.sensor | GyroscopeResponse | x: number; | Added|
| ohos.sensor | RotationVectorResponse | w: number; | Added|
| ohos.sensor | RotationVectorResponse | z: number; | Added|
| ohos.sensor | RotationVectorResponse | y: number; | Added|
| ohos.sensor | RotationVectorResponse | x: number; | Added|
| ohos.sensor | OrientationResponse | gamma: number; | Added|
| ohos.sensor | OrientationResponse | beta: number; | Added|
| ohos.sensor | OrientationResponse | alpha: number; | Added|
| ohos.sensor | GravityResponse | z: number; | Added|
| ohos.sensor | GravityResponse | y: number; | Added|
| ohos.sensor | GravityResponse | x: number; | Added|
| ohos.sensor | AccelerometerUncalibratedResponse | biasZ: number; | Added|
| ohos.sensor | AccelerometerUncalibratedResponse | biasY: number; | Added|
| ohos.sensor | AccelerometerUncalibratedResponse | biasX: number; | Added|
| ohos.sensor | AccelerometerUncalibratedResponse | z: number; | Added|
| ohos.sensor | AccelerometerUncalibratedResponse | y: number; | Added|
| ohos.sensor | AccelerometerUncalibratedResponse | x: number; | Added|
| ohos.sensor | LinearAccelerometerResponse | z: number; | Added|
| ohos.sensor | LinearAccelerometerResponse | y: number; | Added|
| ohos.sensor | LinearAccelerometerResponse | x: number; | Added|
| ohos.sensor | AccelerometerResponse | z: number; | Added|
| ohos.sensor | AccelerometerResponse | y: number; | Added|
| ohos.sensor | AccelerometerResponse | x: number; | Added|
| ohos.sensor | Response | timestamp: number; | Added|
| ohos.sensor | SensorType | SENSOR_TYPE_ID_ACCELEROMETER_UNCALIBRATED = 281 | Added|
| ohos.sensor | SensorType | SENSOR_TYPE_ID_WEAR_DETECTION = 280 | Added|
| ohos.sensor | SensorType | SENSOR_TYPE_ID_HEART_RATE = 278 | Added|
| ohos.sensor | SensorType | SENSOR_TYPE_ID_PEDOMETER = 266 | Added|
| ohos.sensor | SensorType | SENSOR_TYPE_ID_PEDOMETER_DETECTION = 265 | Added|
| ohos.sensor | SensorType | SENSOR_TYPE_ID_SIGNIFICANT_MOTION = 264 | Added|
| ohos.sensor | SensorType | SENSOR_TYPE_ID_GYROSCOPE_UNCALIBRATED = 263 | Added|
| ohos.sensor | SensorType | SENSOR_TYPE_ID_MAGNETIC_FIELD_UNCALIBRATED = 261 | Added|
| ohos.sensor | SensorType | SENSOR_TYPE_ID_AMBIENT_TEMPERATURE = 260 | Added|
| ohos.sensor | SensorType | SENSOR_TYPE_ID_ROTATION_VECTOR = 259 | Added|
| ohos.sensor | SensorType | SENSOR_TYPE_ID_LINEAR_ACCELERATION = 258 | Added|
| ohos.sensor | SensorType | SENSOR_TYPE_ID_GRAVITY = 257 | Added|
| ohos.sensor | SensorType | SENSOR_TYPE_ID_ORIENTATION = 256 | Added|
| ohos.sensor | SensorType | SENSOR_TYPE_ID_HUMIDITY = 13 | Added|
| ohos.sensor | SensorType | SENSOR_TYPE_ID_PROXIMITY = 12 | Added|
| ohos.sensor | SensorType | SENSOR_TYPE_ID_HALL = 10 | Added|
| ohos.sensor | SensorType | SENSOR_TYPE_ID_BAROMETER = 8 | Added|
| ohos.sensor | SensorType | SENSOR_TYPE_ID_MAGNETIC_FIELD = 6 | Added|
| ohos.sensor | SensorType | SENSOR_TYPE_ID_AMBIENT_LIGHT = 5 | Added|
| ohos.sensor | SensorType | SENSOR_TYPE_ID_GYROSCOPE = 2 | Added|
| ohos.sensor | SensorType | SENSOR_TYPE_ID_ACCELEROMETER = 1 | Added|
| ohos.sensor | Options | interval?: number; | Added|
| ohos.sensor | RotationMatrixResponse | inclination: Array<number> | Added|
| ohos.sensor | RotationMatrixResponse | rotation: Array<number>; | Added|
| ohos.sensor | sensor | function getDirection(rotationMatrix: Array<number>, callback: AsyncCallback<Array<number>>): void;<br>function getDirection(rotationMatrix: Array<number>): Promise<Array<number>>; | Added|
| ohos.sensor | sensor | function createQuaternion(rotationVector: Array<number>, callback: AsyncCallback<Array<number>>): void;<br>function createQuaternion(rotationVector: Array<number>): Promise<Array<number>>; | Added|
| ohos.sensor | sensor | function transformCoordinateSystem(inRotationVector: Array<number>, coordinates: CoordinatesOptions, callback: AsyncCallback<Array<number>>): void;<br>function transformCoordinateSystem(inRotationVector: Array<number>, coordinates: CoordinatesOptions): Promise<Array<number>>; | Added|
| ohos.sensor | CoordinatesOptions | y: number; | Added|
| ohos.sensor | CoordinatesOptions | x: number; | Added|
| ohos.sensor | sensor | function createRotationMatrix(rotationVector: Array<number>, callback: AsyncCallback<Array<number>>): void;<br>function createRotationMatrix(rotationVector: Array<number>): Promise<Array<number>>;<br>function createRotationMatrix(gravity: Array<number>, geomagnetic: Array<number>, callback: AsyncCallback<RotationMatrixResponse>): void;<br>function createRotationMatrix(gravity: Array<number>, geomagnetic: Array<number>,): Promise<RotationMatrixResponse>; | Added|
| ohos.sensor | sensor | function getAngleModify(currentRotationMatrix: Array<number>, preRotationMatrix: Array<number>, callback: AsyncCallback<Array<number>>): void;<br>function getAngleModify(currentRotationMatrix: Array<number>, preRotationMatrix: Array<number>): Promise<Array<number>>;| Added|
| ohos.sensor | sensor | function getGeomagneticDip(inclinationMatrix: Array<number>, callback: AsyncCallback<number>): void;<br>function getGeomagneticDip(inclinationMatrix: Array<number>): Promise<number>; | Added|
| ohos.sensor | sensor | function getAltitude(seaPressure: number, currentPressure: number, callback: AsyncCallback<number>): void;<br>function getAltitude(seaPressure: number, currentPressure: number): Promise<number>; | Added|
| ohos.sensor | sensor | function getGeomagneticField(locationOptions: LocationOptions, timeMillis: number, callback: AsyncCallback<GeomagneticResponse>): void;<br>function getGeomagneticField(locationOptions: LocationOptions, timeMillis: number): Promise<GeomagneticResponse>; | Added|
| ohos.sensor | GeomagneticResponse | totalIntensity: number; | Added|
| ohos.sensor | GeomagneticResponse | levelIntensity: number; | Added|
| ohos.sensor | GeomagneticResponse | deflectionAngle: number; | Added|
| ohos.sensor | GeomagneticResponse | geomagneticDip: number; | Added|
| ohos.sensor | GeomagneticResponse | z: number; | Added|
| ohos.sensor | GeomagneticResponse | y: number; | Added|
| ohos.sensor | GeomagneticResponse | x: number; | Added|
| ohos.sensor | LocationOptions | altitude: number; | Added|
| ohos.sensor | LocationOptions | longitude: number; | Added|
| ohos.sensor | LocationOptions | latitude: number; | Added|
| ohos.sensor | sensor | function off(type: SensorType.SENSOR_TYPE_ID_ACCELEROMETER, callback?: Callback<AccelerometerResponse>): void;<br>function off(type: SensorType.SENSOR_TYPE_ID_ACCELEROMETER_UNCALIBRATED, callback?: Callback<AccelerometerUncalibratedResponse>): void;<br>function off(type: SensorType.SENSOR_TYPE_ID_AMBIENT_LIGHT, callback?: Callback<LightResponse>): void;<br>function off(type: SensorType.SENSOR_TYPE_ID_AMBIENT_TEMPERATURE, callback?: Callback<AmbientTemperatureResponse>): void;<br>function off(type: SensorType.SENSOR_TYPE_ID_BAROMETER, callback?: Callback<BarometerResponse>): void;<br>function off(type: SensorType.SENSOR_TYPE_ID_GRAVITY, callback?: Callback<GravityResponse>): void;<br>function off(type: SensorType.SENSOR_TYPE_ID_GYROSCOPE, callback?: Callback<GyroscopeResponse>): void;<br>function off(type: SensorType.SENSOR_TYPE_ID_GYROSCOPE_UNCALIBRATED, callback?: Callback<GyroscopeUncalibratedResponse>): void;<br>function off(type: SensorType.SENSOR_TYPE_ID_HALL, callback?: Callback<HallResponse>): void;<br>function off(type: SensorType.SENSOR_TYPE_ID_HEART_RATE, callback?: Callback<HeartRateResponse>): void;<br>function off(type: SensorType.SENSOR_TYPE_ID_HUMIDITY, callback?: Callback<HumidityResponse>): void;<br>function off(type: SensorType.SENSOR_TYPE_ID_LINEAR_ACCELERATION, callback?: Callback<LinearAccelerometerResponse>): void;<br>function off(type: SensorType.SENSOR_TYPE_ID_MAGNETIC_FIELD, callback?: Callback<MagneticFieldResponse>): void;<br>function off(type: SensorType.SENSOR_TYPE_ID_MAGNETIC_FIELD_UNCALIBRATED, callback?: Callback<MagneticFieldUncalibratedResponse>): void;<br>function off(type: SensorType.SENSOR_TYPE_ID_ORIENTATION, callback?: Callback<OrientationResponse>): void;<br>function off(type: SensorType.SENSOR_TYPE_ID_PEDOMETER, callback?: Callback<PedometerResponse>): void;<br>function off(type: SensorType.SENSOR_TYPE_ID_PEDOMETER_DETECTION, callback?: Callback<PedometerDetectionResponse>): void;<br>function off(type: SensorType.SENSOR_TYPE_ID_PROXIMITY, callback?: Callback<ProximityResponse>): void;<br>function off(type: SensorType.SENSOR_TYPE_ID_ROTATION_VECTOR, callback?: Callback<RotationVectorResponse>): void;<br>function off(type: SensorType.SENSOR_TYPE_ID_SIGNIFICANT_MOTION, callback?: Callback<SignificantMotionResponse>): void;<br>function off(type: SensorType.SENSOR_TYPE_ID_WEAR_DETECTION, callback?: Callback<WearDetectionResponse>): void;| Added|
| ohos.sensor | sensor | function once(type: SensorType.SENSOR_TYPE_ID_ACCELEROMETER, callback: Callback<AccelerometerResponse>): void;<br>function once(type: SensorType.SENSOR_TYPE_ID_ACCELEROMETER_UNCALIBRATED, callback: Callback<AccelerometerUncalibratedResponse>): void;<br>function once(type: SensorType.SENSOR_TYPE_ID_AMBIENT_LIGHT, callback: Callback<LightResponse>): void;<br>function once(type: SensorType.SENSOR_TYPE_ID_AMBIENT_TEMPERATURE, callback: Callback<AmbientTemperatureResponse>): void;<br>function once(type: SensorType.SENSOR_TYPE_ID_BAROMETER, callback: Callback<BarometerResponse>): void;<br>function once(type: SensorType.SENSOR_TYPE_ID_GRAVITY, callback: Callback<GravityResponse>): void;<br>function once(type: SensorType.SENSOR_TYPE_ID_GYROSCOPE, callback: Callback<GyroscopeResponse>): void;<br>function once(type: SensorType.SENSOR_TYPE_ID_GYROSCOPE_UNCALIBRATED, callback: Callback<GyroscopeUncalibratedResponse>): void;<br>function once(type: SensorType.SENSOR_TYPE_ID_HALL, callback: Callback<HallResponse>): void;<br>function once(type: SensorType.SENSOR_TYPE_ID_HEART_RATE, callback: Callback<HeartRateResponse>): void;<br>function once(type: SensorType.SENSOR_TYPE_ID_HUMIDITY, callback: Callback<HumidityResponse>): void;<br>function once(type: SensorType.SENSOR_TYPE_ID_LINEAR_ACCELERATION, callback: Callback<LinearAccelerometerResponse>): void;<br>function once(type: SensorType.SENSOR_TYPE_ID_MAGNETIC_FIELD, callback: Callback<MagneticFieldResponse>): void;<br>function once(type: SensorType.SENSOR_TYPE_ID_MAGNETIC_FIELD_UNCALIBRATED, callback: Callback<MagneticFieldUncalibratedResponse>): void;<br>function once(type: SensorType.SENSOR_TYPE_ID_ORIENTATION, callback: Callback<OrientationResponse>): void;<br>function once(type: SensorType.SENSOR_TYPE_ID_PEDOMETER, callback: Callback<PedometerResponse>): void;<br>function once(type: SensorType.SENSOR_TYPE_ID_PEDOMETER_DETECTION, callback: Callback<PedometerDetectionResponse>): void;<br>function once(type: SensorType.SENSOR_TYPE_ID_PROXIMITY, callback: Callback<ProximityResponse>): void;<br>function once(type: SensorType.SENSOR_TYPE_ID_ROTATION_VECTOR, callback: Callback<RotationVectorResponse>): void;<br>function once(type: SensorType.SENSOR_TYPE_ID_SIGNIFICANT_MOTION, callback: Callback<SignificantMotionResponse>): void;<br>function once(type: SensorType.SENSOR_TYPE_ID_WEAR_DETECTION, callback: Callback<WearDetectionResponse>): void; | Added|
| ohos.sensor | sensor | function on(type: SensorType.SENSOR_TYPE_ID_ACCELEROMETER, callback: Callback<AccelerometerResponse>, options?: Options): void;<br>function on(type: SensorType.SENSOR_TYPE_ID_ACCELEROMETER_UNCALIBRATED, callback: Callback<AccelerometerUncalibratedResponse>, options?: Options): void;<br>function on(type: SensorType.SENSOR_TYPE_ID_AMBIENT_LIGHT, callback: Callback<LightResponse>, options?: Options): void;<br>function on(type: SensorType.SENSOR_TYPE_ID_AMBIENT_TEMPERATURE, callback: Callback<AmbientTemperatureResponse>, options?: Options): void;<br>function on(type: SensorType.SENSOR_TYPE_ID_BAROMETER, callback: Callback<BarometerResponse>, options?: Options): void;<br>function on(type: SensorType.SENSOR_TYPE_ID_GRAVITY, callback: Callback<GravityResponse>, options?: Options): void;<br>function on(type: SensorType.SENSOR_TYPE_ID_GYROSCOPE, callback: Callback<GyroscopeResponse>, options?: Options): void;<br>function on(type: SensorType.SENSOR_TYPE_ID_GYROSCOPE_UNCALIBRATED, callback: Callback<GyroscopeUncalibratedResponse>, options?: Options): void;<br>function on(type: SensorType.SENSOR_TYPE_ID_HALL, callback: Callback<HallResponse>, options?: Options): void;<br>function on(type: SensorType.SENSOR_TYPE_ID_HEART_RATE, callback: Callback<HeartRateResponse>, options?: Options): void;<br>function on(type: SensorType.SENSOR_TYPE_ID_HUMIDITY, callback: Callback<HumidityResponse>, options?: Options): void;<br>function on(type: SensorType.SENSOR_TYPE_ID_LINEAR_ACCELERATION, callback: Callback<LinearAccelerometerResponse>, options?: Options): void;<br>function on(type: SensorType.SENSOR_TYPE_ID_MAGNETIC_FIELD, callback: Callback<MagneticFieldResponse>, options?: Options): void;<br>function on(type: SensorType.SENSOR_TYPE_ID_MAGNETIC_FIELD_UNCALIBRATED, callback: Callback<MagneticFieldUncalibratedResponse>, options?: Options): void;<br>function on(type: SensorType.SENSOR_TYPE_ID_ORIENTATION, callback: Callback<OrientationResponse>, options?: Options): void;<br>function on(type: SensorType.SENSOR_TYPE_ID_PEDOMETER, callback: Callback<PedometerResponse>, options?: Options): void;<br>function on(type: SensorType.SENSOR_TYPE_ID_PEDOMETER_DETECTION, callback: Callback<PedometerDetectionResponse>, options?: Options): void;<br>function on(type: SensorType.SENSOR_TYPE_ID_PROXIMITY, callback: Callback<ProximityResponse>, options?: Options): void;<br>function on(type: SensorType.SENSOR_TYPE_ID_ROTATION_VECTOR, callback: Callback<RotationVectorResponse>, options?: Options): void;<br>function on(type: SensorType.SENSOR_TYPE_ID_SIGNIFICANT_MOTION, callback: Callback<SignificantMotionResponse>, options?: Options): void;<br>function on(type: SensorType.SENSOR_TYPE_ID_WEAR_DETECTION, callback: Callback<WearDetectionResponse>, options?: Options): void; | Added|
# JS API Changes of the Application Framework Subsystem
The table below lists the APIs changes of the application framework subsystem in OpenHarmony 3.1 Release over OpenHarmony 3.0 LTS.
## API Changes
| Module| Class| Method/Attribute/Enumeration/Constant| Change Type|
|---|---|---|---|
| ohos.settings | settings | function setValueSync(dataAbilityHelper: DataAbilityHelper, name: string, value: string): boolean; | Added|
| ohos.settings | settings | function getValueSync(dataAbilityHelper: DataAbilityHelper, name: string, defValue: string): string; | Added|
| ohos.settings | settings | function getUriSync(name: string): string; | Added|
| ohos.settings | settings | function canShowFloating(callback: AsyncCallback<boolean>): void;<br>function canShowFloating(): Promise<boolean>; | Added|
| ohos.settings | settings | function enableAirplaneMode(enable: boolean, callback: AsyncCallback<void>): void;<br>function enableAirplaneMode(enable: boolean): Promise<void>; | Added|
| ohos.settings | settings | function getValue(dataAbilityHelper: DataAbilityHelper, name: string, callback: AsyncCallback<object>): void;<br>function getValue(dataAbilityHelper: DataAbilityHelper, name: string): Promise<object>; | Added|
| ohos.settings | settings | function getURI(name: string, callback: AsyncCallback<object>): void;<br>function getURI(name: string): Promise<object>; | Added|
| ohos.settings | wireless | const WIFI_WATCHDOG_STATUS: string | Added|
| ohos.settings | wireless | const WIFI_STATUS: string | Added|
| ohos.settings | wireless | const WIFI_TO_MOBILE_DATA_AWAKE_TIMEOUT: string | Added|
| ohos.settings | wireless | const WIFI_DHCP_MAX_RETRY_COUNT: string | Added|
| ohos.settings | wireless | const OWNER_LOCKDOWN_WIFI_CFG: string | Added|
| ohos.settings | wireless | const WIFI_RADIO: string | Added|
| ohos.settings | wireless | const NFC_RADIO: string | Added|
| ohos.settings | wireless | const CELL_RADIO: string | Added|
| ohos.settings | wireless | const BLUETOOTH_RADIO: string | Added|
| ohos.settings | wireless | const BLUETOOTH_STATUS: string | Added|
| ohos.settings | wireless | const AIRPLANE_MODE_RADIOS: string | Added|
| ohos.settings | wireless | const BLUETOOTH_DISCOVER_TIMEOUT: string | Added|
| ohos.settings | wireless | const BLUETOOTH_DISCOVER_ABILITY_STATUS: string | Added|
| ohos.settings | TTS | const ENABLED_TTS_PLUGINS: string | Added|
| ohos.settings | TTS | const DEFAULT_TTS_SYNTH: string | Added|
| ohos.settings | TTS | const DEFAULT_TTS_RATE: string | Added|
| ohos.settings | TTS | const DEFAULT_TTS_PITCH: string | Added|
| ohos.settings | sound | const HAPTIC_FEEDBACK_STATUS: string | Added|
| ohos.settings | sound | const VIBRATE_STATUS: string | Added|
| ohos.settings | sound | const SOUND_EFFECTS_STATUS: string | Added|
| ohos.settings | sound | const DEFAULT_RINGTONE: string | Added|
| ohos.settings | sound | const DEFAULT_NOTIFICATION_SOUND: string | Added|
| ohos.settings | sound | const AFFECTED_MUTE_STREAMS: string | Added|
| ohos.settings | sound | const AFFECTED_MODE_RINGER_STREAMS: string | Added|
| ohos.settings | sound | const DTMF_TONE_WHILE_DIALING: string | Added|
| ohos.settings | sound | const DTMF_TONE_TYPE_WHILE_DIALING: string | Added|
| ohos.settings | sound | const DEFAULT_ALARM_ALERT: string | Added|
| ohos.settings | sound | const VIBRATE_WHILE_RINGING: string | Added|
| ohos.settings | phone | const RTT_CALLING_STATUS: string | Added|
| ohos.settings | network | const NETWORK_PREFERENCE_USAGE: string | Added|
| ohos.settings | network | const HTTP_PROXY_CFG: string | Added|
| ohos.settings | network | const DATA_ROAMING_STATUS: string | Added|
| ohos.settings | input | const SHOW_PASSWORD_TEXT_INPUT: string | Added|
| ohos.settings | input | const AUTO_REPLACE_TEXT_INPUT: string | Added|
| ohos.settings | input | const AUTO_PUNCTUATE_TEXT_INPUT: string | Added|
| ohos.settings | input | const AUTO_CAPS_TEXT_INPUT: string | Added|
| ohos.settings | input | const SELECTOR_VISIBILITY_FOR_INPUT_METHOD: string | Added|
| ohos.settings | input | const ACTIVATED_INPUT_METHODS: string | Added|
| ohos.settings | input | const ACTIVATED_INPUT_METHOD_SUB_MODE: string | Added|
| ohos.settings | input | const DEFAULT_INPUT_METHOD: string | Added|
| ohos.settings | general | const TOUCH_EXPLORATION_STATUS: string | Added|
| ohos.settings | general | const SKIP_USE_HINTS: string | Added|
| ohos.settings | general | const GEOLOCATION_ORIGINS_ALLOWED: string | Added|
| ohos.settings | general | const ACTIVATED_ACCESSIBILITY_SERVICES: string | Added|
| ohos.settings | general | const ACCESSIBILITY_STATUS: string | Added|
| ohos.settings | general | const DEBUG_APP_PACKAGE: string | Added|
| ohos.settings | general | const DEBUGGER_WAITING: string | Added|
| ohos.settings | general | const USB_STORAGE_STATUS: string | Added|
| ohos.settings | general | const DEVICE_NAME: string | Added|
| ohos.settings | general | const DEVELOPMENT_SETTINGS_STATUS: string | Added|
| ohos.settings | general | const CONTACT_METADATA_SYNC_STATUS: string | Added|
| ohos.settings | general | const BOOT_COUNTING: string | Added|
| ohos.settings | general | const HDC_STATUS: string | Added|
| ohos.settings | general | const DEVICE_PROVISION_STATUS: string | Added|
| ohos.settings | general | const AIRPLANE_MODE_STATUS: string | Added|
| ohos.settings | general | const ACCELEROMETER_ROTATION_STATUS: string | Added|
| ohos.settings | general | const END_BUTTON_ACTION: string | Added|
| ohos.settings | general | const SETUP_WIZARD_FINISHED: string | Added|
| ohos.settings | display | const DISPLAY_INVERSION_STATUS: string | Added|
| ohos.settings | display | const WINDOW_ANIMATION_SCALE: string | Added|
| ohos.settings | display | const TRANSITION_ANIMATION_SCALE: string | Added|
| ohos.settings | display | const ANIMATOR_DURATION_SCALE: string | Added|
| ohos.settings | display | const DEFAULT_SCREEN_ROTATION: string | Added|
| ohos.settings | display | const SCREEN_OFF_TIMEOUT: string | Added|
| ohos.settings | display | const MANUAL_SCREEN_BRIGHTNESS_MODE: number | Added|
| ohos.settings | display | const AUTO_SCREEN_BRIGHTNESS_MODE: number | Added|
| ohos.settings | display | const AUTO_SCREEN_BRIGHTNESS: string | Added|
| ohos.settings | display | const SCREEN_BRIGHTNESS_STATUS: string | Added|
| ohos.settings | display | const FONT_SCALE: string | Added|
| ohos.settings | date | const AUTO_GAIN_TIME_ZONE: string | Added|
| ohos.settings | date | const AUTO_GAIN_TIME: string | Added|
| ohos.settings | date | const TIME_FORMAT: string | Added|
| ohos.settings | date | const DATE_FORMAT: string | Added|
# JS API Changes of the DSoftBus Subsystem
The table below lists the APIs changes of the DSoftBus subsystem in OpenHarmony 3.1 Release over OpenHarmony 3.0 LTS.
## API Changes
| Module| Class| Method/Attribute/Enumeration/Constant| Change Type|
|---|---|---|---|
| ohos.rpc | Ashmem | readFromAshmem(size: number, offset: number): number[]; | Added|
| ohos.rpc | Ashmem | writeToAshmem(buf: number[], size: number, offset: number): boolean; | Added|
| ohos.rpc | Ashmem | setProtection(protectionType: number): boolean; | Added|
| ohos.rpc | Ashmem | mapReadOnlyAshmem(): boolean; | Added|
| ohos.rpc | Ashmem | mapReadAndWriteAshmem(): boolean; | Added|
| ohos.rpc | Ashmem | mapAshmem(mapType: number): boolean; | Added|
| ohos.rpc | Ashmem | getAshmemSize(): number; | Added|
| ohos.rpc | Ashmem | unmapAshmem(): void; | Added|
| ohos.rpc | Ashmem | closeAshmem(): void; | Added|
| ohos.rpc | Ashmem | static createAshmemFromExisting(ashmem: Ashmem): Ashmem; | Added|
| ohos.rpc | Ashmem | static createAshmem(name: string, size: number): Ashmem; | Added|
| ohos.rpc | Ashmem | PROT_WRITE = 2; | Added|
| ohos.rpc | Ashmem | PROT_READ = 1; | Added|
| ohos.rpc | Ashmem | PROT_NONE = 0; | Added|
| ohos.rpc | Ashmem | PROT_EXEC = 4; | Added|
| ohos.rpc | IPCSkeleton | static getCallingTokenId(): number; | Added|
| ohos.rpc | SendRequestResult | reply: MessageParcel; | Added|
| ohos.rpc | SendRequestResult | data: MessageParcel; | Added|
| ohos.rpc | SendRequestResult | code: number; | Added|
| ohos.rpc | SendRequestResult | errCode: number; | Added|
| ohos.rpc | MessageParcel | readRawData(size: number): number[]; | Added|
| ohos.rpc | MessageParcel | writeRawData(rawData: number[], size: number): boolean; | Added|
| ohos.rpc | MessageParcel | getRawDataCapacity(): number; | Added|
| ohos.rpc | MessageParcel | readAshmem(): Ashmem; | Added|
| ohos.rpc | MessageParcel | writeAshmem(ashmem: Ashmem): boolean; | Added|
| ohos.rpc | MessageParcel | readFileDescriptor(): number; | Added|
| ohos.rpc | MessageParcel | writeFileDescriptor(fd: number): boolean; | Added|
| ohos.rpc | MessageParcel | containFileDescriptors(): boolean; | Added|
| ohos.rpc | MessageParcel | static dupFileDescriptor(fd: number) :number; | Added|
| ohos.rpc | MessageParcel | static closeFileDescriptor(fd: number): void; | Added|
| ohos.rpc | MessageParcel | readRemoteObjectArray(objects: IRemoteObject[]): void;<br>readRemoteObjectArray(): IRemoteObject[]; | Added|
| ohos.rpc | MessageParcel | readSequenceableArray(sequenceableArray: Sequenceable[]): void; | Added|
| ohos.rpc | MessageParcel | writeRemoteObjectArray(objectArray: IRemoteObject[]): boolean; | Added|
| ohos.rpc | MessageParcel | readException(): void; | Added|
| ohos.rpc | MessageParcel | writeNoException(): void; | Added|
# JS API Changes of the Telephony Subsystem
The table below lists the APIs changes of the Telephony subsystem in OpenHarmony 3.1 Release over OpenHarmony 3.0 LTS.
## API Changes
| Module| Class| Method/Attribute/Enumeration/Constant| Change Type|
|---|---|---|---|
| ohos.telephony.sms | sms | function hasSmsCapability(): boolean; | Added|
| ohos.telephony.sim | CardType | SINGLE_MODE_ISIM_CARD = 60 | Added|
| ohos.telephony.sim | CardType | DUAL_MODE_UG_CARD = 50 | Added|
| ohos.telephony.sim | CardType | DUAL_MODE_TELECOM_LTE_CARD = 43 | Added|
| ohos.telephony.sim | CardType | CU_DUAL_MODE_CARD = 42 | Added|
| ohos.telephony.sim | CardType | CT_NATIONAL_ROAMING_CARD = 41 | Added|
| ohos.telephony.sim | CardType | DUAL_MODE_CG_CARD = 40 | Added|
| ohos.telephony.sim | CardType | SINGLE_MODE_RUIM_CARD = 30 | Added|
| ohos.telephony.sim | CardType | SINGLE_MODE_USIM_CARD = 20 | Added|
| ohos.telephony.sim | CardType | SINGLE_MODE_SIM_CARD = 10 | Added|
| ohos.telephony.sim | CardType | UNKNOWN_CARD = -1 | Added|
| ohos.telephony.sim | sim | function hasSimCard(slotId: number, callback: AsyncCallback<boolean>): void;<br>function hasSimCard(slotId: number): Promise<boolean>; | Added|
| ohos.telephony.sim | sim | function getMaxSimCount(): number; | Added|
| ohos.telephony.sim | sim | function getCardType(slotId: number, callback: AsyncCallback<CardType>): void;<br>function getCardType(slotId: number): Promise<CardType>; | Added|
| ohos.telephony.sim | sim | function hasOperatorPrivileges(slotId: number, callback: AsyncCallback<boolean>): void;<br>function hasOperatorPrivileges(slotId: number): Promise<boolean>; | Added|
| ohos.telephony.sim | sim | function isSimActive(slotId: number, callback: AsyncCallback<boolean>): void;<br>function isSimActive(slotId: number): Promise<boolean>; | Added|
| ohos.telephony.radio | NetworkState | cfgTech: RadioTechnology; | Added|
| ohos.telephony.radio | radio | function getOperatorName(slotId: number, callback: AsyncCallback<string>): void;<br>function getOperatorName(slotId: number): Promise<string>; | Added|
| ohos.telephony.radio | radio | function isNrSupported(): boolean;<br>function isNrSupported(slotId: number): boolean; | Added|
| ohos.telephony.radio | radio | function getPrimarySlotId(callback: AsyncCallback<number>): void;<br>function getPrimarySlotId(): Promise<number>; | Added|
| ohos.telephony.observer | LockReason | SIM_SIM_PUK | Added|
| ohos.telephony.observer | LockReason | SIM_SIM_PIN | Added|
| ohos.telephony.observer | LockReason | SIM_PC_PUK | Added|
| ohos.telephony.observer | LockReason | SIM_PC_PIN | Added|
| ohos.telephony.observer | LockReason | SIM_PP_PUK | Added|
| ohos.telephony.observer | LockReason | SIM_PP_PIN | Added|
| ohos.telephony.observer | LockReason | SIM_PU_PUK | Added|
| ohos.telephony.observer | LockReason | SIM_PU_PIN | Added|
| ohos.telephony.observer | LockReason | SIM_PN_PUK | Added|
| ohos.telephony.observer | LockReason | SIM_PN_PIN | Added|
| ohos.telephony.observer | LockReason | SIM_PUK | Added|
| ohos.telephony.observer | LockReason | SIM_PIN | Added|
| ohos.telephony.observer | LockReason | SIM_NONE | Added|
| ohos.telephony.observer | SimStateData | reason: LockReason; | Added|
| ohos.telephony.observer | SimStateData | state: SimState; | Added|
| ohos.telephony.observer | SimStateData | type: CardType; | Added|
| ohos.telephony.observer | observer | function off(type: 'simStateChange', callback?: Callback<SimStateData>): void; | Added|
| ohos.telephony.observer | observer | function on(type: 'simStateChange', callback: Callback<SimStateData>): void;<br>function on(type: 'simStateChange', options: { slotId: number }, callback: Callback<SimStateData>): void; | Added|
| ohos.telephony.observer | observer | function off(type: 'cellularDataFlowChange', callback?: Callback<DataFlowType>): void; | Added|
| ohos.telephony.observer | observer | function on(type: 'cellularDataFlowChange', callback: Callback<DataFlowType>): void;<br>function on(type: 'cellularDataFlowChange', options: { slotId: number },callback: Callback<DataFlowType>): void;| Added|
| ohos.telephony.observer | observer | function off(type: 'cellularDataConnectionStateChange',callback?: Callback<{ state: DataConnectState, network: RatType }>): void;| Added|
| ohos.telephony.observer | observer | function on(type: 'cellularDataConnectionStateChange', callback: Callback<{ state: DataConnectState, network: RatType }>): void;<br>function on(type: 'cellularDataConnectionStateChange', options: { slotId: number }, callback: Callback<{ state: DataConnectState, network: RatType }>): void; | Added|
| ohos.telephony.data | DataConnectState | DATA_STATE_SUSPENDED = 3 | Added|
| ohos.telephony.data | DataConnectState | DATA_STATE_CONNECTED = 2 | Added|
| ohos.telephony.data | DataConnectState | DATA_STATE_CONNECTING = 1 | Added|
| ohos.telephony.data | DataConnectState | DATA_STATE_DISCONNECTED = 0 | Added|
| ohos.telephony.data | DataConnectState | DATA_STATE_UNKNOWN = -1 | Added|
| ohos.telephony.data | DataFlowType | DATA_FLOW_TYPE_DORMANT = 4 | Added|
| ohos.telephony.data | DataFlowType | DATA_FLOW_TYPE_UP_DOWN = 3 | Added|
| ohos.telephony.data | DataFlowType | DATA_FLOW_TYPE_UP = 2 | Added|
| ohos.telephony.data | DataFlowType | DATA_FLOW_TYPE_DOWN = 1 | Added|
| ohos.telephony.data | DataFlowType | DATA_FLOW_TYPE_NONE = 0 | Added|
| ohos.telephony.data | data | function isCellularDataRoamingEnabled(slotId: number, callback: AsyncCallback<boolean>): void;<br>function isCellularDataRoamingEnabled(slotId: number): Promise<boolean>; | Added|
| ohos.telephony.data | data | function isCellularDataEnabled(callback: AsyncCallback<boolean>): void;<br>function isCellularDataEnabled(): Promise<boolean>; | Added|
| ohos.telephony.data | data | function getCellularDataState(callback: AsyncCallback<DataConnectState>): void;<br>function getCellularDataState(): Promise<DataConnectState>; | Added|
| ohos.telephony.data | data | function getCellularDataFlowType(callback: AsyncCallback<DataFlowType>): void;<br>function getCellularDataFlowType(): Promise<DataFlowType>; | Added|
| ohos.telephony.data | data | function getDefaultCellularDataSlotId(callback: AsyncCallback<number>): void;<br>function getDefaultCellularDataSlotId(): Promise<number>; | Added|
| ohos.telephony.call | call | function hasVoiceCapability(): boolean; | Added|
| ohos.telephony.call | call | function makeCall(phoneNumber: string, callback: AsyncCallback<void>): void;<br>function makeCall(phoneNumber: string): Promise<void>; | Added|
| ohos.contact | Website | website: string | Added|
| ohos.contact | SipAddress | labelId: number | Added|
| ohos.contact | SipAddress | sipAddress: string | Added|
| ohos.contact | SipAddress | labelName: string | Added|
| ohos.contact | SipAddress | static readonly INVALID_LABEL_ID: -1 | Added|
| ohos.contact | SipAddress | static readonly SIP_OTHER: 3 | Added|
| ohos.contact | SipAddress | static readonly SIP_WORK: 2 | Added|
| ohos.contact | SipAddress | static readonly SIP_HOME: 1 | Added|
| ohos.contact | SipAddress | static readonly CUSTOM_LABEL: 0 | Added|
| ohos.contact | Relation | labelId: number | Added|
| ohos.contact | Relation | relationName: string | Added|
| ohos.contact | Relation | labelName: string | Added|
| ohos.contact | Relation | static readonly INVALID_LABEL_ID: -1 | Added|
| ohos.contact | Relation | static readonly RELATION_SPOUSE: 14 | Added|
| ohos.contact | Relation | static readonly RELATION_SISTER: 13 | Added|
| ohos.contact | Relation | static readonly RELATION_RELATIVE: 12 | Added|
| ohos.contact | Relation | static readonly RELATION_REFERRED_BY: 11 | Added|
| ohos.contact | Relation | static readonly RELATION_PARTNER: 10 | Added|
| ohos.contact | Relation | static readonly RELATION_PARENT: 9 | Added|
| ohos.contact | Relation | static readonly RELATION_MOTHER: 8 | Added|
| ohos.contact | Relation | static readonly RELATION_MANAGER: 7 | Added|
| ohos.contact | Relation | static readonly RELATION_FRIEND: 6 | Added|
| ohos.contact | Relation | static readonly RELATION_FATHER: 5 | Added|
| ohos.contact | Relation | static readonly RELATION_DOMESTIC_PARTNER: 4 | Added|
| ohos.contact | Relation | static readonly RELATION_CHILD: 3 | Added|
| ohos.contact | Relation | static readonly RELATION_BROTHER: 2 | Added|
| ohos.contact | Relation | static readonly RELATION_ASSISTANT: 1 | Added|
| ohos.contact | Relation | static readonly CUSTOM_LABEL: 0 | Added|
| ohos.contact | PostalAddress | labelId: number | Added|
| ohos.contact | PostalAddress | street: string | Added|
| ohos.contact | PostalAddress | region: string | Added|
| ohos.contact | PostalAddress | postcode: string | Added|
| ohos.contact | PostalAddress | postalAddress: string | Added|
| ohos.contact | PostalAddress | pobox: string | Added|
| ohos.contact | PostalAddress | neighborhood: string | Added|
| ohos.contact | PostalAddress | labelName: string | Added|
| ohos.contact | PostalAddress | country: string | Added|
| ohos.contact | PostalAddress | city: string | Added|
| ohos.contact | PostalAddress | static readonly INVALID_LABEL_ID: -1 | Added|
| ohos.contact | PostalAddress | static readonly ADDR_OTHER: 3 | Added|
| ohos.contact | PostalAddress | static readonly ADDR_WORK: 2 | Added|
| ohos.contact | PostalAddress | static readonly ADDR_HOME: 1 | Added|
| ohos.contact | PostalAddress | static readonly CUSTOM_LABEL: 0 | Added|
| ohos.contact | Portrait | uri: string | Added|
| ohos.contact | PhoneNumber | labelId: number | Added|
| ohos.contact | PhoneNumber | phoneNumber: string | Added|
| ohos.contact | PhoneNumber | labelName: string | Added|
| ohos.contact | PhoneNumber | static readonly INVALID_LABEL_ID: -1 | Added|
| ohos.contact | PhoneNumber | static readonly NUM_MMS: 20 | Added|
| ohos.contact | PhoneNumber | static readonly NUM_ASSISTANT: 19 | Added|
| ohos.contact | PhoneNumber | static readonly NUM_WORK_PAGER: 18 | Added|
| ohos.contact | PhoneNumber | static readonly NUM_WORK_MOBILE: 17 | Added|
| ohos.contact | PhoneNumber | static readonly NUM_TTY_TDD: 16 | Added|
| ohos.contact | PhoneNumber | static readonly NUM_TELEX: 15 | Added|
| ohos.contact | PhoneNumber | static readonly NUM_RADIO: 14 | Added|
| ohos.contact | PhoneNumber | static readonly NUM_OTHER_FAX: 13 | Added|
| ohos.contact | PhoneNumber | static readonly NUM_MAIN: 12 | Added|
| ohos.contact | PhoneNumber | static readonly NUM_ISDN: 11 | Added|
| ohos.contact | PhoneNumber | static readonly NUM_COMPANY_MAIN: 10 | Added|
| ohos.contact | PhoneNumber | static readonly NUM_CAR: 9 | Added|
| ohos.contact | PhoneNumber | static readonly NUM_CALLBACK: 8 | Added|
| ohos.contact | PhoneNumber | static readonly NUM_OTHER: 7 | Added|
| ohos.contact | PhoneNumber | static readonly NUM_PAGER: 6 | Added|
| ohos.contact | PhoneNumber | static readonly NUM_FAX_HOME: 5 | Added|
| ohos.contact | PhoneNumber | static readonly NUM_FAX_WORK: 4 | Added|
| ohos.contact | PhoneNumber | static readonly NUM_WORK: 3 | Added|
| ohos.contact | PhoneNumber | static readonly NUM_MOBILE: 2 | Added|
| ohos.contact | PhoneNumber | static readonly NUM_HOME: 1 | Added|
| ohos.contact | PhoneNumber | static readonly CUSTOM_LABEL: 0 | Added|
| ohos.contact | Organization | title: string | Added|
| ohos.contact | Organization | name: string | Added|
| ohos.contact | Note | noteContent: string | Added|
| ohos.contact | NickName | nickName: string | Added|
| ohos.contact | Name | nameSuffix: string | Added|
| ohos.contact | Name | namePrefix: string | Added|
| ohos.contact | Name | middleNamePhonetic: string | Added|
| ohos.contact | Name | middleName: string | Added|
| ohos.contact | Name | givenNamePhonetic: string | Added|
| ohos.contact | Name | givenName: string | Added|
| ohos.contact | Name | fullName: string | Added|
| ohos.contact | Name | familyNamePhonetic: string | Added|
| ohos.contact | Name | familyName: string | Added|
| ohos.contact | ImAddress | labelId: number | Added|
| ohos.contact | ImAddress | labelName: string | Added|
| ohos.contact | ImAddress | imAddress: string | Added|
| ohos.contact | ImAddress | static readonly INVALID_LABEL_ID: -2 | Added|
| ohos.contact | ImAddress | static readonly IM_JABBER: 7 | Added|
| ohos.contact | ImAddress | static readonly IM_ICQ: 6 | Added|
| ohos.contact | ImAddress | static readonly IM_QQ: 4 | Added|
| ohos.contact | ImAddress | static readonly IM_SKYPE: 3 | Added|
| ohos.contact | ImAddress | static readonly IM_YAHOO: 2 | Added|
| ohos.contact | ImAddress | static readonly IM_MSN: 1 | Added|
| ohos.contact | ImAddress | static readonly IM_AIM: 0 | Added|
| ohos.contact | ImAddress | static readonly CUSTOM_LABEL: -1 | Added|
| ohos.contact | Holder | holderId: number | Added|
| ohos.contact | Holder | readonly displayName: string | Added|
| ohos.contact | Holder | readonly bundleName: string | Added|
| ohos.contact | Group | title: string | Added|
| ohos.contact | Group | groupId: number | Added|
| ohos.contact | Event | labelId: number | Added|
| ohos.contact | Event | labelName: string | Added|
| ohos.contact | Event | eventDate: string | Added|
| ohos.contact | Event | static readonly INVALID_LABEL_ID: -1 | Added|
| ohos.contact | Event | static readonly EVENT_BIRTHDAY: 3 | Added|
| ohos.contact | Event | static readonly EVENT_OTHER: 2 | Added|
| ohos.contact | Event | static readonly EVENT_ANNIVERSARY: 1 | Added|
| ohos.contact | Event | static readonly CUSTOM_LABEL: 0 | Added|
| ohos.contact | Email | labelId: number | Added|
| ohos.contact | Email | displayName: string | Added|
| ohos.contact | Email | labelName: string | Added|
| ohos.contact | Email | email: string | Added|
| ohos.contact | Email | static readonly INVALID_LABEL_ID: -1 | Added|
| ohos.contact | Email | static readonly EMAIL_OTHER: 3 | Added|
| ohos.contact | Email | static readonly EMAIL_WORK: 2 | Added|
| ohos.contact | Email | static readonly EMAIL_HOME: 1 | Added|
| ohos.contact | Email | static readonly CUSTOM_LABEL: 0 | Added|
| ohos.contact | Attribute | ATTR_WEBSITE | Added|
| ohos.contact | Attribute | ATTR_SIP_ADDRESS | Added|
| ohos.contact | Attribute | ATTR_RELATION | Added|
| ohos.contact | Attribute | ATTR_POSTAL_ADDRESS | Added|
| ohos.contact | Attribute | ATTR_PORTRAIT | Added|
| ohos.contact | Attribute | ATTR_PHONE | Added|
| ohos.contact | Attribute | ATTR_ORGANIZATION | Added|
| ohos.contact | Attribute | ATTR_NOTE | Added|
| ohos.contact | Attribute | ATTR_NICKNAME | Added|
| ohos.contact | Attribute | ATTR_NAME | Added|
| ohos.contact | Attribute | ATTR_IM | Added|
| ohos.contact | Attribute | ATTR_GROUP_MEMBERSHIP | Added|
| ohos.contact | Attribute | ATTR_EMAIL | Added|
| ohos.contact | Attribute | ATTR_CONTACT_EVENT | Added|
| ohos.contact | ContactAttributes | attributes: Attribute[] | Added|
| ohos.contact | Contact | organization: Organization | Added|
| ohos.contact | Contact | note: Note | Added|
| ohos.contact | Contact | nickName: NickName | Added|
| ohos.contact | Contact | name: Name | Added|
| ohos.contact | Contact | websites: Website[] | Added|
| ohos.contact | Contact | sipAddresses: SipAddress[] | Added|
| ohos.contact | Contact | relations: Relation[] | Added|
| ohos.contact | Contact | postalAddresses: PostalAddress[] | Added|
| ohos.contact | Contact | portrait: Portrait | Added|
| ohos.contact | Contact | phoneNumbers: PhoneNumber[] | Added|
| ohos.contact | Contact | imAddresses: ImAddress[] | Added|
| ohos.contact | Contact | groups: Group[] | Added|
| ohos.contact | Contact | events: Event[] | Added|
| ohos.contact | Contact | emails: Email[] | Added|
| ohos.contact | Contact | contactAttributes: ContactAttributes | Added|
| ohos.contact | Contact | readonly key: string | Added|
| ohos.contact | Contact | readonly id: number | Added|
| ohos.contact | Contact | static readonly INVALID_CONTACT_ID: -1 | Added|
| ohos.contact | contact | function isMyCard(id: number, callback: AsyncCallback<boolean>): void;<br>function isMyCard(id: number): Promise<boolean>; | Added|
| ohos.contact | contact | function isLocalContact(id: number, callback: AsyncCallback<boolean>): void;<br>function isLocalContact(id: number): Promise<boolean>; | Added|
| ohos.contact | contact | function updateContact(contact: Contact, callback: AsyncCallback<void>): void;<br>function updateContact(contact: Contact, attrs: ContactAttributes, callback: AsyncCallback<void>): void;<br>function updateContact(contact: Contact, attrs?: ContactAttributes): Promise<void>; | Added|
| ohos.contact | contact | function queryMyCard(callback: AsyncCallback<Contact>): void;<br>function queryMyCard(attrs: ContactAttributes, callback: AsyncCallback<Contact>): void;<br>function queryMyCard(attrs?: ContactAttributes): Promise<Contact>; | Added|
| ohos.contact | contact | function queryKey(id: number, callback: AsyncCallback<string>): void;<br>function queryKey(id: number, holder: Holder, callback: AsyncCallback<string>): void;<br>function queryKey(id: number, holder?: Holder): Promise<string>; | Added|
| ohos.contact | contact | function queryHolders(callback: AsyncCallback<Array<Holder>>): void;<br>function queryHolders(): Promise<Array<Holder>>; | Added|
| ohos.contact | contact | function queryGroups(callback: AsyncCallback<Array<Group>>): void;<br>function queryGroups(holder: Holder, callback: AsyncCallback<Array<Group>>): void;<br>function queryGroups(holder?: Holder): Promise<Array<Group>>; | Added|
| ohos.contact | contact | function queryContactsByPhoneNumber(phoneNumber: string, callback: AsyncCallback<Array<Contact>>): void;<br>function queryContactsByPhoneNumber(phoneNumber: string, holder: Holder, callback: AsyncCallback<Array<Contact>>): void;<br>function queryContactsByPhoneNumber(phoneNumber: string, attrs: ContactAttributes, callback: AsyncCallback<Array<Contact>>): void;<br>function queryContactsByPhoneNumber(phoneNumber: string, holder: Holder, attrs: ContactAttributes, callback: AsyncCallback<Array<Contact>>): void;<br>function queryContactsByPhoneNumber(phoneNumber: string, holder?: Holder, attrs?: ContactAttributes): Promise<Array<Contact>>; | Added|
| ohos.contact | contact | function queryContactsByEmail(email: string, callback: AsyncCallback<Array<Contact>>): void;<br>function queryContactsByEmail(email: string, holder: Holder, callback: AsyncCallback<Array<Contact>>): void;<br>function queryContactsByEmail(email: string, attrs: ContactAttributes, callback: AsyncCallback<Array<Contact>>): void;<br>function queryContactsByEmail(email: string, holder: Holder, attrs: ContactAttributes, callback: AsyncCallback<Array<Contact>>): void;<br>function queryContactsByEmail(email: string, holder?: Holder, attrs?: ContactAttributes): Promise<Array<Contact>>; | Added|
| ohos.contact | contact | function queryContacts(callback: AsyncCallback<Array<Contact>>): void;<br>function queryContacts(holder: Holder, callback: AsyncCallback<Array<Contact>>): void;<br>function queryContacts(attrs: ContactAttributes, callback: AsyncCallback<Array<Contact>>): void;<br>function queryContacts(holder: Holder, attrs: ContactAttributes, callback: AsyncCallback<Array<Contact>>): void;<br>function queryContacts(holder?: Holder, attrs?: ContactAttributes): Promise<Array<Contact>>; | Added|
| ohos.contact | contact | function queryContact(key: string, callback: AsyncCallback<Contact>): void;<br>function queryContact(key: string, holder: Holder, callback: AsyncCallback<Contact>): void;<br>function queryContact(key: string, attrs: ContactAttributes, callback: AsyncCallback<Contact>): void;<br>function queryContact(key: string, holder: Holder, attrs: ContactAttributes, callback: AsyncCallback<Contact>): void;<br>function queryContact(key: string, holder?: Holder, attrs?: ContactAttributes): Promise<Contact>; | Added|
| ohos.contact | contact | function deleteContact(key: string, callback: AsyncCallback<void>): void;<br>function deleteContact(key: string): Promise<void>; | Added|
| ohos.contact | contact | function selectContact(callback: AsyncCallback<Array<Contact>>): void;<br>function selectContact(): Promise<Array<Contact>>; | Added|
| ohos.contact | contact | function addContact(contact: Contact, callback: AsyncCallback<number>): void;<br>function addContact(contact: Contact): Promise<number>; | Added|
# JS API Changes of the Testing Framework Subsystem
The table below lists the APIs changes of the testing framework subsystem in OpenHarmony 3.1 Release over OpenHarmony 3.0 LTS.
## API Changes
| Module| Class| Method/Attribute/Enumeration/Constant| Change Type|
|---|---|---|---|
| ohos.uitest | UiDriver | screenCap(savePath:string):Promise<bool>; | Added|
| ohos.uitest | UiDriver | swipe(startx:number,starty:number,endx:number,endy:number):Promise<void>; | Added|
| ohos.uitest | UiDriver | longClick(x:number,y:number):Promise<void>; | Added|
| ohos.uitest | UiDriver | doubleClick(x:number,y:number):Promise<void>; | Added|
| ohos.uitest | UiDriver | click(x:number,y:number):Promise<void>; | Added|
| ohos.uitest | UiDriver | triggerKey(keyCode:number):Promise<void>; | Added|
| ohos.uitest | UiDriver | pressBack():Promise<void>; | Added|
| ohos.uitest | UiDriver | assertComponentExist(by:By):Promise<void>; | Added|
| ohos.uitest | UiDriver | findComponents(by:By):Promise<Array<UiComponent>>; | Added|
| ohos.uitest | UiDriver | findComponent(by:By):Promise<UiComponent>; | Added|
| ohos.uitest | UiDriver | delayMs(duration:number):Promise<void>; | Added|
| ohos.uitest | UiDriver | static create():UiDriver; | Added|
| ohos.uitest | UiComponent | scrollSearch(by:By):Promise<UiComponent>; | Added|
| ohos.uitest | UiComponent | inputText(text: string):Promise<void>; | Added|
| ohos.uitest | UiComponent | isSelected():Promise<bool>; | Added|
| ohos.uitest | UiComponent | isFocused():Promise<bool>; | Added|
| ohos.uitest | UiComponent | isEnabled():Promise<bool>; | Added|
| ohos.uitest | UiComponent | isScrollable():Promise<bool>; | Added|
| ohos.uitest | UiComponent | isClickable():Promise<bool>; | Added|
| ohos.uitest | UiComponent | getType():Promise<string>; | Added|
| ohos.uitest | UiComponent | getText():Promise<string>; | Added|
| ohos.uitest | UiComponent | getKey():Promise<string>; | Added|
| ohos.uitest | UiComponent | getId():Promise<number>; | Added|
| ohos.uitest | UiComponent | longClick():Promise<void>; | Added|
| ohos.uitest | UiComponent | doubleClick():Promise<void>; | Added|
| ohos.uitest | UiComponent | click():Promise<void>; | Added|
| ohos.uitest | By | isAfter(by:By):By; | Added|
| ohos.uitest | By | isBefore(by:By):By; | Added|
| ohos.uitest | By | selected(b?:bool):By; | Added|
| ohos.uitest | By | focused(b?:bool):By; | Added|
| ohos.uitest | By | enabled(b?:bool):By; | Added|
| ohos.uitest | By | scrollable(b?:bool):By; | Added|
| ohos.uitest | By | clickable(b?:bool):By; | Added|
| ohos.uitest | By | type(tp:string):By; | Added|
| ohos.uitest | By | id(id:number):By; | Added|
| ohos.uitest | By | key(key:string):By; | Added|
| ohos.uitest | By | text(txt:string,pattern?:MatchPattern):By; | Added|
| ohos.uitest | MatchPattern | ENDS_WITH = 3 | Added|
| ohos.uitest | MatchPattern | STARTS_WITH = 2 | Added|
| ohos.uitest | MatchPattern | CONTAINS = 1 | Added|
| ohos.uitest | MatchPattern | EQUALS = 0 | Added|
# JS API Changes of the USB Subsystem
The table below lists the APIs changes of the USB subsystem in OpenHarmony 3.1 Release over OpenHarmony 3.0 LTS.
## API Changes
| Module| Class| Method/Attribute/Enumeration/Constant| Change Type|
|---|---|---|---|
| ohos.usb | USBRequestDirection | USB_REQUEST_DIR_FROM_DEVICE = 0x80 | Added|
| ohos.usb | USBRequestDirection | USB_REQUEST_DIR_TO_DEVICE = 0 | Added|
| ohos.usb | USBControlRequestType | USB_REQUEST_TYPE_VENDOR | Added|
| ohos.usb | USBControlRequestType | USB_REQUEST_TYPE_CLASS | Added|
| ohos.usb | USBControlRequestType | USB_REQUEST_TYPE_STANDARD = 0 | Added|
| ohos.usb | USBRequestTargetType | USB_REQUEST_TARGET_OTHER | Added|
| ohos.usb | USBRequestTargetType | USB_REQUEST_TARGET_ENDPOINT | Added|
| ohos.usb | USBRequestTargetType | USB_REQUEST_TARGET_INTERFACE | Added|
| ohos.usb | USBRequestTargetType | USB_REQUEST_TARGET_DEVICE = 0 | Added|
| ohos.usb | USBControlParams | data: Uint8Array; | Added|
| ohos.usb | USBControlParams | index: number; | Added|
| ohos.usb | USBControlParams | value: number; | Added|
| ohos.usb | USBControlParams | reqType: USBControlRequestType; | Added|
| ohos.usb | USBControlParams | target: USBRequestTargetType; | Added|
| ohos.usb | USBControlParams | request: number; | Added|
| ohos.usb | USBDevicePipe | devAddress: number; | Added|
| ohos.usb | USBDevicePipe | busNum: number; | Added|
| ohos.usb | USBDevice | configs: Array<USBConfig>; | Added|
| ohos.usb | USBDevice | protocol: number; | Added|
| ohos.usb | USBDevice | subClass: number; | Added|
| ohos.usb | USBDevice | clazz: number; | Added|
| ohos.usb | USBDevice | productId: number; | Added|
| ohos.usb | USBDevice | vendorId: number; | Added|
| ohos.usb | USBDevice | version: string; | Added|
| ohos.usb | USBDevice | productName: string; | Added|
| ohos.usb | USBDevice | manufacturerName: string; | Added|
| ohos.usb | USBDevice | name: string; | Added|
| ohos.usb | USBDevice | serial: string; | Added|
| ohos.usb | USBDevice | devAddress: number; | Added|
| ohos.usb | USBDevice | busNum: number; | Added|
| ohos.usb | USBConfig | interfaces: Array<USBInterface>; | Added|
| ohos.usb | USBConfig | isSelfPowered: boolean; | Added|
| ohos.usb | USBConfig | isRemoteWakeup: boolean; | Added|
| ohos.usb | USBConfig | name: string; | Added|
| ohos.usb | USBConfig | maxPower: number; | Added|
| ohos.usb | USBConfig | attributes: number; | Added|
| ohos.usb | USBConfig | id: number; | Added|
| ohos.usb | USBInterface | endpoints: Array<USBEndpoint>; | Added|
| ohos.usb | USBInterface | name: string; | Added|
| ohos.usb | USBInterface | alternateSetting: number; | Added|
| ohos.usb | USBInterface | subClass: number; | Added|
| ohos.usb | USBInterface | clazz: number; | Added|
| ohos.usb | USBInterface | protocol: number; | Added|
| ohos.usb | USBInterface | id: number; | Added|
| ohos.usb | USBEndpoint | interfaceId: number; | Added|
| ohos.usb | USBEndpoint | type: number; | Added|
| ohos.usb | USBEndpoint | number: number; | Added|
| ohos.usb | USBEndpoint | direction: USBRequestDirection; | Added|
| ohos.usb | USBEndpoint | maxPacketSize: number; | Added|
| ohos.usb | USBEndpoint | interval: number; | Added|
| ohos.usb | USBEndpoint | attributes: number; | Added|
| ohos.usb | USBEndpoint | address: number; | Added|
| ohos.usb | usb | function closePipe(pipe: USBDevicePipe): number; | Added|
| ohos.usb | usb | function bulkTransfer(pipe: USBDevicePipe, endpoint: USBEndpoint, buffer: Uint8Array,timeout?: number): Promise<number>; | Added|
| ohos.usb | usb | function controlTransfer(pipe: USBDevicePipe, contrlparam: USBControlParams, timeout?: number): Promise<number>; | Added|
| ohos.usb | usb | function getFileDescriptor(pipe: USBDevicePipe): number; | Added|
| ohos.usb | usb | function getRawDescriptor(pipe: USBDevicePipe): Uint8Array; | Added|
| ohos.usb | usb | function setInterface(pipe: USBDevicePipe, iface: USBInterface): number; | Added|
| ohos.usb | usb | function setConfiguration(pipe: USBDevicePipe, config: USBConfig): number; | Added|
| ohos.usb | usb | function releaseInterface(pipe: USBDevicePipe, iface: USBInterface): number; | Added|
| ohos.usb | usb | function claimInterface(pipe: USBDevicePipe, iface: USBInterface, force?: boolean): number; | Added|
| ohos.usb | usb | function requestRight(deviceName: string): Promise<boolean>; | Added|
| ohos.usb | usb | function hasRight(deviceName: string): boolean; | Added|
| ohos.usb | usb | function connectDevice(device: USBDevice): Readonly<USBDevicePipe>; | Added|
| ohos.usb | usb | function getDevices(): Array<Readonly<USBDevice>>; | Added|
# JS API Changes of the User IAM Subsystem
The table below lists the APIs changes of the user IAM subsystem in OpenHarmony 3.1 Release over OpenHarmony 3.0 LTS.
## API Changes
| Module| Class| Method/Attribute/Enumeration/Constant| Change Type|
|---|---|---|---|
| ohos.userIAM.userAuth | AuthTrustLevel | ATL4 = 40000 | Added|
| ohos.userIAM.userAuth | AuthTrustLevel | ATL3 = 30000 | Added|
| ohos.userIAM.userAuth | AuthTrustLevel | ATL2 = 20000 | Added|
| ohos.userIAM.userAuth | AuthTrustLevel | ATL1 = 10000 | Added|
| ohos.userIAM.userAuth | UserAuthType | FINGERPRINT = 4 | Added|
| ohos.userIAM.userAuth | UserAuthType | FACE = 2 | Added|
| ohos.userIAM.userAuth | FingerprintTips | FINGERPRINT_AUTH_TIP_TOO_SLOW = 5 | Added|
| ohos.userIAM.userAuth | FingerprintTips | FINGERPRINT_AUTH_TIP_TOO_FAST = 4 | Added|
| ohos.userIAM.userAuth | FingerprintTips | FINGERPRINT_AUTH_TIP_PARTIAL = 3 | Added|
| ohos.userIAM.userAuth | FingerprintTips | FINGERPRINT_AUTH_TIP_INSUFFICIENT = 2 | Added|
| ohos.userIAM.userAuth | FingerprintTips | FINGERPRINT_AUTH_TIP_DIRTY = 1 | Added|
| ohos.userIAM.userAuth | FingerprintTips | FINGERPRINT_AUTH_TIP_GOOD = 0 | Added|
| ohos.userIAM.userAuth | FaceTips | FACE_AUTH_TIP_NOT_DETECTED = 11 | Added|
| ohos.userIAM.userAuth | FaceTips | FACE_AUTH_TIP_POOR_GAZE = 10 | Added|
| ohos.userIAM.userAuth | FaceTips | FACE_AUTH_TIP_TOO_MUCH_MOTION = 9 | Added|
| ohos.userIAM.userAuth | FaceTips | FACE_AUTH_TIP_TOO_LEFT = 8 | Added|
| ohos.userIAM.userAuth | FaceTips | FACE_AUTH_TIP_TOO_RIGHT = 7 | Added|
| ohos.userIAM.userAuth | FaceTips | FACE_AUTH_TIP_TOO_LOW = 6 | Added|
| ohos.userIAM.userAuth | FaceTips | FACE_AUTH_TIP_TOO_HIGH = 5 | Added|
| ohos.userIAM.userAuth | FaceTips | FACE_AUTH_TIP_TOO_FAR = 4 | Added|
| ohos.userIAM.userAuth | FaceTips | FACE_AUTH_TIP_TOO_CLOSE = 3 | Added|
| ohos.userIAM.userAuth | FaceTips | FACE_AUTH_TIP_TOO_DARK = 2 | Added|
| ohos.userIAM.userAuth | FaceTips | FACE_AUTH_TIP_TOO_BRIGHT = 1 | Added|
| ohos.userIAM.userAuth | ResultCode | NOT_ENROLLED = 10 | Added|
| ohos.userIAM.userAuth | ResultCode | LOCKED = 9 | Added|
| ohos.userIAM.userAuth | ResultCode | INVALID_PARAMETERS = 8 | Added|
| ohos.userIAM.userAuth | ResultCode | BUSY = 7 | Added|
| ohos.userIAM.userAuth | ResultCode | TRUST_LEVEL_NOT_SUPPORT = 6 | Added|
| ohos.userIAM.userAuth | ResultCode | TYPE_NOT_SUPPORT = 5 | Added|
| ohos.userIAM.userAuth | ResultCode | TIMEOUT = 4 | Added|
| ohos.userIAM.userAuth | ResultCode | CANCELED = 3 | Added|
| ohos.userIAM.userAuth | ResultCode | GENERAL_ERROR = 2 | Added|
| ohos.userIAM.userAuth | ResultCode | FAIL = 1 | Added|
| ohos.userIAM.userAuth | ResultCode | SUCCESS = 0 | Added|
| ohos.userIAM.userAuth | AuthResult | freezingTime ?: number; | Added|
| ohos.userIAM.userAuth | AuthResult | remainTimes ?: number; | Added|
| ohos.userIAM.userAuth | AuthResult | token ?: Uint8Array; | Added|
| ohos.userIAM.userAuth | IUserAuthCallback | onAcquireInfo ?: (module : number, acquire : number, extraInfo : any) => void; | Added|
| ohos.userIAM.userAuth | IUserAuthCallback | onResult: (result : number, extraInfo : AuthResult) => void; | Added|
| ohos.userIAM.userAuth | UserAuth | cancelAuth(contextID : Uint8Array) : number; | Added|
| ohos.userIAM.userAuth | UserAuth | auth(challenge: Uint8Array, authType: UserAuthType, authTrustLevel: AuthTrustLevel, callback: IUserAuthCallback): Uint8Array; | Added|
| ohos.userIAM.userAuth | UserAuth | getAvailableStatus(authType : UserAuthType, authTrustLevel : AuthTrustLevel) : number; | Added|
| ohos.userIAM.userAuth | UserAuth | getVersion() : number; | Added|
| ohos.userIAM.userAuth | UserAuth | constructor(); | Added|
| ohos.userIAM.userAuth | userAuth | function getAuthenticator(): Authenticator; | Added|
| ohos.userIAM.userAuth | Authenticator | execute(type: AuthType, level: SecureLevel, callback: AsyncCallback<number>): void;<br>execute(type: AuthType, level: SecureLevel): Promise<number>; | Added|
| ohos.userIAM.userAuth | AuthenticationResult | GENERAL_ERROR = 100 | Added|
| ohos.userIAM.userAuth | AuthenticationResult | NOT_ENROLLED = 8 | Added|
| ohos.userIAM.userAuth | AuthenticationResult | LOCKED = 7 | Added|
| ohos.userIAM.userAuth | AuthenticationResult | INVALID_PARAMETERS = 6 | Added|
| ohos.userIAM.userAuth | AuthenticationResult | BUSY = 5 | Added|
| ohos.userIAM.userAuth | AuthenticationResult | CAMERA_FAIL = 4 | Added|
| ohos.userIAM.userAuth | AuthenticationResult | TIMEOUT = 3 | Added|
| ohos.userIAM.userAuth | AuthenticationResult | CANCELED = 2 | Added|
| ohos.userIAM.userAuth | AuthenticationResult | COMPARE_FAILURE = 1 | Added|
| ohos.userIAM.userAuth | AuthenticationResult | SUCCESS = 0 | Added|
| ohos.userIAM.userAuth | AuthenticationResult | NO_SUPPORT = -1 | Added|
# JS API Diff
For details about the JS API changes in OpenHarmony 3.1 Release over OpenHarmony 3.0 LTS, see the following documents of each subsystem:
- [Ability framework](js-apidiff-ability.md)
- [Accessibility subsystem](js-apidiff-accessibility.md)
- [Account subsystem](js-apidiff-account.md)
- [ArkUI development framework](js-apidiff-ace.md)
- [Power management subsystem](js-apidiff-battery.md)
- [Bundle management subsystem](js-apidiff-bundle.md)
- [Communication subsystem](js-apidiff-communicate.md)
- [Multi-language Runtime subsystem](js-apidiff-compiler-and-runtime.md)
- [DFX](js-apidiff-dfx.md)
- [Distributed data management subsystem](js-apidiff-distributed-data.md)
- [Distributed hardware subsystem](js-apidiff-distributed-hardware.md)
- [Common event and notification framework](js-apidiff-event-and-notification.md)
- [File management subsystem](js-apidiff-file-management.md)
- [Location subsystem](js-apidiff-geolocation.md)
- [Globalization subsystem](js-apidiff-global.md)
- [Graphics subsystem](js-apidiff-graphic.md)
- [Misc services subsystem](js-apidiff-misc.md)
- [Multimodal input subsystem](js-apidiff-multi-modal-input.md)
- [Multimedia subsystem](js-apidiff-multimedia.md)
- [Network management subsystem](js-apidiff-network.md)
- [Resource scheduling subsystem](js-apidiff-resource-scheduler.md)
- [Security subsystem](js-apidiff-security.md)
- [Pan-sensor subsystem](js-apidiff-sensor.md)
- [Application framework subsystem](js-apidiff-settings.md)
- [DSoftBus subsystem](js-apidiff-soft-bus.md)
- [Telephony subsystem](js-apidiff-telephony.md)
- [USB subsystem](js-apidiff-usb.md)
- [User IAM subsystem](js-apidiff-user-authentication.md)
- [Window manager subsystem](js-apidiff-window.md)
# JS API Changes of the Window Manager Subsystem
The table below lists the APIs changes of the Window Manager subsystem in OpenHarmony 3.1 Release over OpenHarmony 3.0 LTS.
## API Changes
| Module| Class| Method/Attribute/Enumeration/Constant| Change Type|
|---|---|---|---|
| ohos.window | Window | setTouchable(isTouchable: boolean): Promise<void>;<br>setTouchable(isTouchable: boolean, callback: AsyncCallback<void>): void; | Added|
| ohos.window | Window | setPrivacyMode(isPrivacyMode: boolean): Promise<void>;<br>setPrivacyMode(isPrivacyMode: boolean, callback: AsyncCallback<void>): void; | Added|
| ohos.window | Window | setOutsideTouchable(touchable: boolean): Promise<void>;<br>setOutsideTouchable(touchable: boolean, callback: AsyncCallback<void>): void; | Added|
| ohos.window | Window | setKeepScreenOn(isKeepScreenOn: boolean): Promise<void>;<br>setKeepScreenOn(isKeepScreenOn: boolean, callback: AsyncCallback<void>): void; | Added|
| ohos.window | Window | setFocusable(isFocusable: boolean): Promise<void>;<br>setFocusable(isFocusable: boolean, callback: AsyncCallback<void>): void; | Added|
| ohos.window | Window | setDimBehind(dimBehindValue: number, callback: AsyncCallback<void>): void;<br>setDimBehind(dimBehindValue: number): Promise<void>; | Added|
| ohos.window | Window | setBrightness(brightness: number): Promise<void>;<br>setBrightness(brightness: number, callback: AsyncCallback<void>): void; | Added|
| ohos.window | Window | setBackgroundColor(color: string): Promise<void>;<br>setBackgroundColor(color: string, callback: AsyncCallback<void>): void; | Added|
| ohos.window | Window | getColorSpace(): Promise<ColorSpace>;<br>getColorSpace(callback: AsyncCallback<ColorSpace>): void; | Added|
| ohos.window | Window | setColorSpace(colorSpace:ColorSpace): Promise<void>;<br>setColorSpace(colorSpace:ColorSpace, callback: AsyncCallback<void>): void; | Added|
| ohos.window | Window | isSupportWideGamut(): Promise<boolean>;<br>isSupportWideGamut(callback: AsyncCallback<boolean>): void; | Added|
| ohos.window | Window | off(type: 'keyboardHeightChange', callback?: Callback<number>): void; | Added|
| ohos.window | Window | on(type: 'keyboardHeightChange', callback: Callback<number>): void; | Added|
| ohos.window | Window | off(type: 'systemAvoidAreaChange', callback?: Callback<AvoidArea>): void; | Added|
| ohos.window | Window | on(type: 'systemAvoidAreaChange', callback: Callback<AvoidArea>): void; | Added|
| ohos.window | Window | off(type: 'windowSizeChange', callback?: Callback<Size>): void; | Added|
| ohos.window | Window | on(type: 'windowSizeChange', callback: Callback<Size>): void; | Added|
| ohos.window | Window | isShowing(callback: AsyncCallback<boolean>): void;<br>isShowing(): Promise<boolean>; | Added|
| ohos.window | Window | loadContent(path: string, callback: AsyncCallback<void>): void;<br>loadContent(path: string): Promise<void>; | Added|
| ohos.window | Window | setSystemBarProperties(systemBarProperties: SystemBarProperties, callback: AsyncCallback<void>): void;<br>setSystemBarProperties(systemBarProperties: SystemBarProperties): Promise<void>; | Added|
| ohos.window | Window | setSystemBarEnable(names: Array<'status'\|'navigation'>, callback: AsyncCallback<void>): void;<br>setSystemBarEnable(names: Array<'status'\|'navigation'>): Promise<void>; | Added|
| ohos.window | Window | setLayoutFullScreen(isLayoutFullScreen: boolean, callback: AsyncCallback<void>): void;<br>setLayoutFullScreen(isLayoutFullScreen: boolean): Promise<void>; | Added|
| ohos.window | Window | setFullScreen(isFullScreen: boolean, callback: AsyncCallback<void>): void;<br>setFullScreen(isFullScreen: boolean): Promise<void>; | Added|
| ohos.window | Window | getAvoidArea(type: AvoidAreaType, callback: AsyncCallback<AvoidArea>): void;<br>getAvoidArea(type: AvoidAreaType): Promise<AvoidArea>; | Added|
| ohos.window | Window | getProperties(callback: AsyncCallback<WindowProperties>): void;<br>getProperties(): Promise<WindowProperties>; | Added|
| ohos.window | Window | destroy(callback: AsyncCallback<void>): void;<br>destroy(): Promise<void>; | Added|
| ohos.window | Window | show(callback: AsyncCallback<void>): void;<br>show(): Promise<void>; | Added|
| ohos.window | window | function find(id: string, callback: AsyncCallback<Window>): void;<br>function find(id: string): Promise<Window>; | Added|
| ohos.window | window | function create(id: string, type: WindowType, callback: AsyncCallback<Window>): void;<br>function create(id: string, type: WindowType): Promise<Window>;<br>function create(ctx: Context, id: string, type: WindowType): Promise<Window>;<br>function create(ctx: Context, id: string, type: WindowType, callback: AsyncCallback<Window>): void; | Added|
| ohos.window | ColorSpace | WIDE_GAMUT | Added|
| ohos.window | ColorSpace | DEFAULT | Added|
| ohos.window | WindowProperties | isTransparent: boolean | Added|
| ohos.window | WindowProperties | isRoundCorner: boolean | Added|
| ohos.window | WindowProperties | isPrivacyMode: boolean | Added|
| ohos.window | WindowProperties | isKeepScreenOn: boolean | Added|
| ohos.window | WindowProperties | dimBehindValue: number | Added|
| ohos.window | WindowProperties | brightness: number | Added|
| ohos.window | WindowProperties | touchable: boolean | Added|
| ohos.window | WindowProperties | focusable: boolean | Added|
| ohos.window | WindowProperties | isLayoutFullScreen: boolean | Added|
| ohos.window | WindowProperties | isFullScreen: boolean | Added|
| ohos.window | WindowProperties | type: WindowType; | Added|
| ohos.window | WindowProperties | windowRect: Rect; | Added|
| ohos.window | Size | height: number; | Added|
| ohos.window | Size | width: number; | Added|
| ohos.window | AvoidArea | bottomRect: Rect; | Added|
| ohos.window | AvoidArea | rightRect: Rect; | Added|
| ohos.window | AvoidArea | topRect: Rect; | Added|
| ohos.window | AvoidArea | leftRect: Rect; | Added|
| ohos.window | Rect | height: number; | Added|
| ohos.window | Rect | width: number; | Added|
| ohos.window | Rect | top: number; | Added|
| ohos.window | Rect | left: number; | Added|
| ohos.window | SystemBarProperties | navigationBarContentColor?: string; | Added|
| ohos.window | SystemBarProperties | isNavigationBarLightIcon?: boolean; | Added|
| ohos.window | SystemBarProperties | navigationBarColor?: string; | Added|
| ohos.window | SystemBarProperties | statusBarContentColor?: string; | Added|
| ohos.window | SystemBarProperties | isStatusBarLightIcon?: boolean; | Added|
| ohos.window | SystemBarProperties | statusBarColor?: string; | Added|
| ohos.window | AvoidAreaType | TYPE_CUTOUT | Added|
| ohos.window | AvoidAreaType | TYPE_SYSTEM | Added|
| ohos.display | Display | yDPI: number; | Added|
| ohos.display | Display | xDPI: number; | Added|
| ohos.display | Display | scaledDensity: number; | Added|
| ohos.display | Display | densityPixels: number; | Added|
| ohos.display | Display | densityDPI: number; | Added|
| ohos.display | Display | height: number; | Added|
| ohos.display | Display | width: number; | Added|
| ohos.display | Display | rotation: number; | Added|
| ohos.display | Display | refreshRate: number; | Added|
| ohos.display | Display | state: DisplayState; | Added|
| ohos.display | Display | alive: boolean; | Added|
| ohos.display | Display | name: string; | Added|
| ohos.display | Display | id: number; | Added|
| ohos.display | DisplayState | STATE_ON_SUSPEND | Added|
| ohos.display | DisplayState | STATE_VR | Added|
| ohos.display | DisplayState | STATE_DOZE_SUSPEND | Added|
| ohos.display | DisplayState | STATE_DOZE | Added|
| ohos.display | DisplayState | STATE_ON | Added|
| ohos.display | DisplayState | STATE_OFF | Added|
| ohos.display | DisplayState | STATE_UNKNOWN = 0 | Added|
| ohos.display | display | function off(type: 'add' \| 'remove' \| 'change', callback?: Callback<number>): void; | Added|
| ohos.display | display | function off(type: 'add' \| 'remove' \| 'change', callback?: Callback<number>): void; | Added|
| ohos.display | display | function off(type: 'add' \| 'remove' \| 'change', callback?: Callback<number>): void; | Added|
| ohos.display | display | function on(type: 'add' \| 'remove' \| 'change', callback: Callback<number>): void; | Added|
| ohos.display | display | function on(type: 'add' \| 'remove' \| 'change', callback: Callback<number>): void; | Added|
| ohos.display | display | function on(type: 'add' \| 'remove' \| 'change', callback: Callback<number>): void; | Added|
| ohos.display | display | function getAllDisplay(callback: AsyncCallback<Array<Display>>): void;<br>function getAllDisplay(): Promise<Array<Display>>; | Added|
| ohos.display | display | function getDefaultDisplay(callback: AsyncCallback<Display>): void;<br>function getDefaultDisplay(): Promise<Display>; | Added|
# Native API Differences
This document describes the changes of APIs in OpenHarmony 3.1 Release when compared with OpenHarmony 3.0 LTS.
## Standard System API Changes
| Module| API | Change Type| Change Description |
| -------- | ------------------------------------------------------------ | -------- | ----------------------------------------------- |
| Graphics - drawing| OH_Drawing_FontCollection* OH_Drawing_CreateFontCollection(void) | Added | Added the API for creating an **OH_Drawing_FontCollection** object. |
| Graphics - drawing| void OH_Drawing_DestroyFontCollection(OH_Drawing_FontCollection*) | Added | Added the API for releasing the memory occupied by an **OH_Drawing_FontCollection** object. |
| Graphics - drawing | OH_Drawing_TypographyStyle* OH_Drawing_CreateTypographyStyle(void) | Added | Added the API for creating an **OH_Drawing_TypographyStyle** object. |
| Graphics - drawing | void OH_Drawing_DestroyTypographyStyle(OH_Drawing_TypographyStyle*) | Added | Added the API for releasing the memory occupied by an **OH_Drawing_TypographyStyle** object. |
| Graphics - drawing | void OH_Drawing_SetTypographyTextDirection(OH_Drawing_TypographyStyle*, int /* OH_Drawing_TextDirection */) | Added | Added the API for setting the text direction. |
| Graphics - drawing | void OH_Drawing_SetTypographyTextAlign(OH_Drawing_TypographyStyle*, int /* OH_Drawing_TextAlign */) | Added | Added the API for setting the text alignment mode. |
| Graphics - drawing | void OH_Drawing_SetTypographyTextMaxLines(OH_Drawing_TypographyStyle*, int /* maxLines */) | Added | Added the API for setting the maximum number of lines in the text. |
| Graphics - drawing | OH_Drawing_TextStyle* OH_Drawing_CreateTextStyle(void) | Added | Added the API for creating an **OH_Drawing_TextStyle** object. |
| Graphics - drawing | void OH_Drawing_DestroyTextStyle(OH_Drawing_TextStyle*) | Added | Added the API for releasing the memory occupied by an **OH_Drawing_TextStyle** object. |
| Graphics - drawing | void OH_Drawing_SetTextStyleColor(OH_Drawing_TextStyle*, uint32_t /* color */) | Added | Added the API for setting the text color. |
| Graphics - drawing | void OH_Drawing_SetTextStyleFontSize(OH_Drawing_TextStyle*, double /* fontSize */); | Added | Added the API for setting the font size. |
| Graphics - drawing | void OH_Drawing_SetTextStyleFontWeight(OH_Drawing_TextStyle*, int /* OH_Drawing_FontWeight */) | Added | Added the API for setting the font weight. |
| Graphics - drawing | void OH_Drawing_SetTextStyleBaseLine(OH_Drawing_TextStyle*, int /* OH_Drawing_TextBaseline */) | Added | Added the API for setting the text baseline. |
| Graphics - drawing | void OH_Drawing_SetTextStyleDecoration(OH_Drawing_TextStyle*, int /* OH_Drawing_TextDecoration */) | Added | Added the API for setting the text decoration. |
| Graphics - drawing | void OH_Drawing_SetTextStyleDecorationColor(OH_Drawing_TextStyle*, uint32_t /* color */) | Added | Added the API for setting the color for the text decoration. |
| Graphics - drawing | void OH_Drawing_SetTextStyleFontHeight(OH_Drawing_TextStyle*, double /* fontHeight */) | Added | Added the API for setting the font height. |
| Graphics - drawing | void OH_Drawing_SetTextStyleFontFamilies(OH_Drawing_TextStyle*,int /* fontFamiliesNumber \*/, const char* fontFamilies[]); | Added | Added the API for setting the font families. |
| Graphics - drawing | void OH_Drawing_SetTextStyleFontStyle(OH_Drawing_TextStyle*, int /* OH_Drawing_FontStyle */) | Added | Added the API for setting the font style. |
| Graphics - drawing | void OH_Drawing_SetTextStyleLocale(OH_Drawing_TextStyle*, const char*) | Added | Added the API for setting the locale. |
| Graphics - drawing | OH_Drawing_TypographyCreate* OH_Drawing_CreateTypographyHandler(OH_Drawing_TypographyStyle*, OH_Drawing_FontCollection*) | Added | Added the API for creating a pointer to an **OH_Drawing_TypographyCreate** object. |
| Graphics - drawing | void OH_Drawing_DestroyTypographyHandler(OH_Drawing_TypographyCreate*) | Added | Added the API for releasing the memory occupied by an **OH_Drawing_TypographyCreate** object.|
| Graphics - drawing | void OH_Drawing_TypographyHandlerPushTextStyle(OH_Drawing_TypographyCreate*, OH_Drawing_TextStyle*) | Added | Added the API for setting the text style. |
| Graphics - drawing | void OH_Drawing_TypographyHandlerAddText(OH_Drawing_TypographyCreate*, const char*) | Added | Added the API for setting the text content. |
| Graphics - drawing | void OH_Drawing_TypographyHandlerPopTextStyle(OH_Drawing_TypographyCreate*) | Added | Added the API for removing the topmost style in the stack, leaving the remaining styles in effect. |
| Graphics - drawing | OH_Drawing_Typography* OH_Drawing_CreateTypography(OH_Drawing_TypographyCreate*) | Added | Added the API for creating an **OH_Drawing_Typography** object. |
| Graphics - drawing | void OH_Drawing_DestroyTypography(OH_Drawing_Typography*) | Added | Added the API for releasing the memory occupied by an **OH_Drawing_Typography** object. |
| Graphics - drawing | void OH_Drawing_TypographyLayout(OH_Drawing_Typography*, double /* maxWidth */) | Added | Added the API for laying out the typography. |
| Graphics - drawing | void OH_Drawing_TypographyPaint(OH_Drawing_Typography*, OH_Drawing_Canvas*, double /* potisionX */, double /\* potisionY */) | Added | Added the API for painting text on the canvas. |
| Graphics - drawing |OH_Drawing_Bitmap* OH_Drawing_BitmapCreate(void)|Added|Added the API for creating an **OH_Drawing_Bitmap** object.|
| Graphics - drawing |void OH_Drawing_BitmapDestroy(OH_Drawing_Bitmap*)|Added|Added the API for destroying an **OH_Drawing_Bitmap** object and reclaiming the memory occupied by the object.|
| Graphics - drawing |void OH_Drawing_BitmapBuild(OH_Drawing_Bitmap*, const uint32_t width, const uint32_t height, const OH_Drawing_BitmapFormat*)|Added|Added the API for initializing the width and height of an **OH_Drawing_Bitmap** object and setting the pixel format for the bitmap.|
| Graphics - drawing |uint32_t OH_Drawing_BitmapGetWidth(OH_Drawing_Bitmap*)|Added|Added the API for obtaining the width of a bitmap.|
| Graphics - drawing |uint32_t OH_Drawing_BitmapGetHeight(OH_Drawing_Bitmap*)|Added|Added the API for obtaining the height of a bitmap.|
| Graphics - drawing |void* OH_Drawing_BitmapGetPixels(OH_Drawing_Bitmap*)|Added|Added the API for obtaining the pixel address of a bitmap. You can use this address to obtain the pixel data of the bitmap.|
| Graphics - drawing |OH_Drawing_Brush* OH_Drawing_BrushCreate(void)|Added|Added the API for creating an **OH_Drawing_Brush** object.|
| Graphics - drawing |void OH_Drawing_BrushDestroy(OH_Drawing_Brush*)|Added|Added the API for destroying an **OH_Drawing_Brush** object and reclaiming the memory occupied by the object.|
| Graphics - drawing |bool OH_Drawing_BrushIsAntiAlias(const OH_Drawing_Brush*)|Added|Added the API for checking whether anti-aliasing is enabled for a brush. If anti-aliasing is enabled, edges will be drawn with partial transparency.|
| Graphics - drawing |void OH_Drawing_BrushSetAntiAlias(OH_Drawing_Brush*, bool)|Added|Added the API for enabling or disabling anti-aliasing for a brush. If anti-aliasing is enabled, edges will be drawn with partial transparency.|
| Graphics - drawing |uint32_t OH_Drawing_BrushGetColor(const OH_Drawing_Brush*)|Added|Added the API for obtaining the color of a brush. The color is used by the brush to fill in a shape.|
| Graphics - drawing |void OH_Drawing_BrushSetColor(OH_Drawing_Brush*, uint32_t color)|Added|Added the API for setting the color for a brush. The color will be used by the brush to fill in a shape.|
| Graphics - drawing |OH_Drawing_Canvas* OH_Drawing_CanvasCreate(void)|Added|Added the API for creating an **OH_Drawing_Canvas** object.|
| Graphics - drawing |void OH_Drawing_CanvasDestroy(OH_Drawing_Canvas*)|Added|Added the API for destroying an **OH_Drawing_Canvas** object and reclaiming the memory occupied by the object.|
| Graphics - drawing |void OH_Drawing_CanvasBind(OH_Drawing_Canvas*, OH_Drawing_Bitmap*)|Added|Added the API for binding a bitmap to a canvas so that the content drawn on the canvas is output to the bitmap (this process is called CPU rendering).|
| Graphics - drawing |void OH_Drawing_CanvasAttachPen(OH_Drawing_Canvas*, const OH_Drawing_Pen*)|Added|Added the API for attaching a pen to a canvas so that the canvas will use the style and color of the pen to outline a shape.|
| Graphics - drawing |void OH_Drawing_CanvasDetachPen(OH_Drawing_Canvas*)|Added|Added the API for detaching the pen from a canvas so that the canvas will not use the style and color of the pen to outline a shape.|
| Graphics - drawing |void OH_Drawing_CanvasAttachBrush(OH_Drawing_Canvas*, const OH_Drawing_Brush*)|Added|Added the API for attaching a brush to a canvas so that the canvas will use the style and color of the brush to fill in a shape.|
| Graphics - drawing |void OH_Drawing_CanvasDetachBrush(OH_Drawing_Canvas*)|Added|Added the API for detaching the brush from a canvas so that the canvas will not use the style and color of the brush to fill in a shape.|
| Graphics - drawing |void OH_Drawing_CanvasSave(OH_Drawing_Canvas*)|Added|Added the API for saving the current canvas status (canvas matrix) to the top of the stack.|
| Graphics - drawing |void OH_Drawing_CanvasRestore(OH_Drawing_Canvas*)|Added|Added the API for restoring the canvas status (canvas matrix) saved on the top of the stack.|
| Graphics - drawing |void OH_Drawing_CanvasDrawLine(OH_Drawing_Canvas*, float x1, float y1, float x2, float y2)|Added|Added the API for drawing a line segment.|
| Graphics - drawing |void OH_Drawing_CanvasDrawPath(OH_Drawing_Canvas*, const OH_Drawing_Path*)|Added|Added the API for drawing a path.|
| Graphics - drawing |void OH_Drawing_CanvasClear(OH_Drawing_Canvas*, uint32_t color)|Added|Added the API for clearing a canvas by using a specified color.|
| Graphics - drawing |uint32_t OH_Drawing_ColorSetArgb(uint32_t alpha, uint32_t red, uint32_t green, uint32_t blue)|Added|Added the API for converting four variables (alpha, red, green, and blue) into a 32-bit (ARGB) variable that describes a color.|
| Graphics - drawing |OH_Drawing_Path* OH_Drawing_PathCreate(void)|Added|Added the API for creating an **OH_Drawing_Path** object.|
| Graphics - drawing |void OH_Drawing_PathDestroy(OH_Drawing_Path*)|Added|Added the API for destroying an **OH_Drawing_Path** object and reclaiming the memory occupied by the object.|
| Graphics - drawing |void OH_Drawing_PathMoveTo(OH_Drawing_Path*, float x, float y)|Added|Added the API for setting the start point of a path.|
| Graphics - drawing |void OH_Drawing_PathLineTo(OH_Drawing_Path*, float x, float y)|Added|Added the API for drawing a line segment from the last point of a path to the target point.|
| Graphics - drawing |void OH_Drawing_PathArcTo(OH_Drawing_Path*, float x1, float y1, float x2, float y2, float startDeg, float sweepDeg)|Added|Added the API for drawing an arc to a path. This is done by using angle arc mode. In this mode, a rectangle that encloses an ellipse is specified first, and then a start angle and a sweep angle are specified. The arc is a portion of the ellipse defined by the start angle and the sweep angle. By default, a line segment from the last point of the path to the start point of the arc is also added.|
| Graphics - drawing |void OH_Drawing_PathQuadTo(OH_Drawing_Path*, float ctrlX, float ctrlY, float endX, float endY)|Added|Added the API for drawing a quadratic Bezier curve from the last point of a path to the target point.|
| Graphics - drawing |void OH_Drawing_PathCubicTo(OH_Drawing_Path*, float ctrlX1, float ctrlY1, float ctrlX2, float ctrlY2, float endX, float endY)|Added|Added the API for drawing a cubic Bezier curve from the last point of a path to the target point.|
| Graphics - drawing |void OH_Drawing_PathClose(OH_Drawing_Path*)|Added|Added the API for closing a path. A line segment from the start point to the last point of the path is added.|
| Graphics - drawing |void OH_Drawing_PathReset(OH_Drawing_Path*)|Added|Added the API for resetting path data.|
| Graphics - drawing |OH_Drawing_Pen* OH_Drawing_PenCreate(void)|Added|Added the API for creating an **OH_Drawing_Pen** object.|
| Graphics - drawing |void OH_Drawing_PenDestroy(OH_Drawing_Pen*)|Added|Added the API for destroying an **OH_Drawing_Pen** object and reclaiming the memory occupied by the object.|
| Graphics - drawing |bool OH_Drawing_PenIsAntiAlias(const OH_Drawing_Pen*)|Added|Added the API for checking whether anti-aliasing is enabled for a pen. If anti-aliasing is enabled, edges will be drawn with partial transparency.|
| Graphics - drawing |void OH_Drawing_PenSetAntiAlias(OH_Drawing_Pen*, bool)|Added|Added the API for enabling or disabling anti-aliasing for a pen. If anti-aliasing is enabled, edges will be drawn with partial transparency.|
| Graphics - drawing |uint32_t OH_Drawing_PenGetColor(const OH_Drawing_Pen*)|Added|Added the API for obtaining the color of a pen. The color is used by the pen to outline a shape.|
| Graphics - drawing |void OH_Drawing_PenSetColor(OH_Drawing_Pen*, uint32_t color)|Added|Added the API for setting the color for a pen. The color is used by the pen to outline a shape.|
| Graphics - drawing |float OH_Drawing_PenGetWidth(const OH_Drawing_Pen*)|Added|Added the API for obtaining the thickness of a pen. This thickness determines the width of the outline of a shape.|
| Graphics - drawing |void OH_Drawing_PenSetWidth(OH_Drawing_Pen*, float width)|Added|Added the API for setting the thickness for a pen. This thickness determines the width of the outline of a shape.|
| Graphics - drawing |float OH_Drawing_PenGetMiterLimit(const OH_Drawing_Pen*)|Added|Added the API for obtaining the stroke miter limit of a polyline drawn by a pen. When the corner type is bevel, a beveled corner is displayed if the miter limit is exceeded, and a mitered corner is displayed if the miter limit is not exceeded.|
| Graphics - drawing |void OH_Drawing_PenSetMiterLimit(OH_Drawing_Pen*, float miter)|Added|Added the API for setting the stroke miter limit for a polyline drawn by a pen. When the corner type is bevel, a beveled corner is displayed if the miter limit is exceeded, and a mitered corner is displayed if the miter limit is not exceeded.|
| Graphics - drawing |OH_Drawing_PenLineCapStyle OH_Drawing_PenGetCap(const OH_Drawing_Pen*)|Added|Added the API for obtaining the line cap style of a pen.|
| Graphics - drawing |void OH_Drawing_PenSetCap(OH_Drawing_Pen*, OH_Drawing_PenLineCapStyle)|Added|Added the API for setting the line cap style for a pen.|
| Graphics - drawing |OH_Drawing_PenLineJoinStyle OH_Drawing_PenGetJoin(const OH_Drawing_Pen*)|Added|Added the API for obtaining the line join style of a pen.|
| Graphics - drawing |void OH_Drawing_PenSetJoin(OH_Drawing_Pen*, OH_Drawing_PenLineJoinStyle)|Added|Added the API for setting the line join style for a pen.|
| Graphics - NativeWindow | struct NativeWindow* OH_NativeWindow_CreateNativeWindow(void* pSurface) | Added| Added the API for creating a **NativeWindow** instance.|
| Graphics - NativeWindow | void OH_NativeWindow_DestroyNativeWindow(struct NativeWindow* window) | Added| Added the API for decreasing the reference count of a **NativeWindow** instance by 1 and, when the reference count reaches 0, destroying the instance.|
| Graphics - NativeWindow | struct NativeWindowBuffer* OH_NativeWindow_CreateNativeWindowBufferFromSurfaceBuffer(void* pSurfaceBuffer) | Added| Added the API for creating a **NativeWindowBuffer** instance.|
| Graphics - NativeWindow | void OH_NativeWindow_DestroyNativeWindowBuffer(struct NativeWindowBuffer* buffer) | Added| Added the API for decreasing the reference count of a **NativeWindowBuffer** instance by 1 and, when the reference count reaches 0, destroying the instance.|
| Graphics - NativeWindow | int32_t OH_NativeWindow_NativeWindowRequestBuffer(struct NativeWindow *window, struct NativeWindowBuffer **buffer, int *fenceFd) | Added| Added the API for requesting a **NativeWindowBuffer** through a **NativeWindow** instance for content production.|
| Graphics - NativeWindow | int32_t OH_NativeWindow_NativeWindowFlushBuffer(struct NativeWindow *window, struct NativeWindowBuffer *buffer, int fenceFd, Region region) | Added| Added the API for flushing the **NativeWindowBuffer** filled with the content to the buffer queue through a **NativeWindow** instance for content consumption.|
| Graphics - NativeWindow | int32_t OH_NativeWindow_NativeWindowAbortBuffer(struct NativeWindow *window, struct NativeWindowBuffer *buffer) | Added| Added the API for returning the **NativeWindowBuffer** to the buffer queue through a **NativeWindow** instance, without filling in any content. The **NativeWindowBuffer** can be used for another request.|
| Graphics - NativeWindow | int32_t OH_NativeWindow_NativeWindowHandleOpt(struct NativeWindow *window, int code, ...) | Added| Added the API for setting and obtaining the attributes of a native window, including the width, height, and content format.|
| Graphics - NativeWindow | BufferHandle *OH_NativeWindow_GetBufferHandleFromNative(struct NativeWindowBuffer *buffer) | Added| Added the API for obtaining the pointer to a **BufferHandle** of a **NativeWindowBuffer** instance.|
| Graphics - NativeWindow | int32_t OH_NativeWindow_NativeObjectReference(void *obj) | Added| Added the API for adding the reference count of a native object.|
| Graphics - NativeWindow | int32_t OH_NativeWindow_NativeObjectUnreference(void *obj) | Added| Added the API for decreasing the reference count of a native object and, when the reference count reaches 0, destroying this object.|
| Graphics - NativeWindow | int32_t OH_NativeWindow_GetNativeObjectMagic(void *obj) | Added| Added the API for obtaining the magic ID of a native object.|
| DFX - HiLog | LOG_DOMAIN | Added | Added this hexadecimal integer macro to identify the service domain of a log file. |
| DFX - HiLog | LOG_TAG | Added | Added this string macro to identify the class or service behavior. |
| DFX - HiLog | LOG_APP | Added | Added this enumeration to identify the log type. |
| DFX - HiLog | LOG_DEBUG | Added | Added this enumeration to identify the DEBUG log level. |
| DFX - HiLog | LOG_INFO | Added | Added this enumeration to identify the INFO log level. |
| DFX - HiLog | LOG_WARN | Added | Added this enumeration to identify the WARN log level. |
| DFX - HiLog | LOG_ERROR | Added | Added this enumeration to identify the ERROR log level. |
| DFX - HiLog | LOG_FATAL | Added | Added this enumeration to identify the FATAL log level. |
| DFX - HiLog | bool OH_LOG_IsLoggable(unsigned int domain, const char *tag, LogLevel level) | Added | Added the API for checking whether logs of the specified service domain, tag, and level can be printed.|
| DFX - HiLog | int OH_LOG_Print(LogType type, LogLevel level, unsigned int domain, const char *tag, const char *fmt, ...) | Added | Added the API for outputting logs. |
| DFX - HiLog | OH_LOG_DEBUG(type, ...) | Added | Added this function-like macro for outputting DEBUG logs. |
| DFX - HiLog | OH_LOG_INFO(type, ...) | Added | Added this function-like macro for outputting INFO logs. |
| DFX - HiLog | OH_LOG_WARN(type, ...) | Added | Added this function-like macro for outputting WARN logs. |
| DFX - HiLog | OH_LOG_ERROR(type, ...) | Added | Added this function-like macro for outputting ERROR logs. |
| DFX - HiLog | OH_LOG_FATAL(type, ...) | Added | Added this function-like macro for outputting FATAL logs. |
| zlib | ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len));<br>ZEXTERN uLong ZEXPORT adler32_z OF((uLong adler, const Bytef *buf, z_size_t len)); | Added | Added the APIs for updating an Adler-32 checksum from the buffer. |
| zlib | ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t)); <br>ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t)); | Added | Added the APIs for combining two Adler-32 checksums into one. |
| zlib | ZEXTERN int ZEXPORT compress2 OF((Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen, int level));<br>ZEXTERN int ZEXPORT compress OF((Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen)); | Added | Added the APIs for compressing the source buffer into the destination buffer. |
| zlib | ZEXTERN uLong ZEXPORT compressBound OF((uLong sourceLen)); | Added | Added the API for returning the upper limit of a buffer to hold the compressed data. This API must be called to determine the size of the buffer to allocate before **compress2** or **compress** is called.|
| zlib | ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len));<br>ZEXTERN uLong ZEXPORT crc32_z OF((uLong adler, const Bytef *buf, z_size_t len)); | Added | Added the APIs for updating a CRC-32 checksum from the buffer. |
| zlib | ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t));<br>ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off64_t)); | Added | Added the APIs for combines two CRC-32 checksums into one. |
| zlib | ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush)); | Added | Added the API for compression. |
| zlib | ZEXTERN uLong ZEXPORT deflateBound OF((z_streamp strm, uLong sourceLen)); | Added | Added the API for returning the upper limit of a buffer to hold the compressed data. This API must be called to determine the size of the buffer to allocate before **deflateInit** or **deflateInit2** is called.|
| zlib | ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest, z_streamp source)); | Added | Added the API for setting the destination stream as a complete copy of the source stream. |
| zlib | ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm)); | Added | Added the API for freeing up space after the compression is complete. |
| zlib | ZEXTERN int ZEXPORT deflateGetDictionary OF((z_streamp strm, Bytef *dictionary, uInt *dictLength)); | Added | Added the API for obtaining the sliding dictionary maintained by **deflate**. |
| zlib | ZEXTERN int ZEXPORT deflateInit_ OF((z_streamp strm, int level, const char *version, int stream_size));<br>ZEXTERN int ZEXPORT deflateInit2_ OF((z_streamp strm, int level, int method, int windowBits, int memLevel, int strategy, const char *version, int stream_size)); | Added | Added the APIs for **deflate** initialization. |
| zlib | ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm, int level, int strategy)); | Added | Added the API for dynamically updating the compression level and compression strategy. |
| zlib | ZEXTERN int ZEXPORT deflatePending OF((z_streamp strm, unsigned *pending, int *bits)); | Added | Added the API for returning the number of bytes and bits of output that has been generated but not yet provided in the available output. |
| zlib | ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm, int bits, int value)); | Added | Added the APIs for inserting bits in the **deflate** output stream. |
| zlib | ZEXTERN int ZEXPORT deflateReset OF((z_streamp strm)); | Added | Added this API, which is equivalent to **deflateEnd** followed by **deflateInit**, but does not free or reallocate the internal compression state.|
| zlib | ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm, const Bytef *dictionary, uInt dictLength)); | Added | Added the API for initializing the compression dictionary from a given sequence of bytes without producing any compression output. |
| zlib | ZEXTERN int ZEXPORT deflateSetHeader OF((z_streamp strm, gz_headerp head)); | Added | Added the API for providing the gzip header information when a gzip stream is requested by **delateInit2()**.|
| zlib | ZEXTERN int ZEXPORT deflateTune OF((z_streamp strm, int good_length, int max_lazy, int nice_length, int max_chain)); | Added | Added the API for fine-tuning the internal compression parameters of **deflate**. |
| zlib | ZEXTERN int ZEXPORT gzbuffer OF((gzFile file, unsigned size)); | Added | Added the API for setting the size of the internal buffer used by this library's functions. The default buffer size is 8192 bytes. |
| zlib | ZEXTERN void ZEXPORT gzclearerr OF((gzFile file)); | Added | Added the API for clearing the error and end-of-file flags for a file. |
| zlib | ZEXTERN int ZEXPORT gzclose OF((gzFile file));<br>ZEXTERN int ZEXPORT gzclose_r OF((gzFile file));<br>ZEXTERN int ZEXPORT gzclose_w OF((gzFile file)); | Added | Added the APIs for flushing all pending output, closing the compressed file, and deallocating the compression state. |
| zlib | ZEXTERN int ZEXPORT gzdirect OF((gzFile file)); | Added | Added the API for returning **true** (1) if the file is being copied directly while reading, and returning **false** (0) if the file is a gzip stream being decompressed.|
| zlib | ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode)); | Added | Added the API for associating a **gzFile** with a file descriptor. File descriptors are obtained from calls such as **open**, **dup**, **create**, **pipe**, or **fileno** (in the file that has been opened using **fopen**). The **mode** parameter is the same as that in **gzopen**.|
| zlib | ZEXTERN int ZEXPORT gzeof OF((gzFile file)); | Added | Added the API for returning **true** (1) if the end-of-file indicator has been set while reading, and returning **false** (0) otherwise.|
| zlib | ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum)); | Added | Added the API for returning the error message for the last error that occurred on a given compressed file. |
| zlib | ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush)); | Added | Added the API for flushing all pending output into a compressed file. |
| zlib | ZEXTERN z_size_t ZEXPORT gzfread OF((voidp buf, z_size_t size, z_size_t nitems, gzFile file)); | Added | Added the API for reading a given number of bytes from a compressed file to the buffer. |
| zlib | ZEXTERN z_size_t ZEXPORT gzfwrite OF((voidpc buf, z_size_t size, z_size_t nitems, gzFile file)); | Added | Added the API for writing a given number of bytes from the buffer to a compressed file, duplicating the interface of stdio's **fwrite()**, with **size_t** request and return types.|
| zlib | ZEXTERN int ZEXPORT gzgetc OF((gzFile file));<br>ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); | Added | Added the APIs for reading a byte from a compressed file. |
| zlib | ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len)); | Added | Added the API for reading bytes from a compressed file until **len-1** characters are read, a newline character is read and transferred to a buffer, or an end-of-file condition is encountered.|
| zlib | ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile));<br>ZEXTERN z_off64_t ZEXPORT gzoffset64 OF((gzFile)); | Added | Added the APIs for returning the current offset in the file being read or written. |
| zlib | ZEXTERN gzFile ZEXPORT gzopen OF((const char *, const char *));<br>ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *)); | Added | Added the APIs for opening a gzip (.gz) file for reading or writing. |
| zlib | ZEXTERN int ZEXPORTVA gzprintf Z_ARG((gzFile file, const char *format, ...)); | Added | Added the API for converting, formatting, and writing the parameters to a compressed file under the control of the **format** string. |
| zlib | ZEXTERN int ZEXPORT gzputc OF((gzFile file, int c));<br>ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s)); | Added | Added the APIs for writing **c**, which is converted to an unsigned character, into a compressed file. **gzputc** returns the written value or **-1** in the case of an error.|
| zlib | ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len)); | Added | Added the API for reading a given number of uncompressed bytes from a compressed file. |
| zlib | ZEXTERN int ZEXPORT gzrewind OF((gzFile file)); | Added | Added the API for rewinding a file. |
| zlib | ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile, z_off_t, int));<br>ZEXTERN z_off_t ZEXPORT gzseek64 OF((gzFile, z_off_t, int)); | Added | Added the APIs for setting the start position for the next **gzread** or **gzwrite** operation of a given compressed file. |
| zlib | ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy)); | Added | Added the API for dynamically updating the compression level or strategy. |
| zlib | ZEXTERN z_off_t ZEXPORT gztell OF((gzFile));<br>ZEXTERN z_off64_t ZEXPORT gztell64 OF((gzFile)); | Added | Added the API for returning the start position of the next **gzread** or **gzwrite** operation of a given compressed file. |
| zlib | ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file)); | Added | Added the API for pushing a character back to the stream to be read again. |
| zlib | ZEXTERN int ZEXPORT gzwrite OF((gzFile file, voidpc buf, unsigned len)); | Added | Added the API for writing a given number of uncompressed bytes to a compressed file. |
| zlib | ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush)); | Added | Added an API for decompressing as much data as possible and stopping when the input buffer becomes empty or the output buffer becomes full.|
| zlib | ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm, in_func in, void FAR *in_desc, out_func out, void FAR *out_desc));<br>ZEXTERN int ZEXPORT inflateBackEnd OF((z_streamp strm));<br>ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits, unsigned char FAR *window, const char *version, int stream_size)); | Added | Added the callback APIs for decompression. |
| zlib | ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest, z_streamp source)); | Added | Added the API for setting the destination stream as a complete copy of the source stream. |
| zlib | ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm)); | Added | Added the API for freeing up all dynamically allocated data structures of this stream. |
| zlib | ZEXTERN int ZEXPORT inflateGetDictionary OF((z_streamp strm, Bytef *dictionary, uInt *dictLength)); | Added | Added the API for obtaining the sliding dictionary maintained by **inflate**. |
| zlib | ZEXTERN int ZEXPORT inflateGetHeader OF((z_streamp strm, gz_headerp head)); | Added | Added the API for storing the gzip header information in the provided **gz_header** structure. |
| zlib | ZEXTERN int ZEXPORT inflateInit_ OF((z_streamp strm, const char *version, int stream_size));<br _>/ZEXTERN int ZEXPORT inflateInit2_ OF((z_streamp strm, int windowBits, const char *version, int stream_size)); | Added | Added the APIs for decompression initialization. |
| zlib | ZEXTERN long ZEXPORT inflateMark OF((z_streamp strm)); | Added | Added the API for returning two values. One is in the lower 16 bits of the return value, and the other is in the remaining upper bits, obtained by shifting the return value down by 16 bits.|
| zlib | ZEXTERN int ZEXPORT inflatePrime OF((z_streamp strm, int bits, int value)); | Added | Added the API for inserting bits into the **inflate** input stream. |
| zlib | ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm));<br>ZEXTERN int ZEXPORT inflateReset2 OF((z_streamp strm, int windowBits)); | Added | Added these APIs, which are equivalent to **inflateEnd** followed by **inflateInit**, but do not free or reallocate the internal decompression state. The stream will retain attributes that may have been set by **inflateInit2**.|
| zlib | ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm, const Bytef *dictionary, uInt dictLength)); | Added | Added the API for initializing the decompression dictionary from a given uncompressed byte sequence. |
| zlib | ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm)); | Added | Added the API for skipping invalid compressed data until a possible full flush point is found, or until all available input is skipped. There is no output.|
| zlib | ZEXTERN int ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen));<br>ZEXTERN int ZEXPORT uncompress2 OF((Bytef *dest, uLongf *destLen, const Bytef *source, uLong *sourceLen)); | Added | Added the APIs for decompressing the source buffer into the destination buffer. **sourceLen** indicates the byte length of the source buffer. |
| zlib | ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void)); | Added | Added the API for returning flags indicating compile-time options. |
| zlib | ZEXTERN const char * ZEXPORT zlibVersion OF((void)); | Added | Added the API for returning the zlib version. |
| Globalization - resmgr | NativeResourceManager *OH_ResourceManager_InitNativeResourceManager(napi_env env, napi_value jsResMgr) | Added | Added the API for initializing the native resource manager. |
| Globalization - resmgr | void OH_ResourceManager_ReleaseNativeResourceManager(NativeResourceManager *resMgr) | Added | Added the API for releasing the native resource manager. |
| Globalization - resmgr | RawDir *OH_ResourceManager_OpenRawDir(const NativeResourceManager *mgr, const char *dirName) | Added | Added the API for opening a raw file directory. |
| Globalization - resmgr | RawFile *OH_ResourceManager_OpenRawFile(const NativeResourceManager *mgr, const char *fileName) | Added | Added the API for opening a raw file. |
| Globalization - resmgr | const char *OH_ResourceManager_GetRawFileName(RawDir *rawDir, int index) | Added | Added the API for obtaining a raw file name. |
| Globalization - resmgr | int OH_ResourceManager_GetRawFileCount(RawDir *rawDir) | Added | Added the API for obtaining the number of raw files in a raw file directory.|
| Globalization - resmgr | void OH_ResourceManager_CloseRawDir(RawDir *rawDir) | Added | Added the API for releasing the resources related to a raw file directory. |
| Globalization - resmgr | int OH_ResourceManager_ReadRawFile(const RawFile *rawFile, void *buf, size_t length) | Added | Added the API for reading a raw file. |
| Globalization - resmgr | int OH_ResourceManager_SeekRawFile(const RawFile *rawFile, long offset, int whence) | Added | Added the API for querying data in a raw file based on a given offset. |
| Globalization - resmgr | long OH_ResourceManager_GetRawFileSize(RawFile *rawFile) | Added | Added the API for obtaining the size of a raw file. |
| Globalization - resmgr | void OH_ResourceManager_CloseRawFile(RawFile *rawFile) | Added | Added the API for releasing the resources related to a raw file. |
| Globalization - resmgr | long OH_ResourceManager_GetRawFileOffset(const RawFile *rawFile) | Added | Added the API for obtaining the offset of a raw file. |
| Globalization - resmgr | bool OH_ResourceManager_GetRawFileDescriptor(const RawFile *rawFile, RawFileDescriptor &descriptor) | Added | Added the API for obtaining the file descriptor of a raw file. |
| Globalization - resmgr | bool OH_ResourceManager_ReleaseRawFileDescriptor(const RawFileDescriptor &descriptor) | Added | Added the API for releasing the file descriptor of a raw file. |
| Media - Multimedia | OH_GetImageInfo | Added | Added the API for obtaining image information based on the pixel address. |
| Media - Multimedia | OH_AccessPixels | Added | Added the API for locking the address of a given pixel. |
| Media - Multimedia | OH_UnAccessPixels | Added | Added the API for unlocking the address of a given pixel. |
| Media - audio_standard| SL_API SLresult SLAPIENTRY slCreateEngine(<br> SLObjectItf *pEngine,<br> SLuint32 numOptions,<br> const SLEngineOption *pEngineOptions,<br> SLuint32 numInterfaces,<br> const SLInterfaceID *pInterfaceIds,<br> const SLboolean * pInterfaceRequired<br>); | Added | Added the API for creating a **Engine** object. |
| Media - audio_standard| SLObjectItf_<br>SLresult (*Realize) (<br> SLObjectItf self,<br> SLboolean async<br> ); | Added | Added the API for initializing an object. |
| Media - audio_standard| SLObjectItf_<br>SLresult (*Resume) (<br> SLObjectItf self,<br> SLboolean async<br> ); | Added | Added the API for resuming an object. |
| Media - audio_standard| SLObjectItf_<br>SLresult (*GetState) (<br> SLObjectItf self,<br> SLuint32 * pState<br> ); | Added | Added the API for obtaining the object state. |
| Media - audio_standard| SLObjectItf_<br>SLresult (*GetInterface) (<br> SLObjectItf self,<br> const SLInterfaceID iid,<br> void * pInterface<br> ); | Added | Added the API for obtaining an object based on the interface ID.|
| Media - audio_standard| SLObjectItf_<br>SLresult (*RegisterCallback) (<br> SLObjectItf self,<br> slObjectCallback callback,<br> void * pContext<br> ); | Added | Added the API for registering a callback. |
| Media - audio_standard| SLObjectItf_<br>void (*Destroy) (<br> SLObjectItf self<br> ); | Added | Added the API for destroying an object. |
| Media - audio_standard| SLresult (*CreateAudioPlayer) (<br> SLEngineItf self,<br> SLObjectItf * pPlayer,<br> SLDataSource *pAudioSrc,<br> SLDataSink *pAudioSnk,<br> SLuint32 numInterfaces,<br> const SLInterfaceID * pInterfaceIds,<br> const SLboolean * pInterfaceRequired<br> ); | Added | Added the API for creating an **AudioPlayer** object. |
| Media - audio_standard| SLresult (*CreateOutputMix) (<br> SLEngineItf self,<br> SLObjectItf * pMix,<br> SLuint32 numInterfaces,<br> const SLInterfaceID * pInterfaceIds,<br> const SLboolean * pInterfaceRequired<br> ); | Added | Added the API for creating an **OutputMix** object. |
| Media - audio_standard| SLPlayItf_<br>SLresult (*SetPlayState) (<br> SLPlayItf self,<br> SLuint32 state<br> ); | Added | Added the API for setting the player state. |
| Media - audio_standard| SLPlayItf_<br>SLresult (*GetPlayState) (<br> SLPlayItf self,<br> SLuint32 *pState<br> ); | Added | Added the API for obtaining the player state. |
| Media - audio_standard| SLBufferQueueItf_<br>SLresult (*Enqueue) (<br> SLBufferQueueItf self,<br> const void *pBuffer,<br> SLuint32 size<br> ); | Added | Added the API for filling a buffer queue. |
| Media - audio_standard| SLBufferQueueItf_<br>SLresult (*Clear) (<br> SLBufferQueueItf self<br> ); | Added | Added the API for clearing a buffer queue. |
| Media - audio_standard| SLBufferQueueItf_<br>SLresult (*GetState) (<br> SLBufferQueueItf self,<br> SLBufferQueueState *pState<br> ); | Added | Added the API for obtaining the buffer queue state. |
| Media - audio_standard| SLVolumeItf_<br>SLresult (*SetVolumeLevel) (<br> SLVolumeItf self,<br> SLmillibel level<br> ); | Added | Added the API for setting the volume level. |
| Media - audio_standard| SLVolumeItf_<br>SLresult (*GetVolumeLevel) (<br> SLVolumeItf self,<br> SLmillibel *pLevel<br> ); | Added | Added the API for obtaining the volume level. |
| Media - audio_standard| SLVolumeItf_<br>SLresult (*GetMaxVolumeLevel) (<br> SLVolumeItf self,<br> SLmillibel *pMaxLevel<br> ); | Added | Added the API for setting the maximum volume level. |
| LIBUV | [LIBUV](https://gitee.com/openharmony/docs/tree/master/en/application-dev/reference/native-lib/third_party_libuv)| Added| Added the LIBUV interface.|
| Node-API | [Node-API](https://gitee.com/openharmony/docs/blob/master/en/application-dev/reference/native-lib/third_party_napi/napi.md) | Added| The NAPI component re-implements the Node-API interface and supports some interfaces in the Node-API standard library.|
| EGL | [EGL](https://github.com/KhronosGroup/EGL-Registry/tree/main/api/EGL/)| Added| Added the EGL interface.|
| GLES3 | [GLES3](https://github.com/KhronosGroup/OpenGL-Registry/tree/main/api/GLES3/)| Added| Added the OpenGL ES 3.0 interface.|
| C++ standard library| [libc++](https://libcxx.llvm.org/)| Added| Added the C++ standard library interface.|
| C standard library| C11 standard library implemented by [libc, libm, and libdl](https://en.cppreference.com/w/c/header)| Added| Added the C standard library interface.|
# Readme
This directory records the API changes in OpenHarmony 3.1 Release over OpenHarmony 3.0 LTS, including new, updated, deprecated, and deleted APIs.
- [JS API Differences](js-apidiff-v3.1-release.md)
- [Native API Differences](native-apidiff-v3.1-release.md)
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册