提交 00ab7db3 编写于 作者: IT_newip's avatar IT_newip

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

......@@ -103,7 +103,7 @@
- [DFX Overview](subsys-dfx-overview.md)
- [HiLog Development](subsys-dfx-hilog-rich.md)
- [HiLog\_Lite Development](subsys-dfx-hilog-lite.md)
- [HiTrace Development](subsys-dfx-hitrace.md)
- [HiTraceChain Development](subsys-dfx-hitracechain.md)
- [HiCollie Development](subsys-dfx-hicollie.md)
- HiSysEvent Development
- [HiSysEvent Logging Configuration](subsys-dfx-hisysevent-logging-config.md)
......
# HiTrace Development<a name="EN-US_TOPIC_0000001186134310"></a>
# HiTraceChain Development<a name="EN-US_TOPIC_0000001186134310"></a>
## Overview<a name="section3986195420436"></a>
HiTrace tracks the call chain with the same **traceid** throughout the inter-device, inter-process, and inter-thread service processes. It associates and displays the call relationship and various output information during the entire process, helping you analyze and locate faults and optimize the system.
HiTraceChain tracks the call chain with the same **traceid** throughout the inter-device, inter-process, and inter-thread service processes. It associates and displays the call relationship and various output information during the entire process, helping you analyze and locate faults and optimize the system.
## Use Cases<a name="section134561822574"></a>
HiTrace can be used for the following purposes:
HiTraceChain can be used for the following purposes:
- Associates and reports service process information \(such as logs and events\) on the device.
- Displays and analyzes reported information on the cloud to facilitate fault location.
- Works with the IDE to debug the detailed service process and time consumption distribution for system optimization.
**Figure 1** Use cases of HiTrace<a name="fig179241023125715"></a>
**Figure 1** Use cases of HiTraceChain<a name="fig179241023125715"></a>
![](figure/use-cases-of-hitrace.png "use-cases-of-hitrace")
......@@ -33,9 +35,9 @@ HiTrace can be used for the following purposes:
## Available APIs<a name="section1517945334617"></a>
HiTrace provides C++ and C APIs. The upper-layer services mainly use HiTrace to start and stop call chain tracing.
HiTraceChain provides C++ and C APIs. The upper-layer services mainly use HiTraceChain to start and stop call chain tracing.
HiTrace is implemented at layer C. It works by transferring **traceid** throughout the service calling process. Before service processing, HiTrace sets **traceid** in the thread local storage \(TLS\) of the calling thread. During service processing, HiTrace obtains **traceid** from the contextual TLS of the calling thread and automatically adds it to the log and event information. After service processing is complete, HiTrace clears **traceid** from the TLS of the calling thread.
HiTraceChain is implemented at layer C. It works by transferring **traceid** throughout the service calling process. Before service processing, HiTraceChain sets **traceid** in the thread local storage \(TLS\) of the calling thread. During service processing, HiTraceChain obtains **traceid** from the contextual TLS of the calling thread and automatically adds it to the log and event information. After service processing is complete, HiTraceChain clears **traceid** from the TLS of the calling thread.
### Java, C++, and C APIs<a name="section932504474"></a>
......@@ -56,7 +58,7 @@ HiTrace is implemented at layer C. It works by transferring **traceid** throug
<td class="cellrowborder" valign="top" width="46.04%" headers="mcps1.2.4.1.3 "><p id="p19219151413589"><a name="p19219151413589"></a><a name="p19219151413589"></a><strong id="b989888034"><a name="b989888034"></a><a name="b989888034"></a>API</strong></p>
</td>
</tr>
<tr id="row1219111415585"><td class="cellrowborder" rowspan="8" valign="top" width="12.540000000000001%" headers="mcps1.2.4.1.1 "><p id="p15219101455812"><a name="p15219101455812"></a><a name="p15219101455812"></a>HiTrace</p>
<tr id="row1219111415585"><td class="cellrowborder" rowspan="8" valign="top" width="12.540000000000001%" headers="mcps1.2.4.1.1 "><p id="p15219101455812"><a name="p15219101455812"></a><a name="p15219101455812"></a>HiTraceChain</p>
<p id="p1945616211310"><a name="p1945616211310"></a><a name="p1945616211310"></a></p>
<p id="p1645619231317"><a name="p1645619231317"></a><a name="p1645619231317"></a></p>
<p id="p94562024134"><a name="p94562024134"></a><a name="p94562024134"></a></p>
......@@ -67,42 +69,42 @@ HiTrace is implemented at layer C. It works by transferring **traceid** throug
</td>
<td class="cellrowborder" valign="top" width="41.42%" headers="mcps1.2.4.1.2 "><p id="p821971495820"><a name="p821971495820"></a><a name="p821971495820"></a>HiTraceId Begin(const std::string&amp; name, int flags)</p>
</td>
<td class="cellrowborder" valign="top" width="46.04%" headers="mcps1.2.4.1.3 "><p id="p2219914195817"><a name="p2219914195817"></a><a name="p2219914195817"></a>HiTraceIdStruct HiTraceBegin(const char* name, int flags)</p>
<td class="cellrowborder" valign="top" width="46.04%" headers="mcps1.2.4.1.3 "><p id="p2219914195817"><a name="p2219914195817"></a><a name="p2219914195817"></a>HiTraceIdStruct HiTraceChainBegin(const char* name, int flags)</p>
</td>
</tr>
<tr id="row16219171417584"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p021971414588"><a name="p021971414588"></a><a name="p021971414588"></a>void End(const HiTraceId&amp; id)</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p16219191435814"><a name="p16219191435814"></a><a name="p16219191435814"></a>void HiTraceEnd(const HiTraceIdStruct* pId)</p>
<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p16219191435814"><a name="p16219191435814"></a><a name="p16219191435814"></a>void HiTraceChainEnd(const HiTraceIdStruct* pId)</p>
</td>
</tr>
<tr id="row02191414115819"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p42191143585"><a name="p42191143585"></a><a name="p42191143585"></a>HiTraceId GetId();</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p1221901419588"><a name="p1221901419588"></a><a name="p1221901419588"></a>HiTraceIdStruct HiTraceGetId()</p>
<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p1221901419588"><a name="p1221901419588"></a><a name="p1221901419588"></a>HiTraceIdStruct HiTraceChainGetId()</p>
</td>
</tr>
<tr id="row11219131415582"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p6219111415812"><a name="p6219111415812"></a><a name="p6219111415812"></a>void SetId(const HiTraceId&amp; id)</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p221971465818"><a name="p221971465818"></a><a name="p221971465818"></a>void HiTraceSetId(const HiTraceIdStruct* pId)</p>
<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p221971465818"><a name="p221971465818"></a><a name="p221971465818"></a>void HiTraceChainSetId(const HiTraceIdStruct* pId)</p>
</td>
</tr>
<tr id="row162191814105815"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p12191147586"><a name="p12191147586"></a><a name="p12191147586"></a>void ClearId()</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p18219181445813"><a name="p18219181445813"></a><a name="p18219181445813"></a>void HiTraceClearId()</p>
<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p18219181445813"><a name="p18219181445813"></a><a name="p18219181445813"></a>void HiTraceChainClearId()</p>
</td>
</tr>
<tr id="row12219151475812"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p1721981418580"><a name="p1721981418580"></a><a name="p1721981418580"></a>HiTraceId CreateSpan()</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p1121981420584"><a name="p1121981420584"></a><a name="p1121981420584"></a>HiTraceIdStruct HiTraceCreateSpan()</p>
<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p1121981420584"><a name="p1121981420584"></a><a name="p1121981420584"></a>HiTraceIdStruct HiTraceChainCreateSpan()</p>
</td>
</tr>
<tr id="row1721911140582"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p18219514195814"><a name="p18219514195814"></a><a name="p18219514195814"></a>void Tracepoint(HiTraceTracepointType type, const HiTraceId&amp; id, const char* fmt, ...)</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p3219914175813"><a name="p3219914175813"></a><a name="p3219914175813"></a>void HiTraceTracepoint(HiTraceTracepointType type, const HiTraceIdStruct* pId, const char* fmt, ...)</p>
<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p3219914175813"><a name="p3219914175813"></a><a name="p3219914175813"></a>void HiTraceChainTracepoint(HiTraceTracepointType type, const HiTraceIdStruct* pId, const char* fmt, ...)</p>
</td>
</tr>
<tr id="row521911410582"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p2219101415814"><a name="p2219101415814"></a><a name="p2219101415814"></a>void Tracepoint(HiTraceCommunicationMode mode, HiTraceTracepointType type, const HiTraceId&amp; id, const char* fmt, ...)</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p2220141413584"><a name="p2220141413584"></a><a name="p2220141413584"></a>void HiTraceTracepointEx(HiTraceCommunicationMode mode, HiTraceTracepointType type, const HiTraceIdStruct* pId, const char* fmt, ...)</p>
<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p2220141413584"><a name="p2220141413584"></a><a name="p2220141413584"></a>void HiTraceChainTracepointEx(HiTraceCommunicationMode mode, HiTraceTracepointType type, const HiTraceIdStruct* pId, const char* fmt, ...)</p>
</td>
</tr>
<tr id="row8220181411586"><td class="cellrowborder" rowspan="14" valign="top" width="12.540000000000001%" headers="mcps1.2.4.1.1 "><p id="p522018149588"><a name="p522018149588"></a><a name="p522018149588"></a>HiTraceId</p>
......@@ -122,72 +124,72 @@ HiTrace is implemented at layer C. It works by transferring **traceid** throug
</td>
<td class="cellrowborder" valign="top" width="41.42%" headers="mcps1.2.4.1.2 "><p id="p102201914105811"><a name="p102201914105811"></a><a name="p102201914105811"></a>HiTraceId();</p>
</td>
<td class="cellrowborder" valign="top" width="46.04%" headers="mcps1.2.4.1.3 "><p id="p16220161419581"><a name="p16220161419581"></a><a name="p16220161419581"></a>void HiTraceInitId(HiTraceIdStruct* pId)</p>
<td class="cellrowborder" valign="top" width="46.04%" headers="mcps1.2.4.1.3 "><p id="p16220161419581"><a name="p16220161419581"></a><a name="p16220161419581"></a>void HiTraceChainInitId(HiTraceIdStruct* pId)</p>
</td>
</tr>
<tr id="row8220191405817"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p162201314155813"><a name="p162201314155813"></a><a name="p162201314155813"></a>HiTraceId(const uint8_t* pIdArray, int len)</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p122011425814"><a name="p122011425814"></a><a name="p122011425814"></a>HiTraceIdStruct HiTraceBytesToId(const uint8_t* pIdArray, int len)</p>
<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p122011425814"><a name="p122011425814"></a><a name="p122011425814"></a>HiTraceIdStruct HiTraceChainBytesToId(const uint8_t* pIdArray, int len)</p>
</td>
</tr>
<tr id="row1522041435820"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p1422012146587"><a name="p1422012146587"></a><a name="p1422012146587"></a>bool IsValid()</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p1322016149586"><a name="p1322016149586"></a><a name="p1322016149586"></a>int HiTraceIsValid(const HiTraceIdStruct* pId)</p>
<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p1322016149586"><a name="p1322016149586"></a><a name="p1322016149586"></a>int HiTraceChainIsValid(const HiTraceIdStruct* pId)</p>
</td>
</tr>
<tr id="row8220714155810"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p322021485814"><a name="p322021485814"></a><a name="p322021485814"></a>bool IsFlagEnabled(HiTraceFlag flag)</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p922010148583"><a name="p922010148583"></a><a name="p922010148583"></a>int HiTraceIsFlagEnabled(const HiTraceIdStruct* pId, HiTraceFlag flag)</p>
<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p922010148583"><a name="p922010148583"></a><a name="p922010148583"></a>int HiTraceChainIsFlagEnabled(const HiTraceIdStruct* pId, HiTraceFlag flag)</p>
</td>
</tr>
<tr id="row12220161485814"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p1122011140588"><a name="p1122011140588"></a><a name="p1122011140588"></a>void EnableFlag(HiTraceFlag flag)</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p152201146583"><a name="p152201146583"></a><a name="p152201146583"></a>void HiTraceEnableFlag(HiTraceIdStruct* pId, HiTraceFlag flag)</p>
<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p152201146583"><a name="p152201146583"></a><a name="p152201146583"></a>void HiTraceChainEnableFlag(HiTraceIdStruct* pId, HiTraceFlag flag)</p>
</td>
</tr>
<tr id="row922061411589"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p202208143588"><a name="p202208143588"></a><a name="p202208143588"></a>int GetFlags()</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p182206142587"><a name="p182206142587"></a><a name="p182206142587"></a>int HiTraceGetFlags(const HiTraceIdStruct* pId)</p>
<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p182206142587"><a name="p182206142587"></a><a name="p182206142587"></a>int HiTraceChainGetFlags(const HiTraceIdStruct* pId)</p>
</td>
</tr>
<tr id="row82204145589"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p12201414205815"><a name="p12201414205815"></a><a name="p12201414205815"></a>void SetFlags(int flags)</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p162201514175813"><a name="p162201514175813"></a><a name="p162201514175813"></a>void HiTraceSetFlags(HiTraceIdStruct* pId, int flags)</p>
<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p162201514175813"><a name="p162201514175813"></a><a name="p162201514175813"></a>void HiTraceChainSetFlags(HiTraceIdStruct* pId, int flags)</p>
</td>
</tr>
<tr id="row152204143585"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p722113147580"><a name="p722113147580"></a><a name="p722113147580"></a>uint64_t GetChainId()</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p322119149584"><a name="p322119149584"></a><a name="p322119149584"></a>uint64_t HiTraceGetChainId(const HiTraceIdStruct* pId)</p>
<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p322119149584"><a name="p322119149584"></a><a name="p322119149584"></a>uint64_t HiTraceChainGetChainId(const HiTraceIdStruct* pId)</p>
</td>
</tr>
<tr id="row1221214175815"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p922131445815"><a name="p922131445815"></a><a name="p922131445815"></a>void SetChainId(uint64_t chainId)</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p922101411588"><a name="p922101411588"></a><a name="p922101411588"></a>void HiTraceSetChainId(HiTraceIdStruct* pId, uint64_t chainId)</p>
<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p922101411588"><a name="p922101411588"></a><a name="p922101411588"></a>void HiTraceChainSetChainId(HiTraceIdStruct* pId, uint64_t chainId)</p>
</td>
</tr>
<tr id="row1922115142588"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p1122141414588"><a name="p1122141414588"></a><a name="p1122141414588"></a>uint64_t GetSpanId()</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p32211145584"><a name="p32211145584"></a><a name="p32211145584"></a>uint64_t HiTraceGetSpanId(const HiTraceIdStruct* pId)</p>
<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p32211145584"><a name="p32211145584"></a><a name="p32211145584"></a>uint64_t HiTraceChainGetSpanId(const HiTraceIdStruct* pId)</p>
</td>
</tr>
<tr id="row4221171414587"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p10221191412588"><a name="p10221191412588"></a><a name="p10221191412588"></a>void SetSpanId(uint64_t spanId)</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p42211614105810"><a name="p42211614105810"></a><a name="p42211614105810"></a>void HiTraceSetSpanId(HiTraceIdStruct* pId, uint64_t spanId)</p>
<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p42211614105810"><a name="p42211614105810"></a><a name="p42211614105810"></a>void HiTraceChainSetSpanId(HiTraceIdStruct* pId, uint64_t spanId)</p>
</td>
</tr>
<tr id="row322171425818"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p1722111418582"><a name="p1722111418582"></a><a name="p1722111418582"></a>uint64_t GetParentSpanId()</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p8221314195817"><a name="p8221314195817"></a><a name="p8221314195817"></a>uint64_t HiTraceGetParentSpanId(const HiTraceIdStruct* pId)</p>
<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p8221314195817"><a name="p8221314195817"></a><a name="p8221314195817"></a>uint64_t HiTraceChainGetParentSpanId(const HiTraceIdStruct* pId)</p>
</td>
</tr>
<tr id="row622114147589"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p92219145589"><a name="p92219145589"></a><a name="p92219145589"></a>void SetParentSpanId(uint64_t parentSpanId)</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p922191435813"><a name="p922191435813"></a><a name="p922191435813"></a>void HiTraceSetParentSpanId(HiTraceIdStruct* pId, uint64_t parentSpanId)</p>
<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p922191435813"><a name="p922191435813"></a><a name="p922191435813"></a>void HiTraceChainSetParentSpanId(HiTraceIdStruct* pId, uint64_t parentSpanId)</p>
</td>
</tr>
<tr id="row5221614135814"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p11221121435820"><a name="p11221121435820"></a><a name="p11221121435820"></a>int ToBytes(uint8_t* pIdArray, int len)</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p1122131415814"><a name="p1122131415814"></a><a name="p1122131415814"></a>int HiTraceIdToBytes(const HiTraceIdStruct* pId, uint8_t* pIdArray, int len)</p>
<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p1122131415814"><a name="p1122131415814"></a><a name="p1122131415814"></a>int HiTraceChainIdToBytes(const HiTraceIdStruct* pId, uint8_t* pIdArray, int len)</p>
</td>
</tr>
</tbody>
......@@ -206,7 +208,7 @@ HiTrace is implemented at layer C. It works by transferring **traceid** throug
</th>
</tr>
</thead>
<tbody><tr id="row383911183378"><td class="cellrowborder" rowspan="8" valign="top" width="9.8%" headers="mcps1.2.4.1.1 "><p id="p10839318133713"><a name="p10839318133713"></a><a name="p10839318133713"></a>HiTrace</p>
<tbody><tr id="row383911183378"><td class="cellrowborder" rowspan="8" valign="top" width="9.8%" headers="mcps1.2.4.1.1 "><p id="p10839318133713"><a name="p10839318133713"></a><a name="p10839318133713"></a>HiTraceChain</p>
<p id="p1544019164131"><a name="p1544019164131"></a><a name="p1544019164131"></a></p>
<p id="p14440191615134"><a name="p14440191615134"></a><a name="p14440191615134"></a></p>
<p id="p6440161631310"><a name="p6440161631310"></a><a name="p6440161631310"></a></p>
......@@ -217,7 +219,7 @@ HiTrace is implemented at layer C. It works by transferring **traceid** throug
</td>
<td class="cellrowborder" valign="top" width="31.430000000000003%" headers="mcps1.2.4.1.2 "><p id="p198391118193717"><a name="p198391118193717"></a><a name="p198391118193717"></a>HiTraceId Begin(const std::string&amp; name, int flags)</p>
</td>
<td class="cellrowborder" valign="top" width="58.77%" headers="mcps1.2.4.1.3 "><p id="p684013182375"><a name="p684013182375"></a><a name="p684013182375"></a>Starts HiTrace, generates a <strong id="b2063619462230"><a name="b2063619462230"></a><a name="b2063619462230"></a>HiTraceId</strong> object, and sets it in the TLS of the calling thread.</p>
<td class="cellrowborder" valign="top" width="58.77%" headers="mcps1.2.4.1.3 "><p id="p684013182375"><a name="p684013182375"></a><a name="p684013182375"></a>Starts HiTraceChain, generates a <strong id="b2063619462230"><a name="b2063619462230"></a><a name="b2063619462230"></a>HiTraceId</strong> object, and sets it in the TLS of the calling thread.</p>
<p id="p1384081812377"><a name="p1384081812377"></a><a name="p1384081812377"></a>Input arguments:</p>
<a name="ul1537854218177"></a><a name="ul1537854218177"></a><ul id="ul1537854218177"><li><strong id="b1566312131676"><a name="b1566312131676"></a><a name="b1566312131676"></a>name</strong>: Indicates the name of the service process.</li><li><strong id="b75512128711"><a name="b75512128711"></a><a name="b75512128711"></a>flags</strong>: Indicates tracing flags, which can be used in combination. <a name="ul18842248101915"></a><a name="ul18842248101915"></a><ul id="ul18842248101915"><li>HITRACE_FLAG_INCLUDE_ASYNC: Traces both synchronous and asynchronous calls. By default, only synchronous calls are traced.</li><li><strong id="b724616241477"><a name="b724616241477"></a><a name="b724616241477"></a>HITRACE_FLAG_DONOT_CREATE_SPAN</strong>: Do not create a span. By default, a span is created.</li><li><strong id="b136181926479"><a name="b136181926479"></a><a name="b136181926479"></a>HITRACE_FLAG_TP_INFO</strong>: Outputs the tracepoint information. By default, the information is not output.</li><li><strong id="b358818291777"><a name="b358818291777"></a><a name="b358818291777"></a>HITRACE_FLAG_NO_BE_INFO</strong>: Do not output the start and end information. By default, the information is output.</li><li><strong id="b38571331974"><a name="b38571331974"></a><a name="b38571331974"></a>HITRACE_FLAG_DONOT_ENABLE_LOG</strong>: Do not associate logs for output. By default, logs are associated for output.</li><li><strong id="b17320371870"><a name="b17320371870"></a><a name="b17320371870"></a>HITRACE_FLAG_FAULT_TRIGGER</strong>: Triggers tracing by fault. By default, tracing is triggered normally.</li><li><strong id="b876915381711"><a name="b876915381711"></a><a name="b876915381711"></a>HITRACE_FLAG_D2D_TP_INFO</strong>: Outputs the device-to-device tracepoint information. By default, the information is not output.</li><li><strong id="b66510421776"><a name="b66510421776"></a><a name="b66510421776"></a>HITRCE_FLAG_DEFAULT</strong>: Indicates the default flag.</li></ul>
</li><li>Output arguments: none</li><li>Return value: Returns a valid <strong id="b7411101522917"><a name="b7411101522917"></a><a name="b7411101522917"></a>HiTraceId</strong> object if call chain tracing is triggered successfully; returns an invalid object otherwise.</li></ul>
......@@ -226,7 +228,7 @@ HiTrace is implemented at layer C. It works by transferring **traceid** throug
</tr>
<tr id="row16840101803720"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p13840191893718"><a name="p13840191893718"></a><a name="p13840191893718"></a>void End(const HiTraceId&amp; id)</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p3840181820372"><a name="p3840181820372"></a><a name="p3840181820372"></a>Stops HiTrace based on the <strong id="b1605239122415"><a name="b1605239122415"></a><a name="b1605239122415"></a>HiTraceId</strong> object returned by the <strong id="b7610183992419"><a name="b7610183992419"></a><a name="b7610183992419"></a>Begin</strong> API, and clears the <strong id="b1610173918241"><a name="b1610173918241"></a><a name="b1610173918241"></a>HiTraceId</strong> object in the TLS of the calling thread.</p>
<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p3840181820372"><a name="p3840181820372"></a><a name="p3840181820372"></a>Stops HiTraceChain based on the <strong id="b1605239122415"><a name="b1605239122415"></a><a name="b1605239122415"></a>HiTraceId</strong> object returned by the <strong id="b7610183992419"><a name="b7610183992419"></a><a name="b7610183992419"></a>Begin</strong> API, and clears the <strong id="b1610173918241"><a name="b1610173918241"></a><a name="b1610173918241"></a>HiTraceId</strong> object in the TLS of the calling thread.</p>
<p id="p9840718103720"><a name="p9840718103720"></a><a name="p9840718103720"></a>Input arguments:</p>
<a name="ul2917140133015"></a><a name="ul2917140133015"></a><ul id="ul2917140133015"><li><strong id="b8201185118711"><a name="b8201185118711"></a><a name="b8201185118711"></a>id</strong>: Indicates the <strong id="b2071183114331"><a name="b2071183114331"></a><a name="b2071183114331"></a>HiTraceId</strong> object.</li></ul>
<p id="p14840151803718"><a name="p14840151803718"></a><a name="p14840151803718"></a>Output arguments: none</p>
......@@ -268,7 +270,7 @@ HiTrace is implemented at layer C. It works by transferring **traceid** throug
</tr>
<tr id="row198401118123714"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p178411618183711"><a name="p178411618183711"></a><a name="p178411618183711"></a>void Tracepoint(HiTraceTracepointType type, const HiTraceId&amp; id, const char* fmt, ...)</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p88419184373"><a name="p88419184373"></a><a name="p88419184373"></a>Outputs HiTrace call chain information based on the information type. The information includes the timestamp and <strong id="b185817437323"><a name="b185817437323"></a><a name="b185817437323"></a>HiTraceId</strong> object information of the span.</p>
<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p88419184373"><a name="p88419184373"></a><a name="p88419184373"></a>Outputs HiTraceChain call chain information based on the information type. The information includes the timestamp and <strong id="b185817437323"><a name="b185817437323"></a><a name="b185817437323"></a>HiTraceId</strong> object information of the span.</p>
<p id="p1984116184376"><a name="p1984116184376"></a><a name="p1984116184376"></a>Input arguments:</p>
<a name="ul18619103153812"></a><a name="ul18619103153812"></a><ul id="ul18619103153812"><li><strong id="b7818831083"><a name="b7818831083"></a><a name="b7818831083"></a>type</strong>: Indicates the information type. The options are as follows:<a name="ul1941510328297"></a><a name="ul1941510328297"></a><ul id="ul1941510328297"><li><strong id="b18809161180"><a name="b18809161180"></a><a name="b18809161180"></a>HITRACE_TP_CS</strong>: Client Send, which indicates the messages sent by the synchronous/asynchronous communication client.</li><li><strong id="b327281271319"><a name="b327281271319"></a><a name="b327281271319"></a>HITRACE_TP_SR</strong>: Server Receive, which indicates the messages received by the server in synchronous/asynchronous communication.</li><li><strong id="b10154742682"><a name="b10154742682"></a><a name="b10154742682"></a>HITRACE_TP_SS</strong>: Server Send, which indicates the response messages sent by the server in synchronous communication.</li><li><strong id="b152598127810"><a name="b152598127810"></a><a name="b152598127810"></a>HITRACE_TP_CR</strong>: Client Receive, which indicates the response messages received by the synchronous communication client.</li><li><strong id="b82631512817"><a name="b82631512817"></a><a name="b82631512817"></a>HITRACE_TP_GENERAL</strong>: Indicates the common output information.</li></ul>
</li><li><strong id="b117401716584"><a name="b117401716584"></a><a name="b117401716584"></a>id</strong>: Indicates the ID of the current span.</li><li><strong id="b392172019813"><a name="b392172019813"></a><a name="b392172019813"></a>fmt</strong>: Indicates the string describing the format variable parameter.</li><li><strong id="b986771717818"><a name="b986771717818"></a><a name="b986771717818"></a>args</strong>: Indicates the variable parameter.</li></ul>
......@@ -278,7 +280,7 @@ HiTrace is implemented at layer C. It works by transferring **traceid** throug
</tr>
<tr id="row11841191811379"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p08411318163716"><a name="p08411318163716"></a><a name="p08411318163716"></a>void Tracepoint(HiTraceCommunicationMode mode, HiTraceTracepointType type, const HiTraceId&amp; id, const char* fmt, ...)</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p68411618153713"><a name="p68411618153713"></a><a name="p68411618153713"></a>Outputs HiTrace call chain information based on the communication mode and information type. The information includes the timestamp and <strong id="b8151210123912"><a name="b8151210123912"></a><a name="b8151210123912"></a>HiTraceId</strong> object information of the span.</p>
<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p68411618153713"><a name="p68411618153713"></a><a name="p68411618153713"></a>Outputs HiTraceChain call chain information based on the communication mode and information type. The information includes the timestamp and <strong id="b8151210123912"><a name="b8151210123912"></a><a name="b8151210123912"></a>HiTraceId</strong> object information of the span.</p>
<p id="p98418189375"><a name="p98418189375"></a><a name="p98418189375"></a>Input arguments:</p>
<a name="ul914264413811"></a><a name="ul914264413811"></a><ul id="ul914264413811"><li><strong id="b76471824183"><a name="b76471824183"></a><a name="b76471824183"></a>mode</strong>: Indicates the communication mode. The options are as follows:<a name="ul137382469451"></a><a name="ul137382469451"></a><ul id="ul137382469451"><li><strong id="b13732297812"><a name="b13732297812"></a><a name="b13732297812"></a>HITRACE_CM_DEFAULT</strong>: default communication mode used when no communication mode is specified</li><li><strong id="b1820115271789"><a name="b1820115271789"></a><a name="b1820115271789"></a>HITRACE_CM_THREAD</strong>: inter-thread communication</li><li><strong id="b27781831488"><a name="b27781831488"></a><a name="b27781831488"></a>HITRACE_CM_PROCESS</strong>: inter-process communication</li><li><strong id="b15657113313819"><a name="b15657113313819"></a><a name="b15657113313819"></a>HITRACE_CM_DEVICE</strong>: inter-device communication</li></ul>
</li><li><strong id="b172723513812"><a name="b172723513812"></a><a name="b172723513812"></a>type</strong>: Indicates the information type. The options are as follows:<a name="ul19648426458"></a><a name="ul19648426458"></a><ul id="ul19648426458"><li><strong id="b26421037382"><a name="b26421037382"></a><a name="b26421037382"></a>HITRACE_TP_CS</strong>: Client Send, which indicates the messages sent by the synchronous/asynchronous communication client.</li><li><strong id="b66504018818"><a name="b66504018818"></a><a name="b66504018818"></a>HITRACE_TP_SR</strong>: Server Receive, which indicates the messages received by the server in synchronous/asynchronous communication.</li><li><strong id="b285283761"><a name="b285283761"></a><a name="b285283761"></a>HITRACE_TP_SS</strong>: Server Send, which indicates the response messages sent by the server in synchronous communication.</li><li><strong id="b148684447814"><a name="b148684447814"></a><a name="b148684447814"></a>HITRACE_TP_CR</strong>: Client Receive, which indicates the response messages received by the synchronous communication client.</li><li><strong id="b17875164618816"><a name="b17875164618816"></a><a name="b17875164618816"></a>HITRACE_TP_GENERAL</strong>: Indicates the common output information.</li></ul>
......@@ -428,7 +430,7 @@ HiTrace is implemented at layer C. It works by transferring **traceid** throug
## Call Chain Processing<a name="section11257133933"></a>
Inter-device, inter-process, and inter-thread calls are implemented through the communication mechanism. **HiTrace** requires transfer of **traceid** in the communication mechanism.
Inter-device, inter-process, and inter-thread calls are implemented through the communication mechanism. **HiTraceChain** requires transfer of **traceid** in the communication mechanism.
Some built-in communication mechanisms \(such as ZIDL\) of OpenHarmony already support the transfer of **traceid**.
......@@ -475,25 +477,25 @@ The process is as follows:
1. Develop the source code.
Include the **hitrace** header file in the class definition header file or class implementation source file. For example:
Include the **hitracechain** header file in the class definition header file or class implementation source file. For example:
```
#include "hitrace/trace.h"
#include "hitrace/tracechain.h"
```
Add the code to start and stop call chain tracing in the class implementation source file.
```
using namespace OHOS::HiviewDFX;
HiTraceId traceId = HiTrace::Begin("MyServiceFlow", HITRACE_FLAG_DEFAULT);
auto traceId = HiTraceChain::Begin("MyServiceFlow", HITRACE_FLAG_DEFAULT);
...
HiTrace::End(traceId);
HiTraceChain::End(traceId);
```
2. Configure compilation information. Specifically, add the subsystem SDK dependency to **BUILD.gn**.
```
external_deps = [ "hiviewdfx:libhitrace" ]
external_deps = [ "hiviewdfx:libhitracechain" ]
```
......@@ -501,24 +503,24 @@ The process is as follows:
1. Develop the source code.
Include the **hitrace** header file in the source file.
Include the **hitracechain** header file in the source file.
```
#include "hitrace/trace.h"
#include "hitrace/tracechain.h"
```
Add the code to start and stop call chain tracing in the class implementation source file.
```
HiTraceIdStruct traceId = HiTraceBegin("MyServiceFlow", HITRACE_FLAG_DEFAULT);
HiTraceIdStruct traceId = HiTraceChainBegin("MyServiceFlow", HITRACE_FLAG_DEFAULT);
...
HiTraceEnd(traceId);
HiTraceChainEnd(traceId);
```
2. Configure compilation information. Specifically, add the subsystem SDK dependency to **BUILD.gn**.
```
external_deps = [ "hiviewdfx:libhitrace" ]
external_deps = [ "hiviewdfx:libhitracechain" ]
```
......@@ -6,7 +6,7 @@ The DFX subsystem provides the following functions:
- HiLog: implements the logging function. It is applicable to mini-system devices \(reference memory ≥ 128 KiB\), small-system devices \(reference memory ≥ 1 MiB\), and standard-system devices \(reference memory ≥ 128 MB\).
- HiTrace: implements distributed call chain tracing. It is applicable to standard-system devices \(reference memory ≥ 128 MiB\).
- HiTraceChain: implements distributed call chain tracing. It is applicable to standard-system devices \(reference memory ≥ 128 MiB\).
- HiCollie: implements thread suspension detection. It is applicable to standard-system devices \(reference memory ≥ 128 MiB\).
- HiSysEvent: implements system event logging. It is applicable to standard-system devices \(reference memory ≥ 128 MiB\).
- HiChecker: implements defect scanning. It is applicable to standard-system devices \(reference memory ≥ 128 MiB\).
......@@ -35,3 +35,4 @@ Event logging means to collect and log events reported during system running. Th
**System event**
A system event is an indication of the system status at a given time point during system running. You can use these events to analyze the status change of the system.
<!--no_check-->
......@@ -156,7 +156,7 @@ OpenHarmony支持如下几种系统类型:
## 快速入门
- [设备开发快速入门](device-dev/quick-start/quickstart-ide-lite-overview.md)
- [设备开发快速入门](device-dev/quick-start/quickstart-overview.md)
- [应用开发快速入门](application-dev/quick-start/start-overview.md)
......
......@@ -10,7 +10,7 @@
只有app/Context中的方法属于FA模型对应的Context。该模式下,应用级别的Context和Ability级别的Context都是该类型的实例,如果在应用级别的Context里面调用了Ability级别的方法,会产生错误。所以开发者需要注意Context实例所代表的实际含义。
- Stage模型
除了app/Context之外的Context都属于Stage模型,分别有application/Context、application/ApplicationContext、application/AbilityStageContext、application/ExtensionContext、application/AbilityContext、application/FormExtensionContext等Context。这些Context的介绍及使用方式将会在[Stage模型和Context详细介绍](#stage模型和context详细介绍)中进行说明。
除了app/Context之外的Context都属于Stage模型,分别有application/Context、application/ApplicationContext、application/AbilityStageContext、application/ExtensionContext、application/AbilityContext、application/FormExtensionContext等Context。这些Context的介绍及使用方式将会在[Stage模型的Context详细介绍](#stage模型的context详细介绍)中进行说明。
![contextIntroduction](figures/contextIntroduction.png)
......@@ -54,7 +54,7 @@ setDisplayOrientation(orientation: bundle.DisplayOrientation): Promise<void>;
示例:
```javascript
import featureAbility from '@ohos.ability.featureAbility'
import bundle from '../@ohos.bundle';
import bundle from '@ohos.bundle';
export default {
onCreate() {
......@@ -71,13 +71,13 @@ export default {
}
```
## Stage模型Context详细介绍
## Stage模型Context详细介绍
​ Stage模型有如下几类Context:
### application/Context
​ application/Context类型的Context是基类Context,里面提供了应用的一些基础信息:resourceManager、applicationInfo、cacheDir、area等,还有应用的一些基本方法:createBundleContext等。
​ application/Context是基类Context。里面提供了应用的一些基础信息:resourceManager、applicationInfo、cacheDir、area等,还有应用的一些基本方法:createModuleContext等。
**d.ts声明**
......
......@@ -12,20 +12,20 @@ continuationManager作为流转能力的入口,主要用于拉起系统中的
## 接口说明
| 接口名 | 接口描述 |
| ---------------------------------------------------------------------------------------------- | ----------- |
| register(callback: AsyncCallback\<number>): void | 注册流转管理服务,并获取对应的注册token,无过滤条件(AsyncCallback)。 |
| register(options: ContinuationExtraParams, callback: AsyncCallback\<number>): void | 注册流转管理服务,并获取对应的注册token(AsyncCallback)。 |
| register(options?: ContinuationExtraParams): Promise\<number> | 连接流转管理服务,并获取对应的注册token(Promise)。 |
| registerContinuation(callback: AsyncCallback\<number>): void | 注册流转管理服务,并获取对应的注册token,无过滤条件(AsyncCallback)。 |
| registerContinuation(options: ContinuationExtraParams, callback: AsyncCallback\<number>): void | 注册流转管理服务,并获取对应的注册token(AsyncCallback)。 |
| registerContinuation(options?: ContinuationExtraParams): Promise\<number> | 连接流转管理服务,并获取对应的注册token(Promise)。 |
| on(type: "deviceConnect", token: number, callback: Callback\<Array\<ContinuationResult>>): void | 监听设备连接状态(Callback)。 |
| on(type: "deviceDisconnect", token: number, callback: Callback\<Array\<string>>): void | 监听设备断开状态(Callback)。 |
| off(type: "deviceConnect", token: number): void | 取消监听设备连接状态。 |
| off(type: "deviceDisconnect", token: number): void | 取消监听设备断开状态。 |
| startDeviceManager(token: number, callback: AsyncCallback\<void>): void | 拉起设备选择模块,可显示组网内可选择设备列表信息,无过滤条件(AsyncCallback)。 |
| startDeviceManager(token: number, options: ContinuationExtraParams, callback: AsyncCallback\<void>): void | 拉起设备选择模块,可显示组网内可选择设备列表信息(AsyncCallback)。 |
| startDeviceManager(token: number, options?: ContinuationExtraParams): Promise\<void> | 拉起设备选择模块,可显示组网内可选择设备列表信息(Promise)。 |
| updateConnectStatus(token: number, deviceId: string, status: DeviceConnectState, callback: AsyncCallback\<void>): void | 通知设备选择模块,更新当前的流转状态(AsyncCallback)。 |
| updateConnectStatus(token: number, deviceId: string, status: DeviceConnectState): Promise\<void> | 通知设备选择模块,更新当前的流转状态(Promise)。 |
| unregister(token: number, callback: AsyncCallback\<void>): void | 取消注册流转管理服务,传入注册时获取的token进行取消注册(AsyncCallback)。 |
| unregister(token: number): Promise\<void> | 取消注册流转管理服务,传入注册时获取的token进行取消注册(Promise)。 |
| startContinuationDeviceManager(token: number, callback: AsyncCallback\<void>): void | 拉起设备选择模块,可显示组网内可选择设备列表信息,无过滤条件(AsyncCallback)。 |
| startContinuationDeviceManager(token: number, options: ContinuationExtraParams, callback: AsyncCallback\<void>): void | 拉起设备选择模块,可显示组网内可选择设备列表信息(AsyncCallback)。 |
| startContinuationDeviceManager(token: number, options?: ContinuationExtraParams): Promise\<void> | 拉起设备选择模块,可显示组网内可选择设备列表信息(Promise)。 |
| updateContinuationState(token: number, deviceId: string, status: DeviceConnectState, callback: AsyncCallback\<void>): void | 通知设备选择模块,更新当前的流转状态(AsyncCallback)。 |
| updateContinuationState(token: number, deviceId: string, status: DeviceConnectState): Promise\<void> | 通知设备选择模块,更新当前的流转状态(Promise)。 |
| unregisterContinuation(token: number, callback: AsyncCallback\<void>): void | 取消注册流转管理服务,传入注册时获取的token进行取消注册(AsyncCallback)。 |
| unregisterContinuation(token: number): Promise\<void> | 取消注册流转管理服务,传入注册时获取的token进行取消注册(Promise)。 |
## 开发步骤
1. 导入continuationManager模块。
......@@ -138,13 +138,16 @@ continuationManager作为流转能力的入口,主要用于拉起系统中的
```ts
let token: number = -1; // 用于保存注册成功并返回的token,后续使用其完成监听设备连接/断开状态、拉起设备选择模块以及更新流转状态的动作
continuationManager.register().then((data) => {
console.info('register finished, ' + JSON.stringify(data));
try {
continuationManager.registerContinuation().then((data) => {
console.info('registerContinuation finished, ' + JSON.stringify(data));
token = data; // 获取到对应的注册token,并赋值给token变量
}).catch((err) => {
console.error('register failed, cause: ' + JSON.stringify(err));
console.error('registerContinuation failed, cause: ' + JSON.stringify(err));
});
} catch (err) {
console.error('registerContinuation failed, cause: ' + JSON.stringify(err));
}
```
4. 监听设备状态。
......@@ -154,6 +157,7 @@ continuationManager作为流转能力的入口,主要用于拉起系统中的
```ts
let remoteDeviceId: string = ""; // 用于保存用户选择的远端设备信息,后续使用其完成跨端迁移或多端协同操作
try {
// 参数token为注册token
continuationManager.on("deviceConnect", token, (continuationResults) => {
console.info('registerDeviceConnectCallback len: ' + continuationResults.length);
......@@ -176,6 +180,9 @@ continuationManager作为流转能力的入口,主要用于拉起系统中的
console.error('StartRemoteAbility failed, cause: ' + JSON.stringify(err));
});
});
} catch (err) {
console.error('on failed, cause: ' + JSON.stringify(err));
}
```
上述多端协同操作为Stage平台的跨设备拉起,FA平台详情见[PageAbility开发指导](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/ability/fa-pageability.md)
......@@ -187,16 +194,21 @@ continuationManager作为流转能力的入口,主要用于拉起系统中的
let deviceConnectStatus: continuationManager.DeviceConnectState = continuationManager.DeviceConnectState.CONNECTED;
// 参数token为注册token,参数remoteDeviceId为获取到的remoteDeviceId
continuationManager.updateConnectStatus(token, remoteDeviceId, deviceConnectStatus).then((data) => {
console.info('updateConnectStatus finished, ' + JSON.stringify(data));
try {
continuationManager.updateContinuationState(token, remoteDeviceId, deviceConnectStatus).then((data) => {
console.info('updateContinuationState finished, ' + JSON.stringify(data));
}).catch((err) => {
console.error('updateConnectStatus failed, cause: ' + JSON.stringify(err));
console.error('updateContinuationState failed, cause: ' + JSON.stringify(err));
});
} catch (err) {
console.error('updateContinuationState failed, cause: ' + JSON.stringify(err));
}
```
监听设备断开状态,方便用户终止跨端迁移或多端协同操作,代码示例如下:
```ts
try {
// 参数token为注册token
continuationManager.on("deviceDisconnect", token, (deviceIds) => {
console.info('onDeviceDisconnect len: ' + deviceIds.length);
......@@ -210,12 +222,15 @@ continuationManager作为流转能力的入口,主要用于拉起系统中的
let deviceConnectStatus: continuationManager.DeviceConnectState = continuationManager.DeviceConnectState.DISCONNECTING; // 设备断开状态
// 参数token为注册token,参数unselectedDeviceId为获取到的unselectedDeviceId
continuationManager.updateConnectStatus(token, unselectedDeviceId, deviceConnectStatus).then((data) => {
console.info('updateConnectStatus finished, ' + JSON.stringify(data));
continuationManager.updateContinuationState(token, unselectedDeviceId, deviceConnectStatus).then((data) => {
console.info('updateContinuationState finished, ' + JSON.stringify(data));
}).catch((err) => {
console.error('updateConnectStatus failed, cause: ' + JSON.stringify(err));
console.error('updateContinuationState failed, cause: ' + JSON.stringify(err));
});
});
} catch (err) {
console.error('updateContinuationState failed, cause: ' + JSON.stringify(err));
}
```
5. 拉起设备选择模块,可显示组网内可选择设备列表信息,供用户选择。
......@@ -229,12 +244,16 @@ continuationManager作为流转能力的入口,主要用于拉起系统中的
continuationMode: continuationManager.ContinuationMode.COLLABORATION_SINGLE // 设备选择模块单选模式
};
try {
// 参数token为注册token
continuationManager.startDeviceManager(token, continuationExtraParams).then((data) => {
console.info('startDeviceManager finished, ' + JSON.stringify(data));
continuationManager.startContinuationDeviceManager(token, continuationExtraParams).then((data) => {
console.info('startContinuationDeviceManager finished, ' + JSON.stringify(data));
}).catch((err) => {
console.error('startDeviceManager failed, cause: ' + JSON.stringify(err));
console.error('startContinuationDeviceManager failed, cause: ' + JSON.stringify(err));
});
} catch (err) {
console.error('startContinuationDeviceManager failed, cause: ' + JSON.stringify(err));
}
```
6. 当用户不打算再进行跨端迁移或多端协同操作时,可以传入注册时获取的token进行取消注册。
......@@ -242,10 +261,14 @@ continuationManager作为流转能力的入口,主要用于拉起系统中的
取消注册流转管理服务的代码示例如下:
```ts
try {
// 参数token为注册token
continuationManager.unregister(token).then((data) => {
console.info('unregister finished, ' + JSON.stringify(data));
continuationManager.unregisterContinuation(token).then((data) => {
console.info('unregisterContinuation finished, ' + JSON.stringify(data));
}).catch((err) => {
console.error('unregister failed, cause: ' + JSON.stringify(err));
console.error('unregisterContinuation failed, cause: ' + JSON.stringify(err));
});
} catch (err) {
console.error('unregisterContinuation failed, cause: ' + JSON.stringify(err));
}
```
\ No newline at end of file
......@@ -12,9 +12,9 @@ Ability支持单实例、多实例和指定实例3种启动模式,在module.js
| 启动模式 | 描述 |说明 |
| ----------- | ------- |---------------- |
| standard | 多实例 | 每次startAbility都会启动一个新的实例 |
| singleton | 单实例 | 系统中只存在唯一一个实例,startAbility时,如果已存在,则复用系统中的唯一一个实例 |
| specified | 指定实例 | 运行时由Ability内部业务决定是否创建多实例 |
| standard | 标准模式 | 每次startAbility都会启动一个新的实例。 |
| singleton | 单实例模式 | 系统中只存在唯一一个实例,startAbility时,如果已存在,则复用系统中的唯一一个实例。 |
| specified | 指定实例 | 运行时由Ability内部业务决定是否创建多实例 |
缺省情况下是singleton模式,module.json5示例如下:
```json
......
......@@ -60,7 +60,7 @@
+ **Standard**:每次startAbility调用,都会在应用进程中创建一个该类型的实例,如下图Ability2的两个实例;
+ **Specified**:允许开发者在系统创建AbilityRecord之前,为该实例创建一个key,后续每次创建该类型的Ability实例都会询问应用使用哪个key对应的Ability实例,来响应startAbility请求,如下图Ability3。
+ **Specified**:允许开发者在系统创建Ability实例之前,为该实例创建一个key,后续每次创建该类型的Ability实例都会询问应用使用哪个key对应的Ability实例,来响应startAbility请求,如下图Ability3。
​ 每个Ability实例都对应了一个Launcher Recent中看到的Mission(任务)。
......
......@@ -68,6 +68,7 @@ app.json示例:
| keepAlive | 标识应用是否始终保持运行状态,仅支持系统应用配置,三方应用配置不生效。标签值为布尔类型,如果为true,应用将始终保持为运行状态,并且在系统启动的时候会被系统启动起来,应用进程退出后,系统也会重新启动该应用进程。 | 布尔值 | 可缺省,缺省值为false。 |
| userDataClearable | 标识是否允许应用清除用户数据,仅支持系统应用配置,三方应用配置不生效,该字段从API8开始支持。 | 布尔值 | 可缺省,缺省值为true。 |
| accessible | 标识应用的安装目录是否是可访问的,仅支持系统应用配置,三方应用配置不生效。配置为true表示安装目录可以被三方应用访问,false表示不能被三方应用访问。 | 布尔值 | 可缺省,缺省值为false。 |
| multiProjects | 标识当前工程是否支持多工程。 | 布尔值 | 可缺省,缺省值为false。 |
| 设备类型 | 该标签可以配置多个,表示具体设备上的特殊配置信息,具体的设备类型有:"tablet"、"tv"、"wearable"、"car",可能包含的字段有:minAPIVersion、distributedNotificationEnabled、keepAlive、removable。 | 对象 | 该标签可缺省,缺省值使用app下面相关的字段。 |
### module对象内部结构
......
......@@ -36,9 +36,9 @@ var AtManager = abilityAccessCtrl.createAtManager();
管理访问控制模块的实例。
### verifyAccessToken
### checkAccessToken<sup>9+</sup>
verifyAccessToken(tokenID: number, permissionName: string): Promise&lt;GrantStatus&gt;
checkAccessToken(tokenID: number, permissionName: string): Promise&lt;GrantStatus&gt;
校验应用是否授予权限,使用Promise方式异步返回结果。
......@@ -55,17 +55,24 @@ verifyAccessToken(tokenID: number, permissionName: string): Promise&lt;GrantStat
| 类型 | 说明 |
| :------------ | :---------------------------------- |
| Promise&lt;GrantStatus&gt; | Promise实例,用于获取异步返回的授权状态结果。 |
| Promise&lt;GrantStatus&gt; | Promise对象。返回授权状态结果。 |
**示例:**
```js
var AtManager = abilityAccessCtrl.createAtManager();
let tokenID = 0;
let promise = AtManager.verifyAccessToken(tokenID, "ohos.permission.GRANT_SENSITIVE_PERMISSIONS");
promise.then(data => {
console.log(`promise: data->${JSON.stringify(data)}`);
});
import privacyManager from '@ohos.abilityAccessCtrl';
let AtManager = abilityAccessCtrl.createAtManager();
let tokenID = 0; // 可以通过getApplicationInfo获取accessTokenId
try {
AtManager.checkAccessToken(tokenID, "ohos.permission.GRANT_SENSITIVE_PERMISSIONS").then((data) => {
console.log(`checkAccessToken success, data->${JSON.stringify(data)}`);
}).catch((err) => {
console.log(`checkAccessToken fail, err->${JSON.stringify(err)}`);
});
} catch(err) {
console.log(`catch err->${JSON.stringify(err)}`);
}
```
### verifyAccessTokenSync<sup>9+</sup>
......@@ -100,7 +107,7 @@ console.log(`data->${JSON.stringify(data)}`);
### grantUserGrantedPermission
grantUserGrantedPermission(tokenID: number, permissionName: string, permissionFlag: number): Promise&lt;number&gt;
grantUserGrantedPermission(tokenID: number, permissionName: string, permissionFlag: number): Promise&lt;void&gt;
授予应用user grant权限,使用Promise方式异步返回结果。
......@@ -114,7 +121,7 @@ grantUserGrantedPermission(tokenID: number, permissionName: string, permissionFl
| 参数名 | 类型 | 必填 | 说明 |
| --------- | ------------------- | ---- | ------------------------------------------------------------ |
| tokenID | number | 是 | 目标应用的身份标识。 |
| tokenID | number | 是 | 目标应用的身份标识。可通过应用的[ApplicationInfo](js-apis-bundle-ApplicationInfo.md)获得 |
| permissionName | string | 是 | 被授予的权限名称。 |
| permissionFlag | number | 是 | 授权选项,1表示下次仍需弹窗,2表示允许、禁止后不再提醒,3表示系统授权不允许更改。 |
......@@ -122,23 +129,30 @@ grantUserGrantedPermission(tokenID: number, permissionName: string, permissionFl
| 类型 | 说明 |
| :------------ | :---------------------------------- |
| Promise&lt;number&gt; | Promise实例,用于获取异步返回的授权操作结果。 |
| Promise&lt;void&gt; | Promise对象。无返回结果的Promise对象。 |
**示例:**
```js
var AtManager = abilityAccessCtrl.createAtManager();
let tokenID = 0;
import privacyManager from '@ohos.abilityAccessCtrl';
let AtManager = abilityAccessCtrl.createAtManager();
let tokenID = 0; // 可以通过getApplicationInfo获取accessTokenId
let permissionFlag = 1;
let promise = AtManager.grantUserGrantedPermission(tokenID, "ohos.permission.GRANT_SENSITIVE_PERMISSIONS", permissionFlag);
promise.then(data => {
console.log(`promise: data->${JSON.stringify(data)}`);
});
try {
AtManager.grantUserGrantedPermission(tokenID, "ohos.permission.GRANT_SENSITIVE_PERMISSIONS", permissionFlag).then(() => {
console.log('grantUserGrantedPermission success');
}).catch((err) => {
console.log(`grantUserGrantedPermission fail, err->${JSON.stringify(err)}`);
});
} catch(err) {
console.log(`catch err->${JSON.stringify(err)}`);
}
```
### grantUserGrantedPermission
grantUserGrantedPermission(tokenID: number, permissionName: string, permissionFlag: number, callback: AsyncCallback&lt;number&gt;): void
grantUserGrantedPermission(tokenID: number, permissionName: string, permissionFlag: number, callback: AsyncCallback&lt;void&gt;): void
授予应用user grant权限,使用callback回调异步返回结果。
......@@ -152,29 +166,35 @@ grantUserGrantedPermission(tokenID: number, permissionName: string, permissionFl
| 参数名 | 类型 | 必填 | 说明 |
| --------- | ------------------- | ---- | ------------------------------------------------------------ |
| tokenID | number | 是 | 目标应用的身份标识。 |
| tokenID | number | 是 | 目标应用的身份标识。可通过应用的[ApplicationInfo](js-apis-bundle-ApplicationInfo.md)获得 |
| permissionName | string | 是 | 被授予的权限名称。 |
| permissionFlag | number | 是 | 授权选项,1表示下次仍需弹窗,2表示允许、禁止后不再提醒,3表示系统授权不允许更改。 |
| callback | AsyncCallback&lt;number&gt; | 是 | 检查授予应用user grant权限的操作结果同步的回调。 |
| callback | AsyncCallback&lt;void&gt; | 是 | 检查授予应用user grant权限的操作结果同步的回调。 |
**示例:**
```js
import privacyManager from '@ohos.abilityAccessCtrl';
var AtManager = abilityAccessCtrl.createAtManager();
let tokenID = 0;
let tokenID = 0; // 可以通过getApplicationInfo获取accessTokenId
let permissionFlag = 1;
AtManager.grantUserGrantedPermission(tokenID, "ohos.permission.GRANT_SENSITIVE_PERMISSIONS", permissionFlag, (err, data) => {
try {
AtManager.grantUserGrantedPermission(tokenID, "ohos.permission.GRANT_SENSITIVE_PERMISSIONS", permissionFlag, (data, err) => {
if (err) {
console.log(`callback: err->${JSON.stringify(err)}`);
console.log(`grantUserGrantedPermission fail, err->${JSON.stringify(err)}`);
} else {
console.log(`callback: data->${JSON.stringify(data)}`);
console.log('grantUserGrantedPermission success');
}
});
});
} catch(err) {
console.log(`catch err->${JSON.stringify(err)}`);
}
```
### revokeUserGrantedPermission
revokeUserGrantedPermission(tokenID: number, permissionName: string, permissionFlag: number): Promise&lt;number&gt;
revokeUserGrantedPermission(tokenID: number, permissionName: string, permissionFlag: number): Promise&lt;void&gt;
撤销应用user grant权限,使用Promise方式异步返回结果。
......@@ -188,7 +208,7 @@ revokeUserGrantedPermission(tokenID: number, permissionName: string, permissionF
| 参数名 | 类型 | 必填 | 说明 |
| --------- | ------------------- | ---- | ------------------------------------------------------------ |
| tokenID | number | 是 | 目标应用的身份标识。 |
| tokenID | number | 是 | 目标应用的身份标识。可通过应用的[ApplicationInfo](js-apis-bundle-ApplicationInfo.md)获得 |
| permissionName | string | 是 | 被撤销的权限名称。 |
| permissionFlag | number | 是 | 授权选项,1表示下次仍需弹窗,2表示允许、禁止后不再提醒,3表示系统授权不允许更改。 |
......@@ -196,23 +216,30 @@ revokeUserGrantedPermission(tokenID: number, permissionName: string, permissionF
| 类型 | 说明 |
| :------------ | :---------------------------------- |
| Promise&lt;number&gt; | Promise实例,用于获取异步返回的授权操作结果。 |
| Promise&lt;void&gt; | Promise对象。无返回结果的Promise对象。 |
**示例:**
```js
var AtManager = abilityAccessCtrl.createAtManager();
let tokenID = 0;
import privacyManager from '@ohos.abilityAccessCtrl';
let AtManager = abilityAccessCtrl.createAtManager();
let tokenID = 0; // 可以通过getApplicationInfo获取accessTokenId
let permissionFlag = 1;
let promise = AtManager.revokeUserGrantedPermission(tokenID, "ohos.permission.GRANT_SENSITIVE_PERMISSIONS", permissionFlag);
promise.then(data => {
console.log(`promise: data->${JSON.stringify(data)}`);
});
try {
AtManager.revokeUserGrantedPermission(tokenID, "ohos.permission.GRANT_SENSITIVE_PERMISSIONS", permissionFlag).then(() => {
console.log('revokeUserGrantedPermission success');
}).catch((err) => {
console.log(`revokeUserGrantedPermission fail, err->${JSON.stringify(err)}`);
});
} catch(err) {
console.log(`catch err->${JSON.stringify(err)}`);
}
```
### revokeUserGrantedPermission
revokeUserGrantedPermission(tokenID: number, permissionName: string, permissionFlag: number, callback: AsyncCallback&lt;number&gt;): void
revokeUserGrantedPermission(tokenID: number, permissionName: string, permissionFlag: number, callback: AsyncCallback&lt;void&gt;): void
撤销应用user grant权限,使用callback回调异步返回结果。
......@@ -226,24 +253,30 @@ revokeUserGrantedPermission(tokenID: number, permissionName: string, permissionF
| 参数名 | 类型 | 必填 | 说明 |
| --------- | ------------------- | ---- | ------------------------------------------------------------ |
| tokenID | number | 是 | 目标应用的身份标识。 |
| tokenID | number | 是 | 目标应用的身份标识。可通过应用的[ApplicationInfo](js-apis-bundle-ApplicationInfo.md)获得 |
| permissionName | string | 是 | 被撤销的权限名称。 |
| permissionFlag | number | 是 | 授权选项,1表示下次仍需弹窗,2表示允许、禁止后不再提醒,3表示系统授权不允许更改。 |
| callback | AsyncCallback&lt;number&gt; | 是 | 检查撤销应用user grant权限的操作结果同步的回调。 |
| callback | AsyncCallback&lt;void&gt; | 是 | 检查撤销应用user grant权限的操作结果同步的回调。 |
**示例:**
```js
import privacyManager from '@ohos.abilityAccessCtrl';
var AtManager = abilityAccessCtrl.createAtManager();
let tokenID = 0;
let tokenID = 0; // 可以通过getApplicationInfo获取accessTokenId
let permissionFlag = 1;
AtManager.revokeUserGrantedPermission(tokenID, "ohos.permission.GRANT_SENSITIVE_PERMISSIONS", permissionFlag, (err, data) => {
try {
AtManager.revokeUserGrantedPermission(tokenID, "ohos.permission.GRANT_SENSITIVE_PERMISSIONS", permissionFlag, (data, err) => {
if (err) {
console.log(`callback: err->${JSON.stringify(err)}`);
console.log(`revokeUserGrantedPermission fail, err->${JSON.stringify(err)}`);
} else {
console.log(`callback: data->${JSON.stringify(data)}`);
console.log('revokeUserGrantedPermission success');
}
});
});
} catch(err) {
console.log(`catch err->${JSON.stringify(err)}`);
}
```
### getPermissionFlags
......@@ -262,24 +295,32 @@ getPermissionFlags(tokenID: number, permissionName: string): Promise&lt;number&g
| 参数名 | 类型 | 必填 | 说明 |
| --------- | ------------------- | ---- | ------------------------------------------------------------ |
| tokenID | number | 是 | 目标应用的身份标识。 |
| tokenID | number | 是 | 目标应用的身份标识。可通过应用的[ApplicationInfo](js-apis-bundle-ApplicationInfo.md)获得 |
| permissionName | string | 是 | 查询的权限名称。 |
**返回值:**
| 类型 | 说明 |
| :------------ | :---------------------------------- |
| Promise&lt;number&gt; | Promise实例,用于获取异步返回的查询结果。 |
| Promise&lt;number&gt; | Promise对象。返回查询结果。 |
**示例:**
```js
var AtManager = abilityAccessCtrl.createAtManager();
let tokenID = 0;
let promise = AtManager.getPermissionFlags(tokenID, "ohos.permission.GRANT_SENSITIVE_PERMISSIONS");
promise.then(data => {
console.log(`promise: data->${JSON.stringify(data)}`);
});
import privacyManager from '@ohos.abilityAccessCtrl';
let AtManager = abilityAccessCtrl.createAtManager();
let tokenID = 0; // 可以通过getApplicationInfo获取accessTokenId
let permissionFlag = 1;
try {
AtManager.getPermissionFlags(tokenID, "ohos.permission.GRANT_SENSITIVE_PERMISSIONS").then((data) => {
console.log(`getPermissionFlags success, data->${JSON.stringify(data)}`);
}).catch((err) = > {
console.log(`getPermissionFlags fail, err->${JSON.stringify(err)}`);
});
} catch(err) {
console.log(`catch err->${JSON.stringify(err)}`);
}
```
### getVersion<sup>9+</sup>
......@@ -296,7 +337,7 @@ getVersion(): Promise&lt;number&gt;
| 类型 | 说明 |
| :------------ | :---------------------------------- |
| Promise&lt;number&gt; | Promise实例,用于获取异步返回的版本号。 |
| Promise&lt;number&gt; | Promise对象。返回查询到的版本号。 |
**示例:**
......@@ -334,18 +375,15 @@ on(type: 'permissionStateChange', tokenIDList: Array&lt;number&gt;, permissionNa
```js
import abilityAccessCtrl from '@ohos.abilityAccessCtrl';
function OnPermissionStateChanged(data){
console.debug("receive permission state change, data:" + JSON.stringify(data));
}
let atManager = abilityAccessCtrl.createAtManager();
let type: 'permissionStateChange' = 'permissionStateChange';
let tokenIDList: Array<number> = [];
let permissionNameList: Array<string> = [];
try{
atManager.on(type, tokenIDList, permissionNameList, OnPermissionStateChanged);
}
catch(err){
console.error("on err:" + JSON.stringify(err));
try {
atManager.on('permissionStateChange', tokenIDList, permissionNameList, (data) => {
console.debug("receive permission state change, data:" + JSON.stringify(data));
});
} catch(err) {
console.log(`catch err->${JSON.stringify(err)}`);
}
```
......@@ -376,17 +414,51 @@ off(type: 'permissionStateChange', tokenIDList: Array&lt;number&gt;, permissionN
import abilityAccessCtrl from '@ohos.abilityAccessCtrl';
let atManager = abilityAccessCtrl.createAtManager();
let type: 'permissionStateChange' = 'permissionStateChange';
let tokenIDList: Array<number> = [];
let permissionNameList: Array<string> = [];
try{
atManager.off(type, tokenIDList, permissionNameList);
}
catch(err){
console.error("off err:" + JSON.stringify(err));
try {
atManager.off('permissionStateChange', tokenIDList, permissionNameList);
} catch(err) {
console.log(`catch err->${JSON.stringify(err)}`);
}
```
### verifyAccessToken<sup>(deprecated)</sup>
verifyAccessToken(tokenID: number, permissionName: string): Promise&lt;GrantStatus&gt;
校验应用是否授予权限,使用Promise方式异步返回结果。
> **说明:** 从API version 9开始不再维护,建议使用[checkAccessToken](#checkaccesstoken9)替代。
**系统能力:** SystemCapability.Security.AccessToken
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------- | ---- | ------------------------------------------ |
| tokenID | number | 是 | 要校验的目标应用的身份标识。可通过应用的[ApplicationInfo](js-apis-bundle-ApplicationInfo.md)获得 |
| permissionName | string | 是 | 需要校验的权限名称。 |
**返回值:**
| 类型 | 说明 |
| :------------ | :---------------------------------- |
| Promise&lt;GrantStatus&gt; | Promise对象。返回授权状态结果。 |
**示例:**
```js
import privacyManager from '@ohos.abilityAccessCtrl';
var AtManager = abilityAccessCtrl.createAtManager();
let tokenID = 0; // 可以通过getApplicationInfo获取accessTokenId
let promise = AtManager.verifyAccessToken(tokenID, "ohos.permission.GRANT_SENSITIVE_PERMISSIONS");
promise.then(data => {
console.log(`promise: data->${JSON.stringify(data)}`);
});
```
### GrantStatus
表示授权状态的枚举。
......
......@@ -16,7 +16,7 @@ import ElementName from '@ohos.bundle';
import image from '@ohos.multimedia.image';
import missionManager from '@ohos.application.missionManager';
missionManager.getMissionInfos("", 10, (error, missions) => {
missionManager.getMissionInfos("", 10, (error, missions) => {
console.log("getMissionInfos is called, error.code = " + error.code);
console.log("size = " + missions.length);
console.log("missions = " + JSON.stringify(missions));
......@@ -26,7 +26,7 @@ import missionManager from '@ohos.application.missionManager';
console.log("getMissionSnapShot is called, error.code = " + error.code);
console.log("bundleName = " + snapshot.ability.bundleName);
})
})
})
```
## MissionSnapshot
......
......@@ -52,7 +52,7 @@ onAcceptWant(want: Want): string;
| 类型 | 说明 |
| -------- | -------- |
| string | 用户返回一个ability标识,如果之前启动过标识的ability,不创建新的实例并拉回栈顶,否则创建新的实例并启动。 |
| string | 用户返回一个ability标识,如果之前启动过标识的ability,不创建新的实例并拉回栈顶,否则创建新的实例并启动。 |
**示例:**
......
......@@ -7,6 +7,7 @@
- [AudioManager](#audiomanager):音频管理。
- [AudioRenderer](#audiorenderer8):音频渲染,用于播放PCM(Pulse Code Modulation)音频数据。
- [AudioCapturer](#audiocapturer8):音频采集,用于录制PCM音频数据。
- [TonePlayer](#toneplayer9):用于管理和播放DTMF(Dual Tone Multi Frequency,双音多频)音调,如拨号音、通话回铃音等。
> **说明:**
> 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
......@@ -254,6 +255,78 @@ audio.createAudioCapturer(audioCapturerOptions).then((data) => {
});
```
## audio.createTonePlayer<sup>9+</sup>
createTonePlayer(options: AudioRendererInfo, callback: AsyncCallback&lt;TonePlayer&gt;): void
创建DTMF播放器。使用callback方式异步返回结果。
**系统能力:** SystemCapability.Multimedia.Audio.Tone
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ----------------------------------------------- | ---- | -------------- |
| options | [AudioRendererInfo](#audiorendererinfo8) | 是 | 配置音频渲染器信息。|
| callback | AsyncCallback<[TonePlayer](#toneplayer9)> | 是 | 回调函数,回调返回音频渲染器对象。|
**示例:**
```js
import audio from '@ohos.multimedia.audio';
var audioRendererInfo = {
"contentType": audio.ContentType.CONTENT_TYPE_MUSIC,
"streamUsage": audio.StreamUsage.STREAM_USAGE_MEDIA,
"rendererFlags": 0
}
var tonePlayer;
audio.createTonePlayer(audioRendererInfo, (err, data) => {
console.info(`callback call createTonePlayer: audioRendererInfo: ${audioRendererInfo}`);
if (err) {
console.error(`callback call createTonePlayer return error: ${err.message}`);
} else {
console.info(`callback call createTonePlayer return data: ${data}`);
tonePlayer = data;
}
});
```
## audio.createTonePlayer<sup>9+</sup>
createTonePlayer(options: AudioRendererInfo): Promise&lt;TonePlayer&gt;
创建DTMF播放器。使用Promise方式异步返回结果。
**系统能力:** SystemCapability.Multimedia.Audio.Tone
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| :------ | :---------------------------------------------| :--- | :----------- |
| options | [AudioRendererInfo](#audiorendererinfo8) | 是 | 配置音频渲染器信息。 |
**返回值:**
| 类型 | 说明 |
| ----------------------------------------- | -------------------------------- |
| Promise<[TonePlayer](#toneplayer9)> | Promise对象,返回音频渲染器对象。 |
**示例:**
```js
import audio from '@ohos.multimedia.audio';
async function createTonePlayer(){
var audioRendererInfo = {
"contentType": audio.ContentType.CONTENT_TYPE_MUSIC,
"streamUsage": audio.StreamUsage.STREAM_USAGE_MEDIA,
"rendererFlags": 0
}
let tonePlayer = await audio.createTonePlayer(this.audioRendererInfo);
}
```
## AudioVolumeType
枚举,音频流类型。
......@@ -429,10 +502,11 @@ audio.createAudioCapturer(audioCapturerOptions).then((data) => {
**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Core
| 名称 | 默认值 | 描述 |
| ---------------------------------- | ------ | ---------- |
| ------------------------------------------| ------ | ---------- |
| STREAM_USAGE_UNKNOWN | 0 | 未知类型。 |
| STREAM_USAGE_MEDIA | 1 | 音频。 |
| STREAM_USAGE_VOICE_COMMUNICATION | 2 | 语音通信。 |
| STREAM_USAGE_VOICE_ASSISTANT<sup>9+</sup> | 3 | 语音播报。 |
| STREAM_USAGE_NOTIFICATION_RINGTONE | 6 | 通知铃声。 |
## FocusType<sup>9+</sup>
......@@ -713,9 +787,10 @@ getVolumeGroupInfos();
**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Core
| 名称 | 默认值 | 描述 |
| :------------------------------ | :----- | :--------------------- |
| :------------------------------------------- | :----- | :--------------------- |
| SOURCE_TYPE_INVALID | -1 | 无效的音频源。 |
| SOURCE_TYPE_MIC | 0 | Mic音频源。 |
| SOURCE_TYPE_VOICE_RECOGNITION<sup>9+</sup> | 1 | 语音识别源。 |
| SOURCE_TYPE_VOICE_COMMUNICATION | 7 | 语音通话场景的音频源。 |
## AudioScene<sup>8+</sup><a name="audioscene"></a>
......@@ -731,7 +806,6 @@ getVolumeGroupInfos();
| AUDIO_SCENE_PHONE_CALL | 2 | 电话模式。<br/>此接口为系统接口,三方应用不支持调用。 |
| AUDIO_SCENE_VOICE_CHAT | 3 | 语音聊天模式。 |
## AudioManager
管理音频音量和音频设备。在调用AudioManager的接口前,需要先通过[getAudioManager](#audiogetaudiomanager)创建实例。
......@@ -3149,6 +3223,91 @@ audioManager.getRoutingManager((err,AudioRoutingManager)=>{
});
```
### selectInputDevice<sup>9+</sup>
selectInputDevice(inputAudioDevices: AudioDeviceDescriptors, callback: AsyncCallback&lt;void&gt;): void
选择音频输入设备,当前只能选择一个输入设备,使用callback方式异步返回结果。
**系统接口:** 该接口为系统接口
**系统能力:** SystemCapability.Multimedia.Audio.Device
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| --------------------------- | ------------------------------------------------------------ | ---- | ------------------------- |
| inputAudioDevices | [AudioDeviceDescriptors](#audiodevicedescriptors) | 是 | 输入设备类。 |
| callback | AsyncCallback&lt;void&gt; | 是 | 回调,返回选择输入设备结果。 |
**示例:**
```js
var audioManager = audio.getAudioManager();
let inputAudioDeviceDescriptor = [{
"deviceRole":audio.DeviceRole.INPUT_DEVICE,
"networkId":audio.LOCAL_NETWORK_ID,
"interruptGroupId":1,
"volumeGroupId":1 }];
var audioRoutingManager;
async function getRoutingManager(){
await audioManager.getRoutingManager().then((value) => {
audioRoutingManager = value;
audioRoutingManager.selectInputDevice(inputAudioDeviceDescriptor, (err) => {
if (err) {
console.error(`Result ERROR: ${err}`);
} else {
console.info('Select input devices result callback: SUCCESS'); }
});
});
}
```
### selectInputDevice<sup>9+</sup>
selectInputDevice(inputAudioDevices: AudioDeviceDescriptors): Promise&lt;void&gt;
**系统接口:** 该接口为系统接口
选择音频输入设备,当前只能选择一个输入设备,使用Promise方式异步返回结果。
**系统能力:** SystemCapability.Multimedia.Audio.Device
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| --------------------------- | ------------------------------------------------------------ | ---- | ------------------------- |
| inputAudioDevices | [AudioDeviceDescriptors](#audiodevicedescriptors) | 是 | 输入设备类。 |
**返回值:**
| 类型 | 说明 |
| --------------------- | --------------------------- |
| Promise&lt;void&gt; | Promise返回选择输入设备结果。 |
**示例:**
```js
var audioManager = audio.getAudioManager();
let inputAudioDeviceDescriptor =[{
"deviceRole":audio.DeviceRole.INPUT_DEVICE,
"networkId":audio.LOCAL_NETWORK_ID,
"interruptGroupId":1,
"volumeGroupId":1 }];
var audioRoutingManager;
async function getRoutingManager(){
await audioManager.getRoutingManager().then((value) => {
audioRoutingManager = value;
audioRoutingManager.selectInputDevice(inputAudioDeviceDescriptor).then(() => {
console.info('Select input devices result promise: SUCCESS');
}).catch((err) => {
console.error(`Result ERROR: ${err}`);
});
});
}
```
### selectOutputDevice<sup>9+</sup>
selectOutputDevice(outputAudioDevices: AudioDeviceDescriptors, callback: AsyncCallback&lt;void&gt;): void
......@@ -5040,3 +5199,254 @@ audioCapturer.on('stateChange', (state) => {
}
});
```
## ToneType <sup>9+</sup>
枚举,播放器的音调类型。
**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Tone
| 名称 | 默认值 | 描述 |
| :------------------------------------------------ | :----- | :----------------------------|
| TONE_TYPE_DIAL_0 | 0 | 键0的DTMF音。 |
| TONE_TYPE_DIAL_1 | 1 | 键1的DTMF音。 |
| TONE_TYPE_DIAL_2 | 2 | 键2的DTMF音。 |
| TONE_TYPE_DIAL_3 | 3 | 键3的DTMF音。 |
| TONE_TYPE_DIAL_4 | 4 | 键4的DTMF音。 |
| TONE_TYPE_DIAL_5 | 5 | 键5的DTMF音。 |
| TONE_TYPE_DIAL_6 | 6 | 键6的DTMF音。 |
| TONE_TYPE_DIAL_7 | 7 | 键7的DTMF音。 |
| TONE_TYPE_DIAL_8 | 8 | 键8的DTMF音。 |
| TONE_TYPE_DIAL_9 | 9 | 键9的DTMF音。 |
| TONE_TYPE_DIAL_S | 10 | 键*的DTMF音。 |
| TONE_TYPE_DIAL_P | 11 | 键#的DTMF音。 |
| TONE_TYPE_DIAL_A | 12 | 键A的DTMF音。 |
| TONE_TYPE_DIAL_B | 13 | 键B的DTMF音。 |
| TONE_TYPE_DIAL_C | 14 | 键C的DTMF音。 |
| TONE_TYPE_DIAL_D | 15 | 键D的DTMF音。 |
| TONE_TYPE_COMMON_SUPERVISORY_DIAL | 100 | 呼叫监管音调,拨号音。 |
| TONE_TYPE_COMMON_SUPERVISORY_BUSY | 101 | 呼叫监管音调,忙。 |
| TONE_TYPE_COMMON_SUPERVISORY_CONGESTION | 102 | 呼叫监管音调,拥塞。 |
| TONE_TYPE_COMMON_SUPERVISORY_RADIO_ACK | 103 | 呼叫监管音调,无线电 ACK。 |
| TONE_TYPE_COMMON_SUPERVISORY_RADIO_NOT_AVAILABLE | 104 | 呼叫监管音调,无线电不可用。 |
| TONE_TYPE_COMMON_SUPERVISORY_CALL_WAITING | 106 | 呼叫监管音调,呼叫等待。 |
| TONE_TYPE_COMMON_SUPERVISORY_RINGTONE | 107 | 呼叫监管音调,铃声。 |
| TONE_TYPE_COMMON_PROPRIETARY_BEEP | 200 | 专有声调,一般蜂鸣声。 |
| TONE_TYPE_COMMON_PROPRIETARY_ACK | 201 | 专有声调,ACK。 |
| TONE_TYPE_COMMON_PROPRIETARY_PROMPT | 203 | 专有声调,PROMPT。 |
| TONE_TYPE_COMMON_PROPRIETARY_DOUBLE_BEEP | 204 | 专有声调,双重蜂鸣声。 |
## TonePlayer<sup>9+</sup>
提供播放和管理DTMF(Dual Tone Multi Frequency,双音多频)音调的方法,包括各种系统监听音调、专有音调,如拨号音、通话回铃音等。
### load<sup>9+</sup>
load(type: ToneType, callback: AsyncCallback&lt;void&gt;): void
加载DTMF音调配置。使用callback方式异步返回结果。
**系统能力:** SystemCapability.Multimedia.Audio.Tone
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| :--------------| :-------------------------- | :-----| :------------------------------ |
| type | ToneType(#tonetype9) | 是 | 配置的音调类型。 |
| callback | AsyncCallback<void\> | 是 | 使用callback方式异步返回缓冲区。 |
**示例:**
```js
tonePlayer.load(audio.ToneType.TONE_TYPE_DIAL_5, (err) => {
if (err) {
console.error(`callback call load failed error: ${err.message}`);
return;
} else {
console.info('callback call load success');
}
});
```
### load<sup>9+</sup>
load(type: ToneType): Promise&lt;void&gt;
加载DTMF音调配置。使用Promise方式异步返回结果。
**系统能力:** SystemCapability.Multimedia.Audio.Tone
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| :------------- | :--------------------- | :--- | ---------------- |
| type | ToneType(#tonetype9) | 是 | 配置的音调类型。 |
**返回值:**
| 类型 | 说明 |
| :--------------| :-------------------------- |
| Promise<void\> | 使用Promise方式异步返回结果。 |
**示例:**
```js
tonePlayer.load(audio.ToneType.TONE_TYPE_DIAL_1).then(() => {
console.info('promise call load ');
}).catch(() => {
console.error('promise call load fail');
});
```
### start<sup>9+</sup>
start(callback: AsyncCallback&lt;void&gt;): void
启动DTMF音调播放。使用callback方式异步返回结果。
**系统能力:** SystemCapability.Multimedia.Audio.Tone
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| :------- | :------------------- | :--- | :----------------------------- |
| callback | AsyncCallback<void\> | 是 | 使用callback方式异步返回结果。 |
**示例:**
```js
tonePlayer.start((err) => {
if (err) {
console.error(`callback call start failed error: ${err.message}`);
return;
} else {
console.info('callback call start success');
}
});
```
### start<sup>9+</sup>
start(): Promise&lt;void&gt;
启动DTMF音调播放。使用Promise方式异步返回结果。
**系统能力:** SystemCapability.Multimedia.Audio.Tone
**返回值:**
| 类型 | 说明 |
| :------------- | :---------------------------- |
| Promise<void\> | 使用Promise方式异步返回结果。 |
**示例:**
```js
tonePlayer.start().then(() => {
console.info('promise call start');
}).catch(() => {
console.error('promise call start fail');
});
```
### stop<sup>9+</sup>
stop(callback: AsyncCallback&lt;void&gt;): void
停止当前正在播放的音调。使用callback方式异步返回结果。
**系统能力:** SystemCapability.Multimedia.Audio.Tone
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| :------- | :------------------- | :--- | :----------------------------- |
| callback | AsyncCallback<void\> | 是 | 使用callback方式异步返回结果。 |
**示例:**
```js
tonePlayer.stop((err) => {
if (err) {
console.error(`callback call stop error: ${err.message}`);
return;
} else {
console.error('callback call stop success ');
}
});
```
### stop<sup>9+</sup>
stop(): Promise&lt;void&gt;
停止当前正在播放的音调。使用Promise方式异步返回结果。
**系统能力:** SystemCapability.Multimedia.Audio.Tone
**返回值:**
| 类型 | 说明 |
| :------------- | :---------------------------- |
| Promise<void\> | 使用Promise方式异步返回结果。 |
**示例:**
```js
tonePlayer.stop().then(() => {
console.info('promise call stop finish');
}).catch(() => {
console.error('promise call stop fail');
});
```
### release<sup>9+</sup>
release(callback: AsyncCallback&lt;void&gt;): void
释放与此TonePlay对象关联的资源。使用callback方式异步返回结果。
**系统能力:** SystemCapability.Multimedia.Audio.Tone
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| :------- | :------------------- | :--- | :---------------------------- |
| callback | AsyncCallback<void\> | 是 | 使用callback方式异步返回结果。 |
**示例:**
```js
tonePlayer.release((err) => {
if (err) {
console.error(`callback call release failed error: ${err.message}`);
return;
} else {
console.info('callback call release success ');
}
});
```
### release<sup>9+</sup>
release(): Promise&lt;void&gt;
释放与此TonePlay对象关联的资源。使用Promise方式异步返回结果。
**系统能力:** SystemCapability.Multimedia.Audio.Tone
**返回值:**
| 类型 | 说明 |
| :------------- | :---------------------------- |
| Promise<void\> | 使用Promise方式异步返回结果。 |
**示例:**
```js
tonePlayer.release().then(() => {
console.info('promise call release');
}).catch(() => {
console.error('promise call release fail');
});
```
......@@ -10,16 +10,18 @@ continuationManager模块提供了流转/协同入口管理服务能力,包括
## 导入模块
```js
```ts
import continuationManager from '@ohos.continuation.continuationManager'
```
## continuationManager.register
## continuationManager.register<sup>(deprecated)</sup>
register(callback: AsyncCallback\<number>): void;
注册流转管理服务,并获取对应的注册token,无过滤条件,使用AsyncCallback方式作为异步方法。
> 从API Version 9开始不再维护,建议使用[registerContinuation](#continuationmanagerregistercontinuation9)替代。
**系统能力**:SystemCapability.Ability.DistributedAbilityManager
**参数:**
......@@ -30,7 +32,7 @@ register(callback: AsyncCallback\<number>): void;
**示例:**
```js
```ts
let token = -1;
continuationManager.register((err, data) => {
if (err.code != 0) {
......@@ -42,12 +44,14 @@ register(callback: AsyncCallback\<number>): void;
});
```
## continuationManager.register
## continuationManager.register<sup>(deprecated)</sup>
register(options: ContinuationExtraParams, callback: AsyncCallback\<number>): void;
连接流转管理服务,并获取对应的注册token,使用AsyncCallback方式作为异步方法。
> 从API Version 9开始不再维护,建议使用[registerContinuation](#continuationmanagerregistercontinuation9)替代。
**系统能力**:SystemCapability.Ability.DistributedAbilityManager
**参数:**
......@@ -59,7 +63,7 @@ register(options: ContinuationExtraParams, callback: AsyncCallback\<number>): vo
**示例:**
```js
```ts
let token = -1;
let continuationExtraParams = {
deviceType: ["00E"]
......@@ -74,12 +78,14 @@ register(options: ContinuationExtraParams, callback: AsyncCallback\<number>): vo
});
```
## continuationManager.register
## continuationManager.register<sup>(deprecated)</sup>
register(options?: ContinuationExtraParams): Promise\<number>;
连接流转管理服务,并获取对应的注册token,使用Promise方式作为异步方法。
> 从API Version 9开始不再维护,建议使用[registerContinuation](#continuationmanagerregistercontinuation9)替代。
**系统能力**:SystemCapability.Ability.DistributedAbilityManager
**参数:**
......@@ -96,7 +102,7 @@ register(options?: ContinuationExtraParams): Promise\<number>;
**示例:**
```js
```ts
let token = -1;
let continuationExtraParams = {
deviceType: ["00E"]
......@@ -111,6 +117,116 @@ register(options?: ContinuationExtraParams): Promise\<number>;
});
```
## continuationManager.registerContinuation<sup>9+</sup>
registerContinuation(callback: AsyncCallback\<number>): void;
注册流转管理服务,并获取对应的注册token,无过滤条件,使用AsyncCallback方式作为异步方法。
**系统能力**:SystemCapability.Ability.DistributedAbilityManager
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| callback | AsyncCallback\<number> | 是 | AsyncCallback形式返回流转管理服务连接后生成的token。 |
**示例:**
```ts
let token = -1;
try {
continuationManager.registerContinuation((err, data) => {
if (err.code != 0) {
console.error('registerContinuation failed, cause: ' + JSON.stringify(err));
return;
}
console.info('registerContinuation finished, ' + JSON.stringify(data));
token = data;
});
} catch (err) {
console.error('registerContinuation failed, cause: ' + JSON.stringify(err));
}
```
## continuationManager.registerContinuation<sup>9+</sup>
registerContinuation(options: ContinuationExtraParams, callback: AsyncCallback\<number>): void;
连接流转管理服务,并获取对应的注册token,使用AsyncCallback方式作为异步方法。
**系统能力**:SystemCapability.Ability.DistributedAbilityManager
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| options | [ContinuationExtraParams](js-apis-continuation-continuationExtraParams.md) | 是 | 过滤可选择设备列表的额外参数。 |
| callback | AsyncCallback\<number> | 是 | AsyncCallback形式返回流转管理服务连接后生成的token。 |
**示例:**
```ts
let token = -1;
let continuationExtraParams = {
deviceType: ["00E"]
};
try {
continuationManager.registerContinuation(continuationExtraParams, (err, data) => {
if (err.code != 0) {
console.error('registerContinuation failed, cause: ' + JSON.stringify(err));
return;
}
console.info('registerContinuation finished, ' + JSON.stringify(data));
token = data;
});
} catch (err) {
console.error('registerContinuation failed, cause: ' + JSON.stringify(err));
}
```
## continuationManager.registerContinuation<sup>9+</sup>
registerContinuation(options?: ContinuationExtraParams): Promise\<number>;
连接流转管理服务,并获取对应的注册token,使用Promise方式作为异步方法。
**系统能力**:SystemCapability.Ability.DistributedAbilityManager
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| options | [ContinuationExtraParams](js-apis-continuation-continuationExtraParams.md) | 否 | 过滤可选择设备列表的额外参数,该参数可缺省|
**返回值:**
| 类型 | 说明 |
| ------------------------- | ------------------ |
| Promise\<number> | Promise形式返回流转管理服务连接后生成的token。 |
**示例:**
```ts
let token = -1;
let continuationExtraParams = {
deviceType: ["00E"]
};
try {
continuationManager.register(continuationExtraParams)
.then((data) => {
console.info('registerContinuation finished, ' + JSON.stringify(data));
token = data;
})
.catch((err) => {
console.error('registerContinuation failed, cause: ' + JSON.stringify(err));
});
} catch (err) {
console.error('registerContinuation failed, cause: ' + JSON.stringify(err));
}
```
## continuationManager.on("deviceConnect")<sup>(deprecated)</sup>
on(type: "deviceConnect", callback: Callback\<ContinuationResult>): void;
......@@ -130,7 +246,7 @@ on(type: "deviceConnect", callback: Callback\<ContinuationResult>): void;
**示例:**
```js
```ts
continuationManager.on("deviceConnect", (data) => {
console.info('onDeviceConnect deviceId: ' + JSON.stringify(data.id));
console.info('onDeviceConnect deviceType: ' + JSON.stringify(data.type));
......@@ -157,7 +273,7 @@ on(type: "deviceDisconnect", callback: Callback\<string>): void;
**示例:**
```js
```ts
continuationManager.on("deviceDisconnect", (data) => {
console.info('onDeviceDisconnect deviceId: ' + JSON.stringify(data));
});
......@@ -182,7 +298,7 @@ off(type: "deviceConnect", callback?: Callback\<ContinuationResult>): void;
**示例:**
```js
```ts
continuationManager.off("deviceConnect", (data) => {
console.info('onDeviceConnect deviceId: ' + JSON.stringify(data.id));
console.info('onDeviceConnect deviceType: ' + JSON.stringify(data.type));
......@@ -209,7 +325,7 @@ off(type: "deviceDisconnect", callback?: Callback\<string>): void;
**示例:**
```js
```ts
continuationManager.off("deviceDisconnect", (data) => {
console.info('onDeviceDisconnect deviceId: ' + JSON.stringify(data));
});
......@@ -233,8 +349,9 @@ on(type: "deviceConnect", token: number, callback: Callback\<Array\<Continuation
**示例:**
```js
```ts
let token = 1;
try {
continuationManager.on("deviceConnect", token, (data) => {
console.info('onDeviceConnect len: ' + data.length);
for (let i = 0; i < data.length; i++) {
......@@ -243,6 +360,9 @@ on(type: "deviceConnect", token: number, callback: Callback\<Array\<Continuation
console.info('onDeviceConnect deviceName: ' + JSON.stringify(data[i].name));
}
});
} catch (err) {
console.error('on failed, cause: ' + JSON.stringify(err));
}
```
## continuationManager.on("deviceDisconnect")<sup>9+</sup>
......@@ -263,8 +383,9 @@ on(type: "deviceDisconnect", token: number, callback: Callback\<Array\<string>>)
**示例:**
```js
```ts
let token = 1;
try {
continuationManager.on("deviceDisconnect", token, (data) => {
console.info('onDeviceDisconnect len: ' + data.length);
for (let i = 0; i < data.length; i++) {
......@@ -272,6 +393,9 @@ on(type: "deviceDisconnect", token: number, callback: Callback\<Array\<string>>)
}
console.info('onDeviceDisconnect finished.');
});
} catch (err) {
console.error('on failed, cause: ' + JSON.stringify(err));
}
```
## continuationManager.off("deviceConnect")<sup>9+</sup>
......@@ -291,9 +415,13 @@ off(type: "deviceConnect", token: number): void;
**示例:**
```js
```ts
let token = 1;
try {
continuationManager.off("deviceConnect", token);
} catch (err) {
console.error('off failed, cause: ' + JSON.stringify(err));
}
```
## continuationManager.off("deviceDisconnect")<sup>9+</sup>
......@@ -313,17 +441,23 @@ off(type: "deviceDisconnect", token: number): void;
**示例:**
```js
```ts
let token = 1;
try {
continuationManager.off("deviceDisconnect", token);
} catch (err) {
console.error('off failed, cause: ' + JSON.stringify(err));
}
```
## continuationManager.startDeviceManager
## continuationManager.startDeviceManager<sup>(deprecated)</sup>
startDeviceManager(token: number, callback: AsyncCallback\<void>): void;
拉起设备选择模块,可显示组网内可选择设备列表信息,无过滤条件,使用AsyncCallback方式作为异步方法。
> 从API Version 9开始不再维护,建议使用[startContinuationDeviceManager](#continuationmanagerondeviceconnect9)替代。
**系统能力**:SystemCapability.Ability.DistributedAbilityManager
**参数:**
......@@ -335,7 +469,7 @@ startDeviceManager(token: number, callback: AsyncCallback\<void>): void;
**示例:**
```js
```ts
let token = 1;
continuationManager.startDeviceManager(token, (err, data) => {
if (err.code != 0) {
......@@ -346,12 +480,14 @@ startDeviceManager(token: number, callback: AsyncCallback\<void>): void;
});
```
## continuationManager.startDeviceManager
## continuationManager.startDeviceManager<sup>(deprecated)</sup>
startDeviceManager(token: number, options: ContinuationExtraParams, callback: AsyncCallback\<void>): void;
拉起设备选择模块,可显示组网内可选择设备列表信息,使用AsyncCallback方式作为异步方法。
> 从API Version 9开始不再维护,建议使用[startContinuationDeviceManager](#continuationmanagerstartcontinuationdevicemanager9)替代。
**系统能力**:SystemCapability.Ability.DistributedAbilityManager
**参数:**
......@@ -364,7 +500,7 @@ startDeviceManager(token: number, options: ContinuationExtraParams, callback: As
**示例:**
```js
```ts
let token = 1;
let continuationExtraParams = {
deviceType: ["00E"]
......@@ -378,12 +514,14 @@ startDeviceManager(token: number, options: ContinuationExtraParams, callback: As
});
```
## continuationManager.startDeviceManager
## continuationManager.startDeviceManager<sup>(deprecated)</sup>
startDeviceManager(token: number, options?: ContinuationExtraParams): Promise\<void>;
拉起设备选择模块,可显示组网内可选择设备列表信息,使用Promise方式作为异步方法。
> 从API Version 9开始不再维护,建议使用[startContinuationDeviceManager](#continuationmanagerstartcontinuationdevicemanager9)替代。
**系统能力**:SystemCapability.Ability.DistributedAbilityManager
**参数:**
......@@ -401,7 +539,7 @@ startDeviceManager(token: number, options?: ContinuationExtraParams): Promise\<v
**示例:**
```js
```ts
let token = 1;
let continuationExtraParams = {
deviceType: ["00E"]
......@@ -415,12 +553,123 @@ startDeviceManager(token: number, options?: ContinuationExtraParams): Promise\<v
});
```
## continuationManager.updateConnectStatus
## continuationManager.startContinuationDeviceManager<sup>9+</sup>
startContinuationDeviceManager(token: number, callback: AsyncCallback\<void>): void;
拉起设备选择模块,可显示组网内可选择设备列表信息,无过滤条件,使用AsyncCallback方式作为异步方法。
**系统能力**:SystemCapability.Ability.DistributedAbilityManager
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| token | number | 是 | 注册后的token。 |
| callback | AsyncCallback\<void> | 是 | AsyncCallback形式返回接口调用结果。 |
**示例:**
```ts
let token = 1;
try {
continuationManager.startContinuationDeviceManager(token, (err, data) => {
if (err.code != 0) {
console.error('startContinuationDeviceManager failed, cause: ' + JSON.stringify(err));
return;
}
console.info('startContinuationDeviceManager finished, ' + JSON.stringify(data));
});
} catch (err) {
console.error('startContinuationDeviceManager failed, cause: ' + JSON.stringify(err));
}
```
## continuationManager.startContinuationDeviceManager<sup>9+</sup>
startContinuationDeviceManager(token: number, options: ContinuationExtraParams, callback: AsyncCallback\<void>): void;
拉起设备选择模块,可显示组网内可选择设备列表信息,使用AsyncCallback方式作为异步方法。
**系统能力**:SystemCapability.Ability.DistributedAbilityManager
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| token | number | 是 | 注册后的token。 |
| options | [ContinuationExtraParams](js-apis-continuation-continuationExtraParams.md) | 是 | 过滤可选择设备列表的额外参数。 |
| callback | AsyncCallback\<void> | 是 | AsyncCallback形式返回接口调用结果。 |
**示例:**
```ts
let token = 1;
let continuationExtraParams = {
deviceType: ["00E"]
};
try {
continuationManager.startContinuationDeviceManager(token, continuationExtraParams, (err, data) => {
if (err.code != 0) {
console.error('startContinuationDeviceManager failed, cause: ' + JSON.stringify(err));
return;
}
console.info('startContinuationDeviceManager finished, ' + JSON.stringify(data));
});
} catch (err) {
console.error('startContinuationDeviceManager failed, cause: ' + JSON.stringify(err));
}
```
## continuationManager.startContinuationDeviceManager<sup>9+</sup>
startContinuationDeviceManager(token: number, options?: ContinuationExtraParams): Promise\<void>;
拉起设备选择模块,可显示组网内可选择设备列表信息,使用Promise方式作为异步方法。
**系统能力**:SystemCapability.Ability.DistributedAbilityManager
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| token | number | 是 | 注册后的token。 |
| options | [ContinuationExtraParams](js-apis-continuation-continuationExtraParams.md) | 否 | 过滤可选择设备列表的额外参数,该参数可缺省|
**返回值:**
| 类型 | 说明 |
| ------------------------- | ------------------ |
| Promise\<void> | Promise形式返回接口调用结果。 |
**示例:**
```ts
let token = 1;
let continuationExtraParams = {
deviceType: ["00E"]
};
try {
continuationManager.startContinuationDeviceManager(token, continuationExtraParams)
.then((data) => {
console.info('startContinuationDeviceManager finished, ' + JSON.stringify(data));
})
.catch((err) => {
console.error('startContinuationDeviceManager failed, cause: ' + JSON.stringify(err));
});
} catch (err) {
console.error('startContinuationDeviceManager failed, cause: ' + JSON.stringify(err));
}
```
## continuationManager.updateConnectStatus<sup>(deprecated)</sup>
updateConnectStatus(token: number, deviceId: string, status: DeviceConnectState, callback: AsyncCallback\<void>): void;
通知设备选择模块,更新当前的连接状态,使用AsyncCallback方式作为异步方法。
> 从API Version 9开始不再维护,建议使用[updateContinuationState](#continuationmanagerupdatecontinuationstate9)替代。
**系统能力**:SystemCapability.Ability.DistributedAbilityManager
**参数:**
......@@ -434,7 +683,7 @@ updateConnectStatus(token: number, deviceId: string, status: DeviceConnectState,
**示例:**
```js
```ts
let token = 1;
let deviceId: string = "test deviceId";
continuationManager.updateConnectStatus(token, deviceId, continuationManager.DeviceConnectState.CONNECTED, (err, data) => {
......@@ -446,12 +695,14 @@ updateConnectStatus(token: number, deviceId: string, status: DeviceConnectState,
});
```
## continuationManager.updateConnectStatus
## continuationManager.updateConnectStatus<sup>(deprecated)</sup>
updateConnectStatus(token: number, deviceId: string, status: DeviceConnectState): Promise\<void>;
通知设备选择模块,更新当前的连接状态,使用Promise方式作为异步方法。
> 从API Version 9开始不再维护,建议使用[updateContinuationState](#continuationmanagerupdatecontinuationstate9)替代。
**系统能力**:SystemCapability.Ability.DistributedAbilityManager
**参数:**
......@@ -470,7 +721,7 @@ updateConnectStatus(token: number, deviceId: string, status: DeviceConnectState)
**示例:**
```js
```ts
let token = 1;
let deviceId: string = "test deviceId";
continuationManager.updateConnectStatus(token, deviceId, continuationManager.DeviceConnectState.CONNECTED)
......@@ -482,12 +733,90 @@ updateConnectStatus(token: number, deviceId: string, status: DeviceConnectState)
});
```
## continuationManager.unregister
## continuationManager.updateContinuationState<sup>9+</sup>
updateContinuationState(token: number, deviceId: string, status: DeviceConnectState, callback: AsyncCallback\<void>): void;
通知设备选择模块,更新当前的连接状态,使用AsyncCallback方式作为异步方法。
**系统能力**:SystemCapability.Ability.DistributedAbilityManager
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| token | number | 是 | 注册后的token。 |
| deviceId | string | 是 | 设备ID。 |
| status | [DeviceConnectState](#deviceconnectstate) | 是 | 设备连接状态。 |
| callback | AsyncCallback\<void> | 是 | AsyncCallback形式返回接口调用结果。 |
**示例:**
```ts
let token = 1;
let deviceId: string = "test deviceId";
try {
continuationManager.updateContinuationState(token, deviceId, continuationManager.DeviceConnectState.CONNECTED, (err, data) => {
if (err.code != 0) {
console.error('updateContinuationState failed, cause: ' + JSON.stringify(err));
return;
}
console.info('updateContinuationState finished, ' + JSON.stringify(data));
});
} catch (err) {
console.error('updateContinuationState failed, cause: ' + JSON.stringify(err));
}
```
## continuationManager.updateContinuationState<sup>9+</sup>
updateContinuationState(token: number, deviceId: string, status: DeviceConnectState): Promise\<void>;
通知设备选择模块,更新当前的连接状态,使用Promise方式作为异步方法。
**系统能力**:SystemCapability.Ability.DistributedAbilityManager
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| token | number | 是 | 注册后的token。 |
| deviceId | string | 是 | 设备ID。 |
| status | [DeviceConnectState](#deviceconnectstate) | 是 | 设备连接状态。 |
**返回值:**
| 类型 | 说明 |
| ------------------------- | ------------------ |
| Promise\<void> | Promise形式返回接口调用结果。 |
**示例:**
```ts
let token = 1;
let deviceId: string = "test deviceId";
try {
continuationManager.updateContinuationState(token, deviceId, continuationManager.DeviceConnectState.CONNECTED)
.then((data) => {
console.info('updateContinuationState finished, ' + JSON.stringify(data));
})
.catch((err) => {
console.error('updateContinuationState failed, cause: ' + JSON.stringify(err));
});
} catch (err) {
console.error('updateContinuationState failed, cause: ' + JSON.stringify(err));
}
```
## continuationManager.unregister<sup>(deprecated)</sup>
unregister(token: number, callback: AsyncCallback\<void>): void;
解注册流转管理服务,传入注册时获取的token进行解注册,使用AsyncCallback方式作为异步方法。
> 从API Version 9开始不再维护,建议使用[unregisterContinuation](#continuationmanagerunregistercontinuation9)替代。
**系统能力**:SystemCapability.Ability.DistributedAbilityManager
**参数:**
......@@ -499,7 +828,7 @@ unregister(token: number, callback: AsyncCallback\<void>): void;
**示例:**
```js
```ts
let token = 1;
continuationManager.unregister(token, (err, data) => {
if (err.code != 0) {
......@@ -510,12 +839,14 @@ unregister(token: number, callback: AsyncCallback\<void>): void;
});
```
## continuationManager.unregister
## continuationManager.unregister<sup>(deprecated)</sup>
unregister(token: number): Promise\<void>;
解注册流转管理服务,传入注册时获取的token进行解注册,使用Promise方式作为异步方法。
> 从API Version 9开始不再维护,建议使用[unregisterContinuation](#continuationmanagerunregistercontinuation9)替代。
**系统能力**:SystemCapability.Ability.DistributedAbilityManager
**参数:**
......@@ -532,7 +863,7 @@ unregister(token: number): Promise\<void>;
**示例:**
```js
```ts
let token = 1;
continuationManager.unregister(token)
.then((data) => {
......@@ -543,6 +874,76 @@ unregister(token: number): Promise\<void>;
});
```
## continuationManager.unregisterContinuation<sup>9+</sup>
unregisterContinuation(token: number, callback: AsyncCallback\<void>): void;
解注册流转管理服务,传入注册时获取的token进行解注册,使用AsyncCallback方式作为异步方法。
**系统能力**:SystemCapability.Ability.DistributedAbilityManager
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| token | number | 是 | 注册后的token。 |
| callback | AsyncCallback\<void> | 是 | AsyncCallback形式返回接口调用结果。 |
**示例:**
```ts
let token = 1;
try {
continuationManager.unregisterContinuation(token, (err, data) => {
if (err.code != 0) {
console.error('unregisterContinuation failed, cause: ' + JSON.stringify(err));
return;
}
console.info('unregisterContinuation finished, ' + JSON.stringify(data));
});
} catch (err) {
console.error('unregisterContinuation failed, cause: ' + JSON.stringify(err));
}
```
## continuationManager.unregisterContinuation<sup>9+</sup>
unregisterContinuation(token: number): Promise\<void>;
解注册流转管理服务,传入注册时获取的token进行解注册,使用Promise方式作为异步方法。
**系统能力**:SystemCapability.Ability.DistributedAbilityManager
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| token | number | 是 | 注册后的token。 |
**返回值:**
| 类型 | 说明 |
| ------------------------- | ------------------ |
| Promise\<void> | Promise形式返回接口调用结果。 |
**示例:**
```ts
let token = 1;
try {
continuationManager.unregisterContinuation(token)
.then((data) => {
console.info('unregisterContinuation finished, ' + JSON.stringify(data));
})
.catch((err) => {
console.error('unregisterContinuation failed, cause: ' + JSON.stringify(err));
});
} catch (err) {
console.error('unregisterContinuation failed, cause: ' + JSON.stringify(err));
}
```
## DeviceConnectState
设备连接状态。
......
# 设备信息
本模块提供产品信息。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
......@@ -11,11 +13,11 @@ import deviceInfo from '@ohos.deviceInfo'
## 属性
**系统能力**以下各项对应的系统能力均为SystemCapability.Startup.SystemInfo。
**系统能力**:SystemCapability.Startup.SystemInfo。
**权限**:以下各项所需要的权限有所不同,详见下表。
| 名称 | 参数类型 | 可读 | 可写 | 描述 |
| 名称 | 类型 | 可读 | 可写 | 说明 |
| -------- | -------- | -------- | -------- | -------- |
| deviceType | string | 是 | 否 | 设备类型。 |
| manufacture | string | 是 | 否 | 设备厂家名称。 |
......
# 分布式任务管理
分布式任务管理模块提供跨设备系统任务管理能力,包括注册系统任务状态监听、取消系统任务状态监听、开始同步远端任务列表、停止同步远端任务列表操作。
分布式任务管理模块提供跨设备系统任务管理能力,包括注册系统任务状态监听、取消系统任务状态监听、开始同步远端任务列表、停止同步远端任务列表、迁移任务操作。
> **说明:**
>
......@@ -55,9 +55,16 @@ registerMissionListener(parameter: MissionDeviceInfo, options: MissionCallback,
notifySnapshot: NotifySnapshot,
notifyNetDisconnect: NotifyNetDisconnect
}
try {
distributedMissionManager.registerMissionListener(parameter, options, (error) => {
console.log("error.code = " + error.code)
if (error.code != 0) {
console.error('registerMissionListener failed, cause: ' + JSON.stringify(error))
}
console.info('registerMissionListener finished')
})
} catch (error) {
console.error('registerMissionListener failed, cause: ' + JSON.stringify(error))
}
```
## distributedMissionManager.registerMissionListener
......@@ -104,12 +111,16 @@ registerMissionListener(parameter: MissionDeviceInfo, options: MissionCallback):
notifySnapshot: NotifySnapshot,
notifyNetDisconnect: NotifyNetDisconnect
}
try {
distributedMissionManager.registerMissionListener(parameter, options)
.then(data => {
console.info('success data is ' + data);
console.info('registerMissionListener finished, ' + JSON.stringify(data));
}).catch(error => {
console.info('error error is ' + error);
console.error('registerMissionListener failed, cause: ' + JSON.stringify(error));
})
} catch (error) {
console.error('registerMissionListener failed, cause: ' + JSON.stringify(error))
}
```
......@@ -136,9 +147,16 @@ unRegisterMissionListener(parameter: MissionDeviceInfo, callback: AsyncCallback&
var parameter = {
deviceId: remoteDeviceId
};
try {
distributedMissionManager.unRegisterMissionListener(parameter, (error) => {
console.log("error.code = " + error.code)
if (error.code != 0) {
console.error('unRegisterMissionListener failed, cause: ' + JSON.stringify(error))
}
console.info('unRegisterMissionListener finished')
})
} catch (error) {
console.error('unRegisterMissionListener failed, cause: ' + JSON.stringify(error))
}
```
......@@ -170,12 +188,16 @@ unRegisterMissionListener(parameter: MissionDeviceInfo): Promise&lt;void&gt;
var parameter = {
deviceId: remoteDeviceId
};
try {
distributedMissionManager.unRegisterMissionListener(parameter)
.then(data => {
console.info('success data is ' + data);
console.info('unRegisterMissionListener finished, ' + JSON.stringify(data));
}).catch(error => {
console.info('error error is ' + error);
console.error('unRegisterMissionListener failed, cause: ' + JSON.stringify(error));
})
} catch (error) {
console.error('unRegisterMissionListener failed, cause: ' + JSON.stringify(error))
}
```
## distributedMissionManager.startSyncRemoteMissions
......@@ -203,9 +225,16 @@ startSyncRemoteMissions(parameter: MissionParameter, callback: AsyncCallback&lt;
fixConflict: false,
tag: 0
};
try {
distributedMissionManager.startSyncRemoteMissions(parameter, (error) => {
console.log("error.code = " + error.code)
if (error.code != 0) {
console.error('startSyncRemoteMissions failed, cause: ' + JSON.stringify(error))
}
console.info('startSyncRemoteMissions finished')
})
} catch (error) {
console.error('startSyncRemoteMissions failed, cause: ' + JSON.stringify(error))
}
```
## distributedMissionManager.startSyncRemoteMissions
......@@ -238,12 +267,16 @@ startSyncRemoteMissions(parameter: MissionParameter): Promise&lt;void&gt;
fixConflict: false,
tag: 0
};
try {
distributedMissionManager.startSyncRemoteMissions(parameter)
.then(data => {
console.info('success data is ' + data);
console.info('startSyncRemoteMissions finished, ' + JSON.stringify(data));
}).catch(error => {
console.info('error error is ' + error);
console.error('startSyncRemoteMissions failed, cause: ' + JSON.stringify(error));
})
} catch (error) {
console.error('startSyncRemoteMissions failed, cause: ' + JSON.stringify(error))
}
```
## distributedMissionManager.stopSyncRemoteMissions
......@@ -269,9 +302,16 @@ stopSyncRemoteMissions(parameter: MissionDeviceInfo, callback: AsyncCallback&lt;
var parameter = {
deviceId: remoteDeviceId
};
try {
distributedMissionManager.stopSyncRemoteMissions(parameter, (error) => {
console.log("error.code = " + error.code)
if (error.code != 0) {
console.error('stopSyncRemoteMissions failed, cause: ' + JSON.stringify(error))
}
console.info('stopSyncRemoteMissions finished')
})
} catch (error) {
console.error('stopSyncRemoteMissions failed, cause: ' + JSON.stringify(error))
}
```
## distributedMissionManager.stopSyncRemoteMissions
......@@ -302,12 +342,111 @@ stopSyncRemoteMissions(parameter: MissionDeviceInfo): Promise&lt;void&gt;
var parameter = {
deviceId: remoteDeviceId
};
try {
distributedMissionManager.stopSyncRemoteMissions(parameter)
.then(data => {
console.info('success data is ' + data);
console.info('stopSyncRemoteMissions finished, ' + JSON.stringify(data));
}).catch(error => {
console.error('stopSyncRemoteMissions failed, cause: ' + JSON.stringify(error));
})
} catch (error) {
console.error('stopSyncRemoteMissions failed, cause: ' + JSON.stringify(error))
}
```
## distributedMissionManager.continueMission
continueMission(parameter: ContinueDeviceInfo, options: ContinueCallback, callback: AsyncCallback&lt;void&gt;): void;
迁移任务,以回调函数的方式返回。
**需要权限**:ohos.permission.MANAGE_MISSIONS, ohos.permission.DISTRIBUTED_DATASYNC
**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| --------- | --------------------------------------- | ---- | ----- |
| parameter | [ContinueDeviceInfo](#continuedeviceinfo) | 是 | 迁移信息。 |
| options | [ContinueCallback](#continuecallback) | 是 | 迁移任务完成回调函数。 |
| callback | AsyncCallback&lt;void&gt; | 是 | 执行结果回调函数。 |
**示例:**
```ts
var parameter = {
srcDeviceId: localDeviceId
dstDeviceId: remoteDeviceId
missionId: remoteMissionId
wantParams: {"key": "value"}
};
function OnContinueDone(resultCode) {
console.log('OnContinueDone resultCode: ' + JSON.stringify(resultCode));
};
var options = {
OnContinueDone: OnContinueDone
};
try {
distributedMissionManager.continueMission(parameter, options, (error) => {
if (error.code != 0) {
console.error('continueMission failed, cause: ' + JSON.stringify(error))
}
console.info('continueMission finished')
})
} catch (error) {
console.error('continueMission failed, cause: ' + JSON.stringify(error))
}
```
## distributedMissionManager.continueMission
continueMission(parameter: ContinueDeviceInfo, options: ContinueCallback): Promise&lt;void&gt;
迁移任务,以promise方式返回执行结果。
**需要权限**:ohos.permission.MANAGE_MISSIONS, ohos.permission.DISTRIBUTED_DATASYNC
**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| --------- | --------------------------------------- | ---- | ----- |
| parameter | [ContinueDeviceInfo](#continuedeviceinfo) | 是 | 迁移信息。 |
| options | [ContinueCallback](#continuecallback) | 是 | 迁移任务完成回调函数。 |
**返回值:**
| 类型 | 说明 |
| ------------------- | ---------------- |
| Promise&lt;void&gt; | promise方式返回执行结果。 |
**示例:**
```ts
var parameter = {
srcDeviceId: localDeviceId
dstDeviceId: remoteDeviceId
missionId: remoteMissionId
wantParams: {"key": "value"}
};
function OnContinueDone(resultCode) {
console.log('OnContinueDone resultCode: ' + JSON.stringify(resultCode));
};
var options = {
OnContinueDone: OnContinueDone
};
try {
distributedMissionManager.continueMission(parameter, options)
.then(data => {
console.info('continueMission finished, ' + JSON.stringify(data));
}).catch(error => {
console.info('error error is ' + error);
console.error('continueMission failed, cause: ' + JSON.stringify(error));
})
} catch (error) {
console.error('continueMission failed, cause: ' + JSON.stringify(error))
}
```
## MissionCallback
......@@ -349,3 +488,30 @@ stopSyncRemoteMissions(parameter: MissionDeviceInfo): Promise&lt;void&gt;
| 名称 | 参数类型 | 可读 | 可写 | 说明 |
| -------- | ------ | ---- | ---- | ------- |
| deviceId | string | 是 | 是 | 表示设备ID。 |
## ContinueDeviceInfo
表示发起任务迁移时所需参数的枚举。
**需要权限**:ohos.permission.MANAGE_MISSIONS
**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission
| 名称 | 参数类型 | 可读 | 可写 | 说明 |
| -------- | ------ | ---- | ---- | ------- |
| srcDeviceId | string | 是 | 是 | 表示任务迁移源设备ID。 |
| dstDeviceId | string | 是 | 是 | 表示任务迁移目标设备ID。 |
| missionId | string | 是 | 是 | 表示任务ID。 |
| wantParams | {[key: string]: any} | 是 | 是 | 表示扩展参数。 |
## ContinueCallback
表示迁移完成后,返回迁移结果回调函数。
**需要权限**:ohos.permission.MANAGE_MISSIONS
**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission
| 名称 | 类型 | 可读 | 可写 | 说明 |
| --------------------- | -------- | ---- | ---- | ------------------ |
| onContinueDone | function | 是 | 否 | 通知迁移完成,返回迁移结果。 |
\ No newline at end of file
......@@ -1771,7 +1771,7 @@ createImageReceiver(width: number, height: number, format: number, capacity: num
| -------- | ------ | ---- | ---------------------- |
| width | number | 是 | 图像的默认宽度。 |
| height | number | 是 | 图像的默认高度。 |
| format | number | 是 | 图像格式 |
| format | number | 是 | 图像格式,取值为[ImageFormat](#imageformat9)常量。 |
| capacity | number | 是 | 同时访问的最大图像数。 |
**返回值:**
......@@ -1952,7 +1952,7 @@ receiver.readNextImage().then(img => {
})
```
### on('imageArrival')<sup>9+</sup>
### on<sup>9+</sup>
on(type: 'imageArrival', callback: AsyncCallback\<void>): void
......@@ -2017,6 +2017,228 @@ receiver.release().then(() => {
})
```
## image.createImageCreator<sup>9+</sup>
createImageCreator(width: number, height: number, format: number, capacity: number): ImageCreator
通过宽、高、图片格式、容量创建ImageCreator实例。
**系统能力:** SystemCapability.Multimedia.Image.ImageCreator
**参数:**
| 名称 | 类型 | 必填 | 说明 |
| -------- | ------ | ---- | ---------------------- |
| width | number | 是 | 图像的默认宽度。 |
| height | number | 是 | 图像的默认高度。 |
| format | number | 是 | 图像格式,如YCBCR_422_SP,JPEG。 |
| capacity | number | 是 | 同时访问的最大图像数。 |
**返回值:**
| 类型 | 说明 |
| ------------------------------ | --------------------------------------- |
| [ImageCreator](#imagecreator9) | 如果操作成功,则返回ImageCreator实例。 |
**示例:**
```js
var creator = image.createImageCreator(8192, 8, 4, 8);
```
## ImageCreator<sup>9+</sup>
图像创建模块,用于请求图像原生数据区域,并开放给应用编译原生图像数据的能力。
在调用以下方法前需要先创建ImageCreator实例。
### 属性
**系统能力:** SystemCapability.Multimedia.Image.ImageCreator
| 名称 | 类型 | 可读 | 可写 | 说明 |
| -------- | ---------------------------- | ---- | ---- | ------------------ |
| capacity | number | 是 | 否 | 同时访问的图像数。 |
| format | [ImageFormat](#imageformat9) | 是 | 否 | 图像格式。 |
### dequeueImage<sup>9+</sup>
dequeueImage(callback: AsyncCallback\<Image>): void
从空闲队列中获取buffer图片,用于绘制UI内容,并使用callback返回结果。
**系统能力:** SystemCapability.Multimedia.Image.ImageCreator
**参数:**
| 名称 | 类型 | 必填 | 说明 |
| ------------- | ---------------------------------------| ---- | -------------------- |
| callback | AsyncCallback\<Image> | 是 | 回调函数,返回最新图片。 |
**示例:**
```js
creator.dequeueImage((err, img) => {
if (err) {
console.info('dequeueImage succeeded.');
}
console.info('dequeueImage failed.'));
});
```
### dequeueImage<sup>9+</sup>
dequeueImage(): Promise\<Image>
从空闲队列中获取buffer图片,用于绘制UI内容,并使用promise返回结果。
**系统能力:** SystemCapability.Multimedia.Image.ImageCreator
**返回值:**
| 类型 | 说明 |
| --------------- | ------------- |
| Promise\<Image> | 返回绘制的图像。 |
**示例:**
```js
creator.dequeueImage().then(img => {
console.info('dequeueImage succeeded.');
}).catch(error => {
console.log('dequeueImage failed: ' + error);
})
```
### queueImage<sup>9+</sup>
queueImage(interface: Image, callback: AsyncCallback\<void>): void
将绘制好的图片放入Dirty队列,并使用callback返回结果。
**系统能力:** SystemCapability.Multimedia.Image.ImageCreator
**参数:**
| 名称 | 类型 | 必填 | 说明 |
| ------------- | -------------------------| ---- | -------------------- |
| interface | Image | 是 | 绘制好的buffer图像。 |
| callback | AsyncCallback\<void> | 是 | 获取回调,失败时返回错误信息。 |
**示例:**
```js
creator.queueImage(img, (err) => {
if (err) {
console.info('dequeueImage failed: ' + err);
}
console.info('dequeueImage succeeded');
})
```
### queueImage<sup>9+</sup>
queueImage(interface: Image): Promise\<void>
将绘制好的图片放入Dirty队列,并使用promise返回结果。
**系统能力:** SystemCapability.Multimedia.Image.ImageCreator
**参数:**
| 名称 | 类型 | 必填 | 说明 |
| ------------- | --------| ---- | ------------------- |
| interface | Image | 是 | 绘制好的buffer图像。 |
**返回值:**
| 类型 | 说明 |
| -------------- | ------------- |
| Promise\<void> | 获取回调,失败时返回错误信息。 |
**示例:**
```js
creator.queueImage(img).then(() => {
console.info('dequeueImage succeeded.');
}).catch(error => {
console.info('dequeueImage failed: ' + error);
})
```
### on<sup>9+</sup>
on(type: 'imageRelease', callback: AsyncCallback\<void>): void
监听imageRelease事件,并使用callback返回结果。
**系统能力:** SystemCapability.Multimedia.Image.ImageCreator
**参数:**
| 名称 | 类型 | 必填 | 说明 |
| ------------- | -------------------------| ---- | -------------------- |
| type | string | 是 | 监听事件类型,如'imageRelease'。 |
| callback | AsyncCallback\<void> | 是 | 获取回调,失败时返回错误信息。 |
**示例:**
```js
creator.on('imageRelease', (err) => {
if (err) {
console.info('on faild' + err);
}
console.info('on succeeded');
})
```
### release<sup>9+</sup>
release(callback: AsyncCallback\<void>): void
释放当前图像,并使用callback返回结果。
**系统能力:** SystemCapability.Multimedia.Image.ImageCreator
**参数:**
| 名称 | 类型 | 必填 | 说明 |
| ------------- | -------------------------| ---- | -------------------- |
| callback | AsyncCallback\<void> | 是 | 获取回调,失败时返回错误信息。 |
**示例:**
```js
creator.release((err) => {
if (err) {
console.info('release failed: ' + err);
}
console.info('release succeeded');
});
```
### release<sup>9+</sup>
release(): Promise\<void>
释放当前图像,并使用promise返回结果。
**系统能力:** SystemCapability.Multimedia.Image.ImageCreator
**返回值:**
| 类型 | 说明 |
| -------------- | ------------- |
| Promise\<void> | 获取回调,失败时返回错误信息。 |
**示例:**
```js
creator.release().then(() => {
console.info('release succeeded');
}).catch(error => {
console.info('release failed');
})
```
## Image<sup>9+</sup>
提供基本的图像操作,包括获取图像信息、读写图像数据。调用[readNextImage](#readnextimage9)[readLatestImage](#readlatestimage9)接口时会返回image。
......@@ -2144,7 +2366,7 @@ img.release().then(() =>{
| ------ | ------------------ | ---- | ---- | ------------------------------------------------------------ |
| pixels | ArrayBuffer | 是 | 否 | 像素。 |
| offset | number | 是 | 否 | 偏移量。 |
| stride | number | 是 | 否 | 像素间距,stride >= region.size.width*4 |
| stride | number | 是 | 否 | 像素间距,stride >= region.size.width*4 |
| region | [Region](#region7) | 是 | 否 | 区域,按照区域读写。写入的区域宽度加X坐标不能大于原图的宽度,写入的区域高度加Y坐标不能大于原图的高度。 |
## ImageInfo
......@@ -2156,6 +2378,7 @@ img.release().then(() =>{
| 名称 | 类型 | 可读 | 可写 | 说明 |
| ---- | ------------- | ---- | ---- | ---------- |
| size | [Size](#size) | 是 | 是 | 图片大小。 |
| density<sup>9+</sup> | number | 是 | 是 | 像素密度,单位为ppi。 |
## Size
......@@ -2180,6 +2403,11 @@ img.release().then(() =>{
| RGB_565 | 2 | 格式为RGB_565 |
| RGBA_8888 | 3 | 格式为RGBA_8888 |
| BGRA_8888<sup>9+</sup> | 4 | 格式为BGRA_8888 |
| RGB_888<sup>9+</sup> | 5 | 格式为RGB_888 |
| ALPHA_8<sup>9+</sup> | 6 | 格式为ALPHA_8 |
| RGBA_F16<sup>9+</sup> | 7 | 格式为RGBA_F16 |
| NV21<sup>9+</sup> | 8 | 格式为NV21 |
| NV12<sup>9+</sup> | 9 | 格式为NV12 |
## AlphaType<sup>9+</sup>
......@@ -2191,8 +2419,8 @@ img.release().then(() =>{
| -------- | ------ | ----------------------- |
| UNKNOWN | 0 | 未知透明度。 |
| OPAQUE | 1 | 没有alpha或图片全透明。 |
| PREMUL | 2 | RGB前乘alpha |
| UNPREMUL | 3 | RGB不前乘alpha |
| PREMUL | 2 | RGB前乘alpha |
| UNPREMUL | 3 | RGB不前乘alpha |
## ScaleMode<sup>9+</sup>
......@@ -2247,6 +2475,7 @@ PixelMap的初始化选项。
| desiredRegion | [Region](#region7) | 是 | 是 | 解码区域。 |
| desiredPixelFormat | [PixelMapFormat](#pixelmapformat7) | 是 | 是 | 解码的像素格式。 |
| index | number | 是 | 是 | 解码图片序号。 |
| fitDensity<sup>9+</sup> | number | 是 | 是 | 图像像素密度,单位为ppi。 |
## Region<sup>7+</sup>
......@@ -2268,8 +2497,9 @@ PixelMap的初始化选项。
| 名称 | 类型 | 可读 | 可写 | 说明 |
| ------- | ------ | ---- | ---- | --------------------------------------------------- |
| format | string | 是 | 是 | 目标格式。</br>当前支持格式有:jpeg webp |
| quality | number | 是 | 是 | JPEG编码中设定输出图片质量的参数,取值范围为1-100 |
| format | string | 是 | 是 | 目标格式。</br>当前支持格式有:.jpg .png .gif .bmp .webp RAW。 |
| quality | number | 是 | 是 | JPEG编码中设定输出图片质量的参数,取值范围为1-100。 |
| bufferSize<sup>9+</sup> | number | 是 | 是 | 用于设置图片大小,默认为10M |
## GetImagePropertyOptions<sup>7+</sup>
......@@ -2298,6 +2528,12 @@ PixelMap的初始化选项。
| GPS_LONGITUDE | "GPSLongitude" | 图片经度。 |
| GPS_LATITUDE_REF | "GPSLatitudeRef" | 纬度引用,例如N或S。 |
| GPS_LONGITUDE_REF | "GPSLongitudeRef" | 经度引用,例如W或E。 |
| DATE_TIME_ORIGINAL<sup>9+</sup> | "DateTimeOriginal" | 拍摄时间,例如2022:09:06 15:48:00 |
| EXPOSURE_TIME<sup>9+</sup> | "ExposureTime" | 曝光时间,例如1/33 sec.|
| SCENE_TYPE<sup>9+</sup> | "SceneType" | 拍摄场景模式,例如人像、风光、运动、夜景等。 |
| ISO_SPEED_RATINGS<sup>9+</sup> | "ISOSpeedRatings" | ISO感光度,例如400 |
| F_NUMBER<sup>9+</sup> | "FNumber" | 光圈值,例如f/1.8 |
## ImageFormat<sup>9+</sup>
......
......@@ -15,7 +15,7 @@ import privacyManager from '@ohos.privacyManager';
## privacyManager.addPermissionUsedRecord
addPermissionUsedRecord(tokenID: number, permissionName: string, successCount: number, failCount: number): Promise&lt;number&gt;
addPermissionUsedRecord(tokenID: number, permissionName: string, successCount: number, failCount: number): Promise&lt;void&gt;
受应用权限保护的应用在被其他服务、应用调用时,可以使用该接口增加一条权限使用记录。使用Promise异步回调。
权限使用记录包括:调用方的应用身份标识、使用的应用权限名称,和其访问本应用成功、失败的次数。
......@@ -28,7 +28,7 @@ addPermissionUsedRecord(tokenID: number, permissionName: string, successCount: n
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------- | ---- | ------------------------------------------ |
| tokenID | number | 是 | 调用方的应用身份标识。 |
| tokenID | number | 是 | 调用方的应用身份标识。可通过应用的[ApplicationInfo](js-apis-bundle-ApplicationInfo.md)获得。 |
| permissionName | string | 是 | 应用权限名称。 |
| successCount | number | 是 | 访问成功的次数。 |
| failCount | number | 是 | 访问失败的次数。 |
......@@ -37,27 +37,28 @@ addPermissionUsedRecord(tokenID: number, permissionName: string, successCount: n
| 类型 | 说明 |
| :------------ | :---------------------------------- |
| Promise&lt;number&gt; | Promise对象。返回`0`表示成功增加记录,返回`-1`表示失败。 |
| Promise&lt;void&gt; | Promise对象。无返回结果的Promise对象。 |
**示例:**
```js
import bundle from '@ohos.bundle';
import privacyManager from '@ohos.privacyManager';
let bundleName = "com.ohos.permissionmanager"; // change to your bundle name
bundle.getApplicationInfo(bundleName, 16).then(appInfo => {
var tokenID = appInfo.accessTokenId; // 可以通过getApplicationInfo获取accessTokenId
privacyManager.addPermissionUsedRecord(tokenID, "ohos.permission.PERMISSION_USED_STATS", 1, 0).then(data => {
console.log(`promise: data->${JSON.stringify(data)}`);
let tokenID = 0; // 可以通过getApplicationInfo获取accessTokenId
try {
privacyManager.addPermissionUsedRecord(tokenID, "ohos.permission.PERMISSION_USED_STATS", 1, 0).then(() => {
console.log('addPermissionUsedRecord success');
}).catch((err) => {
console.log(`addPermissionUsedRecord fail, err->${JSON.stringify(err)}`);
});
})
} catch(err) {
console.log(`catch err->${JSON.stringify(err)}`);
}
```
## privacyManager.addPermissionUsedRecord
addPermissionUsedRecord(tokenID: number, permissionName: string, successCount: number, failCount: number, callback: AsyncCallback&lt;number&gt;): void
addPermissionUsedRecord(tokenID: number, permissionName: string, successCount: number, failCount: number, callback: AsyncCallback&lt;void&gt;): void
受应用权限保护的应用在被其他服务、应用调用时,可以使用该接口增加一条权限使用记录。使用callback异步回调。
权限使用记录包括:调用方的应用身份标识、使用的应用权限名称,和其访问本应用成功、失败的次数。
......@@ -70,26 +71,29 @@ addPermissionUsedRecord(tokenID: number, permissionName: string, successCount: n
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------- | ---- | ------------------------------------------ |
| tokenID | number | 是 | 调用方的应用身份标识。 |
| tokenID | number | 是 | 调用方的应用身份标识。可通过应用的[ApplicationInfo](js-apis-bundle-ApplicationInfo.md)获得。 |
| permissionName | string | 是 | 应用权限名称。 |
| successCount | number | 是 | 访问成功的次数。 |
| failCount | number | 是 | 访问失败的次数。 |
| callback | AsyncCallback&lt;number&gt; | 是 | 回调函数。返回`0`表示成功增加记录,返回`-1`表示失败。 |
| callback | AsyncCallback&lt;void&gt; | 是 | 回调函数。 |
**示例:**
```js
import bundle from '@ohos.bundle';
import privacyManager from '@ohos.privacyManager';
let bundleName = "com.ohos.permissionmanager"; // change to your bundle name
bundle.getApplicationInfo(bundleName, 16).then(appInfo => {
var tokenID = appInfo.accessTokenId; // 可以通过getApplicationInfo获取accessTokenId
privacyManager.addPermissionUsedRecord(tokenID, "ohos.permission.PERMISSION_USED_STATS", 1, 0, (err, data) => {
console.log(`callback: data->${JSON.stringify(data)}`);
let tokenID = 0; // 可以通过getApplicationInfo获取accessTokenId
try {
privacyManager.addPermissionUsedRecord(tokenID, "ohos.permission.PERMISSION_USED_STATS", 1, 0, (data, err) => {
if (err) {
console.log(`addPermissionUsedRecord fail, err->${JSON.stringify(err)}`);
} else {
console.log('addPermissionUsedRecord success');
}
});
})
} catch(err) {
console.log(`catch err->${JSON.stringify(err)}`);
}
```
## privacyManager.getPermissionUsedRecords
......@@ -117,6 +121,8 @@ getPermissionUsedRecords(request: PermissionUsedRequest): Promise&lt;PermissionU
**示例:**
```js
import privacyManager from '@ohos.privacyManager';
let request = {
"tokenId": 1,
"isRemote": false,
......@@ -127,9 +133,15 @@ let request = {
"endTime": 1,
"flag":privacyManager.PermissionUsageFlag.FLAG_PERMISSION_USAGE_DETAIL,
};
privacyManager.getPermissionUsedRecords(request).then(data => {
console.log(`promise: data->${JSON.stringify(data)}`);
});
try {
privacyManager.getPermissionUsedRecords(request).then((data) => {
console.log(`getPermissionUsedRecords success, data->${JSON.stringify(data)}`);
}).catch((err) => {
console.log(`getPermissionUsedRecords fail, err->${JSON.stringify(err)}`);
});
} catch(err) {
console.log(`catch err->${JSON.stringify(err)}`);
}
```
## privacyManager.getPermissionUsedRecords
......@@ -152,6 +164,8 @@ getPermissionUsedRecords(request: PermissionUsedRequest, callback: AsyncCallback
**示例:**
```js
import privacyManager from '@ohos.privacyManager';
let request = {
"tokenId": 1,
"isRemote": false,
......@@ -162,14 +176,22 @@ let request = {
"endTime": 1,
"flag":privacyManager.PermissionUsageFlag.FLAG_PERMISSION_USAGE_DETAIL,
};
privacyManager.getPermissionUsedRecords(request, (err, data) => {
console.log(`promise: data->${JSON.stringify(data)}`);
});
try {
privacyManager.getPermissionUsedRecords(request, (err, data) => {
if (err) {
console.log(`getPermissionUsedRecords fail, err->${JSON.stringify(err)}`);
} else {
console.log(`getPermissionUsedRecords success, data->${JSON.stringify(data)}`);
}
});
} catch(err) {
console.log(`catch err->${JSON.stringify(err)}`);
}
```
## privacyManager.startUsingPermission<sup>9+</sup>
## privacyManager.startUsingPermission
startUsingPermission(tokenID: number, permissionName: string): Promise&lt;number&gt;
startUsingPermission(tokenID: number, permissionName: string): Promise&lt;void&gt;
应用开始使用某项权限,可监听应用在前后台使用权限,并将使用权限的记录落盘,由系统服务调用。
......@@ -181,37 +203,35 @@ startUsingPermission(tokenID: number, permissionName: string): Promise&lt;number
| 参数名 | 类型 | 必填 | 说明 |
| -------------- | ------ | ---- | ------------------------------------ |
| tokenID | number | 是 | 调用方的应用身份标识,获取方法参照示例。 |
| tokenID | number | 是 | 调用方的应用身份标识。可通过应用的[ApplicationInfo](js-apis-bundle-ApplicationInfo.md)获得。 |
| permissionName | string | 是 | 需要使用的权限名。 |
**返回值:**
| 类型 | 说明 |
| ------------- | --------------------------------------- |
| Promise&lt;number&gt; | Promise对象。返回开始使用权限的结果。|
| Promise&lt;void&gt; | Promise对象。无返回结果的Promise对象。|
**示例:**
```js
import bundle from '@ohos.bundle';
import privacyManager from '@ohos.privacyManager';
let bundleName = "com.ohos.permissionmanager"; // change to your bundle name
bundle.getApplicationInfo(bundleName, 16).then(appInfo => {
let tokenID = appInfo.accessTokenId;
let permissionName = "ohos.permission.CAMERA";
privacyManager.startUsingPermission(tokenID, permissionName).then(data => {
console.log(`promise: data->${JSON.stringify(data)}`);
}).catch(err => {
console.log(`Error: err->${JSON.stringify(err)}`);
let tokenID = 0; // 可以通过getApplicationInfo获取accessTokenId
try {
privacyManager.startUsingPermission(tokenID, "ohos.permission.PERMISSION_USED_STATS").then(() => {
console.log('startUsingPermission success');
}).catch((err) => {
console.log(`startUsingPermission fail, err->${JSON.stringify(err)}`);
});
})
} catch(err) {
console.log(`catch err->${JSON.stringify(err)}`);
}
```
## privacyManager.startUsingPermission<sup>9+</sup>
## privacyManager.startUsingPermission
startUsingPermission(tokenID: number, permissionName: string, callback: AsyncCallback&lt;number&gt;): void
startUsingPermission(tokenID: number, permissionName: string, callback: AsyncCallback&lt;void&gt;): void
应用开始使用某项权限,可监听应用在前后台使用权限,并将使用权限的记录落盘,由系统服务调用。
......@@ -223,34 +243,32 @@ startUsingPermission(tokenID: number, permissionName: string, callback: AsyncCal
| 参数名 | 类型 | 必填 | 说明 |
| -------------- | --------------------- | ---- | ------------------------------------ |
| tokenID | number | 是 | 调用方的应用身份标识,获取方法参照示例。 |
| tokenID | number | 是 | 调用方的应用身份标识。可通过应用的[ApplicationInfo](js-apis-bundle-ApplicationInfo.md)获得。 |
| permissionName | string | 是 | 需要使用的权限名。 |
| callback | AsyncCallback&lt;number&gt; | 是 | 异步回调,返回开始使用权限的结果。 |
| callback | AsyncCallback&lt;void&gt; | 是 | 异步回调,返回开始使用权限的结果。 |
**示例:**
```js
import bundle from '@ohos.bundle';
import privacyManager from '@ohos.privacyManager';
let bundleName = "com.ohos.permissionmanager"; // change to your bundle name
bundle.getApplicationInfo(bundleName, 16).then(appInfo => {
let tokenID = appInfo.accessTokenId;
let permissionName = "ohos.permission.CAMERA";
privacyManager.startUsingPermission(tokenID, permissionName, (err, data)=> {
let tokenID = 0; // 可以通过getApplicationInfo获取accessTokenId
try {
privacyManager.startUsingPermission(tokenID, "ohos.permission.PERMISSION_USED_STATS", (data, err) => {
if (err) {
console.log(`Error: err->${JSON.stringify(err)}`);
} else {S
console.log(`promise: data->${JSON.stringify(data)}`);
console.log(`startUsingPermission fail, err->${JSON.stringify(err)}`);
} else {
console.log('startUsingPermission success');
}
});
})
} catch(err) {
console.log(`catch err->${JSON.stringify(err)}`);
}
```
## privacyManager.stopUsingPermission<sup>9+</sup>
## privacyManager.stopUsingPermission
stopUsingPermission(tokenID: number, permissionName: string): Promise&lt;number&gt;
stopUsingPermission(tokenID: number, permissionName: string): Promise&lt;void&gt;
应用停止使用某项权限,与Start对应,由系统服务调用。
......@@ -262,37 +280,35 @@ stopUsingPermission(tokenID: number, permissionName: string): Promise&lt;number&
| 参数名 | 类型 | 必填 | 说明 |
| -------------- | ------ | ---- | ------------------------------------ |
| tokenID | number | 是 | 调用方的应用身份标识,获取方法参照示例。 |
| tokenID | number | 是 | 调用方的应用身份标识。可通过应用的[ApplicationInfo](js-apis-bundle-ApplicationInfo.md)获得。 |
| permissionName | string | 是 | 需要使用的权限名。 |
**返回值:**
| 类型 | 说明 |
| ------------- | --------------------------------------- |
| Promise&lt;number&gt; | Promise对象。返回停止使用权限的结果。|
| Promise&lt;void&gt; | Promise对象。无返回结果的Promise对象。|
**示例:**
```js
import bundle from '@ohos.bundle';
import privacyManager from '@ohos.privacyManager';
let bundleName = "com.ohos.permissionmanager"; // change to your bundle name
bundle.getApplicationInfo(bundleName, 16).then(appInfo => {
let tokenID = appInfo.accessTokenId;
let permissionName = "ohos.permission.CAMERA";
privacyManager.stopUsingPermission(tokenID, permissionName).then(data => {
console.log(`promise: data->${JSON.stringify(data)}`);
}).catch(err => {
console.log(`Error: err->${JSON.stringify(err)}`);
let tokenID = 0; // 可以通过getApplicationInfo获取accessTokenId
try {
privacyManager.stopUsingPermission(tokenID, "ohos.permission.PERMISSION_USED_STATS").then(() => {
console.log('stopUsingPermission success');
}).catch((err) => {
console.log(`stopUsingPermission fail, err->${JSON.stringify(err)}`);
});
})
} catch(err) {
console.log(`catch err->${JSON.stringify(err)}`);
}
```
## privacyManager.stopUsingPermission<sup>9+</sup>
## privacyManager.stopUsingPermission
stopUsingPermission(tokenID: number, permissionName: string, callback: AsyncCallback&lt;number&gt;): void
stopUsingPermission(tokenID: number, permissionName: string, callback: AsyncCallback&lt;void&gt;): void
应用停止使用某项权限,与Start对应,由系统服务调用。
......@@ -304,32 +320,30 @@ stopUsingPermission(tokenID: number, permissionName: string, callback: AsyncCall
| 参数名 | 类型 | 必填 | 说明 |
| -------------- | --------------------- | ---- | ------------------------------------ |
| tokenID | number | 是 | 调用方的应用身份标识,获取方法参照示例。 |
| tokenID | number | 是 | 调用方的应用身份标识。可通过应用的[ApplicationInfo](js-apis-bundle-ApplicationInfo.md)获得。 |
| permissionName | string | 是 | 需要使用的权限名。 |
| callback | AsyncCallback&lt;number&gt; | 是 | 异步回调,返回停止使用权限的结果。 |
| callback | AsyncCallback&lt;void&gt; | 是 | 异步回调,返回停止使用权限的结果。 |
**示例:**
```js
import bundle from '@ohos.bundle';
import privacyManager from '@ohos.privacyManager';
let bundleName = "com.ohos.permissionmanager"; // change to your bundle name
bundle.getApplicationInfo(bundleName, 16).then(appInfo => {
let tokenID = appInfo.accessTokenId;
let permissionName = "ohos.permission.CAMERA";
privacyManager.stopUsingPermission(tokenID, permissionName, (err, data)=> {
let tokenID = 0; // 可以通过getApplicationInfo获取accessTokenId
try {
privacyManager.stopUsingPermission(tokenID, "ohos.permission.PERMISSION_USED_STATS", (data, err) => {
if (err) {
console.log(`Error: err->${JSON.stringify(err)}`);
console.log(`stopUsingPermission fail, err->${JSON.stringify(err)}`);
} else {
console.log(`promise: data->${JSON.stringify(data)}`);
console.log('stopUsingPermission success');
}
});
})
} catch(err) {
console.log(`catch err->${JSON.stringify(err)}`);
}
```
## privacyManager.on<sup>9+</sup>
## privacyManager.on
on(type: 'activeStateChange', permissionNameList: Array&lt;string&gt;, callback: Callback&lt;ActiveChangeResponse&gt;): void
......@@ -347,27 +361,24 @@ on(type: 'activeStateChange', permissionNameList: Array&lt;string&gt;, callback:
| ------------------ | --------------------- | ---- | ------------------------------------------------------------ |
| type | string | 是 | 订阅事件类型,固定为'activeStateChange',权限使用状态变更事件。 |
| permissionNameList | Array&lt;string&gt; | 否 | 订阅的权限名列表,为空时表示订阅所有的权限使用状态变化。 |
| callback | Callback&lt;[ActiveChangeResponse](#activechangeresponse9)&gt; | 是 | 订阅指定权限使用状态变更事件的回调。 |
| callback | Callback&lt;[ActiveChangeResponse](#activechangeresponse)&gt; | 是 | 订阅指定权限使用状态变更事件的回调。 |
**示例:**
```js
import privacyManager from '@ohos.privacyManager';
function OnPermissionUseStateChanged(data){
console.debug("receive permission state change, data:" + JSON.stringify(data));
}
let type: 'activeStateChange' = 'activeStateChange';
let permissionNameList: Array<string> = [];
try{
privacyManager.on(type, permissionNameList, OnPermissionUseStateChanged);
}
catch(err){
console.error("on err:" + JSON.stringify(err));
try {
atManager.on('activeStateChange', permissionNameList, (data) => {
console.debug("receive permission state change, data:" + JSON.stringify(data));
});
} catch(err) {
console.log(`catch err->${JSON.stringify(err)}`);
}
```
## privacyManager.off<sup>9+</sup>
## privacyManager.off
off(type: 'activeStateChange', permissionNameList: Array&lt;string&gt;, callback?: Callback&lt;ActiveChangeResponse&gt;): void;
......@@ -385,20 +396,18 @@ off(type: 'activeStateChange', permissionNameList: Array&lt;string&gt;, callback
| ------------------ | --------------------- | ---- | ------------------------------------------------------------ |
| type | string | 是 | 订阅事件类型,固定为'activeStateChange',权限使用状态变更事件。 |
| permissionNameList | Array&lt;string&gt; | 否 | 订阅的权限名列表,为空时表示订阅所有的权限状态变化,必须与on的输入一致。 |
| callback | Callback&lt;[ActiveChangeResponse](#activechangeresponse9)&gt; | 否 | 取消订阅指定tokenId与指定权限名状态变更事件的回调。|
| callback | Callback&lt;[ActiveChangeResponse](#activechangeresponse)&gt; | 否 | 取消订阅指定tokenId与指定权限名状态变更事件的回调。|
**示例:**
```js
import privacyManager from '@ohos.privacyManager';
let type: 'activeStateChange' = 'activeStateChange';
let permissionNameList: Array<string> = [];
try{
privacyManager.off(type, permissionNameList);
}
catch(err){
console.error("off err:" + JSON.stringify(err));
try {
privacyManager.off('activeStateChange', permissionNameList);
}catch(err) {
console.log(`catch err->${JSON.stringify(err)}`);
}
```
......@@ -485,7 +494,7 @@ catch(err){
| timestamp | number | 否 | 访问时的时间戳,单位:ms。 |
| accessDuration | number | 否 | 访问时长,单位:ms。 |
## PermissionActiveStatus<sup>9+</sup>
## PermissionActiveStatus
表示权限使用状态类型的枚举。
......@@ -497,7 +506,7 @@ catch(err){
| PERM_ACTIVE_IN_FOREGROUND | 1 | 表示前台使用权限。 |
| PERM_ACTIVE_IN_BACKGROUND | 2 | 表示后台使用权限。 |
## ActiveChangeResponse<sup>9+</sup>
## ActiveChangeResponse
**系统能力:** 以下各项对应的系统能力均为SystemCapability.Security.AccessToken
......@@ -506,4 +515,4 @@ catch(err){
| tokenId | number | 是 | 否 | 调用方的应用身份标识 |
| permissionName | string | 是 | 否 | 使用状态发生变化的权限名 |
| deviceId | string | 是 | 否 | 设备号 |
| activeStatus | [PermissionActiveStatus](#permissionactivestatus9) | 是 | 否 | 权限使用状态类型 |
| activeStatus | [PermissionActiveStatus](#permissionactivestatus) | 是 | 否 | 权限使用状态类型 |
......@@ -1206,7 +1206,7 @@ resume(callback: AsyncCallback&lt;void&gt;): void
| 名称 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| url | string | 是 | 资源地址。 |
| header | object | 否 | 添加要包含在下载请求中的HTTP或HTTPS标志头。 |
| header | object | 否 | 添加要包含在下载请求中的HTTPS标志头。<br/>开发者可以通过header的X-TLS-Version参数指定需要使用的TLS版本(如果不指定,则默认使用CURL_SSLVERSION_TLSv1_2版本,指定则使用指定版本。)<br/>CURL_SSLVERSION_TLSv1_0<br/>CURL_SSLVERSION_TLSv1_1<br/>CURL_SSLVERSION_TLSv1_2<br/>CURL_SSLVERSION_TLSv1_3<br/>通过header的X-Cipher-List参数指定需要使用的密码套件(如果不指定,则默认使用安全密码套件,指定则使用指定密码套件。)<br/>-1.2允许使用的密码套件白名单:<br/>TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,<br/>TLS_DHE_DSS_WITH_AES_128_GCM_SHA256,TLS_DSS_RSA_WITH_AES_256_GCM_SHA384,<br/>TLS_PSK_WITH_AES_256_GCM_SHA384,TLS_DHE_PSK_WITH_AES_128_GCM_SHA256,<br/>TLS_DHE_PSK_WITH_AES_256_GCM_SHA384,TLS_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256,<br/>TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,<br/>TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,<br/>TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256,TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256,<br/>TLS_ECDHE_PSK_WITH_AES_128_GCM_SHA256,TLS_ECDHE_PSK_WITH_AES_256_GCM_SHA384,<br/>TLS_ECDHE_PSK_WITH_AES_128_GCM_SHA256,TLS_DHE_RSA_WITH_AES_128_CCM,<br/>TLS_DHE_RSA_WITH_AES_256_CCM,TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256,<br/>TLS_PSK_WITH_AES_256_CCM,TLS_DHE_PSK_WITH_AES_128_CCM,<br/>TLS_DHE_PSK_WITH_AES_256_CCM,TLS_ECDHE_ECDSA_WITH_AES_128_CCM,<br/>TLS_ECDHE_ECDSA_WITH_AES_256_CCM,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256<br/>-1.3允许使用的密码套件白名单:<br/>TLS_AES_128_GCM_SHA256,TLS_AES_256_GCM_SHA384,TLS_CHACHA20_POLY1305_SHA256,TLS_AES_128_CCM_SHA256<br/>-1.3新增国密算法套:<br/>TLS_SM4_GCM_SM3,TLS_SM4_CCM_SM3 |
| enableMetered | boolean | 否 | 设置是否允许在按流量计费的连接下下载。<br/>-&nbsp;true:是<br/>-&nbsp;false:否 |
| enableRoaming | boolean | 否 | 设置是否允许在漫游网络中下载。 <br/>-&nbsp;true:是<br/>-&nbsp;false:否|
| description | string | 否 | 设置下载会话的描述。 |
......
因为 它太大了无法显示 source diff 。你可以改为 查看blob
......@@ -64,5 +64,4 @@ export default {
});
},
}
;
```
\ No newline at end of file
......@@ -40,15 +40,15 @@ text(txt: string, pattern?: MatchPattern): By
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------- | ------------ | ---- | ------------------------------------------------- |
| ------- | ------------ | ---- | --------------------------------------------------- |
| txt | string | 是 | 指定控件文本,用于匹配目标控件文本。 |
| pattern | MatchPattern | 否 | 指定的文本匹配模式,默认为[EQUALS](#matchpattern) |
| pattern | MatchPattern | 否 | 指定的文本匹配模式,默认为[EQUALS](#matchpattern) |
**返回值:**
| 类型 | 说明 |
| ---- | -------------- |
| By | 返回By对象自身 |
| --------- | ---------------------------------- |
| [By](#by) | 返回指定目标控件文本属性的By对象。 |
**示例:**
......@@ -74,8 +74,8 @@ key(key: string): By
**返回值:**
| 类型 | 说明 |
| ---- | ---------------- |
| By | 返回By对象自身。 |
| --------- | ----------------------------------- |
| [By](#by) | 返回指定目标控件key值属性的By对象。 |
**示例:**
......@@ -101,8 +101,8 @@ id(id: number): By
**返回值:**
| 类型 | 说明 |
| ---- | ---------------- |
| By | 返回By对象自身。 |
| --------- | -------------------------------- |
| [By](#by) | 返回指定目标控件id属性的By对象。 |
**示例:**
......@@ -128,8 +128,8 @@ type(tp: string): By
**返回值:**
| 类型 | 说明 |
| ---- | ---------------- |
| By | 返回By对象自身。 |
| --------- | ---------------------------------------- |
| [By](#by) | 返回指定目标控件的控件类型属性的By对象。 |
**示例:**
......@@ -150,13 +150,13 @@ clickable(b?: boolean): By
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ---- | ---- | -------------------------------- |
| b | boolean | 否 | 指定控件可点击状态,默认为true。 |
| b | boolean | 否 | 指定控件可点击状态,true:可点击,false:不可点击。默认为true。 |
**返回值:**
| 类型 | 说明 |
| ---- | ---------------- |
| By | 返回By对象自身。 |
| --------- | ------------------------------------------ |
| [By](#by) | 返回指定目标控件的可点击状态属性的By对象。 |
**示例:**
......@@ -176,13 +176,13 @@ longClickable(b?: boolean): By
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ---- | ---- | ------------------------------------ |
| b | boolean | 否 | 指定控件可长按点击状态,默认为true。 |
| b | boolean | 否 | 指定控件可长按点击状态,true:可长按点击,false:不可长按点击。默认为true。 |
**返回值:**
| 类型 | 说明 |
| ---- | ---------------- |
| By | 返回By对象自身。 |
| --------- | ---------------------------------------------- |
| [By](#by) | 返回指定目标控件的可长按点击状态属性的By对象。 |
**示例:**
......@@ -203,13 +203,13 @@ scrollable(b?: boolean): By
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ---- | ---- | ---------------------------- |
| b | boolean | 否 | 控件可滑动状态,默认为true。 |
| b | boolean | 否 | 控件可滑动状态,true:可滑动,false:不可滑动。默认为true。 |
**返回值:**
| 类型 | 说明 |
| ---- | ---------------- |
| By | 返回By对象自身。 |
| --------- | ------------------------------------------ |
| [By](#by) | 返回指定目标控件的可滑动状态属性的By对象。 |
**示例:**
......@@ -229,13 +229,13 @@ enabled(b?: boolean): By
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ---- | ---- | ------------------------------ |
| b | boolean | 否 | 指定控件使能状态,默认为true。 |
| b | boolean | 否 | 指定控件使能状态,true:使能,false:未使能。默认为true。 |
**返回值:**
| 类型 | 说明 |
| ---- | ---------------- |
| By | 返回By对象自身。 |
| --------- | ---------------------------------------- |
| [By](#by) | 返回指定目标控件的使能状态属性的By对象。 |
**示例:**
......@@ -255,13 +255,13 @@ focused(b?: boolean): By
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ---- | ---- | -------------------------- |
| b | boolean | 否 | 控件获焦状态,默认为true。 |
| b | boolean | 否 | 控件获焦状态,true:获焦,false:未获焦。默认为true。 |
**返回值:**
| 类型 | 说明 |
| ---- | ---------------- |
| By | 返回By对象自身。 |
| --------- | ---------------------------------------- |
| [By](#by) | 返回指定目标控件的获焦状态属性的By对象。 |
**示例:**
......@@ -281,13 +281,13 @@ selected(b?: boolean): By
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ---- | ---- | -------------------------------- |
| b | boolean | 否 | 指定控件被选中状态,默认为true。 |
| b | boolean | 否 | 指定控件被选中状态,true:被选中,false:未被选中。默认为true。 |
**返回值:**
| 类型 | 说明 |
| ---- | ---------------- |
| By | 返回By对象自身。 |
| --------- | ------------------------------------------ |
| [By](#by) | 返回指定目标控件的被选中状态属性的By对象。 |
**示例:**
......@@ -307,13 +307,13 @@ checked(b?: boolean): By
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ---- | ---- | --------------------------------- |
| b | boolean | 否 | 指定控件被勾选状态,默认为false。 |
| b | boolean | 否 | 指定控件被勾选状态,true:被勾选,false:未被勾选。默认为false。 |
**返回值:**
| 类型 | 说明 |
| ---- | -------------- |
| By | 返回By对象自身 |
| --------- | ------------------------------------------ |
| [By](#by) | 返回指定目标控件的被勾选状态属性的By对象。 |
**示例:**
......@@ -333,13 +333,13 @@ checkable(b?: boolean): By
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ---- | ---- | ------------------------------------- |
| b | boolean | 否 | 指定控件能否被勾选状态,默认为false。 |
| b | boolean | 否 | 指定控件能否被勾选状态,true:能被勾选,false:不能被勾选。默认为false。 |
**返回值:**
| 类型 | 说明 |
| ---- | ---------------- |
| By | 返回By对象自身。 |
| --------- | -------------------------------------------- |
| [By](#by) | 返回指定目标控件能否被勾选状态属性的By对象。 |
**示例:**
......@@ -358,14 +358,14 @@ isBefore(by: By): By
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ---- | ---- | ---------------- |
| by | By | 是 | 特征控件的属性。 |
| ------ | --------- | ---- | ---------------- |
| by | [By](#by) | 是 | 特征控件的属性。 |
**返回值:**
| 类型 | 说明 |
| ---- | ---------------- |
| By | 返回By对象自身。 |
| --------- | ---------------------------------------------------- |
| [By](#by) | 返回指定目标控件位于给出的特征属性控件之前的By对象。 |
**示例:**
......@@ -384,14 +384,14 @@ isAfter(by: By): By
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ---- | ---- | ---------------- |
| by | By | 是 | 特征控件的属性。 |
| ------ | --------- | ---- | ---------------- |
| by | [By](#by) | 是 | 特征控件的属性。 |
**返回值:**
| 类型 | 说明 |
| ---- | ---------------- |
| By | 返回By对象自身。 |
| --------- | ---------------------------------------------------- |
| [By](#by) | 返回指定目标控件位于给出的特征属性控件之后的By对象。 |
**示例:**
......@@ -589,8 +589,8 @@ getBounds(): Promise\<Rect>
**返回值:**
| 类型 | 说明 |
| -------------- | ------------------------------------- |
| Promise\<Rect> | 以Promise形式返回控件对象的边框信息。 |
| ------------------------ | ------------------------------------- |
| Promise\<[Rect](#rect9)> | 以Promise形式返回控件对象的边框信息。 |
**示例:**
......@@ -613,8 +613,8 @@ getBoundsCenter(): Promise\<Point>
**返回值:**
| 类型 | 说明 |
| --------------- | --------------------------------------- |
| Promise\<Point> | 以Promise形式返回控件对象的中心点信息。 |
| -------------------------- | --------------------------------------- |
| Promise\<[Point](#point9)> | 以Promise形式返回控件对象的中心点信息。 |
**示例:**
......@@ -638,7 +638,7 @@ isClickable(): Promise\<boolean>
| 类型 | 说明 |
| -------------- | ------------------------------------- |
| Promise\<boolean> | 以Promise形式返回控件对象可点击状态。 |
| Promise\<boolean> | 以Promise形式返回控件对象可点击状态,true:可点击,false:不可点击。 |
**示例:**
......@@ -667,7 +667,7 @@ isLongClickable(): Promise\<boolean>
| 类型 | 说明 |
| -------------- | ------------------------------------------- |
| Promise\<boolean> | 以Promise形式返回控件对象能否长按点击状态。 |
| Promise\<boolean> | 以Promise形式返回控件对象能否长按点击状态,true:可长按点击,false:不可长按点击。 |
**示例:**
......@@ -696,7 +696,7 @@ isChecked(): Promise\<boolean>
| 类型 | 说明 |
| -------------- | ------------------------------------- |
| Promise\<boolean> | 以Promise形式返回控件对象被勾选状态。 |
| Promise\<boolean> | 以Promise形式返回控件对象被勾选状态,true:被勾选,false:未被勾选。 |
**示例:**
......@@ -725,7 +725,7 @@ isCheckable(): Promise\<boolean>
| 类型 | 说明 |
| -------------- | ------------------------------------------- |
| Promise\<boolean> | 以Promise形式返回控件对象能否被勾选的属性。 |
| Promise\<boolean> | 以Promise形式返回控件对象能否被勾选的属性,true:可被勾选,false:不可被勾选。 |
**示例:**
......@@ -754,7 +754,7 @@ isScrollable(): Promise\<boolean>
| 类型 | 说明 |
| -------------- | ------------------------------------- |
| Promise\<boolean> | 以Promise形式返回控件对象可滑动状态。 |
| Promise\<boolean> | 以Promise形式返回控件对象可滑动状态,true:可滑动,false:不可滑动。 |
**示例:**
......@@ -784,7 +784,7 @@ isEnabled(): Promise\<boolean>
| 类型 | 说明 |
| -------------- | ------------------------------- |
| Promise\<boolean> | 以Promise形式返回控件使能状态。 |
| Promise\<boolean> | 以Promise形式返回控件使能状态,true:使能,false:未使能。 |
**示例:**
......@@ -814,7 +814,7 @@ isFocused(): Promise\<boolean>
| 类型 | 说明 |
| -------------- | ----------------------------------- |
| Promise\<boolean> | 以Promise形式返回控件对象是否获焦。 |
| Promise\<boolean> | 以Promise形式返回控件对象是否获焦,true:获焦,false:未获焦。 |
**示例:**
......@@ -843,7 +843,7 @@ isSelected(): Promise\<boolean>
| 类型 | 说明 |
| -------------- | -------------------- |
| Promise\<boolean> | 控件对象被选中的状态 |
| Promise\<boolean> | 控件对象被选中的状态,true:被选中,false:未被选中。 |
**示例:**
......@@ -913,14 +913,14 @@ scrollSearch(by: By): Promise\<UiComponent>
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ---- | ---- | -------------------- |
| by | By | 是 | 目标控件的属性要求。 |
| ------ | --------- | ---- | -------------------- |
| by | [By](#by) | 是 | 目标控件的属性要求。 |
**返回值:**
| 类型 | 说明 |
| --------------------- | ------------------------------------- |
| Promise\<UiComponent> | 以Promise形式返回找到的目标控件对象。 |
| ------------------------------------- | ------------------------------------- |
| Promise\<[UiComponent](#uicomponent)> | 以Promise形式返回找到的目标控件对象。 |
**示例:**
......@@ -991,8 +991,8 @@ dragTo(target: UiComponent): Promise\<void>
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ----------- | ---- | ---------- |
| target | UiComponent | 是 | 目标控件。 |
| ------ | --------------------------- | ---- | ---------- |
| target | [UiComponent](#uicomponent) | 是 | 目标控件。 |
**示例:**
......@@ -1016,8 +1016,8 @@ pinchOut(scale: number): Promise\<void>
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ----------- | ---- | ---------- |
| scale | number | 是 | 指定比例 |
| ------ | ------ | ---- | ---------------- |
| scale | number | 是 | 指定放大的比例。 |
**示例:**
......@@ -1040,8 +1040,8 @@ pinchIn(scale: number): Promise\<void>
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ----------- | ---- | ---------- |
| scale | number | 是 | 指定比例 |
| ------ | ------ | ---- | ---------------- |
| scale | number | 是 | 指定缩小的比例。 |
**示例:**
......@@ -1114,14 +1114,14 @@ findComponent(by: By): Promise\<UiComponent>
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ---- | ---- | -------------------- |
| by | By | 是 | 目标控件的属性要求。 |
| ------ | --------- | ---- | -------------------- |
| by | [By](#by) | 是 | 目标控件的属性要求。 |
**返回值:**
| 类型 | 说明 |
| --------------------- | --------------------------------- |
| Promise\<UiComponent> | 以Promise形式返回找到的控件对象。 |
| ------------------------------------- | --------------------------------- |
| Promise\<[UiComponent](#uicomponent)> | 以Promise形式返回找到的控件对象。 |
**示例:**
......@@ -1143,14 +1143,14 @@ findComponents(by: By): Promise\<Array\<UiComponent>>
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ---- | ---- | -------------------- |
| by | By | 是 | 目标控件的属性要求。 |
| ------ | --------- | ---- | -------------------- |
| by | [By](#by) | 是 | 目标控件的属性要求。 |
**返回值:**
| 类型 | 说明 |
| ----------------------------- | --------------------------------------- |
| Promise\<Array\<UiComponent>> | 以Promise形式返回找到的控件对象的列表。 |
| --------------------------------------------- | --------------------------------------- |
| Promise\<Array\<[UiComponent](#uicomponent)>> | 以Promise形式返回找到的控件对象的列表。 |
**示例:**
......@@ -1201,15 +1201,15 @@ waitForComponent(by: By, time: number): Promise\<UiComponent>
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | -------------------------------- |
| by | By | 是 | 目标控件的属性要求。 |
| ------ | --------- | ---- | -------------------------------- |
| by | [By](#by) | 是 | 目标控件的属性要求。 |
| time | number | 是 | 查找目标控件的持续时间。单位ms。 |
**返回值:**
| 类型 | 说明 |
| --------------------- | --------------------------------- |
| Promise\<UiComponent> | 以Promise形式返回找到的控件对象。 |
| ------------------------------------- | --------------------------------- |
| Promise\<[UiComponent](#uicomponent)> | 以Promise形式返回找到的控件对象。 |
**示例:**
......@@ -1231,8 +1231,8 @@ assertComponentExist(by: By): Promise\<void>
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ---- | ---- | -------------------- |
| by | By | 是 | 目标控件的属性要求。 |
| ------ | --------- | ---- | -------------------- |
| by | [By](#by) | 是 | 目标控件的属性要求。 |
**示例:**
......@@ -1522,7 +1522,7 @@ setDisplayRotationEnabled(enabled: boolean): Promise\<void>
| 参数名 | 类型 | 必填 | 说明 |
| ------- | ---- | ---- | -------------------- |
| enabled | boolean | 是 | 能否旋转屏幕的标识。 |
| enabled | boolean | 是 | 能否旋转屏幕的标识,true:可以旋转,false:不可以旋转。 |
**示例:**
......@@ -1758,8 +1758,8 @@ getBounds(): Promise\<Rect>
**返回值:**
| 类型 | 说明 |
| -------------- | --------------------------------- |
| Promise\<Rect> | 以Promise形式返回窗口的边框信息。 |
| ------------------------ | --------------------------------- |
| Promise\<[Rect](#rect9)> | 以Promise形式返回窗口的边框信息。 |
**示例:**
......@@ -1831,7 +1831,7 @@ isFocused(): Promise\<boolean>
| 类型 | 说明 |
| -------------- | ----------------------------------- |
| Promise\<boolean> | 以Promise形式返回窗口对象是否获焦。 |
| Promise\<boolean> | 以Promise形式返回窗口对象是否获焦,true:获焦,false:未获焦。 |
**示例:**
......@@ -1855,7 +1855,7 @@ isActived(): Promise\<boolean>
| 类型 | 说明 |
| -------------- | --------------------------------------------- |
| Promise\<boolean> | 以Promise形式返回窗口对象是否为用户交互窗口。 |
| Promise\<boolean> | 以Promise形式返回窗口对象是否为用户交互窗口,true:交互窗口,false:非交互窗口。 |
**示例:**
......@@ -1879,7 +1879,7 @@ focus(): Promise\<boolean>
| 类型 | 说明 |
| -------------- | ----------------------------------- |
| Promise\<boolean> | 以Promise形式返回操作是否成功完成。 |
| Promise\<boolean> | 以Promise形式返回操作是否成功完成,true:操作已完成,false:操作未完成。 |
**示例:**
......@@ -1910,7 +1910,7 @@ moveTo(x: number, y: number): Promise\<boolean>
| 类型 | 说明 |
| -------------- | ----------------------------------- |
| Promise\<boolean> | 以Promise形式返回操作是否成功完成。 |
| Promise\<boolean> | 以Promise形式返回操作是否成功完成,true:操作已完成,false:操作未完成。 |
**示例:**
......@@ -1942,7 +1942,7 @@ resize(wide: number, height: number, direction: ResizeDirection): Promise\<boole
| 类型 | 说明 |
| -------------- | ----------------------------------- |
| Promise\<boolean> | 以Promise形式返回操作是否成功完成。 |
| Promise\<boolean> | 以Promise形式返回操作是否成功完成,true:操作已完成,false:操作未完成。 |
**示例:**
......@@ -1966,7 +1966,7 @@ split(): Promise\<boolean>
| 类型 | 说明 |
| -------------- | ----------------------------------- |
| Promise\<boolean> | 以Promise形式返回操作是否成功完成。 |
| Promise\<boolean> | 以Promise形式返回操作是否成功完成,true:操作已完成,false:操作未完成。 |
**示例:**
......@@ -1990,7 +1990,7 @@ maximize(): Promise\<boolean>
| 类型 | 说明 |
| -------------- | ----------------------------------- |
| Promise\<boolean> | 以Promise形式返回操作是否成功完成。 |
| Promise\<boolean> | 以Promise形式返回操作是否成功完成,true:操作已完成,false:操作未完成。 |
**示例:**
......@@ -2014,7 +2014,7 @@ minimize(): Promise\<boolean>
| 类型 | 说明 |
| -------------- | ----------------------------------- |
| Promise\<boolean> | 以Promise形式返回操作是否成功完成。 |
| Promise\<boolean> | 以Promise形式返回操作是否成功完成,true:操作已完成,false:操作未完成。 |
**示例:**
......@@ -2038,7 +2038,7 @@ resume(): Promise\<boolean>
| 类型 | 说明 |
| -------------- | ----------------------------------- |
| Promise\<boolean> | 以Promise形式返回操作是否成功完成。 |
| Promise\<boolean> | 以Promise形式返回操作是否成功完成,true:操作已完成,false:操作未完成。 |
**示例:**
......@@ -2062,7 +2062,7 @@ close(): Promise\<boolean>
| 类型 | 说明 |
| -------------- | ----------------------------------- |
| Promise\<boolean> | 以Promise形式返回操作是否成功完成。 |
| Promise\<boolean> | 以Promise形式返回操作是否成功完成,true:操作已完成,false:操作未完成。 |
**示例:**
......@@ -2096,8 +2096,8 @@ static create(fingers: number, steps: number): PointerMatrix
**返回值:**
| 类型 | 说明 |
| ------------- | ----------------------------- |
| PointerMatrix | 返回构造的PointerMatrix对象。 |
| -------------------------------- | ----------------------------- |
| [PointerMatrix](#pointermatrix9) | 返回构造的PointerMatrix对象。 |
**示例:**
......@@ -2189,8 +2189,8 @@ async function demo() {
设备显示器的显示方向。
| 名称 | 说明 |
| ------------ | ------------------------------------ |
| ------------ | ---------------------------------------- |
| ROTATION_0 | 设备显示器不旋转,初始形态垂直显示。 |
| ROTATION_90 | 设备显顺时针旋转90°,水平显示。 |
| ROTATION_180 | 设备显顺时针旋转180°,逆向垂直显示。 |
| ROTATION_270 | 设备显顺时针旋转270°,逆向水平显示。 |
| ROTATION_90 | 设备显示器顺时针旋转90°,水平显示。 |
| ROTATION_180 | 设备显示器顺时针旋转180°,逆向垂直显示。 |
| ROTATION_270 | 设备显示器顺时针旋转270°,逆向水平显示。 |
......@@ -13,11 +13,11 @@ vibrator模块提供控制马达振动的能力,如通过接口控制马达启
import vibrator from '@ohos.vibrator';
```
## vibrator.vibrate
## vibrator.startVibration<sup>9+</sup>
vibrate(duration: number): Promise&lt;void&gt;
startVibration(effect: VibrateEffect, attribute: VibrateAttribute, callback: AsyncCallback&lt;void&gt;): void
按照指定持续时间触发马达振动。
按照指定振动效果和振动属性触发马达振动。
**需要权限**:ohos.permission.VIBRATE
......@@ -26,28 +26,36 @@ vibrate(duration: number): Promise&lt;void&gt;
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ------ | ---- | ---------------------- |
| duration | number | 是 | 马达振动时长, 单位ms。 |
**返回值:**
| 类型 | 说明 |
| ------------------- | -------------------------------------- |
| Promise&lt;void&gt; | Promise对象。无返回结果的Promise对象。 |
| --------- | -------------------------------------- | ---- | :--------------------------------------------------------- |
| effect | [VibrateEffect](#vibrateeffect9) | 是 | 马达振动效果。 |
| attribute | [VibrateAttribute](#vibrateattribute9) | 是 | 马达振动属性。 |
| callback | AsyncCallback&lt;void&gt; | 是 | 回调函数。当马达振动成功,err为undefined,否则为错误对象。 |
**示例:**
示例:
```js
vibrator.vibrate(1000).then(()=>{
console.log("Promise returned to indicate a successful vibration.");
```js
try {
vibrator.startVibration({
type:'time',
duration:1000,
},{
id:0,
usage: 'alarm'
}, (error)=>{
console.log("error.code"+error.code+"error.message"+error.message);
if(error){
console.log('vibrate fail, error.code: ' + error.code + 'error.message: ', + error.message);
}else{
console.log('Callback returned to indicate a successful vibration.');
}
});
```
} catch(err) {
console.info('errCode: ' + err.code + ' ,msg: ' + err.message);
}
```
## vibrator.vibrate<sup>9+</sup>
## vibrator.startVibration<sup>9+</sup>
vibrate(effect: VibrateEffect, attribute: VibrateAttribute): Promise&lt;void&gt;
startVibration(effect: VibrateEffect, attribute: VibrateAttribute): Promise&lt;void&gt;
按照指定振动效果和振动属性触发马达振动。
......@@ -58,7 +66,7 @@ vibrate(effect: VibrateEffect, attribute: VibrateAttribute): Promise&lt;void&gt;
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| --------- | -------------------------------------- | ---- | :------------- |
| --------- | -------------------------------------- | ---- | -------------- |
| effect | [VibrateEffect](#vibrateeffect9) | 是 | 马达振动效果。 |
| attribute | [VibrateAttribute](#vibrateattribute9) | 是 | 马达振动属性。 |
......@@ -70,112 +78,219 @@ vibrate(effect: VibrateEffect, attribute: VibrateAttribute): Promise&lt;void&gt;
**示例:**
```js
vibrator.vibrate({
```js
try {
vibrator.startVibration({
type: 'time',
duration: 1000
}, {
}, {
id: 0,
usage: 'alarm'
}).then(()=>{
console.log("Promise returned to indicate a successful vibration");
}).catch((error)=>{
console.log("error.code" + error.code + "error.message" + error.message);
})
```
}).then(()=>{
console.log('Promise returned to indicate a successful vibration');
}).catch((error)=>{
console.log('error.code' + error.code + 'error.message' + error.message);
})
} catch(err) {
console.info('errCode: ' + err.code + ' ,msg: ' + err.message);
}
```
## vibrator.vibrate
## vibrator.stopVibration<sup>9+</sup>
vibrate(duration: number, callback?: AsyncCallback&lt;void&gt;): void
stopVibration(stopMode: VibratorStopMode, callback: AsyncCallback&lt;void&gt;): void
按照指定持续时间触发马达振动
按照要停止指定的振动模式来停止马达的振动。如果要停止的振动模式与触发马达振动时的模式不相同,则调用本接口会失败
**需要权限**:ohos.permission.VIBRATE
**系统能力**:SystemCapability.Sensors.MiscDevice
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------------- | ---- | ---------------------------------------------------------- |
| duration | number | 是 | 马达振动时长, 单位ms。 |
| callback | AsyncCallback&lt;void&gt; | 否 | 回调函数。当马达振动成功,err为undefined,否则为错误对象。 |
| -------- | ------------------------------------- | ---- | ------------------------------------------------------------ |
| stopMode | [VibratorStopMode](#vibratorstopmode) | 是 | 马达停止指定的振动模式。 |
| callback | AsyncCallback&lt;void&gt; | 是 | 回调函数。当马达停止振动成功,err为undefined,否则为错误对象。 |
**示例:**
```js
vibrator.vibrate(1000,function(error){
try {
vibrator.stopVibration(vibrator.VibratorStopMode.VIBRATOR_STOP_MODE_PRESET, function(error){
if(error){
console.log("error.code" + error.code + "error.message" + error.message);
console.log('error.code' + error.code + 'error.message' + error.message);
}else{
console.log("Callback returned to indicate a successful vibration.");
console.log('Callback returned to indicate successful.');
}
})
} catch(err) {
console.info('errCode: ' + err.code + ' ,msg: ' + err.message);
}
```
## vibrator.stopVibration<sup>9+</sup>
## vibrator.vibrate
vibrate(effectId: EffectId): Promise&lt;void&gt;
stopVibration(stopMode: VibratorStopMode): Promise&lt;void&gt;
按照预置振动效果触发马达振动
按照要停止指定的振动模式来停止马达的振动。如果要停止的振动模式与触发马达振动时的模式不相同,则调用本接口会失败
**需要权限**:ohos.permission.VIBRATE
**系统能力**:SystemCapability.Sensors.MiscDevice
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | --------------------- | ---- | ------------------ |
| effectId | [EffectId](#effectid) | 是 | 预置的振动效果ID。 |
| -------- | ------------------------------------- | ---- | ------------------------ |
| stopMode | [VibratorStopMode](#vibratorstopmode) | 是 | 马达停止指定的振动模式。 |
**返回值:**
| 类型 | 说明 |
| ------------------- | -------------------------------------- |
| Promise&lt;void&gt; | Promise对象。无返回结果的Promise对象。 |
**示例:**
```js
vibrator.vibrate(vibrator.EffectId.EFFECT_CLOCK_TIMER).then(()=>{
console.log("Promise returned to indicate a successful vibration.");
try {
vibrator.stopVibration(vibrator.VibratorStopMode.VIBRATOR_STOP_MODE_PRESET).then(()=>{
console.log('Promise returned to indicate a successful vibration.');
}, (error)=>{
console.log("error.code" + error.code + "error.message" + error.message);
console.log('error.code' + error.code + 'error.message' + error.message);
});
} catch(err) {
console.info('errCode: ' + err.code + ' ,msg: ' + err.message);
}
```
## EffectId
## vibrator.vibrate
马达振动效果的字符串。
vibrate(effectId: EffectId, callback?: AsyncCallback&lt;void&gt;): void
**系统能力**:以下各项对应的系统能力均为SystemCapability.Sensors.MiscDevice
按照指定振动效果触发马达振动。
| 名称 | 默认值 | 说明 |
| ------------------ | -------------------- | ------------------ |
| EFFECT_CLOCK_TIMER | "haptic.clock.timer" | 预置的振动效果ID。 |
## VibratorStopMode
马达要停止指定的振动模式。
**系统能力**:以下各项对应的系统能力均为SystemCapability.Sensors.MiscDevice
| 名称 | 默认值 | 说明 |
| ------------------------- | -------- | ------------------------------------------------------------ |
| VIBRATOR_STOP_MODE_TIME | "time" | 停止模式为duration模式的振动。即触发振动时参数类型为number,参数本身为振动持续时间的触发方式。 |
| VIBRATOR_STOP_MODE_PRESET | "preset" | 停止模式为预置EffectId的振动。即触发振动时参数类型为EffectId,参数本身为马达振动效果的字符串的触发方式。 |
## VibrateEffect<sup>9+</sup>
马达振动效果。
**系统能力**:以下各项对应的系统能力均为SystemCapability.Sensors.MiscDevice
| 类型 | 说明 |
| -------------------------------- | ------------------------------ |
| [VibrateTime](#vibratetime9) | 按照指定持续时间触发马达振动。 |
| [VibratePreset](#vibratepreset9) | 按照预置振动类型触发马达振动。 |
## VibrateTime<sup>9+</sup>
马达振动时长。
**系统能力**:以下各项对应的系统能力均为SystemCapability.Sensors.MiscDevice
| 名称 | 默认值 | 说明 |
| -------- | ------ | ------------------------------ |
| type | "time" | 按照指定持续时间触发马达振动。 |
| duration | - | 马达振动时长, 单位ms。 |
## VibratePreset<sup>9+</sup>
马达预置振动类型。
**系统能力**:以下各项对应的系统能力均为SystemCapability.Sensors.MiscDevice
| 名称 | 默认值 | 说明 |
| -------- | -------- | ------------------------------ |
| type | "preset" | 按照预置振动效果触发马达振动。 |
| effectId | - | 预置的振动效果ID。 |
| count | - | 重复振动的次数。 |
## VibrateAttribute<sup>9+</sup>
马达振动属性。
**系统能力**:以下各项对应的系统能力均为SystemCapability.Sensors.MiscDevice
| 名称 | 默认值 | 说明 |
| ----- | ------ | -------------- |
| id | 0 | 振动器id。 |
| usage | - | 马达振动场景。 |
## Usage<sup>9+</sup>
振动使用场景。
**系统能力**:以下各项对应的系统能力均为SystemCapability.Sensors.MiscDevice
| 名称 | 类型 | 说明 |
| ---------------- | ------ | ------------------------------ |
| unknown | string | 没有明确使用场景,最低优先级。 |
| alarm | string | 用于警报振动的场景。 |
| ring | string | 用于铃声振动的场景。 |
| notification | string | 用于通知振动的场景。 |
| communication | string | 用于通信振动的场景。 |
| touch | string | 用于触摸振动的场景。 |
| media | string | 用于多媒体振动的场景。 |
| physicalFeedback | string | 用于物理反馈振动的场景。 |
| simulateReality | string | 用于模拟现实振动的场景。 |
## vibrator.vibrate<sup>(deprecated)</sup>
vibrate(duration: number): Promise&lt;void&gt;
按照指定持续时间触发马达振动。
从API version 9 开始不再维护,建议使用 [vibrator.startVibration](#vibratorstartvibration9-1) 代替。
**需要权限**:ohos.permission.VIBRATE
**系统能力**:SystemCapability.Sensors.MiscDevice
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------------- | ---- | ---------------------------------------------------------- |
| effectId | [EffectId](#effectid) | 是 | 预置的振动效果ID。 |
| callback | AsyncCallback&lt;void&gt; | 否 | 回调函数。当马达振动成功,err为undefined,否则为错误对象。 |
| -------- | ------ | ---- | ---------------------- |
| duration | number | 是 | 马达振动时长, 单位ms。 |
**返回值:**
| 类型 | 说明 |
| ------------------- | -------------------------------------- |
| Promise&lt;void&gt; | Promise对象。无返回结果的Promise对象。 |
**示例:**
```js
vibrator.vibrate(vibrator.EffectId.EFFECT_CLOCK_TIMER, function(error){
if(error){
console.log("error.code" + error.code + "error.message" + error.message);
}else{
console.log("Callback returned to indicate a successful vibration.");
}
})
vibrator.vibrate(1000).then(()=>{
console.log('Promise returned to indicate a successful vibration.');
}, (error)=>{
console.log('error.code' + error.code + 'error.message' + error.message);
});
```
## vibrator.vibrate<sup>9+</sup>
## vibrator.vibrate<sup>(deprecated)</sup>
vibrate(effect: VibrateEffect, attribute: VibrateAttribute, callback: AsyncCallback&lt;void&gt;): void
vibrate(duration: number, callback?: AsyncCallback&lt;void&gt;): void
按照指定振动效果和振动属性触发马达振动。
按照指定持续时间触发马达振动。
从API version 9 开始不再维护,建议使用 [vibrator.startVibration](#vibratorstartvibration9) 代替。
**需要权限**:ohos.permission.VIBRATE
......@@ -184,43 +299,40 @@ vibrate(effect: VibrateEffect, attribute: VibrateAttribute, callback: AsyncCallb
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| --------- | -------------------------------------- | ---- | :--------------------------------------------------------- |
| effect | [VibrateEffect](#vibrateeffect9) | 是 | 马达振动效果。 |
| attribute | [VibrateAttribute](#vibrateattribute9) | 是 | 马达振动属性。 |
| callback | AsyncCallback&lt;void&gt; | 是 | 回调函数。当马达振动成功,err为undefined,否则为错误对象。 |
| -------- | ------------------------- | ---- | ---------------------------------------------------------- |
| duration | number | 是 | 马达振动时长, 单位ms。 |
| callback | AsyncCallback&lt;void&gt; | 否 | 回调函数。当马达振动成功,err为undefined,否则为错误对象。 |
示例:
**示例:**
```js
vibrator.vibrate({
type:'time',
duration:1000,
},{
id:0,
usage: 'alarm'
}, (error)=>{
```js
vibrator.vibrate(1000,function(error){
if(error){
console.log("vibrate fail, error.code:" + error.code + ",error.message:" + error.message);
console.log('error.code' + error.code + 'error.message' + error.message);
}else{
console.log("Callback returned to indicate a successful vibration.");
console.log('Callback returned to indicate a successful vibration.');
}
});
```
})
```
## vibrator.stop
stop(stopMode: VibratorStopMode): Promise&lt;void&gt;
## vibrator.vibrate<sup>(deprecated)</sup>
按照要停止指定的振动模式来停止马达的振动。如果要停止的振动模式与触发马达振动时的模式不相同,则调用本接口会失败。
vibrate(effectId: EffectId): Promise&lt;void&gt;
按照预置振动效果触发马达振动。
从API version 9 开始不再维护,建议使用 [vibrator.startVibration](#vibratorstartvibration9-1) 代替。
**需要权限**:ohos.permission.VIBRATE
**系统能力**:SystemCapability.Sensors.MiscDevice
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------------------------- | ---- | ------------------------ |
| stopMode | [VibratorStopMode](#vibratorstopmode) | 是 | 马达停止指定的振动模式。 |
| -------- | --------------------- | ---- | ------------------ |
| effectId | [EffectId](#effectid) | 是 | 预置的振动效果ID。 |
**返回值:**
......@@ -231,125 +343,107 @@ stop(stopMode: VibratorStopMode): Promise&lt;void&gt;
**示例:**
```js
vibrator.stop(vibrator.VibratorStopMode.VIBRATOR_STOP_MODE_PRESET).then(()=>{
console.log("Promise returned to indicate a successful vibration.");
}, (error)=>{
console.log("error.code" + error.code + "error.message" + error.message);
});
vibrator.vibrate(vibrator.EffectId.EFFECT_CLOCK_TIMER).then(()=>{
console.log('Promise returned to indicate a successful vibration.');
}, (error)=>{
console.log('error.code' + error.code + 'error.message' + error.message);
});
```
## vibrator.stop
## vibrator.vibrate<sup>(deprecated)</sup>
stop(stopMode: VibratorStopMode, callback?: AsyncCallback&lt;void&gt;): void;
vibrate(effectId: EffectId, callback?: AsyncCallback&lt;void&gt;): void
按照要停止指定的振动模式来停止马达的振动。如果要停止的振动模式与触发马达振动时的模式不相同,则调用本接口会失败。
按照指定振动效果触发马达振动。
从API version 9 开始不再维护,建议使用 [vibrator.startVibration](#vibratorstartvibration9) 代替。
**需要权限**:ohos.permission.VIBRATE
**系统能力**:SystemCapability.Sensors.MiscDevice
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------------------------- | ---- | ------------------------------------------------------------ |
| stopMode | [VibratorStopMode](#vibratorstopmode) | 是 | 马达停止指定的振动模式。 |
| callback | AsyncCallback&lt;void&gt; | 否 | 回调函数。当马达停止振动成功,err为undefined,否则为错误对象。 |
| -------- | ------------------------- | ---- | ---------------------------------------------------------- |
| effectId | [EffectId](#effectid) | 是 | 预置的振动效果ID。 |
| callback | AsyncCallback&lt;void&gt; | 否 | 回调函数。当马达振动成功,err为undefined,否则为错误对象。 |
**示例:**
```js
vibrator.stop(vibrator.VibratorStopMode.VIBRATOR_STOP_MODE_PRESET, function(error){
vibrator.vibrate(vibrator.EffectId.EFFECT_CLOCK_TIMER, function(error){
if(error){
console.log("error.code" + error.code + "error.message" + error.message);
console.log('error.code' + error.code + 'error.message' + error.message);
}else{
console.log("Callback returned to indicate successful.");
console.log('Callback returned to indicate a successful vibration.');
}
})
})
```
## vibrator.stop<sup>(deprecated)</sup>
## EffectId
马达振动效果的字符串。
**系统能力**:以下各项对应的系统能力均为SystemCapability.Sensors.MiscDevice
| 名称 | 默认值 | 说明 |
| ------------------ | -------------------- | ------------------ |
| EFFECT_CLOCK_TIMER | "haptic.clock.timer" | 预置的振动效果ID。 |
stop(stopMode: VibratorStopMode): Promise&lt;void&gt;
## VibratorStopMode
按照要停止指定的振动模式来停止马达的振动。如果要停止的振动模式与触发马达振动时的模式不相同,则调用本接口会失败。
马达要停止指定的振动模式
从API version 9 开始不再维护,建议使用 [vibrator.stopVibration](#vibratorstopvibration9-1) 代替
**系统能力**:以下各项对应的系统能力均为SystemCapability.Sensors.MiscDevice
**需要权限**:ohos.permission.VIBRATE
| 名称 | 默认值 | 说明 |
| ------------------------- | -------- | ------------------------------------------------------------ |
| VIBRATOR_STOP_MODE_TIME | "time" | 停止模式为duration模式的振动。即触发振动时参数类型为number,参数本身为振动持续时间的触发方式。 |
| VIBRATOR_STOP_MODE_PRESET | "preset" | 停止模式为预置EffectId的振动。即触发振动时参数类型为EffectId,参数本身为马达振动效果的字符串的触发方式。 |
**系统能力**:SystemCapability.Sensors.MiscDevice
## VibrateEffect<sup>9+</sup>
**参数:**
马达振动效果。
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------------------------- | ---- | ------------------------ |
| stopMode | [VibratorStopMode](#vibratorstopmode) | 是 | 马达停止指定的振动模式。 |
**系统能力**:以下各项对应的系统能力均为SystemCapability.Sensors.MiscDevice
**返回值:**
| 类型 | 说明 |
| -------------------------------- | ------------------------------ |
| [VibrateTime](#vibratetime9) | 按照指定持续时间触发马达振动。 |
| [VibratePreset](#vibratepreset9) | 按照预置振动类型触发马达振动。 |
## VibrateTime<sup>9+</sup>
马达振动时长。
**系统能力**:以下各项对应的系统能力均为SystemCapability.Sensors.MiscDevice
| 名称 | 默认值 | 说明 |
| -------- | ------ | ------------------------------ |
| type | "time" | 按照指定持续时间触发马达振动。 |
| duration | - | 马达振动时长, 单位ms。 |
| ------------------- | -------------------------------------- |
| Promise&lt;void&gt; | Promise对象。无返回结果的Promise对象。 |
## VibratePreset<sup>9+</sup>
**示例:**
马达预置振动类型。
```js
vibrator.stop(vibrator.VibratorStopMode.VIBRATOR_STOP_MODE_PRESET).then(()=>{
console.log('Promise returned to indicate a successful vibration.');
}, (error)=>{
console.log('error.code' + error.code + 'error.message' + error.message);
});
```
**系统能力**:以下各项对应的系统能力均为SystemCapability.Sensors.MiscDevice
| 名称 | 默认值 | 说明 |
| -------- | -------- | ------------------------------ |
| type | "preset" | 按照预置振动效果触发马达振动。 |
| effectId | - | 预置的振动效果ID。 |
| count | - | 重复振动的次数。 |
## vibrator.stop<sup>(deprecated)</sup>
## VibrateAttribute<sup>9+</sup>
stop(stopMode: VibratorStopMode, callback?: AsyncCallback&lt;void&gt;): void
马达振动属性。
按照要停止指定的振动模式来停止马达的振动。如果要停止的振动模式与触发马达振动时的模式不相同,则调用本接口会失败。
**系统能力**:以下各项对应的系统能力均为SystemCapability.Sensors.MiscDevice
从API version 9 开始不再维护,建议使用 [vibrator.stopVibration](#vibratorstopvibration9) 代替。
| 名称 | 默认值 | 说明 |
| ----- | ------ | -------------- |
| id | 0 | 振动器id。 |
| usage | - | 马达振动场景。 |
**需要权限**:ohos.permission.VIBRATE
## Usage<sup>9+</sup>
**系统能力**:SystemCapability.Sensors.MiscDevice
振动使用场景。
**参数:**
**系统能力**:以下各项对应的系统能力均为SystemCapability.Sensors.MiscDevice
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------------------------- | ---- | ------------------------------------------------------------ |
| stopMode | [VibratorStopMode](#vibratorstopmode) | 是 | 马达停止指定的振动模式。 |
| callback | AsyncCallback&lt;void&gt; | 否 | 回调函数。当马达停止振动成功,err为undefined,否则为错误对象。 |
| 名称 | 类型 | 说明 |
| ---------------- | ------ | ------------------------------ |
| unknown | string | 没有明确使用场景,最低优先级。 |
| alarm | string | 用于警报振动的场景。 |
| ring | string | 用于铃声振动的场景。 |
| notification | string | 用于通知振动的场景。 |
| communication | string | 用于通信振动的场景。 |
| touch | string | 用于触摸振动的场景。 |
| media | string | 用于多媒体振动的场景。 |
| physicalFeedback | string | 用于物理反馈振动的场景。 |
| simulateReality | string | 用于模拟现实振动的场景。 |
**示例:**
```js
vibrator.stop(vibrator.VibratorStopMode.VIBRATOR_STOP_MODE_PRESET, function(error){
if(error){
console.log('error.code' + error.code + 'error.message' + error.message);
}else{
console.log('Callback returned to indicate successful.');
}
})
```
......@@ -32,7 +32,8 @@ Blank(min?: number&nbsp;|&nbsp;string)
## 示例
### 示例1
Blank组件在横竖屏占满空余空间效果。
```ts
// xxx.ets
@Entry
......@@ -57,3 +58,37 @@ struct BlankExample {
横屏状态
![zh-cn_image_0000001174104388](figures/zh-cn_image_0000001174104388.gif)
### 示例2
Blank组件的父组件未设置宽度时,min参数的使用效果。
```ts
// xxx.ets
@Entry
@Component
struct BlankExample {
build() {
Column({ space: 20 }) {
// blank父组件不设置宽度时,Blank失效,可以通过设置min最小宽度填充固定宽度
Row() {
Text('Bluetooth').fontSize(18)
Blank().color(Color.Yellow)
Toggle({ type: ToggleType.Switch })
}.backgroundColor(0xFFFFFF).borderRadius(15).padding({ left: 12 })
Row() {
Text('Bluetooth').fontSize(18)
// 设置最小宽度为160
Blank('160').color(Color.Yellow)
Toggle({ type: ToggleType.Switch })
}.backgroundColor(0xFFFFFF).borderRadius(15).padding({ left: 12 })
}.backgroundColor(0xEFEFEF).padding(20).width('100%')
}
}
```
Blank父组件未设置宽度时,子组件间无空白填充,使用min参数设置填充尺寸
![blankmin](figures/blankmin.png)
......@@ -14,7 +14,7 @@
CheckboxGroup(options?: { group?: string })
创建多选框群组,可以控制群组内的Checkbox全选或者不全选,相同group的Checkbox和CheckboxGroup为同一群组。
创建多选框群组,可以控制群组内的Checkbox全选或者不全选,group值相同的Checkbox和CheckboxGroup为同一群组。
**参数:**
......@@ -39,13 +39,13 @@ CheckboxGroup(options?: { group?: string })
| 名称 | 功能描述 |
| -------- | -------- |
| onChange (callback: (event: CheckboxGroupResult) => void ) |CheckboxGroup的选中状态或群组内的Checkbox的选中状态发生变化时,触发回调。|
| onChange (callback: (event: [CheckboxGroupResult](#checkboxgroupresult对象说明)) => void ) |CheckboxGroup的选中状态或群组内的Checkbox的选中状态发生变化时,触发回调。|
## CheckboxGroupResult对象说明
| 名称 | 类型 | 描述 |
| ------ | ------ | ------- |
| name | Array&lt;string&gt; | 群组内所有被选中的多选框名称。 |
| status | SelectStatus | 选中状态。 |
| status | [SelectStatus](#selectstatus枚举说明) | 选中状态。 |
## SelectStatus枚举说明
......@@ -66,18 +66,19 @@ struct CheckboxExample {
build() {
Scroll() {
Column() {
// 全选按钮
Flex({ justifyContent: FlexAlign.Start, alignItems: ItemAlign.Center }) {
CheckboxGroup({ group: 'checkboxGroup' })
.selectedColor(0xed6f21)
.onChange((itemName: CheckboxGroupResult) => {
console.info("TextPicker::dialogResult is" + JSON.stringify(itemName))
console.info("checkbox group content" + JSON.stringify(itemName))
})
Text('select all').fontSize(20)
Text('Select All').fontSize(20)
}
// 选项1
Flex({ justifyContent: FlexAlign.Start, alignItems: ItemAlign.Center }) {
Checkbox({ name: 'checkbox1', group: 'checkboxGroup' })
.select(true)
.selectedColor(0x39a2db)
.onChange((value: boolean) => {
console.info('Checkbox1 change is' + value)
......@@ -85,9 +86,9 @@ struct CheckboxExample {
Text('Checkbox1').fontSize(20)
}
// 选项2
Flex({ justifyContent: FlexAlign.Start, alignItems: ItemAlign.Center }) {
Checkbox({ name: 'checkbox2', group: 'checkboxGroup' })
.select(false)
.selectedColor(0x39a2db)
.onChange((value: boolean) => {
console.info('Checkbox2 change is' + value)
......@@ -95,9 +96,9 @@ struct CheckboxExample {
Text('Checkbox2').fontSize(20)
}
// 选项3
Flex({ justifyContent: FlexAlign.Start, alignItems: ItemAlign.Center }) {
Checkbox({ name: 'checkbox3', group: 'checkboxGroup' })
.select(true)
.selectedColor(0x39a2db)
.onChange((value: boolean) => {
console.info('Checkbox3 change is' + value)
......@@ -109,4 +110,10 @@ struct CheckboxExample {
}
}
```
![](figures/checkboxgroup.gif)
多选框组三种状态图示:
![](figures/checkboxgroup1.png)
![](figures/checkboxgroup2.png)
![](figures/checkboxgroup3.png)
......@@ -24,7 +24,7 @@ DataPanel(options:{values: number[], max?: number, type?: DataPanelType})
| ----------------- | -------- | ----- | -------- |
| values | number[] | 是 | 数据值列表,最大支持9个数据。 |
| max | number | 否 | -&nbsp;max大于0,表示数据的最大值。<br/>-&nbsp;max小于等于0,max等于value数组各项的和,按比例显示。<br/>默认值:100 |
| type<sup>8+</sup> | DataPanelType | 否 | 数据面板的类型。<br/>默认值:DataPanelType.Circle |
| type<sup>8+</sup> | [DataPanelType](#datapaneltype枚举说明) | 否 | 数据面板的类型。<br/>默认值:DataPanelType.Circle |
## DataPanelType枚举说明
......
......@@ -47,6 +47,7 @@ struct DividerExample {
Divider()
Row().width('100%').height(40).backgroundColor(0xF1F3F5)
// 纵向分割线
Text('Vertical divider').fontSize(9).fontColor(0xCCCCCC)
Flex({ alignItems: ItemAlign.Center, wrap: FlexWrap.Wrap }) {
Text('bravery')
......@@ -56,6 +57,7 @@ struct DividerExample {
Text('upward')
}.width(250)
// 设置分割线宽度和端点样式
Text('Custom Styles').fontSize(9).fontColor(0xCCCCCC)
Row().width('100%').height(40).backgroundColor(0xF1F3F5)
Divider().vertical(false).strokeWidth(5).color(0x2788D9).lineCap(LineCapStyle.Round)
......
......@@ -21,7 +21,7 @@ Gauge(options:{value: number, min?: number, max?: number})
| 参数名 | 参数类型 | 必填 | 参数描述 |
| -------- | -------- | -------- | -------- |
| value | number | 是 | 当前数据值。 |
| value | number | 是 | 量规图的当前数据值,即图中指针指向位置。用于组件创建时量规图初始值的预置。 |
| min | number | 否 | 当前数据段最小值。<br/>默认值:0 |
| max | number | 否 | 当前数据段最大值。<br/>默认值:100 |
......@@ -31,11 +31,11 @@ Gauge(options:{value: number, min?: number, max?: number})
| 名称 | 参数类型 | 描述 |
| -------- | -------- | -------- |
| value | number | 设置当前数据图表的值。<br/>默认值:0 |
| startAngle | number | 设置起始角度位置,时钟0点为0度,顺时针方向为正角度。<br/>默认值:-150 |
| endAngle | number | 设置终止角度位置,时钟0点为0度,顺时针方向为正角度。<br/>默认值:150 |
| colors | Array&lt;ColorStop&gt; | 设置图表的颜色,支持分段颜色设置。 |
| strokeWidth | Length | 设置环形图表的环形厚度。 |
| value | number | 设置量规图的数据值,可用于动态修改量规图的数据值。<br/>默认值:0 |
| startAngle | number | 设置起始角度位置,时钟0点为0度,顺时针方向为正角度。<br/>默认值:0 |
| endAngle | number | 设置终止角度位置,时钟0点为0度,顺时针方向为正角度。<br/>默认值:360 |
| colors | Array&lt;[ColorStop](#colorstop)&gt; | 设置量规图的颜色,支持分段颜色设置。 |
| strokeWidth | Length | 设置环形量规图的环形厚度。 |
## ColorStop
......@@ -55,15 +55,30 @@ Gauge(options:{value: number, min?: number, max?: number})
@Component
struct GaugeExample {
build() {
Column() {
Gauge({ value: 50, min: 0, max: 100 })
.startAngle(210).endAngle(150)
.colors([[0x317AF7, 1], [0x5BA854, 1], [0xE08C3A, 1], [0x9C554B, 1], [0xD94838, 1]])
.strokeWidth(20)
Column({ space: 20 }) {
// 使用默认的min和max为0-100,角度范围默认0-360,value值设置
// 参数中设置当前值为75
Gauge({ value: 75 })
.width(200).height(200)
.colors([[0x317AF7, 1], [0x5BA854, 1], [0xE08C3A, 1], [0x9C554B, 1]])
// 参数设置当前值为75,属性设置值为25,属性设置优先级高
Gauge({ value: 75 })
.value(25) //属性和参数都设置时以参数为准
.width(200).height(200)
.colors([[0x317AF7, 1], [0x5BA854, 1], [0xE08C3A, 1], [0x9C554B, 1]])
// 210--150度环形图表
Gauge({ value: 30, min: 0, max: 100 })
.startAngle(210)
.endAngle(150)
.colors([[0x317AF7, 0.1], [0x5BA854, 0.2], [0xE08C3A, 0.3], [0x9C554B, 0.4]])
.strokeWidth(20)
.width(200)
.height(200)
}.width('100%').margin({ top: 5 })
}
}
```
![zh-cn_image_0000001174422916](figures/zh-cn_image_0000001174422916.png)
![gauge](figures/gauge-image.png)
......@@ -52,6 +52,7 @@ Image(src: string | PixelMap | Resource)
> **说明:**
>
> 使用快捷组合键对Image组件复制的前提是,该组件必须处于获焦状态。将Image组件的属性focusable设置为true,即可使用TAB键将焦点切换到Image组件上,再将Image组件的focusOnTouch属性设置为true,即可实现点击获焦。
> 图片设置svg图源时,支持的标签范围有限,目前支持的svg标签包括svg、rect、circle、ellipse、path、line、polyline、polygon、animate、animateMotion、animateTransform。
### ImageInterpolation
......
......@@ -21,6 +21,21 @@ TextClock(options?: { timeZoneOffset?: number, controller?: TextClockController
| timeZoneOffset | number | 否 | 设置时区偏移量。<br>取值范围为[-14, 12],表示东十二区到西十二区,其中负值表示东时区,正值表示西时区,比如东八区为-8。<br>对横跨国际日界线的国家或地区,用-13(UTC+13)和-14(UTC+14)来保证整个国家或者区域处在相同的时间,当设置的值不在取值范围内时,将使用当前系统的时区偏移量。<br/>默认值:当前系统的时区偏移量 |
| controller | [TextClockController](#textclockcontroller) | 否 | 绑定一个控制器,用来控制文本时钟的状态。|
## 属性
除支持[通用属性](ts-universal-attributes-size.md)外,还支持以下属性:
| 名称 | 参数类型 | 描述 |
| ------ | --------------- | ------------------------------------------------------------ |
| format | string | 设置显示时间格式。<br/>日期间隔符固定为"/",时间间隔符为":"。<br/>如yyyyMMdd,yyyy-MM-dd显示为yyyy/MM/dd,<br/>hhmmss显示为hh:mm:ss。 <br/>时间格式只用写一位即可,如"hhmmss"等同于"hms"。<br/>支持的时间格式化字符串:<br/>- YYYY/yyyy:完整年份。<br/>- YY/yy:年份后两位。<br/>- M:月份(若想使用01月则使用MM)。<br/>- d:日期(若想使用01日则使用dd)。<br/>- D:年中日(一年中的第几天)。<br/>- H:24小时制。<br/>- h:12小时制。<br/>- m:分钟。<br/>- s:秒。<br/>- SSS:毫秒。<br/>若格式未匹配,则使用默认值。<br/>默认值: 'hms'|
## 事件
除支持[通用事件](ts-universal-events-click.md)外,还支持以下事件:
| 名称 | 功能描述 |
| -------------------------------------------- | ------------------------------------------------------------ |
| onDateChange(event: (value: number) => void) | 提供时间变化回调,该事件最小回调间隔为秒。<br/>- value: Unix Time Stamp,即自1970年1月1日(UTC)起经过的毫秒数。 |
## TextClockController
......@@ -44,24 +59,6 @@ stop()
停止文本时钟。
## 属性
除支持[通用属性](ts-universal-attributes-size.md)外,还支持以下属性:
| 名称 | 参数类型 | 描述 |
| ------ | --------------- | ------------------------------------------------------------ |
| format | string | 设置显示时间格式。<br/>日期间隔符固定为"/",时间间隔符为":"。<br/>如yyyyMMdd,yyyy-MM-dd显示为yyyy/MM/dd,<br/>hhmmss显示为hh:mm:ss。 <br/>时间格式只用写一位即可,如"hhmmss"等同于"hms"。<br/>支持的时间格式化字符串:<br/>- YYYY/yyyy:完整年份。<br/>- YY/yy:年份后两位。<br/>- M:月份(若想使用01月则使用MM)。<br/>- d:日期(若想使用01日则使用dd)。<br/>- D:年中日(一年中的第几天)。<br/>- H:24小时制。<br/>- h:12小时制。<br/>- m:分钟。<br/>- s:秒。<br/>- SSS:毫秒。<br/>默认值: 'hms'|
## 事件
除支持[通用事件](ts-universal-events-click.md)外,还支持以下事件:
| 名称 | 功能描述 |
| -------------------------------------------- | ------------------------------------------------------------ |
| onDateChange(event: (value: number) => void) | 提供时间变化回调,该事件最小回调间隔为秒。<br /> value: Unix Time Stamp,即自1970年1月1日(UTC)起经过的毫秒数。 |
## 示例
```ts
......@@ -101,4 +98,3 @@ struct Second {
}
```
![text_clock](figures/text_clock.gif)
......@@ -6,40 +6,33 @@
>
> 该组件从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
## 子组件
## 接口
TextTimer(options?: { isCountDown?: boolean, count?: number, controller?: TextTimerController })
**参数:**
**参数**
| 参数名 | 参数类型 | 必填 | 参数描述 |
| ----------- | -------- | -------- | -------- | -------- |
| ----------- | -------- | -------- | -------- |
| isCountDown | boolean | 否 | 是否倒计时。<br/>默认值:false |
| count | number | 否 | 倒计时时间(isCountDown为true时生效),单位为毫秒。<br/>-&nbsp;count&lt;=0时,使用默认值为倒计时初始值。<br/>-&nbsp;count&gt;0时,count值为倒计时初始值。<br/>默认值:60000 |
| count | number | 否 | 倒计时时间(isCountDown为true时生效),单位为毫秒。最长不超过86400000毫秒(24小时)。&nbsp;0&lt;count&lt;86400000时,count值为倒计时初始值。否则,使用默认值为倒计时初始值。<br/>默认值:60000 |
| controller | [TextTimerController](#texttimercontroller) | 否 | TextTimer控制器。 |
## 属性
| 名称 | 参数类型 | 描述 |
| -------- | ---------------------- | ---------------------- |
| format | string | 自定义格式,需至少包含一个hh、mm、ss、ms中的关键字。<br/>默认值:'hh:mm:ss.ms' |
| format | string | 自定义格式,需至少包含一个HH、mm、ss、SS中的关键字。如使用yy、MM、dd等日期格式,则使用默认值。<br/>默认值:'HH:mm:ss.SS' |
## 事件
| 名称 | 功能描述 |
| -------- | -------- |
| onTimer(event:&nbsp;(utc:&nbsp;number,&nbsp;elapsedTime:&nbsp;number)&nbsp;=&gt;&nbsp;void) | 时间文本发生变化时触发。<br/>utc:当前显示的时间,单位为毫秒。<br/>elapsedTime:计时器经过的时间,单位为毫秒。 |
| ---------------------------------------- | ---------------------------------------- |
| onTimer(event:&nbsp;(utc:&nbsp;number,&nbsp;elapsedTime:&nbsp;number)&nbsp;=&gt;&nbsp;void) | 时间文本发生变化时触发。<br/>utc:Linux时间戳,即自1970年1月1日起经过的毫秒数。<br/>elapsedTime:计时器经过的时间,单位为毫秒。 |
## TextTimerController
......@@ -70,7 +63,6 @@ reset()
重置计时器。
## 示例
```ts
......@@ -79,7 +71,7 @@ reset()
@Component
struct TextTimerExample {
textTimerController: TextTimerController = new TextTimerController()
@State format: string = 'hh:mm:ss.ms'
@State format: string = 'HH:mm:ss.SS'
build() {
Column() {
......
......@@ -6,11 +6,6 @@
> 该组件从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
## 权限列表
## 子组件
支持单个子组件。
......@@ -42,15 +37,6 @@
| position | [BadgePosition](#badgeposition枚举说明) | 否 | BadgePosition.RightTop | 设置提示点显示位置。 |
| style | [BadgeStyle](#badgestyle对象说明) | 是 | - | Badge组件可设置样式,支持设置文本颜色、尺寸、圆点颜色和尺寸。 |
## BadgeStyle对象说明
| 名称 | 类型 | 必填 | 默认值 | 描述 |
| -------- | -------- | -------- | -------- | -------- |
| color | [ResourceColor](ts-types.md) | 否 | Color.White | 文本颜色。 |
| fontSize | number&nbsp;\|&nbsp;string | 否 | 10 | 文本大小。 |
| badgeSize | number&nbsp;\|&nbsp;string | 是 | - | badge的大小。 |
| badgeColor | [ResourceColor](ts-types.md) | 否 | Color.Red | badge的颜色。 |
## BadgePosition枚举说明
| 名称 | 描述 |
......@@ -59,6 +45,13 @@
| Right | 圆点显示在右侧纵向居中。 |
| Left | 圆点显示在左侧纵向居中。 |
## BadgeStyle对象说明
| 名称 | 类型 | 必填 | 默认值 | 描述 |
| -------- | -------- | -------- | -------- | -------- |
| color | [ResourceColor](ts-types.md#resourcecolor) | 否 | Color.White | 文本颜色。 |
| fontSize | number&nbsp;\|&nbsp;string | 否 | 10 | 文本大小。 |
| badgeSize | number&nbsp;\|&nbsp;string | 是 | - | badge的大小。 |
| badgeColor | [ResourceColor](ts-types.md#resourcecolor) | 否 | Color.Red | badge的颜色。 |
## 示例
......@@ -67,44 +60,92 @@
@Entry
@Component
struct BadgeExample {
@State counts: number = 1
@State message: string = 'new'
@State counts: number = 1;
@State message: string = 'new';
build() {
Flex({ justifyContent: FlexAlign.SpaceAround }) {
Column() {
Text('numberBadge').width('80%')
Row({ space: 10 }) {
// 数字上标,maxCount默认99,超过99展示99+
Badge({
count: this.counts,
maxCount: 99,
position: BadgePosition.RightTop,
style: { color: 0xFFFFFF, fontSize: 16, badgeSize: 20, badgeColor: Color.Red }
}) {
Button('message')
.onClick(() => {
this.counts++
this.counts++;
})
.width(100).height(50).backgroundColor(0x317aff)
}.width(100).height(50)
// 数字上标
Badge({
count: this.counts,
maxCount: 99,
position: BadgePosition.Left,
style: { color: 0xFFFFFF, fontSize: 16, badgeSize: 20, badgeColor: Color.Red }
}) {
Button('message')
.onClick(() => {
this.counts++;
})
.width(100).height(50).backgroundColor(0x317aff)
}.width(100).height(50)
// 数字上标
Badge({
count: this.counts,
maxCount: 99,
position: BadgePosition.Right,
style: { color: 0xFFFFFF, fontSize: 16, badgeSize: 20, badgeColor: Color.Red }
}) {
Button('message')
.onClick(() => {
this.counts++;
})
.width(100).height(50).backgroundColor(0x317aff)
}.width(100).height(50)
}.margin(10)
Text('stringBadge').width('80%')
Row({ space: 30 }) {
Badge({
value: this.message,
style: { color: 0xFFFFFF, fontSize: 9, badgeSize: 20, badgeColor: Color.Blue }
}) {
Text('message')
.width(80).height(50).fontSize(16).lineHeight(37)
.borderRadius(10).textAlign(TextAlign.Center).backgroundColor(0xF3F4ED)
.width(80)
.height(50)
.fontSize(16)
.lineHeight(37)
.borderRadius(10)
.textAlign(TextAlign.Center)
.backgroundColor(0xF3F4ED)
}.width(80).height(50)
// value为空,设置圆点标记
Badge({
value: ' ',
value: '',
position: BadgePosition.Right,
style: { badgeSize: 6, badgeColor: Color.Red }
}) {
Text('message')
.width(90).height(50).fontSize(16).lineHeight(37)
.borderRadius(10).textAlign(TextAlign.Center).backgroundColor(0xF3F4ED)
.width(90)
.height(50)
.fontSize(16)
.lineHeight(37)
.borderRadius(10)
.textAlign(TextAlign.Center)
.backgroundColor(0xF3F4ED)
}.width(90).height(50)
}.width('100%').margin({ top: 5 })
}.margin(10)
}
}
}
```
![zh-cn_image_0000001219864147](figures/zh-cn_image_0000001219864147.gif)
![badge](figures/badge.png)
......@@ -20,7 +20,7 @@ Column(value?:&nbsp;{space?: string&nbsp;|&nbsp;number})
| 参数名 | 参数类型 | 必填 | 参数描述 |
| -------- | -------- | -------- | -------- |
| space | string&nbsp;\|&nbsp;number | 否 | 纵向布局元素间距。<br/>默认值:0 |
| space | string&nbsp;\|&nbsp;number | 否 | 纵向布局元素垂直方向间距。<br/>默认值:0 |
## 属性
......@@ -40,12 +40,14 @@ Column(value?:&nbsp;{space?: string&nbsp;|&nbsp;number})
struct ColumnExample {
build() {
Column() {
// 设置子元素垂直方向间距为5
Text('space').fontSize(9).fontColor(0xCCCCCC).width('90%')
Column({ space: 5 }) {
Column().width('100%').height(30).backgroundColor(0xAFEEEE)
Column().width('100%').height(30).backgroundColor(0x00FFFF)
}.width('90%').height(100).border({ width: 1 })
// 设置子元素水平方向对齐方式
Text('alignItems(Start)').fontSize(9).fontColor(0xCCCCCC).width('90%')
Column() {
Column().width('50%').height(30).backgroundColor(0xAFEEEE)
......@@ -58,20 +60,27 @@ struct ColumnExample {
Column().width('50%').height(30).backgroundColor(0x00FFFF)
}.alignItems(HorizontalAlign.End).width('90%').border({ width: 1 })
Text('alignItems(Center)').fontSize(9).fontColor(0xCCCCCC).width('90%')
Column() {
Column().width('50%').height(30).backgroundColor(0xAFEEEE)
Column().width('50%').height(30).backgroundColor(0x00FFFF)
}.alignItems(HorizontalAlign.Center).width('90%').border({ width: 1 })
// 设置子元素垂直方向的对齐方式
Text('justifyContent(Center)').fontSize(9).fontColor(0xCCCCCC).width('90%')
Column() {
Column().width('30%').height(30).backgroundColor(0xAFEEEE)
Column().width('30%').height(30).backgroundColor(0x00FFFF)
}.height('15%').border({ width: 1 }).justifyContent(FlexAlign.Center)
Column().width('90%').height(30).backgroundColor(0xAFEEEE)
Column().width('90%').height(30).backgroundColor(0x00FFFF)
}.height(100).border({ width: 1 }).justifyContent(FlexAlign.Center)
Text('justifyContent(End)').fontSize(9).fontColor(0xCCCCCC).width('90%')
Column() {
Column().width('30%').height(30).backgroundColor(0xAFEEEE)
Column().width('30%').height(30).backgroundColor(0x00FFFF)
}.height('15%').border({ width: 1 }).justifyContent(FlexAlign.End)
Column().width('90%').height(30).backgroundColor(0xAFEEEE)
Column().width('90%').height(30).backgroundColor(0x00FFFF)
}.height(100).border({ width: 1 }).justifyContent(FlexAlign.End)
}.width('100%').padding({ top: 5 })
}
}
```
![zh-cn_image_0000001219982721](figures/Column.png)
![column](figures/column.png)
# ColumnSplit
> **说明:**
> 该组件从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
将子组件纵向布局,并在每个子组件之间插入一根横向的分割线。
> **说明:**
> 该组件从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
## 权限列表
## 子组件
......@@ -30,7 +25,8 @@ ColumnSplit()
> **说明:**
> 与RowSplit相同,ColumnSplit的分割线最小能拖动到刚好包含子组件。
>
> 在真机中查看拖动效果,预览器中不支持拖动。
## 示例
......@@ -49,7 +45,7 @@ struct ColumnSplitExample {
Text('4').width('100%').height(50).backgroundColor(0xD2B48C).textAlign(TextAlign.Center)
Text('5').width('100%').height(50).backgroundColor(0xF5DEB3).textAlign(TextAlign.Center)
}
.resizeable(true)
.resizeable(true) // 可拖动
.width('90%').height('60%')
}.width('100%')
}
......
# Counter
计数器组件,提供相应的增加或者减少的计数操作。
> **说明:**
> 该组件从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
计数器组件,提供相应的增加或者减少的计数操作。
## 权限列表
## 子组件
......
......@@ -21,7 +21,7 @@ Navigator(value?: {target: string, type?: NavigationType})
| 参数名 | 参数类型 | 必填 | 参数描述 |
| ------ | -------------- | ---- | ---------------------------------------------- |
| target | string | 是 | 指定跳转目标页面的路径。 |
| type | NavigationType | 否 | 指定路由方式。<br/>默认值:NavigationType.Push |
| type | [NavigationType](#navigationtype枚举说明) | 否 | 指定路由方式。<br/>默认值:NavigationType.Push |
## NavigationType枚举说明
......@@ -37,9 +37,9 @@ Navigator(value?: {target: string, type?: NavigationType})
| 名称 | 参数 | 描述 |
| ------ | ------- | ------------------------------------------------------------ |
| active | boolean | 当前路由组件是否处于激活状态,处于激活状态时,会生效相应的路由操作。 |
| params | object | 跳转时要同时传递到目标页面的数据,可在目标页面使用router.getParams()获得。 |
| target | string | 设置跳转目标页面的路径。 |
| type | NavigationType | 设置路由方式。<br/>默认值:NavigationType.Push |
| params | object | 跳转时要同时传递到目标页面的数据,可在目标页面使用[router.getParams()](../apis/js-api-router.md#routergetparams)获得。 |
| target | string | 设置跳转目标页面的路径。 目标页面需加入main_pages.json文件中。 |
| type | [NavigationType](#navigationtype枚举说明) | 设置路由方式。<br/>默认值:NavigationType.Push |
## 示例
......@@ -49,7 +49,7 @@ Navigator(value?: {target: string, type?: NavigationType})
@Entry
@Component
struct NavigatorExample {
@State active: boolean = false
@State active: boolean = false;
@State Text: object = {name: 'news'}
build() {
......@@ -57,13 +57,13 @@ struct NavigatorExample {
Navigator({ target: 'pages/container/navigator/Detail', type: NavigationType.Push }) {
Text('Go to ' + this.Text['name'] + ' page')
.width('100%').textAlign(TextAlign.Center)
}.params({ text: this.Text })
}.params({ text: this.Text }) // 传参数到Detail页面
Navigator() {
Text('Back to previous page').width('100%').textAlign(TextAlign.Center)
}.active(this.active)
.onClick(() => {
this.active = true
this.active = true;
})
}.height(150).width(350).padding(35)
}
......@@ -72,12 +72,13 @@ struct NavigatorExample {
```ts
// Detail.ets
import router from '@system.router'
import router from '@ohos.router'
@Entry
@Component
struct DetailExample {
@State text: any = router.getParams().text
// 接收Navigator.ets的传参
@State text: any = router.getParams().text;
build() {
Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Start, justifyContent: FlexAlign.SpaceBetween }) {
......
......@@ -27,8 +27,8 @@ Panel(show: boolean)
| 名称 | 参数类型 | 描述 |
| -------- | -------- | -------- |
| type | PanelType | 设置可滑动面板的类型。<br/>默认值:PanelType.Foldable |
| mode | PanelMode | 设置可滑动面板的初始状态。 |
| type | [PanelType](#paneltype枚举说明) | 设置可滑动面板的类型。<br/>默认值:PanelType.Foldable |
| mode | [PanelMode](#panelmode枚举说明) | 设置可滑动面板的初始状态。 |
| dragBar | boolean | 设置是否存在dragbar,true表示存在,false表示不存在。<br/>默认值:true |
| fullHeight | string&nbsp;\|&nbsp;number | 指定PanelMode.Full状态下的高度。 |
| halfHeight | string&nbsp;\|&nbsp;number | 指定PanelMode.Half状态下的高度,默认为屏幕尺寸的一半。 |
......
......@@ -29,7 +29,7 @@ Refresh\(value: \{ refreshing: boolean, offset?: number&nbsp;|&nbsp;string , fr
| 名称 | 描述 |
| -------- | -------- |
| onStateChange(callback: (state: RefreshStatus) => void)| 当前刷新状态变更时,触发回调。<br/>-&nbsp;state:刷新状态。 |
| onStateChange(callback: (state: [RefreshStatus](#refreshstatus枚举说明)) => void)| 当前刷新状态变更时,触发回调。<br/>-&nbsp;state:刷新状态。 |
| onRefreshing(callback: () => void)| 进入刷新状态时触发回调。 |
## RefreshStatus枚举说明
......
......@@ -10,21 +10,17 @@
## 规则说明
* 容器内子组件区分水平方向,垂直方向:
* 水平方向为left, middle, right,对应容器的HorizontalAlign.Start, HorizontalAlign.Center, HorizontalAlign.End
* 垂直方向为top, center, bottom,对应容器的VerticalAlign.Top, VerticalAlign.Center, VerticalAlign.Bottom
* 水平方向为left, middle, right,对应容器的HorizontalAlign.Start, HorizontalAlign.Center, HorizontalAlign.End
* 垂直方向为top, center, bottom,对应容器的VerticalAlign.Top, VerticalAlign.Center, VerticalAlign.Bottom
* 子组件可以将容器或者其他子组件设为锚点:
* 参与相对布局的容器内组件必须设置id,容器id固定为__container__
* 无id的子组件位置设置默认为容器左上方
* 此子组件某一方向上的三个位置可以将容器或其他子组件的同方向三个位置为锚点,同方向上两个以上位置设置锚点以后会跳过第三个
* 同方向上两个以上位置设置锚点时此子组件额外设置width,height不生效
* 对齐后需要额外偏移可设置offset
* 参与相对布局的容器内组件必须设置id,容器RelativeContainer的id固定为'__container__'。
* 无id的子组件位置设置默认为容器左上方
* 此子组件某一方向上的三个位置可以将容器或其他子组件的同方向三个位置为锚点,同方向上两个以上位置设置锚点以后会跳过第三个
* 同方向上两个以上位置设置锚点时此子组件额外设置width,height不生效
* 对齐后需要额外偏移可设置offset
* 特殊情况
* 互相依赖,环形依赖时容器内子组件全部不绘制
* 同方向上两个以上位置设置锚点但锚点位置逆序时此子组件大小为0,即不绘制
## 权限列表
* 互相依赖,环形依赖时容器内子组件全部不绘制。
* 同方向上两个以上位置设置锚点但锚点位置逆序时此子组件大小为0,即不绘制。
## 子组件
......@@ -42,49 +38,68 @@ RelativeContainer()
@Entry
@Component
struct Index {
build() {
Row() {
Button("Extra button").width(100).height(50)
// 外层容器的id默认为为'__container__'
RelativeContainer() {
Button("Button 1").width(120).height(30)
Button("Button 1")
.width(120)
.height(30)
.alignRules({
middle: { anchor: "__container__", align: HorizontalAlign.Center },
middle: { anchor: "__container__", align: HorizontalAlign.Center }, // 水平方向上,组件中部与容器中间对齐,即组件在容器中水平居中
})
.id("bt1").borderWidth(1).borderColor(Color.Black)
Text("This is text 2").fontSize(20).padding(10)
.id("bt1") // id设置为bt1
.borderWidth(1)
.borderColor(Color.Black)
Text("This is text 2")
.fontSize(20)
.padding(10)
.borderWidth(1)
.borderColor(Color.Black)
.height(30)
.id("tx2") // id设置为tx2
.alignRules({
bottom: { anchor: "__container__", align: VerticalAlign.Bottom },
top: { anchor: "bt1", align: VerticalAlign.Bottom },
right:{ anchor: "bt1", align: HorizontalAlign.Center }
}).id("tx2").borderWidth(1).borderColor(Color.Black).height(30)
bottom: { anchor: "__container__", align: VerticalAlign.Bottom }, // 组件下边与容器下边对齐
top: { anchor: "bt1", align: VerticalAlign.Bottom }, // 组件上边与button1底部对齐
right: { anchor: "bt1", align: HorizontalAlign.Center } // 组件右侧与button1中间点对齐
})
LoadingProgress().color(Color.Blue)
LoadingProgress()
.color(Color.Blue)
.borderWidth(1)
.borderColor(Color.Black)
.height(30)
.width(30)
.id("lp3") // id设置为lp3
.alignRules({
left: { anchor: "bt1", align: HorizontalAlign.End },
top: { anchor: "tx2", align: VerticalAlign.Center },
bottom: { anchor: "__container__", align: VerticalAlign.Bottom }
}).id("lp3").borderWidth(1).borderColor(Color.Black)
.height(30).width(30)
left: { anchor: "bt1", align: HorizontalAlign.End }, // 组件左边对齐容器bt1的右边
top: { anchor: "tx2", align: VerticalAlign.Center }, // 组件上边对齐容器tx2的中间
bottom: { anchor: "__container__", align: VerticalAlign.Bottom } // 组件下边对齐最外层容器的底边
})
Gauge({ value: 50, min: 0, max: 100 })
.startAngle(210).endAngle(150)
.startAngle(210)
.endAngle(150)
.colors([[0x317AF7, 1], [0x5BA854, 1], [0xE08C3A, 1], [0x9C554B, 1], [0xD94838, 1]])
.strokeWidth(20)
.width(50).height(50)
.width(50)
.height(50)
.alignRules({
left: { anchor: "tx2", align: HorizontalAlign.End },
right:{ anchor: "__container__", align: HorizontalAlign.End },
top: { anchor: "__container__", align: VerticalAlign.Top },
bottom: { anchor: "lp3", align: VerticalAlign.Top }
}).id("g4").borderWidth(1).borderColor(Color.Black)
left: { anchor: "tx2", align: HorizontalAlign.End }, // 组件左边对齐容器tx2的右边
right: { anchor: "__container__", align: HorizontalAlign.End }, // 组件右边对齐最外层容器的右边
top: { anchor: "__container__", align: VerticalAlign.Top }, // 组件上边对齐最外层容器的上边
bottom: { anchor: "lp3", align: VerticalAlign.Top } // 组件下边对齐容器lp3的上边
})
.id("g4")
.borderWidth(1)
.borderColor(Color.Black)
}
.width(200).height(200)
.backgroundColor(Color.Orange)
}
.height('100%')
}.height('100%')
}
}
```
......
......@@ -40,24 +40,27 @@ Row(value?:{space?: number&nbsp;|&nbsp;string })
struct RowExample {
build() {
Column({ space: 5 }) {
// 设置子组件水平方向的间距为5
Text('space').fontSize(9).fontColor(0xCCCCCC).width('90%')
Row({ space: 5 }) {
Row().width('30%').height(50).backgroundColor(0xAFEEEE)
Row().width('30%').height(50).backgroundColor(0x00FFFF)
}.width('90%').height(107).border({ width: 1 })
Text('alignItems(Top)').fontSize(9).fontColor(0xCCCCCC).width('90%')
// 设置子元素垂直方向对齐方式
Text('alignItems(Bottom)').fontSize(9).fontColor(0xCCCCCC).width('90%')
Row() {
Row().width('30%').height(50).backgroundColor(0xAFEEEE)
Row().width('30%').height(50).backgroundColor(0x00FFFF)
}.alignItems(VerticalAlign.Top).height('15%').border({ width: 1 })
}.width('90%').alignItems(VerticalAlign.Bottom).height('15%').border({ width: 1 })
Text('alignItems(Center)').fontSize(9).fontColor(0xCCCCCC).width('90%')
Row() {
Row().width('30%').height(50).backgroundColor(0xAFEEEE)
Row().width('30%').height(50).backgroundColor(0x00FFFF)
}.alignItems(VerticalAlign.Center).height('15%').border({ width: 1 })
}.width('90%').alignItems(VerticalAlign.Center).height('15%').border({ width: 1 })
// 设置子元素水平方向对齐方式
Text('justifyContent(End)').fontSize(9).fontColor(0xCCCCCC).width('90%')
Row() {
Row().width('30%').height(50).backgroundColor(0xAFEEEE)
......@@ -74,4 +77,4 @@ struct RowExample {
}
```
![zh-cn_image_0000001174422908](figures/Row.png)
![row](figures/row.png)
......@@ -7,10 +7,6 @@
将子组件横向布局,并在每个子组件之间插入一根纵向的分割线。
## 权限列表
## 子组件
......@@ -30,6 +26,8 @@ RowSplit()
> **说明:**
> RowSplit的分割线最小能拖动到刚好包含子组件。
>
> 在真机中查看拖动效果,预览器中不支持拖动。
## 示例
......
......@@ -24,9 +24,9 @@ Scroll(scroller?: Scroller)
| 名称 | 参数类型 | 描述 |
| -------------- | ---------------------------------------- | --------- |
| scrollable | ScrollDirection | 设置滚动方向。<br/>默认值:ScrollDirection.Vertical |
| scrollable | [ScrollDirection](#scrolldirection枚举说明) | 设置滚动方向。<br/>默认值:ScrollDirection.Vertical |
| scrollBar | [BarState](ts-appendix-enums.md#barstate) | 设置滚动条状态。<br/>默认值:BarState.Off |
| scrollBarColor | string&nbsp;\|&nbsp;number&nbsp;\|&nbsp;Color | 设置滚动条的颜色。 |
| scrollBarColor | string&nbsp;\|&nbsp;number&nbsp;\|&nbsp;[Color](ts-appendix-enums.md#color) | 设置滚动条的颜色。 |
| scrollBarWidth | string&nbsp;\|&nbsp;number | 设置滚动条的宽度。 |
| edgeEffect | [EdgeEffect](ts-appendix-enums.md#edgeeffect) | 设置滑动效果,目前支持的滑动效果参见EdgeEffect的枚举说明。<br/>默认值:EdgeEffect.None |
......@@ -161,14 +161,15 @@ scrollBy(dx: Length, dy: Length): void
## 示例
### 示例1
```ts
// xxx.ets
@Entry
@Component
struct ScrollExample {
scroller: Scroller = new Scroller()
private arr: number[] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
scroller: Scroller = new Scroller();
private arr: number[] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
build() {
Stack({ alignContent: Alignment.TopStart }) {
......@@ -186,38 +187,39 @@ struct ScrollExample {
}, item => item)
}.width('100%')
}
.scrollable(ScrollDirection.Vertical)
.scrollBar(BarState.On)
.scrollBarColor(Color.Gray)
.scrollBarWidth(30)
.scrollable(ScrollDirection.Vertical) // 滚动方向纵向
.scrollBar(BarState.On) // 滚动条常驻显示
.scrollBarColor(Color.Gray) // 滚动条颜色
.scrollBarWidth(30) // 滚动条宽度
.edgeEffect(EdgeEffect.None)
.onScroll((xOffset: number, yOffset: number) => {
console.info(xOffset + ' ' + yOffset)
console.info(xOffset + ' ' + yOffset);
})
.onScrollEdge((side: Edge) => {
console.info('To the edge')
console.info('To the edge');
})
.onScrollEnd(() => {
console.info('Scroll Stop')
console.info('Scroll Stop');
})
Button('scroll 150')
.onClick(() => { // 点击后下滑指定距离150.0vp
this.scroller.scrollBy(0,150)
this.scroller.scrollBy(0,150);
})
.margin({ top: 10, left: 20 })
Button('scroll 100')
.onClick(() => { // 点击后滑动到指定位置,即下滑100.0vp的距离
this.scroller.scrollTo({ xOffset: 0, yOffset: this.scroller.currentOffset().yOffset + 100 })
this.scroller.scrollTo({ xOffset: 0, yOffset: this.scroller.currentOffset().yOffset + 100 });
})
.margin({ top: 60, left: 20 })
Button('back top')
.onClick(() => { // 点击后回到顶部
this.scroller.scrollEdge(Edge.Top)
this.scroller.scrollEdge(Edge.Top);
})
.margin({ top: 110, left: 20 })
Button('next page')
.onClick(() => { // 点击后滑到下一页
this.scroller.scrollPage({ next: true })
this.scroller.scrollPage({ next: true });
})
.margin({ top: 170, left: 20 })
}.width('100%').height('100%').backgroundColor(0xDCDCDC)
......@@ -227,14 +229,14 @@ struct ScrollExample {
![zh-cn_image_0000001174104386](figures/zh-cn_image_0000001174104386.gif)
### 示例2
```ts
@Entry
@Component
struct NestedScroll {
@State listPosition: number = 0 // 0代表滚动到List顶部,1代表中间值,2代表滚动到List底部。
private arr: number[] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
private scroller: Scroller = new Scroller()
@State listPosition: number = 0; // 0代表滚动到List顶部,1代表中间值,2代表滚动到List底部。
private arr: number[] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
private scroller: Scroller = new Scroller();
build() {
Flex() {
......@@ -255,18 +257,18 @@ struct NestedScroll {
}
.width("100%").height("50%").edgeEffect(EdgeEffect.None)
.onReachStart(() => {
this.listPosition = 0
this.listPosition = 0;
})
.onReachEnd(() => {
this.listPosition = 2
this.listPosition = 2;
})
.onScrollBegin((dx: number, dy: number) => {
if ((this.listPosition == 0 && dy >= 0) || (this.listPosition == 2 && dy <= 0)) {
this.scroller.scrollBy(0, -dy)
return { dxRemain: dx, dyRemain: 0 }
this.scroller.scrollBy(0, -dy);
return { dxRemain: dx, dyRemain: 0 };
}
this.listPosition = 1;
return { dxRemain: dx, dyRemain: dy }
return { dxRemain: dx, dyRemain: dy };
})
Text("Scroll Area")
......
......@@ -10,7 +10,7 @@
| 名称 | 参数类型 | 描述 |
| -------- | -------- | -------- |
| backgroundColor | [ResourceColor](ts-types.md) | 设置组件的背景色。 |
| backgroundColor | [ResourceColor](ts-types.md#resourcecolor) | 设置组件的背景色。 |
| backgroundImage | src:&nbsp;[ResourceStr](ts-types.md#resourcestr),<br/>repeat?:&nbsp;[ImageRepeat](ts-appendix-enums.md#imagerepeat) | src:图片地址,支持网络图片资源和本地图片资源地址(不支持svg类型的图片)。<br/>repeat:设置背景图片的重复样式,默认不重复。 |
| backgroundImageSize | {<br/>width?:&nbsp;[Length](ts-types.md#length),<br/>height?:&nbsp;[Length](ts-types.md#length)<br/>}&nbsp;\|&nbsp;[ImageSize](ts-appendix-enums.md#imagesize) | 设置背景图像的高度和宽度。当输入为{width:&nbsp;Length,&nbsp;height:&nbsp;Length}对象时,如果只设置一个属性,则第二个属性保持图片原始宽高比进行调整。默认保持原图的比例不变。<br/>默认值:ImageSize.Auto |
| backgroundImagePosition | [Position](ts-types.md#position8)&nbsp;\|&nbsp;[Alignment](ts-appendix-enums.md#alignment) | 设置背景图在组件中显示位置。<br/>默认值:<br/>{<br/>x:&nbsp;0,<br/>y:&nbsp;0<br/>} |
......
......@@ -10,17 +10,17 @@
| 名称 | 参数类型 | 描述 |
| ---------- | ---------------------------------------- | --------------------------------------- |
| borderImage | BorderImageOption | 图片边框或者渐变色边框设置接口。 |
| borderImage | [BorderImageOption](#borderimageoption对象说明) | 图片边框或者渐变色边框设置接口。 |
## BorderImageOption对象说明
| 名称 | 类型 | 描述 |
| ---------- | ---------------------------------------- | --------------------------------------- |
| source | string \| [Resource](ts-types.md#resource) \| [linearGradient](ts-universal-attributes-gradient-color.md) | 边框图源或者渐变色设置。 |
| slice | [Length](ts-types.md#length)\| [EdgeWidths](ts-types.md#edgewidths9) | 设置图片边框切割宽度。<br/>默认值:0 |
| width | [Length](ts-types.md#length)\| [EdgeWidths](ts-types.md#edgewidths9) | 设置图片边框宽度。<br/>默认值:0 |
| outset | [Length](ts-types.md#length)\| [EdgeWidths](ts-types.md#edgewidths9) | 设置边框图片向外延伸距离。<br/>默认值:0 |
| RepeatMode | RepeatMode | 设置边框图片的重复方式。<br/>默认值:RepeatMode.Stretch |
| slice | [Length](ts-types.md#length) \| [EdgeWidths](ts-types.md#edgewidths9) | 设置图片边框切割宽度。<br/>默认值:0 |
| width | [Length](ts-types.md#length) \| [EdgeWidths](ts-types.md#edgewidths9) | 设置图片边框宽度。<br/>默认值:0 |
| outset | [Length](ts-types.md#length) \| [EdgeWidths](ts-types.md#edgewidths9) | 设置边框图片向外延伸距离。<br/>默认值:0 |
| repeat | [RepeatMode](#repeatmode枚举说明) | 设置边框图片的重复方式。<br/>默认值:RepeatMode.Stretch |
| fill | boolean | 设置边框图片中心填充。<br/>默认值:false |
......@@ -45,7 +45,7 @@ struct Index {
build() {
Row() {
Column() {
Text('This is\nborderImage.').textAlign(TextAlign.Center)
Text('This is borderImage.').textAlign(TextAlign.Center)
.borderImage({
source: "borderOrigin.png",
slice: {top:"31%", bottom:"31%", left:"31%", right:"31%"},
......@@ -53,7 +53,7 @@ struct Index {
outset: {top:"5px", bottom:"5px", left:"5px", right:"5px"},
repeat: RepeatMode.Repeat,
fill: false
});
})
}
.width('100%')
}
......@@ -70,20 +70,21 @@ struct Index {
@Entry
@Component
struct Index {
build() {
Row() {
Column() {
Text('This is\ngradient color.').textAlign(TextAlign.Center)
Text('This is gradient color.').textAlign(TextAlign.Center)
.borderImage({
source: {angle:90,
source: {
angle: 90,
direction: GradientDirection.Left,
colors: [[0xAEE1E1, 0.0], [0xD3E0DC, 0.3], [0xFCD1D1, 1.0]]},
slice: {top:10, bottom:10, left:10, right:10},
width: {top:"10px", bottom:"10px", left: "10px", right:"10px"},
colors: [[0xAEE1E1, 0.0], [0xD3E0DC, 0.3], [0xFCD1D1, 1.0]]
},
slice: { top: 10, bottom: 10, left: 10, right: 10 },
width: { top: "10px", bottom: "10px", left: "10px", right: "10px" },
repeat: RepeatMode.Stretch,
fill: false
});
})
}
.width('100%')
}
......
......@@ -13,11 +13,11 @@
| 名称 | 参数类型 | 描述 |
| ------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
| border | {<br/>width?:&nbsp;[Length](ts-types.md#length)&nbsp;\|&nbsp;EdgeWidths<sup>9+</sup>,<br/>color?: &nbsp;[ResourceColor](ts-types.md#resourcecolor)&nbsp;\|&nbsp;EdgeColors<sup>9+</sup>,<br/>radius?: &nbsp;[Length](ts-types.md#length)&nbsp;\|&nbsp;BorderRadiuses<sup>9+</sup>,<br/>style?:&nbsp;[BorderStyle](ts-appendix-enums.md#borderstyle)&nbsp;\|&nbsp;EdgeStyles<sup>9+</sup><br/>} | 统一边框样式设置接口。<br/>-&nbsp;width:设置边框宽度。<br/>-&nbsp;color:设置边框颜色。<br/>-&nbsp;radius:设置边框圆角半径。<br/>-&nbsp;style:设置边框样式。 |
| borderStyle | [BorderStyle](ts-appendix-enums.md#borderstyle) \| EdgeStyles<sup>9+</sup> | 设置元素的边框样式。<br/>默认值:BorderStyle.Solid |
| borderWidth | [Length](ts-types.md#length) \| EdgeWidths<sup>9+</sup> | 设置元素的边框宽度,不支持百分比。 |
| borderColor | [ResourceColor](ts-types.md#resourcecolor) \| EdgeColors<sup>9+</sup> | 设置元素的边框颜色。 |
| borderRadius | [Length](ts-types.md#length) \| BorderRadiuses<sup>9+</sup> | 设置元素的边框圆角半径,不支持百分比。 |
| border | {<br/>width?:&nbsp;[Length](ts-types.md#length)&nbsp;\|&nbsp;[EdgeWidths](#edgewidths9对象说明)<sup>9+</sup>,<br/>color?: &nbsp;[ResourceColor](ts-types.md#resourcecolor)&nbsp;\|&nbsp;[EdgeColors](#edgecolors9对象说明)<sup>9+</sup>,<br/>radius?: &nbsp;[Length](ts-types.md#length)&nbsp;\|&nbsp;[BorderRadiuses](#borderradiuses9对象说明)<sup>9+</sup>,<br/>style?:&nbsp;[BorderStyle](ts-appendix-enums.md#borderstyle)&nbsp;\|&nbsp;[EdgeStyles](#edgestyles9对象说明)<sup>9+</sup><br/>} | 统一边框样式设置接口。<br/>-&nbsp;width:设置边框宽度。<br/>-&nbsp;color:设置边框颜色。<br/>-&nbsp;radius:设置边框圆角半径。<br/>-&nbsp;style:设置边框样式。 |
| borderStyle | [BorderStyle](ts-appendix-enums.md#borderstyle) \| [EdgeStyles](#edgestyles9对象说明)<sup>9+</sup> | 设置元素的边框样式。<br/>默认值:BorderStyle.Solid |
| borderWidth | [Length](ts-types.md#length) \| [EdgeWidths](#edgewidths9对象说明)<sup>9+</sup> | 设置元素的边框宽度,不支持百分比。 |
| borderColor | [ResourceColor](ts-types.md#resourcecolor) \| [EdgeColors](#edgecolors9对象说明)<sup>9+</sup> | 设置元素的边框颜色。 |
| borderRadius | [Length](ts-types.md#length) \| [BorderRadiuses](#borderradiuses9对象说明)<sup>9+</sup> | 设置元素的边框圆角半径,不支持百分比。 |
## EdgeWidths<sup>9+</sup>对象说明
......@@ -70,7 +70,6 @@
@Entry
@Component
struct BorderExample {
build() {
Column() {
Flex({ justifyContent: FlexAlign.SpaceAround, alignItems: ItemAlign.Center }) {
......@@ -83,6 +82,7 @@ struct BorderExample {
.border({ width: 5, color: 0x317AF7, radius: 10, style: BorderStyle.Dotted })
.width(120).height(120).textAlign(TextAlign.Center).fontSize(16)
}.width('100%').height(150)
Text('.border')
.fontSize(50)
.width(300)
......
......@@ -77,7 +77,7 @@ sendTouchEvent(event: TouchObject): boolean
| 参数 | 类型 | 必填 | 描述 |
| ----- | ----------- | ---- | ------------------------------------------------------------ |
| event | TouchObject | 是 | 触发触摸事件的位置,event参数见[TouchEvent](ts-universal-events-touch.md#touchevent对象说明)中TouchObject的介绍。 |
| event | [TouchObject](ts-universal-events-touch.md#touchobject对象说明) | 是 | 触发触摸事件的位置,event参数见[TouchEvent](ts-universal-events-touch.md#touchevent对象说明)中TouchObject的介绍。 |
**返回值:**
......@@ -95,7 +95,7 @@ sendKeyEvent(event: KeyEvent): boolean
| 参数 | 类型 | 必填 | 描述 |
| ----- | -------- | ---- | ------------------------------------------------------------ |
| event | KeyEvent | 是 | 按键事件,event参数见[KeyEvent](ts-universal-events-key.md#keyevent对象说明)介绍。 |
| event | [KeyEvent](ts-universal-events-key.md#keyevent对象说明) | 是 | 按键事件,event参数见[KeyEvent](ts-universal-events-key.md#keyevent对象说明)介绍。 |
**返回值:**
......@@ -113,7 +113,7 @@ sendMouseEvent(event: MouseEvent): boolean
| 参数 | 类型 | 必填 | 描述 |
| ----- | ---------- | ---- | --------------------------------------- |
| event | MouseEvent | 是 | 鼠标事件,event参数见[MouseEvent](ts-universal-mouse-key.md#mouseevent对象说明)介绍。 |
| event | [MouseEvent](ts-universal-mouse-key.md#mouseevent对象说明) | 是 | 鼠标事件,event参数见[MouseEvent](ts-universal-mouse-key.md#mouseevent对象说明)介绍。 |
**返回值:**
......@@ -132,6 +132,7 @@ class Utils {
static rect_bottom;
static rect_value;
//获取组件所占矩形区域坐标
static getComponentRect(key) {
let strJson = getInspectorByKey(key);
let obj = JSON.parse(strJson);
......@@ -171,7 +172,7 @@ struct IdExample {
console.info(getInspectorTree())
this.text = "Button 'click to start' is clicked"
setTimeout(() => {
sendEventByKey("longClick", 11, "")
sendEventByKey("longClick", 11, "") // 向id为"longClick"的组件发送长按事件
}, 2000)
}).id('click')
......@@ -183,18 +184,18 @@ struct IdExample {
console.info('long clicked')
this.text = "Button 'longClick' is longclicked"
setTimeout(() => {
let rect = Utils.getComponentRect('onTouch')
let rect = Utils.getComponentRect('onTouch') // 获取id为"onTouch"组件的矩形区域坐标
let touchPoint: TouchObject = {
id: 1,
x: rect.left + (rect.right - rect.left) / 2,
y: rect.top + (rect.bottom - rect.top) / 2,
x: rect.left + (rect.right - rect.left) / 2, // 组件中心点x坐标
y: rect.top + (rect.bottom - rect.top) / 2, // 组件中心点y坐标
type: TouchType.Down,
screenX: rect.left + (rect.right - rect.left) / 2,
screenY: rect.left + (rect.right - rect.left) / 2,
screenX: rect.left + (rect.right - rect.left) / 2, // 组件中心点x坐标
screenY: rect.left + (rect.right - rect.left) / 2, // 组件中心点y坐标
}
sendTouchEvent(touchPoint)
sendTouchEvent(touchPoint) // 发送触摸事件
touchPoint.type = TouchType.Up
sendTouchEvent(touchPoint)
sendTouchEvent(touchPoint) // 发送触摸事件
}, 2000)
})).id('longClick')
......@@ -205,14 +206,14 @@ struct IdExample {
console.info('onTouch is clicked')
this.text = "Button 'onTouch' is clicked"
setTimeout(() => {
let rect = Utils.getComponentRect('onMouse')
let rect = Utils.getComponentRect('onMouse') // 获取id为"onMouse"组件的矩形区域坐标
let mouseEvent: MouseEvent = {
button: MouseButton.Left,
action: MouseAction.Press,
x: rect.left + (rect.right - rect.left) / 2,
y: rect.top + (rect.bottom - rect.top) / 2,
screenX: rect.left + (rect.right - rect.left) / 2,
screenY: rect.top + (rect.bottom - rect.top) / 2,
x: rect.left + (rect.right - rect.left) / 2, // 组件中心点x坐标
y: rect.top + (rect.bottom - rect.top) / 2, // 组件中心点y坐标
screenX: rect.left + (rect.right - rect.left) / 2, // 组件中心点x坐标
screenY: rect.top + (rect.bottom - rect.top) / 2, // 组件中心点y坐标
timestamp: 1,
target: {
area: {
......@@ -230,7 +231,7 @@ struct IdExample {
},
source: SourceType.Mouse
}
sendMouseEvent(mouseEvent)
sendMouseEvent(mouseEvent) // 发送鼠标事件
}, 2000)
}).id('onTouch')
......@@ -250,7 +251,7 @@ struct IdExample {
metaKey: 0,
timestamp: 0
}
sendKeyEvent(keyEvent)
sendKeyEvent(keyEvent) // 发送按键事件
}, 2000)
}).id('onMouse')
......
......@@ -12,7 +12,7 @@
| **名称** | **参数类型** | **描述** |
| -------------------- | -------- | ---------------------------------------- |
| focusable | boolean | 设置当前组件是否可以获焦。<br/>**说明:**<br/>存在默认交互逻辑的组件例如Button、TextInput等,默认即为可获焦,Text、Image等组件则默认状态为不可获焦。 |
| tabIndex<sup>9+<sup> | number | 自定义组件tab键走焦能力,走焦顺序为:tabIndex大于0的组件依次递增走焦, tabIndex等于0的组件按组件树先后顺序走焦。<br />- tabIndex >= 0:表示元素是可聚焦的,并且可以通过tab键走焦来访问到该元素,按照tabIndex的数值递增而先后获焦。如果多个元素拥有相同的tabIndex,按照元素在当前组件树中的先后顺序获焦<br />- tabIndex < 0(通常是tabIndex = -1):表示元素是可聚焦的,但是不能通过tab键走焦来访问到该元素。<br/>默认值:0 |
| tabIndex<sup>9+<sup> | number | 自定义组件tab键走焦能力,走焦顺序为:tabIndex大于0的组件依次递增走焦, tabIndex等于0的组件按组件树先后顺序走焦。<br />- tabIndex >= 0:表示元素是可聚焦的,并且可以通过tab键走焦来访问到该元素,tabIndex值越小,则优先获焦;反之,则后获焦。如果多个元素拥有相同的tabIndex,按照元素在当前组件树中的先后顺序获焦<br />- tabIndex < 0(通常是tabIndex = -1):表示元素是可聚焦的,但是不能通过tab键走焦来访问到该元素。<br/>默认值:0 |
| defaultFocus<sup>9+<sup> | boolean | 设置当前组件是否为当前页面上的默认焦点,仅在初次创建的页面第一次进入时生效。<br/>默认值:false |
| groupDefaultFocus<sup>9+<sup> | boolean | 设置当前组件是否为当前组件所在容器获焦时的默认焦点,仅在初次创建容器节点第一次获焦时生效。<br/>默认值:false<br/>**说明:** 必须与tabIndex联合使用,当某个容器设置了tabIndex,且容器内某子组件设置了groupDefaultFocus,当该容器首次获焦时,会自动将焦点转移至该组件上。<br/> |
| focusOnTouch<sup>9+<sup> | boolean | 设置当前组件是否支持点击获焦能力。<br/>默认值:false<br/>**说明:** 仅在组件可点击时才能正常获取焦点。 |
......
......@@ -12,9 +12,9 @@
| 名称 | 参数类型 | 描述 |
| -------------- | -------------------------------------------- | ----------------------------------- |
| linearGradient | {<br/>angle?:&nbsp;number \| string,<br/>direction?:&nbsp;[GradientDirection](ts-appendix-enums.md#gradientdirection),<br/>colors:&nbsp;Array&lt;[ColorStop](ts-basic-components-gauge.md#colorstop)&gt;,<br/>repeating?:&nbsp;boolean<br/>} | 线性渐变。<br/>- angle:&nbsp;线性渐变的角度。<br/>- direction:&nbsp;线性渐变的方向,设置angle后不生效。<br/>- colors:&nbsp;为渐变的颜色描述。<br/>- repeating:&nbsp;为渐变的颜色重复着色。 |
| sweepGradient | {<br/>center:&nbsp;Point,<br/>start?:&nbsp;number \| string,<br/>end?:&nbsp;number \| string,<br/>rotation?:&nbsp;number\|string,<br/>colors:&nbsp;Array&lt;[ColorStop](ts-basic-components-gauge.md#colorstop)&gt;,<br/>repeating?:&nbsp;boolean<br/>} | 角度渐变。<br/>- center:为角度渐变的中心点<br/>- start:角度渐变的起点。<br/>- end:角度渐变的终点。<br/>- rotation:&nbsp;角度渐变的旋转角度。<br/>- colors:&nbsp;为渐变的颜色描述。<br/>- repeating:&nbsp;为渐变的颜色重复着色。 |
| radialGradient | {<br/>center:&nbsp;Point,<br/>radius:&nbsp;number \| string,<br/>colors:&nbsp;Array&lt;[ColorStop](ts-basic-components-gauge.md#colorstop)&gt;,<br/>repeating?:&nbsp;boolean<br/>} | 径向渐变。<br/>- center:径向渐变的中心点。<br/>- radius:径向渐变的半径。<br/>- colors:&nbsp;为渐变的颜色描述。<br/>- repeating:&nbsp;为渐变的颜色重复着色。 |
| linearGradient | {<br/>angle?:&nbsp;number \| string,<br/>direction?:&nbsp;[GradientDirection](ts-appendix-enums.md#gradientdirection),<br/>colors:&nbsp;Array&lt;[ColorStop](ts-basic-components-gauge.md#colorstop)&gt;,<br/>repeating?:&nbsp;boolean<br/>} | 线性渐变。<br/>- angle:&nbsp;线性渐变的起始角度。0点方向顺时针旋转为正向角度。<br/> 默认值:180<br/>- direction:&nbsp;线性渐变的方向,设置angle后不生效。<br/> 默认值:GradientDirection.Bottom <br/>- colors:&nbsp;为渐变的颜色描述。<br/>- repeating:&nbsp;为渐变的颜色重复着色。 <br/> 默认值:false |
| sweepGradient | {<br/>center:&nbsp;Point,<br/>start?:&nbsp;number \| string,<br/>end?:&nbsp;number \| string,<br/>rotation?:&nbsp;number\|string,<br/>colors:&nbsp;Array&lt;[ColorStop](ts-basic-components-gauge.md#colorstop)&gt;,<br/>repeating?:&nbsp;boolean<br/>} | 角度渐变。<br/>- center:为角度渐变的中心点,即相对于当前组件左上角的坐标。<br/>- start:角度渐变的起点。<br/> 默认值:0<br/>- end:角度渐变的终点。<br/> 默认值:0<br/>- rotation:&nbsp;角度渐变的旋转角度。<br/> 默认值:0<br/>- colors:&nbsp;为渐变的颜色描述。<br/>- repeating:&nbsp;为渐变的颜色重复着色。<br/> 默认值:false |
| radialGradient | {<br/>center:&nbsp;Point,<br/> radius:&nbsp;number \| string,<br/>colors:&nbsp;Array&lt;[ColorStop](ts-basic-components-gauge.md#colorstop)&gt;,<br/>repeating?:&nbsp;boolean<br/>} | 径向渐变。<br/>- center:径向渐变的中心点,即相对于当前组件左上角的坐标。<br/>- radius:径向渐变的半径。<br/>- colors:&nbsp;为渐变的颜色描述。<br/>- repeating:&nbsp;为渐变的颜色重复着色。<br/> 默认值:false |
## 示例
......@@ -24,7 +24,6 @@
@Entry
@Component
struct ColorGradientExample {
build() {
Column({ space: 5 }) {
Text('linearGradient').fontSize(12).width('90%').fontColor(0xCCCCCC)
......@@ -33,8 +32,32 @@ struct ColorGradientExample {
.height(50)
.linearGradient({
angle: 90,
colors: [[0xAEE1E1, 0.0], [0xD3E0DC, 0.3], [0xFCD1D1, 1.0]]
colors: [[0xff0000, 0.0], [0x0000ff, 0.3], [0xffff00, 1.0]]
})
Text('linearGradient Repeat').fontSize(12).width('90%').fontColor(0xCCCCCC)
Row()
.width('90%')
.height(50)
.linearGradient({
direction: GradientDirection.Left, // 渐变方向
repeating: true, // 渐变颜色是否重复
colors: [[0xff0000, 0.0], [0x0000ff, 0.3], [0xffff00, 0.5]] // 数组末尾元素占比小于1时满足重复着色效果
})
}
.width('100%')
.padding({ top: 5 })
}
}
```
![zh-cn_image_0000001219864149](figures/gradientColor1.png)
```ts
@Entry
@Component
struct ColorGradientExample {
build() {
Column({ space: 5 }) {
Text('sweepGradient').fontSize(12).width('90%').fontColor(0xCCCCCC)
Row()
.width(100)
......@@ -43,8 +66,37 @@ struct ColorGradientExample {
center: [50, 50],
start: 0,
end: 359,
colors: [[0xAEE1E1, 0.0], [0xD3E0DC, 0.3], [0xFCD1D1, 1.0]]
colors: [[0xff0000, 0.0], [0x0000ff, 0.3], [0xffff00, 1.0]]
})
Text('sweepGradient Reapeat').fontSize(12).width('90%').fontColor(0xCCCCCC)
Row()
.width(100)
.height(100)
.sweepGradient({
center: [50, 50],
start: 0,
end: 359,
rotation: 45, // 旋转角度
repeating: true, // 渐变颜色是否重复
colors: [[0xff0000, 0.0], [0x0000ff, 0.3], [0xffff00, 0.5]] // 数组末尾元素占比小于1时满足重复着色效果
})
}
.width('100%')
.padding({ top: 5 })
}
}
```
![zh-cn_image_0000001219864149](figures/gradientColor2.png)
```ts
// xxx.ets
@Entry
@Component
struct ColorGradientExample {
build() {
Column({ space: 5 }) {
Text('radialGradient').fontSize(12).width('90%').fontColor(0xCCCCCC)
Row()
.width(100)
......@@ -52,7 +104,17 @@ struct ColorGradientExample {
.radialGradient({
center: [50, 50],
radius: 60,
colors:[[0xAEE1E1, 0.0], [0xD3E0DC, 0.3], [0xFCD1D1, 1.0]]
colors: [[0xff0000, 0.0], [0x0000ff, 0.3], [0xffff00, 1.0]]
})
Text('radialGradient Repeat').fontSize(12).width('90%').fontColor(0xCCCCCC)
Row()
.width(100)
.height(100)
.radialGradient({
center: [50, 50],
radius: 60,
repeating: true,
colors: [[0xff0000, 0.0], [0x0000ff, 0.3], [0xffff00, 0.5]] // 数组末尾元素占比小于1时满足重复着色效果
})
}
.width('100%')
......@@ -61,4 +123,4 @@ struct ColorGradientExample {
}
```
![zh-cn_image_0000001219864149](figures/zh-cn_image_0000001219864149.png)
![zh-cn_image_0000001219864149](figures/gradientColor3.png)
# 栅格设置
> **说明:**
>
> - 从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
>
> - 栅格布局的列宽、列间距由距离最近的GridContainer父组件决定。使用栅格属性的组件树上至少需要有1个GridContainer容器组件。
......@@ -10,7 +11,7 @@
| 名称 | 参数类型 | 描述 |
| ----------- | --------------------------| ----------------------------------------------- |
| ----------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
| useSizeType | {<br/>xs?:&nbsp;number&nbsp;\|&nbsp;{&nbsp;span:&nbsp;number,&nbsp;offset:&nbsp;number&nbsp;},<br/>sm?:&nbsp;number&nbsp;\|&nbsp;{&nbsp;span:&nbsp;number,&nbsp;offset:&nbsp;number&nbsp;},<br/>md?:&nbsp;number&nbsp;\|&nbsp;{&nbsp;span:&nbsp;number,&nbsp;offset:&nbsp;number&nbsp;},<br/>lg?:&nbsp;number&nbsp;\|&nbsp;{&nbsp;span:&nbsp;number,&nbsp;offset:&nbsp;number&nbsp;}<br/>} | 设置在特定设备宽度类型下的占用列数和偏移列数,span:&nbsp;占用列数;&nbsp;offset:&nbsp;偏移列数。<br/>当值为number类型时,仅设置列数,&nbsp;当格式如{"span":&nbsp;1,&nbsp;"offset":&nbsp;0}时,指同时设置占用列数与偏移列数。<br/>-&nbsp;xs:&nbsp;指设备宽度类型为SizeType.XS时的占用列数和偏移列数。<br/>-&nbsp;sm:&nbsp;指设备宽度类型为SizeType.SM时的占用列数和偏移列数。<br/>-&nbsp;md:&nbsp;指设备宽度类型为SizeType.MD时的占用列数和偏移列数。<br/>-&nbsp;lg:&nbsp;指设备宽度类型为SizeType.LG时的占用列数和偏移列数。 |
| gridSpan | number | 默认占用列数,指useSizeType属性没有设置对应尺寸的列数(span)时,占用的栅格列数。<br/>**说明:**<br/>设置了栅格span属性,组件的宽度由栅格布局决定。<br>默认值:1 |
| gridOffset | number | 默认偏移列数,指useSizeType属性没有设置对应尺寸的偏移(offset)时,&nbsp;当前组件沿着父组件Start方向,偏移的列数,也就是当前组件位于第n列。<br/>**说明:**<br/>- 配置该属性后,当前组件在父组件水平方向的布局不再跟随父组件原有的布局方式,而是沿着父组件的Start方向偏移一定位移。<br/>- 偏移位移&nbsp;=&nbsp;(列宽&nbsp;+&nbsp;间距)\*&nbsp;列数。<br/>- 设置了偏移(gridOffset)的组件之后的兄弟组件会根据该组件进行相对布局,类似相对布局。<br>默认值:0 |
......@@ -23,8 +24,9 @@
@Entry
@Component
struct GridContainerExample1 {
build(){
build() {
Column() {
Text('useSizeType').fontSize(15).fontColor(0xCCCCCC).width('90%')
GridContainer() {
Row({}) {
Row() {
......@@ -36,6 +38,7 @@ struct GridContainerExample1 {
})
.height("100%")
.backgroundColor(0x66bbb2cb)
Row() {
Text('Center').fontSize(25)
}
......@@ -45,6 +48,7 @@ struct GridContainerExample1 {
})
.height("100%")
.backgroundColor(0x66b6c5d1)
Row() {
Text('Right').fontSize(25)
}
......@@ -56,9 +60,40 @@ struct GridContainerExample1 {
.backgroundColor(0x66bbb2cb)
}
.height(200)
}
.backgroundColor(0xf1f3f5)
.margin({ top: 10 })
// 单独设置组件的span和offset,在sm尺寸大小的设备上使用useSizeType中sm的数据实现一样的效果
Text('gridSpan,gridOffset').fontSize(15).fontColor(0xCCCCCC).width('90%')
GridContainer() {
Row() {
Row() {
Text('Left').fontSize(25)
}
.gridSpan(1)
.height("100%")
.backgroundColor(0x66bbb2cb)
Row() {
Text('Center').fontSize(25)
}
.gridSpan(2)
.gridOffset(1)
.height("100%")
.backgroundColor(0x66b6c5d1)
Row() {
Text('Right').fontSize(25)
}
.gridSpan(1)
.gridOffset(3)
.height("100%")
.backgroundColor(0x66bbb2cb)
}.height(200)
}
}
}
}
```
......@@ -74,3 +109,7 @@ struct GridContainerExample1 {
**图3** 设备宽度为LG
![zh-cn_image_0000001219982727](figures/zh-cn_image_0000001219982727.png)
**图4** 单独设置gridSpan和gridOffset在特定屏幕大小下的效果与useSizeType效果一致
![gridSpan](figures/gridSpan.png)
\ No newline at end of file
# 触摸测试控制
设置组件的触摸测试类型。ArkUI开发框架在处理触屏事件时,会在触屏事件触发前,进行按压点和组件区域的触摸测试来收集需要响应触屏事件的组件,然后基于触摸测试结果分发相应的触屏事件。hitTestBehavior属性可以设置不同的触摸测试响应模式,影响组件的触摸测试收集结果,最终影响后续的触屏事件分发,具体影响参考HitTestMode枚举说明。
设置组件的触摸测试类型。ArkUI开发框架在处理触屏事件时,会在触屏事件触发前,进行按压点和组件区域的触摸测试来收集需要响应触屏事件的组件,然后基于触摸测试结果分发相应的触屏事件。hitTestBehavior属性可以设置不同的触摸测试响应模式,影响组件的触摸测试收集结果,最终影响后续的触屏事件分发,具体影响参考[HitTestMode](#hittestmode枚举说明)枚举说明。
> **说明:**
> - 从API Version 9开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
......@@ -11,9 +11,9 @@
| **名称** | **参数类型** | **描述** |
| -------------------- | -------- | ---------------------------------------- |
| hitTestBehavior | HitTestMode | 设置当前组件的触摸测试类型。<br>默认值: HitTestMode.Default |
| hitTestBehavior | [HitTestMode](#hittestmode枚举说明) | 设置当前组件的触摸测试类型。<br>默认值: HitTestMode.Default |
## HitTestMode 枚举说明
## HitTestMode枚举说明
| 名称 | 描述 |
| ------------| ----------------------------------------- |
......
# 图像效果
例如背景模糊、内容模糊和灰度效果等
设置组件的模糊,阴影效果以及设置图片的图像效果
> **说明:**
> 从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
## 权限列表
## 属性
......@@ -18,63 +13,113 @@
| ----------------------------- | ------------------------------------------------------------ | ------ | ------------------------------------------------------------ |
| blur | number | - | 为当前组件添加内容模糊效果,入参为模糊半径,模糊半径越大越模糊,为0时不模糊。 |
| backdropBlur | number | - | 为当前组件添加背景模糊效果,入参为模糊半径,模糊半径越大越模糊,为0时不模糊。 |
| shadow | {<br/>radius:&nbsp;number \| [Resource](ts-types.md#resource),<br/>color?:&nbsp;Color \| string \| Resource,<br/>offsetX?:&nbsp;number \| Resource,<br/>offsetY?:&nbsp;number \| Resource<br/>} | - | 为当前组件添加阴影效果,入参为模糊半径(必填)、阴影的颜色(可选,默认为灰色)、X轴的偏移量(可选,默认为0),Y轴的偏移量(可选,默认为0),偏移量单位为px。 |
| shadow | {<br/>radius:&nbsp;number \| [Resource](ts-types.md#resource),<br/>color?:&nbsp;[Color](ts-appendix-enums.md#color) \| string \| [Resource](ts-types.md#resource),<br/>offsetX?:&nbsp;number \| [Resource](ts-types.md#resource),<br/>offsetY?:&nbsp;number \| [Resource](ts-types.md#resource)<br/>} | - | 为当前组件添加阴影效果,入参为模糊半径(必填)、阴影的颜色(可选,默认为灰色)、X轴的偏移量(可选,默认为0),Y轴的偏移量(可选,默认为0),偏移量单位为px。 |
| grayscale | number | 0.0 | 为当前组件添加灰度效果。值定义为灰度转换的比例,入参1.0则完全转为灰度图像,入参则0.0图像无变化,入参在0.0和1.0之间时,效果呈线性变化。(百分比) |
| brightness | number | 1.0 | 为当前组件添加高光效果,入参为高光比例,值为1时没有效果,小于1时亮度变暗,0为全黑;大于1时亮度增加,数值越大亮度越大。 |
| saturate | number | 1.0 | 为当前组件添加饱和度效果,饱和度为颜色中的含色成分和消色成分(灰)的比例,入参为1时,显示原图像,大于1时含色成分越大,饱和度越大;小于1时消色成分越大,饱和度越小。(百分比) |
| contrast | number | 1.0 | 为当前组件添加对比度效果,入参为对比度的值,值为1时,显示原图;大于1时,值越大对比度越高,图像越清晰醒目;小于1时,值越小对比度越低;当对比度为0时,图像变为全灰。(百分比) |
| invert | number | 0 | 反转输入的图像。入参为图像反转的比例。值为1时完全反转。值为0则图像无变化。(百分比) |
| colorBlend&nbsp;<sup>8+</sup> | Color&nbsp;\|&nbsp;string&nbsp;\|&nbsp;[Resource](ts-types.md#resource) | - | 为当前组件添加颜色叠加效果,入参为叠加的颜色。 |
| colorBlend&nbsp;<sup>8+</sup> | [Color](ts-appendix-enums.md#color)&nbsp;\|&nbsp;string&nbsp;\|&nbsp;[Resource](ts-types.md#resource) | - | 为当前组件添加颜色叠加效果,入参为叠加的颜色。 |
| sepia | number | 0 | 将图像转换为深褐色。入参为图像反转的比例。值为1则完全是深褐色的,值为0图像无变化。&nbsp;(百分比) |
| hueRotate | number\|string | '0deg' | 色相旋转效果,输入参数为旋转角度。 |
| hueRotate | number&nbsp;\|&nbsp;string | '0deg' | 色相旋转效果,输入参数为旋转角度。 |
## 示例
示例效果请以真机运行为准,当前IDE预览器不支持。
### 示例1
模糊属性的用法,blur内容模糊,backdropBlur背景模糊。
```ts
// xxx.ets
@Entry
@Component
struct ImageEffectsExample {
struct BlurEffectsExample {
build() {
Column({space: 10}) {
Column({ space: 10 }) {
// 对字体进行模糊
Text('font blur').fontSize(15).fontColor(0xCCCCCC).width('90%')
Text('text').blur(3).width('90%').height(40)
.fontSize(16).backgroundColor(0xF9CF93).padding({ left: 5 })
Flex({ alignItems: ItemAlign.Center }) {
Text('original text').margin(10)
Text('blur text')
.blur(1).margin(10)
Text('blur text')
.blur(2).margin(10)
Text('blur text')
.blur(3).margin(10)
}.width('90%').height(40)
.backgroundColor(0xF9CF93)
// 对背景进行模糊
Text('backdropBlur').fontSize(15).fontColor(0xCCCCCC).width('90%')
Text().width('90%').height(40).fontSize(16).backdropBlur(3)
.backgroundImage('/comment/bg.jpg')
Text()
.width('90%')
.height(40)
.fontSize(16)
.backdropBlur(3)
.backgroundImage('/pages/attrs/image/image.jpg')
.backgroundImageSize({ width: 1200, height: 160 })
}.width('100%').margin({ top: 5 })
}
}
```
![textblur](figures/textblur.png)
### 示例2
设置图片的效果,包括阴影,灰度,高光,饱和度,对比度,图像反转,叠色,色相旋转等。
```ts
// xxx.ets
@Entry
@Component
struct ImageEffectsExample {
build() {
Column({ space: 10 }) {
// 添加阴影效果,图片效果不变
Text('shadow').fontSize(15).fontColor(0xCCCCCC).width('90%')
Image($r('app.media.bg')).width('90%').height(40)
.shadow({ radius: 10, color: Color.Gray, offsetX: 5, offsetY: 5 })
Image($r('app.media.image'))
.width('90%')
.height(40)
.shadow({ radius: 10, color: Color.Green, offsetX: 20, offsetY: 30 })
// 灰度效果0~1,越接近1,灰度越明显
Text('grayscale').fontSize(15).fontColor(0xCCCCCC).width('90%')
Image($r('app.media.bg')).width('90%').height(40).grayscale(0.6)
Image($r('app.media.image')).width('90%').height(40).grayscale(0.3)
Image($r('app.media.image')).width('90%').height(40).grayscale(0.8)
// 高光效果,1为正常图片,<1变暗,>1亮度增大
Text('brightness').fontSize(15).fontColor(0xCCCCCC).width('90%')
Image($r('app.media.bg')).width('90%').height(40).brightness(2.0)
Image($r('app.media.image')).width('90%').height(40).brightness(1.2)
// 饱和度,原图为1
Text('saturate').fontSize(15).fontColor(0xCCCCCC).width('90%')
Image($r('app.media.bg')).width('90%').height(40).saturate(2.0)
Image($r('app.media.image')).width('90%').height(40).saturate(2.0)
Image($r('app.media.image')).width('90%').height(40).saturate(0.7)
// 对比度,1为原图,>1值越大越清晰,<1值越小越模糊
Text('contrast').fontSize(15).fontColor(0xCCCCCC).width('90%')
Image($r('app.media.bg')).width('90%').height(40).contrast(2.0)
Image($r('app.media.image')).width('90%').height(40).contrast(2.0)
Image($r('app.media.image')).width('90%').height(40).contrast(0.8)
// 图像反转比例
Text('invert').fontSize(15).fontColor(0xCCCCCC).width('90%')
Image($r('app.media.bg')).width('90%').height(40).invert(1)
Image($r('app.media.image')).width('90%').height(40).invert(0.2)
Image($r('app.media.image')).width('90%').height(40).invert(0.8)
// 叠色添加
Text('colorBlend').fontSize(15).fontColor(0xCCCCCC).width('90%')
Image($r('app.media.image')).width('90%').height(40).colorBlend(Color.Green)
Image($r('app.media.image')).width('90%').height(40).colorBlend(Color.Blue)
// 深褐色
Text('sepia').fontSize(15).fontColor(0xCCCCCC).width('90%')
Image($r('app.media.image')).width('90%').height(40).sepia(0.8)
// 色相旋转
Text('hueRotate').fontSize(15).fontColor(0xCCCCCC).width('90%')
Image($r('app.media.bg')).width('90%').height(40).hueRotate(90)
Image($r('app.media.image')).width('90%').height(40).hueRotate(90)
}.width('100%').margin({ top: 5 })
}
}
```
<img src="figures/image-effect.png" alt="image-effect" />
\ No newline at end of file
![imageeffect](figures/imageeffect.png)
......@@ -11,7 +11,7 @@
| 名称 | 参数说明 | 描述 |
| --------------- | ------ | ---------------------------------------- |
| aspectRatio | number | 指定当前组件的宽高比。 |
| aspectRatio | number | 指定当前组件的宽高比,aspectRatio = width/height。 |
| displayPriority | number | 设置当前组件在布局容器中显示的优先级,当父容器空间不足时,低优先级的组件会被隐藏。<br/>**说明:**<br/>仅在Row/Column/Flex(单行)容器组件中生效。 |
......@@ -22,29 +22,32 @@
@Entry
@Component
struct AspectRatioExample {
private children : string[] = ['1', '2', '3', '4', '5', '6']
private children: string[] = ['1', '2', '3', '4', '5', '6'];
build() {
Column({space: 20}) {
Column({ space: 20 }) {
Text('using container: row').fontSize(14).fontColor(0xCCCCCC).width('100%')
Row({space: 10}) {
Row({ space: 10 }) {
ForEach(this.children, (item) => {
// 组件宽度 = 组件高度*1.5 = 90
Text(item)
.backgroundColor(0xbbb2cb)
.fontSize(20)
.aspectRatio(1.5)
.height(60)
// 组件高度 = 组件宽度/1.5 = 60/1.5 = 40
Text(item)
.backgroundColor(0xbbb2cb)
.fontSize(20)
.aspectRatio(1.5)
.width(60)
}, item=>item)
}, item => item)
}
.size({width: "100%", height: 100})
.size({ width: "100%", height: 100 })
.backgroundColor(0xd2cab3)
.clip(true)
// grid子元素width/height=3/2
Text('using container: grid').fontSize(14).fontColor(0xCCCCCC).width('100%')
Grid() {
ForEach(this.children, (item) => {
......@@ -54,12 +57,12 @@ struct AspectRatioExample {
.fontSize(40)
.aspectRatio(1.5)
}
}, item=>item)
}, item => item)
}
.columnsTemplate('1fr 1fr 1fr')
.columnsGap(10)
.rowsGap(10)
.size({width: "100%", height: 165})
.size({ width: "100%", height: 165 })
.backgroundColor(0xd2cab3)
}.padding(10)
}
......@@ -74,40 +77,44 @@ struct AspectRatioExample {
```ts
class ContainerInfo {
label : string = ''
size : string = ''
label: string = '';
size: string = '';
}
class ChildInfo {
text : string = ''
priority : number = 0
text: string = '';
priority: number = 0;
}
@Entry
@Component
struct DisplayPriorityExample {
private container : ContainerInfo[] = [
{label: 'Big container', size: '90%'},
{label: 'Middle container', size: '50%'},
{label: 'Small container', size: '30%'}
// 显示容器大小
private container: ContainerInfo[] = [
{ label: 'Big container', size: '90%' },
{ label: 'Middle container', size: '50%' },
{ label: 'Small container', size: '30%' }
]
private children : ChildInfo[] = [
{text: '1\n(priority:2)', priority: 2},
{text: '2\n(priority:1)', priority: 1},
{text: '3\n(priority:3)', priority: 3},
{text: '4\n(priority:1)', priority: 1},
{text: '5\n(priority:2)', priority: 2}
private children: ChildInfo[] = [
{ text: '1\n(priority:2)', priority: 2 },
{ text: '2\n(priority:1)', priority: 1 },
{ text: '3\n(priority:3)', priority: 3 },
{ text: '4\n(priority:1)', priority: 1 },
{ text: '5\n(priority:2)', priority: 2 }
]
@State currentIndex : number = 0
@State currentIndex: number = 0;
build() {
Column({space: 10}) {
Column({ space: 10 }) {
// 切换父级容器大小
Button(this.container[this.currentIndex].label).backgroundColor(0x317aff)
.onClick((event: ClickEvent) => {
this.currentIndex = (this.currentIndex + 1) % this.container.length
.onClick(() => {
this.currentIndex = (this.currentIndex + 1) % this.container.length;
})
Flex({justifyContent: FlexAlign.SpaceBetween}) {
ForEach(this.children, (item)=>{
// 通过变量设置Flex父容器宽度
Flex({ justifyContent: FlexAlign.SpaceBetween }) {
ForEach(this.children, (item) => {
// 使用displayPriority给子组件绑定显示优先级
Text(item.text)
.width(120)
.height(60)
......@@ -115,11 +122,11 @@ struct DisplayPriorityExample {
.textAlign(TextAlign.Center)
.backgroundColor(0xbbb2cb)
.displayPriority(item.priority)
}, item=>item.text)
}, item => item.text)
}
.width(this.container[this.currentIndex].size)
.backgroundColor(0xd2cab3)
}.width("100%").margin({top:50})
}.width("100%").margin({ top: 50 })
}
}
......
......@@ -12,25 +12,25 @@
| 名称 | 参数类型 | 描述 |
| -------- | -------- | -------- |
| align | [Alignment](ts-appendix-enums.md#alignment) | 设置元素内容的对齐方式,只有当设置的width和height大小超过元素本身内容大小时生效。<br/>默认值:Alignment.Center |
| align | [Alignment](ts-appendix-enums.md#alignment) | 设置元素内容的对齐方式,当元素的width和height大小大于元素本身内容大小时生效。<br/>默认值:Alignment.Center |
| direction | [Direction](ts-appendix-enums.md#direction) | 设置元素水平方向的布局。<br/>默认值:Direction.Auto |
| position | [Position](ts-types.md#position8) | 使用绝对定位,设置元素锚点相对于父容器顶部起点偏移位置。在布局容器中,设置该属性不影响父容器布局,仅在绘制时进行位置调整。 |
| markAnchor | [Position](ts-types.md#position8) | 设置元素在位置定位时的锚点,以元素顶部起点作为基准点进行偏移。<br/>默认值:<br/>{<br/>x: 0,<br/>y: 1<br/>} |
| offset | [Position](ts-types.md#position8) | 相对布局完成位置坐标偏移量,设置该属性,不影响父容器布局,仅在绘制时进行位置调整。<br/>默认值:<br/>{<br/>x: 0,<br/>y: 1<br/>} |
| position | [Position](ts-types.md#position8) | 绝对定位,设置元素左上角相对于父容器左上角偏移位置。在布局容器中,设置该属性不影响父容器布局,仅在绘制时进行位置调整。 |
| markAnchor | [Position](ts-types.md#position8) | 设置元素在位置定位时的锚点,以元素左上角作为基准点进行偏移。通常配合position和offset属性使用,单独使用时,效果类似offset<br/>默认值:<br/>{<br/>x: 0,<br/>y: 0<br/>} |
| offset | [Position](ts-types.md#position8) | 相对定位,设置元素相对于自身的偏移量。设置该属性,不影响父容器布局,仅在绘制时进行位置调整。<br/>默认值:<br/>{<br/>x: 0,<br/>y: 0<br/>} |
| alignRules<sup>9+</sup> | {<br/>left?: { anchor: string, align: [HorizontalAlign](ts-appendix-enums.md#horizontalalign) };<br/>right?: { anchor: string, align: [HorizontalAlign](ts-appendix-enums.md#horizontalalign) };<br/>middle?: { anchor: string, align: [HorizontalAlign](ts-appendix-enums.md#horizontalalign) };<br/>top?: { anchor: string, align: [VerticalAlign](ts-appendix-enums.md#verticalalign) };<br/>bottom?: { anchor: string, align: [VerticalAlign](ts-appendix-enums.md#verticalalign) };<br/>center?: { anchor: string, align: [VerticalAlign](ts-appendix-enums.md#verticalalign) }<br/>} | 指定相对容器的对齐规则。<br/>-&nbsp;left:设置左对齐参数。<br/>-&nbsp;right:设置右对齐参数。<br/>-&nbsp;middle:设置中间对齐的参数。<br/>-&nbsp;top:设置顶部对齐的参数。<br/>-&nbsp;bottom:设置底部对齐的参数。<br/>-&nbsp;center:设置中心对齐的参数。<br/>**说明:**<br/>-&nbsp;anchor:设置作为锚点的组件的id值。<br>-&nbsp;align:设置相对于锚点组件的对齐方式。 |
## 示例
### 示例1
```ts
// xxx.ets
@Entry
@Component
struct PositionExample {
struct PositionExample1 {
build() {
Column() {
Column({space: 10}) {
Column({ space: 10 }) {
// 元素内容<元素宽高,设置内容在与元素内的对齐方式
Text('align').fontSize(9).fontColor(0xCCCCCC).width('90%')
Text('top start')
.align(Alignment.TopStart)
......@@ -39,6 +39,14 @@ struct PositionExample {
.fontSize(16)
.backgroundColor(0xFFE4C4)
Text('Bottom end')
.align(Alignment.BottomEnd)
.height(50)
.width('90%')
.fontSize(16)
.backgroundColor(0xFFE4C4)
// 父容器设置direction为Direction.Auto|Ltr|不设置,子元素从左到右排列
Text('direction').fontSize(9).fontColor(0xCCCCCC).width('90%')
Row() {
Text('1').height(50).width('25%').fontSize(16).backgroundColor(0xF5DEB3)
......@@ -47,6 +55,15 @@ struct PositionExample {
Text('4').height(50).width('25%').fontSize(16).backgroundColor(0xD2B48C)
}
.width('90%')
.direction(Direction.Auto)
// 父容器设置direction为Direction.Rtl,子元素从右到左排列
Row() {
Text('1').height(50).width('25%').fontSize(16).backgroundColor(0xF5DEB3)
Text('2').height(50).width('25%').fontSize(16).backgroundColor(0xD2B48C)
Text('3').height(50).width('25%').fontSize(16).backgroundColor(0xF5DEB3)
Text('4').height(50).width('25%').fontSize(16).backgroundColor(0xD2B48C)
}
.width('90%')
.direction(Direction.Rtl)
}
}
......@@ -55,54 +72,75 @@ struct PositionExample {
}
```
![zh-cn_image_0000001174264368](figures/zh-cn_image_0000001174264368.gif)
![align.png](figures/align.png)
### 示例2
```ts
// xxx.ets
@Entry
@Component
struct PositionExample2 {
build() {
Column({ space: 20 }) {
// 设置子组件左上角相对于父组件左上角的偏移位置
Text('position').fontSize(12).fontColor(0xCCCCCC).width('90%')
Row({ space: 20 }) {
Text('1').size({ width: '45%', height: '50' }).backgroundColor(0xdeb887).border({ width: 1 }) .fontSize(16)
Text('2 position(25, 15)')
.size({ width: '60%', height: '30' }).backgroundColor(0xbbb2cb).border({ width: 1 })
.fontSize(16).align(Alignment.Start)
.position({ x: 25, y: 15 })
Row() {
Text('1').size({ width: '30%', height: '50' }).backgroundColor(0xdeb887).border({ width: 1 }).fontSize(16)
Text('2 position(30, 10)')
.size({ width: '60%', height: '30' })
.backgroundColor(0xbbb2cb)
.border({ width: 1 })
.fontSize(16)
.align(Alignment.Start)
.position({ x: 30, y: 10 })
Text('3').size({ width: '45%', height: '50' }).backgroundColor(0xdeb887).border({ width: 1 }).fontSize(16)
Text('4 position(50%, 70%)')
.size({ width: '50%', height: '50' }).backgroundColor(0xbbb2cb).border({ width: 1 }).fontSize(16)
.size({ width: '50%', height: '50' })
.backgroundColor(0xbbb2cb)
.border({ width: 1 })
.fontSize(16)
.position({ x: '50%', y: '70%' })
}.width('90%').height(100).border({ width: 1, style: BorderStyle.Dashed })
// 相对于起点偏移,其中x为最终定位点距离起点水平方向间距,x>0往左,反之向右。
// y为最终定位点距离起点垂直方向间距,y>0向上,反之向下
Text('markAnchor').fontSize(12).fontColor(0xCCCCCC).width('90%')
Stack({ alignContent: Alignment.TopStart }) {
Row()
.size({ width: '100', height: '100' })
.backgroundColor(0xdeb887)
Image($r('app.media.ic_health_heart'))
Text('text')
.size({ width: 25, height: 25 })
.backgroundColor(Color.Green)
.markAnchor({ x: 25, y: 25 })
Image($r('app.media.ic_health_heart'))
Text('text')
.size({ width: 25, height: 25 })
.markAnchor({ x: 25, y: 25 })
.position({ x: '100%', y: '100%' })
.backgroundColor(Color.Green)
.markAnchor({ x: -100, y: -25 })
Text('text')
.size({ width: 25, height: 25 })
.backgroundColor(Color.Green)
.markAnchor({ x: 25, y: -25 })
}.margin({ top: 25 }).border({ width: 1, style: BorderStyle.Dashed })
// 相对定位,x>0向右偏移,反之向左,y>0向下偏移,反之向上
Text('offset').fontSize(12).fontColor(0xCCCCCC).width('90%')
Row() {
Text('1').size({ width: '15%', height: '50' }).backgroundColor(0xdeb887).border({ width: 1 }).fontSize(16)
Text('2\noffset(15, 15)')
.size({ width: 120, height: '50' }).backgroundColor(0xbbb2cb).border({ width: 1 })
.fontSize(16).align(Alignment.Start)
.offset({ x: 15, y: 15 })
Text('2 offset(15, 30)')
.size({ width: 120, height: '50' })
.backgroundColor(0xbbb2cb)
.border({ width: 1 })
.fontSize(16)
.align(Alignment.Start)
.offset({ x: 15, y: 30 })
Text('3').size({ width: '15%', height: '50' }).backgroundColor(0xdeb887).border({ width: 1 }).fontSize(16)
Text('4\noffset(-10%, 20%)')
.size({ width: 150, height: '50' }) .backgroundColor(0xbbb2cb).border({ width: 1 }).fontSize(16)
.offset({ x: '-10%', y: '20%' })
Text('4 offset(-10%, 20%)')
.size({ width: 100, height: '50' })
.backgroundColor(0xbbb2cb)
.border({ width: 1 })
.fontSize(16)
.offset({ x: '-5%', y: '20%' })
}.width('90%').height(100).border({ width: 1, style: BorderStyle.Dashed })
}
.width('100%').margin({ top: 25 })
......@@ -110,4 +148,4 @@ struct PositionExample2 {
}
```
![zh-cn_image_0000001174104392](figures/zh-cn_image_0000001174104392.gif)
![position.png](figures/position.png)
......@@ -12,7 +12,7 @@
| 名称 | 参数类型 | 描述 |
| ---------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
| bindMenu | Array<MenuItem&gt;&nbsp;\|&nbsp;[CustomBuilder](ts-types.md#custombuilder8) | 给组件绑定菜单,点击后弹出菜单。弹出菜单项支持文本和自定义两种功能。 |
| bindMenu | Array<[MenuItem](#menuitem)&gt;&nbsp;\|&nbsp;[CustomBuilder](ts-types.md#custombuilder8) | 给组件绑定菜单,点击后弹出菜单。弹出菜单项支持文本和自定义两种功能。 |
| bindContextMenu<sup>8+</sup> | content:&nbsp;[CustomBuilder](ts-types.md#custombuilder8),<br>responseType:&nbsp;[ResponseType](ts-appendix-enums.md#responsetype8) | 给组件绑定菜单,触发方式为长按或者右键点击,弹出菜单项需要自定义。 |
## MenuItem
......
......@@ -11,8 +11,8 @@
| 名称 | 参数类型 | 描述 |
| ------- | ---------------------------------------------------- | ------------------------------------------------------------ |
| opacity | number&nbsp;\|&nbsp;[Resource](ts-types.md#resource) | 元素的不透明度,取值范围为0到1,1表示为不透明,0表示为完全透明<br>**说明:**<br/>子组件可以继承父组件的此属性。默认值:1 |
| ------- | ---------------------------------------- | ---------------------------------------- |
| opacity | number&nbsp;\|&nbsp;[Resource](ts-types.md#resource) | 元素的不透明度,取值范围为0到1,1表示不透明,0表示完全透明, 达到隐藏组件效果,但是在布局中占位<br>**说明:**<br/>子组件可以继承父组件的此属性。默认值:1 |
## 示例
......@@ -30,6 +30,10 @@ struct OpacityExample {
Text().width('90%').height(50).opacity(0.7).backgroundColor(0xAFEEEE)
Text('opacity(0.4)').fontSize(9).width('90%').fontColor(0xCCCCCC)
Text().width('90%').height(50).opacity(0.4).backgroundColor(0xAFEEEE)
Text('opacity(0.1)').fontSize(9).width('90%').fontColor(0xCCCCCC)
Text().width('90%').height(50).opacity(0.1).backgroundColor(0xAFEEEE)
Text('opacity(0)').fontSize(9).width('90%').fontColor(0xCCCCCC)
Text().width('90%').height(50).opacity(0).backgroundColor(0xAFEEEE)
}
.width('100%')
.padding({ top: 5 })
......@@ -37,4 +41,4 @@ struct OpacityExample {
}
```
![zh-cn_image_0000001219662647](figures/zh-cn_image_0000001219662647.gif)
![opacity.png](figures/opacity.png)
......@@ -8,10 +8,9 @@
## 属性
| 名称 | 参数类型 | 描述 |
| ------- | ----------------------------- | ------------------------- |
| overlay | value:&nbsp;string,<br/>options?:&nbsp;{<br/>align?:&nbsp;[Alignment](ts-appendix-enums.md#alignment),&nbsp;<br/>offset?:&nbsp;{<br> x?:&nbsp;number,<br> y?:&nbsp;number<br> }<br/>} | 在当前组件上,增加遮罩文本,布局与当前组件相同。<br>默认值:<br>{<br/>align:&nbsp;Alignment.Center,<br/>offset:&nbsp;{0,&nbsp;0}<br/>} |
| 名称 | 参数类型 | 默认值 | 描述 |
| -------- | -------- | -------- | -------- |
| overlay | value:&nbsp;string,<br/>options?:&nbsp;{<br/>align?:&nbsp;[Alignment](ts-appendix-enums.md#alignment),&nbsp;<br/>offset?:&nbsp;{x?:&nbsp;number, y?:&nbsp;number}<br/>} | {<br/>align:&nbsp;Alignment.Center,<br/>offset:&nbsp;{0,&nbsp;0}<br/>} | 在当前组件上,增加遮罩文本。<br/> value: 遮罩文本内容。<br/>options: 文本定位,align设置文本相对于组件的方位,[offset](ts-universal-attributes-location.md)为文本基于自身左上角的偏移量。文本默认处于组件左上角。<br>两者都设置时效果重叠,文本相对于组件方位定位后再基于当前位置文本的左上角进行偏移。 |
## 示例
......@@ -28,7 +27,10 @@ struct OverlayExample {
Column() {
Image($r('app.media.img'))
.width(240).height(240)
.overlay("Winter is a beautiful season, especially when it snows.", { align: Alignment.Bottom, offset: { x: 0, y: -15 } })
.overlay("Winter is a beautiful season, especially when it snows.", {
align: Alignment.Bottom,
offset: { x: 70, y: 100 }
})
}.border({ color: Color.Black, width: 2 })
}.width('100%')
}.padding({ top: 20 })
......
# Popup控制
设置组件点击时弹出的气泡框状态。
给组件绑定popup弹窗,并设置弹窗内容,交互逻辑和显示状态。
> **说明:**
>
......@@ -12,7 +12,7 @@
| 名称 | 参数类型 | 描述 |
| ---------- | ------------------------------------- | --------------------------------------- |
| bindPopup | show:&nbsp;boolean,<br/>popup:&nbsp;PopupOptions&nbsp;\|&nbsp;CustomPopupOptions<sup>8+</sup> | 给组件绑定Popup,点击弹出弹窗。<br/>show:&nbsp;创建页面弹窗提示是否默认显示,默认值为false<br/>popup:&nbsp;配置当前弹窗提示的参数。 |
| bindPopup | show:&nbsp;boolean,<br/>popup:&nbsp;[PopupOptions](#popupoptions类型说明)&nbsp;\|&nbsp;[CustomPopupOptions](#custompopupoptions8类型说明)<sup>8+</sup> | 给组件绑定Popup弹窗,设置参数show为true弹出弹框。<br/>show:&nbsp;弹窗显示状态,默认值为false,隐藏弹窗<br/>popup:&nbsp;配置当前弹窗提示的参数。 |
## PopupOptions类型说明
......@@ -21,6 +21,7 @@
| message | string | 是 | 弹窗信息内容。 |
| placementOnTop | boolean | 否 | 是否在组件上方显示,默认值为false。 |
| arrowOffset<sup>9+</sup> | [Length](ts-types.md#length) | 否 | popup箭头在弹窗处的偏移。箭头在气泡上下方时,默认居左;箭头在气泡左右侧时,默认居上。 |
| showInSubWindow<sup>9+</sup> | boolean | 否 | 是否在子窗口显示气泡,默认值为false。 |
| primaryButton | {<br/>value:&nbsp;string,<br/>action:&nbsp;()&nbsp;=&gt;&nbsp;void<br/>} | 否 | 第一个按钮。<br/>value:&nbsp;弹窗里主按钮的文本。<br/>action:&nbsp;点击主按钮的回调函数。 |
| secondaryButton | {<br/>value:&nbsp;string,<br/>action:&nbsp;()&nbsp;=&gt;&nbsp;void<br/>} | 否 | 第二个按钮。<br/>value:&nbsp;弹窗里辅助按钮的文本。<br/>action:&nbsp;点击辅助按钮的回调函数。 |
| onStateChange | (event:&nbsp;{&nbsp;isVisible:&nbsp;boolean&nbsp;})&nbsp;=&gt;&nbsp;void | 否 | 弹窗状态变化事件回调,参数isVisible为弹窗当前的显示状态。 |
......@@ -32,6 +33,7 @@
| builder | [CustomBuilder](ts-types.md#custombuilder8) | 是 | 提示气泡内容的构造器。 |
| placement | [Placement](ts-appendix-enums.md#placement8) | 否 | 气泡组件优先显示的位置,当前位置显示不下时,会自动调整位置。<br/>默认值:Placement.Bottom |
| arrowOffset<sup>9+</sup> | [Length](ts-types.md#length) | 否 | popup箭头在弹窗处的偏移。箭头在气泡上下方时,默认居左;箭头在气泡左右侧时,默认居上。 |
| showInSubWindow<sup>9+</sup> | boolean | 否 | 是否在子窗口显示气泡,默认值为false。 |
| maskColor | [ResourceColor](ts-types.md#resourcecolor) | 否 | 提示气泡遮障层的颜色。 |
| popupColor | [ResourceColor](ts-types.md#resourcecolor) | 否 | 提示气泡的颜色。 |
| enableArrow | boolean | 否 | 是否显示箭头。<br/>从API Version 9开始,如果箭头所在方位侧的气泡长度不足以显示下箭头,则会默认不显示箭头。比如:placement设置为Left,但气泡高度小于箭头的宽度(32vp),则实际不会显示箭头。<br/>默认值:true |
......@@ -40,36 +42,37 @@
## 示例
```ts
// xxx.ets
@Entry
@Component
struct PopupExample {
@State noHandlePopup: boolean = false
@State handlePopup: boolean = false
@State customPopup: boolean = false
@State handlePopup: boolean = false;
@State customPopup: boolean = false;
// popup构造器定义弹框内容
@Builder popupBuilder() {
Row({ space: 2 }) {
Image('/resource/ic_public_thumbsup.svg').width(24).height(24).margin({ left: -5 })
Image($r("app.media.image")).width(24).height(24).margin({ left: -5 })
Text('Custom Popup').fontSize(10)
}.width(100).height(50).backgroundColor(Color.White)
}.width(100).height(50).padding(5)
}
build() {
Flex({ direction: FlexDirection.Column }) {
Button('no handle popup')
// PopupOptions 类型设置弹框内容
Button('PopupOptions')
.onClick(() => {
this.noHandlePopup = !this.noHandlePopup
this.noHandlePopup = !this.noHandlePopup;
})
.bindPopup(this.noHandlePopup, {
message: 'content1 content1',
placementOnTop: false,
showInSubWindow:true,
onStateChange: (e) => {
console.info(e.isVisible.toString())
if (!e.isVisible) {
this.noHandlePopup = false
this.noHandlePopup = false;
}
}
})
......@@ -77,44 +80,59 @@ struct PopupExample {
Button('with handle popup')
.onClick(() => {
this.handlePopup = !this.handlePopup
this.handlePopup = !this.handlePopup;
})
.bindPopup(this.handlePopup, {
message: 'content2 content2',
placementOnTop: true,
showInSubWindow:false,
primaryButton: {
value: 'ok',
value: 'confirm',
action: () => {
this.handlePopup = !this.handlePopup;
console.info('ok Button click')
}
},
// 第二个按钮
secondaryButton: {
value: 'cancle',
action: () => {
this.handlePopup = !this.handlePopup
console.info('secondaryButton click')
this.handlePopup = !this.handlePopup;
console.info('cancle Button click')
}
},
onStateChange: (e) => {
console.info(e.isVisible.toString())
if (!e.isVisible) {
this.handlePopup = false;
}
}
})
.position({ x: 100, y: 200 })
.position({ x: 100, y: 50 })
Button('custom popup')
// CustomPopupOptions 类型设置弹框内容
Button('CustomPopupOptions')
.onClick(() => {
this.customPopup = !this.customPopup
this.customPopup = !this.customPopup;
})
.bindPopup(this.customPopup, {
builder: this.popupBuilder,
placement: Placement.Bottom,
placement: Placement.Top,
maskColor: 0x33000000,
popupColor: Color.White,
popupColor: Color.Yellow,
enableArrow: true,
showInSubWindow:false,
onStateChange: (e) => {
if (!e.isVisible) {
this.customPopup = false
this.customPopup = false;
}
}
})
.position({ x: 100, y: 350 })
.position({ x: 80, y: 200 })
}.width('100%').padding({ top: 5 })
}
}
```
![zh-cn_image_0000001187055946](figures/zh-cn_image_0000001187055946.gif)
![figures/popup.gif](figures/popup.gif)
# 尺寸设置
用于设置组件的宽高、边距等显示尺寸进行设置
用于设置组件的宽高、边距。
> **说明:**
>
......@@ -18,7 +18,7 @@
| padding | [Padding](ts-types.md#padding)&nbsp;\|&nbsp;[Length](ts-types.md#length) | 设置内边距属性。<br/>参数为Length类型时,四个方向内边距同时生效。<br>默认值:0 <br>padding设置百分比时,上下左右内边距均以父容器的width作为基础值。 |
| margin | [Margin](ts-types.md#margin)&nbsp;\|&nbsp;[Length](ts-types.md#length) | 设置外边距属性。<br/>参数为Length类型时,四个方向外边距同时生效。<br>默认值:0 <br>margin设置百分比时,上下左右外边距均以父容器的width作为基础值。|
| constraintSize | {<br/>minWidth?:&nbsp;[Length](ts-types.md#length),<br/>maxWidth?:&nbsp;[Length](ts-types.md#length),<br/>minHeight?:&nbsp;[Length](ts-types.md#length),<br/>maxHeight?:&nbsp;[Length](ts-types.md#length)<br/>} | 设置约束尺寸,组件布局时,进行尺寸范围限制。constraintSize的优先级高于Width和Height。<br>默认值:<br>{<br/>minWidth:&nbsp;0,<br/>maxWidth:&nbsp;Infinity,<br/>minHeight:&nbsp;0,<br/>maxHeight:&nbsp;Infinity<br/>} |
| layoutWeight | number&nbsp;\|&nbsp;string | 容器尺寸确定时,元素与兄弟节点主轴布局尺寸按照权重进行分配,忽略本身尺寸设置,表示自适应占满剩余空间。<br>**说明:**<br/>仅在Row/Column/Flex布局中生效。<br>默认值:0 |
| layoutWeight | number&nbsp;\|&nbsp;string | 父容器尺寸确定时,设置了layoutWeight属性的子元素与兄弟元素占主轴尺寸按照权重进行分配,忽略元素本身尺寸设置,表示自适应占满剩余空间。<br>**说明:**<br/>仅在Row/Column/Flex布局中生效。|
## 示例
......@@ -31,30 +31,41 @@ struct SizeExample {
build() {
Column({ space: 10 }) {
Text('margin and padding:').fontSize(12).fontColor(0xCCCCCC).width('90%')
// 宽度80 ,高度80 ,内外边距20
Row() {
// 宽度80 ,高度80 ,外边距20(蓝色区域),内边距10(白色区域)
Row() {
Row().size({ width: '100%', height: '100%' }).backgroundColor(0xAFEEEE)
}.width(80).height(80).padding(20).margin(20).backgroundColor(0xFDF5E6)
}.backgroundColor(0xFFA500)
Row().size({ width: '100%', height: '100%' }).backgroundColor(Color.Yellow)
}
.width(80)
.height(80)
.padding(10)
.margin(20)
.backgroundColor(Color.White)
}.backgroundColor(Color.Blue)
Text('constraintSize').fontSize(12).fontColor(0xCCCCCC).width('90%')
Text('this is a Text.this is a Text.this is a Text.this is a Text.this is a Text.this is a Text.this is a Text.this is a Text.this is a Text.this is a Text.this is a Text.this is a Text.this is a Text.this is a Text.this is a Text')
.width('90%')
.constraintSize({ maxWidth: 200 })
Text('layoutWeight').fontSize(12).fontColor(0xCCCCCC).width('90%')
// 容器尺寸确定时,元素与兄弟节点主轴布局尺寸按照权重进行分配,忽略本身尺寸设置。
// 父容器尺寸确定时,设置了layoutWeight的子元素在主轴布局尺寸按照权重进行分配,忽略本身尺寸设置。
Row() {
// 权重1
// 权重1,占主轴剩余空间1/3
Text('layoutWeight(1)')
.size({ width: '30%', height: 110 }).backgroundColor(0xFFEFD5).textAlign(TextAlign.Center)
.layoutWeight(1)
// 权重2
// 权重2,占主轴剩余空间2/3
Text('layoutWeight(2)')
.size({ width: '30%', height: 110 }).backgroundColor(0xF5DEB3).textAlign(TextAlign.Center)
.layoutWeight(2)
// 权重默认0
// 未设置layoutWeight属性,组件按照自身尺寸渲染
Text('no layoutWeight')
.size({ width: '30%', height: 110 }).backgroundColor(0xD2B48C).textAlign(TextAlign.Center)
}.size({ width: '90%', height: 140 }).backgroundColor(0xAFEEEE)
}.width('100%').margin({ top: 5 })
}}
}
}
```
![zh-cn_image_0000001174264384](figures/zh-cn_image_0000001174264384.gif)
![size](figures/size.png)
# 文本样式设置
针对包含文本元素的组件,设置文本样式。
> **说明:**
>
> 从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
针对包含文本元素的组件,设置文本样式。
## 属性
| 名称 | 参数类型 | 描述 |
| -----------| ---------------------------------------- | ------------------------------------ |
| fontColor | [ResourceColor](ts-types.md#resourcecolor) | 设置文本颜色。 |
| fontSize | Length&nbsp;\|&nbsp;[Resource](ts-types.md#resource) | 设置文本尺寸,Length为number类型时,使用fp单位。 |
| fontStyle | [FontStyle](ts-appendix-enums.md#fontstyle) | 设置文本的字体样式。<br>默认值:FontStyle.Normal |
| fontColor | [ResourceColor](ts-types.md#resourcecolor) | 设置字体颜色。 |
| fontSize | Length&nbsp;\|&nbsp;[Resource](ts-types.md#resource) | 设置字体大小,Length为number类型时,使用fp单位。字体默认大小10。 |
| fontStyle | [FontStyle](ts-appendix-enums.md#fontstyle) | 设置字体样式。<br>默认值:FontStyle.Normal |
| fontWeight | number&nbsp;\|&nbsp;[FontWeight](ts-appendix-enums.md#fontweight)&nbsp;\|&nbsp;string | 设置文本的字体粗细,number类型取值[100,&nbsp;900],取值间隔为100,默认为400,取值越大,字体越粗。string类型仅支持number类型取值的字符串形式,例如"400",以及"bold"、"bolder"、"lighter"、"regular"、"medium",分别对应FontWeight中相应的枚举值。<br/>默认值:FontWeight.Normal |
| fontFamily | string&nbsp;\|&nbsp;[Resource](ts-types.md#resource) | 设置文本的字体列表。使用多个字体,使用','进行分割,优先级按顺序生效。例如:'Arial,&nbsp;sans-serif'。 |
| fontFamily | string&nbsp;\|&nbsp;[Resource](ts-types.md#resource) | 设置字体列表。默认字体'HarmonyOS Sans',且当前只支持这种字体。|
## 示例
......@@ -29,40 +30,38 @@ struct TextStyleExample {
build() {
Column({ space: 5 }) {
Text('default text')
Divider()
Text('text font color red')
.fontColor(Color.Red)
Text('text font color red').fontColor(Color.Red)
Divider()
Text('text font size 20')
.fontSize(20)
Text('text font style Italic')
.fontStyle(FontStyle.Italic)
Text('text font default')
Text('text font size 10').fontSize(10)
Text('text font size 10fp').fontSize('10fp')
Text('text font size 20').fontSize(20)
Divider()
Text('text fontWeight bold')
.fontWeight(700)
Text('text font style Italic').fontStyle(FontStyle.Italic)
Divider()
Text('text fontFamily sans-serif')
.fontFamily('sans-serif')
Text('text fontWeight bold').fontWeight(700)
Text('text fontWeight lighter').fontWeight(FontWeight.Lighter)
Divider()
Text('red 20 Italic bold cursive text')
Text('red 20 Italic bold text')
.fontColor(Color.Red)
.fontSize(20)
.fontStyle(FontStyle.Italic)
.fontWeight(700)
.fontFamily('cursive')
.textAlign(TextAlign.Center)
.width('90%')
.fontWeight(FontWeight.Bold)
Divider()
Text('Orange 18 Normal source-sans-pro text')
Text('Orange 18 Normal text')
.fontColor(Color.Orange)
.fontSize(18)
.fontStyle(FontStyle.Normal)
.fontWeight(400)
.fontFamily('source-sans-pro,cursive,sans-serif')
}.width('100%')
}
}
```
![zh-cn_image_0000001219662673](figures/zh-cn_image_0000001219662673.png)
![textstyle](figures/textstyle.png)
......@@ -2,6 +2,7 @@
适用于支持通用点击事件、通用触摸事件、通用手势处理的组件。
> **说明:**
>
> 从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
......@@ -12,16 +13,16 @@
| 名称 | 参数类型 | 描述 |
| -------------- | --------------------------------------------- | ----------------------------------------- |
| responseRegion | Array&lt;Rectangle&gt;&nbsp;\|&nbsp;Rectangle | 设置一个或多个触摸热区,包括位置和大小。<br/>默认值:<br/>{<br/>x:0,<br/>y:0,<br/>width:'100%',<br/>height:'100%'<br/>} |
| responseRegion | Array&lt;[Rectangle](#rectangle对象说明)&gt;&nbsp;\|&nbsp;[Rectangle](#rectangle对象说明) | 设置一个或多个触摸热区,包括位置和大小。<br/>默认触摸热区为整个组件,默认值:<br/>{<br/>x:0,<br/>y:0,<br/>width:'100%',<br/>height:'100%'<br/>} |
### Rectangle对象说明
## Rectangle对象说明
| 名称 | 类型 | 必填 | 描述 |
| ------ | ----------------------------- | -----| -------------------------------- |
| x | [Length](ts-types.md#length) | 否 | 触摸点相对于组件本身左边沿的X坐标。<br/>默认值:0vp |
| y | [Length](ts-types.md#length) | 否 | 触摸点相对于组件本身左边沿的Y坐标。<br/>默认值:0vp |
| width | [Length](ts-types.md#length) | 否 | 触摸热区范围的宽度。<br/>默认值:100% |
| height | [Length](ts-types.md#length) | 否 | 触摸热区范围的高度。<br/>默认值:100% |
| x | [Length](ts-types.md#length) | 否 | 触摸点相对于组件左上角的x轴坐标。<br/>默认值:0vp |
| y | [Length](ts-types.md#length) | 否 | 触摸点相对于组件左上角的y轴坐标。<br/>默认值:0vp |
| width | [Length](ts-types.md#length) | 否 | 触摸热区的宽度。<br/>默认值:'100%' |
| height | [Length](ts-types.md#length) | 否 | 触摸热区的高度。<br/>默认值:'100%' |
> **说明:**
>
......@@ -29,7 +30,7 @@
>
> width和height只能设置正值百分比。width:'100%'表示热区宽度设置为该组件本身的宽度。比如组件本身宽度是100vp,那么'100%'表示热区宽度也为100vp。height:'100%'表示热区高度设置为该组件本身的高度。
>
> 百分比是相对于组件本身来度量的
> 百分比相对于组件自身宽高进行计算
## 示例
......@@ -38,19 +39,38 @@
// xxx.ets
@Entry
@Component
struct ResponseRegionExample {
struct TouchTargetExample {
@State text: string = "";
build() {
Column() {
Toggle({ type: ToggleType.Checkbox, isOn: true })
.selectedColor(0x39a2db)
.backgroundColor(0xAFEEEE)
.responseRegion({ x: 1.0, y: 1.0, width: 400, height: 400 })
.onChange((isOn: boolean) => {
console.info('Component status:' + isOn)
Column({ space: 20 }) {
Text("{x:0,y:0,width:'50%',height:'100%'}")
// 热区宽度为按钮的一半,点击右侧无响应
Button("button1")
.responseRegion({ x: 0, y: 0, width: '50%', height: '100%' })
.onClick(() => {
this.text = 'button1 clicked';
})
// 热区宽度为按钮的一半,且右移一个按钮宽度,点击button2右侧左边,点击事件生效
Text("{x:'100%',y:0,width:'50%',height:'100%'}")
Button("button2")
.responseRegion({ x: '100%', y: 0, width: '50%', height: '100%' })
.onClick(() => {
this.text = 'button2 clicked';
})
// 热区大小为整个按钮,且下移一个按钮高度,点击button3下方按钮大小区域,点击事件生效
Text("{x:0,y:'100%',width:'100%',height:'100%'}")
Button("button3")
.responseRegion({ x: 0, y: '100%', width: '100%', height: '100%' })
.onClick(() => {
this.text = 'button3 clicked';
})
}.width('100%').margin({ top: 5 })
Text(this.text).margin({ top: 50 })
}.width('100%').margin({ top: 10 })
}
}
```
![zh-cn_image_0000001184400598](figures/zh-cn_image_0000001184400598.gif)
![touchtarget.gif](figures/touchtarget.gif)
......@@ -23,20 +23,21 @@ struct VisibilityExample {
build() {
Column() {
Column() {
Text('Visible').fontSize(9).width('90%').fontColor(0xCCCCCC)
Row().visibility(Visibility.Visible).width('90%').height(80).backgroundColor(0xAFEEEE)
Text('None').fontSize(9).width('90%').fontColor(0xCCCCCC)
// 隐藏不参与占位
Text('None').fontSize(9).width('90%').fontColor(0xCCCCCC)
Row().visibility(Visibility.None).width('90%').height(80).backgroundColor(0xAFEEEE)
Text('Hidden').fontSize(9).width('90%').fontColor(0xCCCCCC)
// 隐藏参与占位
Text('Hidden').fontSize(9).width('90%').fontColor(0xCCCCCC)
Row().visibility(Visibility.Hidden).width('90%').height(80).backgroundColor(0xAFEEEE)
// 正常显示,组件默认的显示模式
Text('Visible').fontSize(9).width('90%').fontColor(0xCCCCCC)
Row().visibility(Visibility.Visible).width('90%').height(80).backgroundColor(0xAFEEEE)
}.width('90%').border({ width: 1 })
}.width('100%').margin({ top: 5 })
}
}
```
![zh-cn_image_0000001174104390](figures/zh-cn_image_0000001174104390.gif)
![visibility.png](figures/visibility.png)
# Z序控制
组件的Z序,指明了该组件在堆叠组件中的位置
组件的Z序,设置组件的堆叠顺序
> **说明:**
>
......@@ -25,20 +25,25 @@ struct ZIndexExample {
build() {
Column() {
Stack() {
// stack会重叠组件, 默认后定义的在最上面
Text('first child, zIndex(2)')
.size({width: '40%', height: '30%'}).backgroundColor(0xbbb2cb)
// stack会重叠组件, 默认后定义的在最上面,具有较高zIndex值的元素在zIndex较小的元素前面
Text('1, zIndex(2)')
.size({ width: '40%', height: '30%' }).backgroundColor(0xbbb2cb)
.zIndex(2)
// 默认值0
Text('second child, default zIndex(0)')
.size({width: '90%', height: '80%'}).backgroundColor(0xd2cab3).align(Alignment.TopStart)
Text('third child, zIndex(1)')
.size({width: '70%', height: '50%'}).backgroundColor(0xc1cbac).align(Alignment.TopStart)
Text('2, default zIndex(1)')
.size({ width: '70%', height: '50%' }).backgroundColor(0xd2cab3).align(Alignment.TopStart)
.zIndex(1)
Text('3, zIndex(0)')
.size({ width: '90%', height: '80%' }).backgroundColor(0xc1cbac).align(Alignment.TopStart)
}.width('100%').height(200)
}.width('100%').height(200)
}
}
```
Stack容器内子组件不设置zIndex的效果
![nozindex.png](figures/nozindex.png)
Stack容器子组件设置zIndex后效果
![zindex.png](figures/zindex.png)
![zh-cn_image_0000001174582860](figures/zh-cn_image_0000001174582860.png)
# DistributedSchedule错误码
## 201 权限校验失败
### 错误信息
Permission denied.
### 可能原因
该错误码表示权限校验失败,可能原因是未配置对应权限。
### 处理步骤
配置权限ohos.permission.MANAGER_MISSIONS或ohos.permission.DISTRIBUTED_DATASYNC。
## 401 参数检查错误
### 错误信息
The parameter check failed.
### 可能原因
该错误码表示入参检查错误,可能原因是callback入参检查错误。
### 处理步骤
检查入参callback是否为合法值。
## 16600001 系统服务工作异常
### 错误信息
The system ability work abnormally.
### 可能原因
该错误码表示系统服务工作异常,可能原因如下。
1. DMS服务没有正常启动。
2. DMS的binder对象无法正常获取。
3. 流转依赖的其他服务没有正常启动或者binder对象无法获取。
### 处理步骤
系统服务内部工作异常,请稍后重试,或者重启设备尝试。
## 16600002 指定的token或callback未注册
### 错误信息
The specified token or callback has not registered.
### 可能原因
该错误码可能原因是指定的token或callback未注册。
### 处理步骤
请先注册token或callback。
## 16600003 应用注册token已达到最大次数限制
### 错误信息
The number of token registration times has reached the upper limit.
### 可能原因
该错误码可能原因是应用注册token已达到最大次数限制。
### 处理步骤
请勿频繁注册,请使用已注册的token。
## 16600004 指定的callback已注册
### 错误信息
The specified callback has been registered.
### 可能原因
该错误码表示指定的callback已注册,可能原因是使用相同的callback重复注册。
### 处理步骤
请勿使用相同的callback重复注册。
## 16300501 系统服务工作异常
### 错误信息
The system ability work abnormally.
### 可能原因
该错误码表示系统服务工作异常,可能原因如下。
1. DMS服务没有正常启动。
2. DMS的binder对象无法正常获取。
3. 流转依赖的其他服务没有正常启动或者binder对象无法获取。
### 处理步骤
系统服务内部工作异常,请稍后重试,或者重启设备尝试。
## 16300502 获取指定的missionId的missionInfo失败
### 错误信息
Failed to get the missionInfo of the specified missionId.
### 可能原因
该错误码表示获取指定的missionId的missionInfo失败,可能原因如下。
1. missionId输入错误。
2. missionId对应的missionInfo确实不存在。
### 处理步骤
请检查输入的missionId是否正确。
## 16300503 远端未安装应用且不支持免安装
### 错误信息
The application is not installed on the remote end and installation-free is not supported.
### 可能原因
该错误码可能原因是远端未安装迁移应用并且不支持免安装。
### 处理步骤
1. 请检查远端是否已安装需要迁移的应用。
2. 请检查远端是否支持免安装。
## 16300504 远端未安装应用但支持免安装,需使用免安装标识重试
### 错误信息
The application is not installed on the remote end but installation-free is supported, try again with freeInstall flag.
### 可能原因
该错误码可能原因是远端未安装应用但支持免安装,使用时未使用免安装的标识。
### 处理步骤
请使用免安装的标识重试。
## 16300505 操作设备必须是迁移的应用所在的设备或需迁移到的目标设备
### 错误信息
The operation device must be the device where the application to be continued is located or the target device to be continued.
### 可能原因
该错误码可能原因是操作设备不是迁移的应用所在的设备或需迁移到的目标设备。
### 处理步骤
请检查操作设备是否是迁移的应用所在的设备或需迁移到的目标设备。
## 16300506 本地迁移任务已在进行中
### 错误信息
The local continuation task is already in progress.
### 可能原因
该错误码表示本地迁移任务已在进行中,可能原因是已经发起了迁移任务还未结束。
### 处理步骤
请检查是否已经发起了迁移并未结束。
## 3 序列化对象失败
### 错误信息
Failed to flatten the object.
### 可能原因
该错误码表示对象序列化过程中出现错误,可能原因是系统参数DMS_PROXY_INTERFACE_TOKEN序列化写失败。
### 处理步骤
请检查系统功能是否正常或者重启。
## 7 空对象
### 错误信息
The object is null.
### 可能原因
该错误码表示接口依赖的服务对象或参数对象为空,可能原因如下。
1. 入参序列化读失败。
2. DMS服务没有正常启动或binder对象无法正常获取。
3. DMS依赖的其他服务没有正常启动或者binder对象无法获取。
### 处理步骤
1. 检查入参是否为有效合法值。
2. 检查DMS服务是否正常启动,重新启动服务或重启设备。
3. 检查DMS依赖的其他服务是否正常启动,重新启动服务或重启设备。
## 29360207 注册超出最大次数
### 错误信息
The maximum number of registrations exceeded.
### 可能原因
该错误码可能原因是设备频繁注册,次数超出最大次数限制。
### 处理步骤
重启服务并且避免频繁注册。
## 29360208 token未注册
### 错误信息
The token has not registered.
### 可能原因
该错误码可能原因是未注册token。
### 处理步骤
注册token并使用已注册的token。
## 29360209 callback已注册
### 错误信息
Callback has been registered.
### 可能原因
该错误码能原因是指定的callback已经注册过。
### 处理步骤
请勿使用相同的callback重复注册。
## 29360210 callback未注册
### 错误信息
Callback has not been registered.
### 可能原因
该错误码可能原因是指定的callback未注册。
### 处理步骤
注册callback并使用已注册的callback。
## 29360211 连接ability失败
### 错误信息
Failed to connect ability.
### 可能原因
该错误码可能原因是指定token连接ability失败。
### 处理步骤
检查token是否有效以及相应ability是否正常服务,重新启动服务或重启设备。
## 29360214 callback类型错误
### 错误信息
The type of callback is not supported.
### 可能原因
该错误码表示callback类型错误,可能原因是不支持传入的callback类型。
### 处理步骤
请使用系统支持的callback类型并传入。
## 29360215 无效的连接状态
### 错误信息
Invalid continuation mode.
### 可能原因
该错误码表示无效的连接状态,可能原因是入参DeviceConnectState为非指定值。
### 处理步骤
设置指定合法的DeviceConnectState值。
## 29360216 无效的流转模式
### 错误信息
Invalid continuation mode.
### 可能原因
该错误码可能原因是入参ContinuationExtraParams.continuationMode为非指定值。
### 处理步骤
设置指定合法的ContinuationExtraParams.continuationMode值。
# AccessToken错误码
## 401 参数错误
### 错误信息
Parameter error.${messageInfo}.
### 可能原因
该错误码表示js参数解析出现错误,可能原因如下。
1. 入参数量不足。
2. 参数类型错误。
### 处理步骤
1. 检查入参,补充足够的入参数量。
2. 检查入参,修正参数类型错误。
## 201 权限校验失败
### 错误信息
Permission denied.${messageInfo}.
### 可能原因
该错误码表示调用接口的应用进程未授权该接口所需目标权限,可能原因如下。
1. 调用接口的应用进程未申请目标权限。
2. 在该目标权限为用户授权类型的权限情况下,调用接口的应用进程未被用户授予该目标权限。
### 处理步骤
1. 检查调用接口的应用进程是否申请了该权限。
2. 在该目标权限为用户授权类型的权限情况下,检查调用接口的应用进程是否已被授予该权限。
## 12100001 入参错误
### 错误信息
Parameter invalid, message is ${messageInfo}.
### 可能原因
该错误码表示参数校验出现错误,可能原因如下。
1. tokenId值为0。
2. 指定的权限名为空或者权限名长度大于256。
3. 请求授权/撤销权限的flag取值非法。
4. 注册监听的参数检查错误。
### 处理步骤
1. 检查入参,修正参数值为合法值。
## 12100002 tokenId不存在
### 错误信息
TokenId does not exist.
### 可能原因
1. 指定的tokenid不存在。
2. 指定的tokenId对应的进程非应用进程。
### 处理步骤
检查入参,修正参数值为有效值。
## 12100003 权限名不存在
### 错误信息
Permission does not exist.
### 可能原因
1. 指定的permissionName不存在。
2. 请求授权/撤销权限场景下,指定的应用tokenid未申请过指定的permissionName。
3. 权限使用记录场景下,指定的permissionName非用户授权的敏感权限。
### 处理步骤
检查入参,修正参数值为有效值。[权限列表](../../security/permission-list.md)
## 12100004 接口未配套使用
### 错误信息
The listener interface is not used together.
### 可能原因
该错误码表示监听器接口未配套使用,可能原因如下。
1. 当前接口再未配套使用的情况下,重复调用。
2. 当前接口再未配套使用的情况下,单独调用。
### 处理步骤
1. 检查当前接口是否有配套使用,如调用启动记录的接口后,在未调用停止记录的接口前,不可再次使用相同的入参调用启动记录接口。
2. 检查当前接口是否有配套使用,如停止记录的接口需要在启动记录的接口调用之后方可调用,注销监听接口需要在注册监听接口调用之后方可调用。
## 12100005 监听器数量超过限制
### 错误信息
The number of listeners exceeds the limit.
### 可能原因
该错误码表示当前监听器数量超过限制200.
### 处理步骤
及时释放已注册的无用的监听器。
## 12100006 指定的应用不支持被授予或被取消授予指定的权限
### 错误信息
The specified application does not support the permissions granted or ungranted as specified.
### 可能原因
1. 输入的tokenid是远端设备的身份标识,尚未支持分布式授权和取消授权。
2. 入参指定的tokenid为沙箱应用,被禁止申请指定的权限。
### 处理步骤
1. 请确认tokenid的获取方式是否正确。
2. 确认待授权的沙箱应用是否为特殊的受限沙箱应用进程,部分模式下的沙箱应用被禁止授予大部分权限。
## 12100007 系统服务工作异常
### 错误信息
Service is abnormal.
### 可能原因
该错误码表示系统服务工作异常。
1. 权限管理服务无法正常启动。
2. IPC数据读取写入失败。
### 处理步骤
系统服务内部工作异常,请稍后重试,或者重启设备。
## 12100008 内存申请失败
### 错误信息
Out of memory.
### 可能原因
系统内存不足。
### 处理步骤
系统内存不足,请稍后重试,或者重启设备。
\ No newline at end of file
# 泛sensor子系统错误码
## 201 权限校验失败
### 错误信息
Permission denied.
### 错误描述
当调用sensor模块或者vibrator模块部分接口时,若没有申请权限,会报此错误码。
### 可能原因
1. 订阅加速度传感器、陀螺仪传感器、计步器传感器及心率传感器等未配置相应的权限。
2. 订阅心率传感器、计步器传感器时用户授权未允许。
3. 启停马达振动时未配置权限。
### 处理步骤
查看权限是否已适配,具体配置方式请参考[权限申请声明](../../security/accesstoken-guidelines.md)
## 401 参数检查错误
### 错误信息
The parameter invalid.
### 错误描述
当调用sensor模块或者vibrator模块接口时,若传入参数的类型或者范围不匹配,会报此错误码。
### 可能原因
1. 入参类型错误不匹配,如订阅传感器时传入sensorId为非number类型等。
2. 入参范围不匹配,如订阅传感器时传入非法的sensorId。
### 处理步骤
检查入参类型和范围是否匹配。
## 14500101 传感器服务异常
### 错误信息
Service exception.
### 错误描述
当调用sensor模块on、once、off接口时,若hdi服务异常,会报此错误码。
### 可能原因
访问hdi服务状态异常。
### 处理步骤
1. 定时重试操作,如间隔1s或者按照指数增长间隔重试。
2. 连续重试3次不可用则停止尝试,期间可优先尝试获取器件列表方式进一步获取设备可用性。
## 14600101 操作设备失败
### 错误信息
Device operation failed.
### 错误描述
当调用vibrator模块startVibration接口时,若hdi服务异常或者设备被占用,会报此错误码。
### 可能原因
1. 访问hdi服务状态异常。
2. 当前设备被占用。
### 处理步骤
1. 间隔一段时间重试操作,或按指数增长间隔重试;连续重试3次不可用则停止尝试,期间可优先尝试获取器件列表方式进一步获取设备可用性。
2. 设置振动优先级较低,尝试设置更高优先级。
\ No newline at end of file
......@@ -12,16 +12,16 @@ HUKS(OpenHarmony Universal KeyStore)向应用提供密钥库能力,包括
## 运作机制
HUKS对密钥的使用主要通过Init、Update、Finish操作来实现。
HUKS对密钥的使用主要通过InitSession、UpdateSession、FinishSession操作来实现。
- **Init操作**:读取密钥,并为其创建Session Id返回给调用者。
- **InitSession操作**:读取密钥,并为其创建Session Id返回给调用者。
- **Update操作**:根据Init操作获取的Session Id对数据进行分段update处理。
- **UpdateSession操作**:根据InitSession操作获取的Session Id对数据进行分段updateSession处理。
- **Finish操作**:当所有待处理的数据均传入HUKS后,调用Finish操作完成最终数据处理,释放资源。
- **FinishSession操作**:当所有待处理的数据均传入HUKS后,调用FinishSession操作完成最终数据处理,释放资源。
> **须知:**<br>
> 当Init、Update、Finish操作中的任一阶段发生错误时,都需要调用Abort操作来终止密钥的使用。
> 当InitSession、UpdateSession、FinishSession操作中的任一阶段发生错误时,都需要调用AbortSession操作来终止密钥的使用。
## 约束与限制
......
......@@ -143,5 +143,9 @@
| ohos.permission.securityguard.REPORT_SECURITY_INFO | system_basic | system_grant | FALSE | 允许应用上报风险数据至设备风险管理平台。 |
| ohos.permission.securityguard.REQUEST_SECURITY_MODEL_RESULT | system_basic | system_grant | TRUE | 允许应用获取设备风险状态。 |
| ohos.permission.securityguard.REQUEST_SECURITY_EVENT_INFO | system_core | system_grant | FALSE | 允许应用获取风险详细数据。 |
| ohos.permission.READ_ACCESSIBILITY_CONFIG | system_basic | system_grant | FALSE | 允许应用读取无障碍配置信息。 |
| ohos.permission.WRITE_ACCESSIBILITY_CONFIG | system_basic | system_grant | FALSE | 允许应用设置无障碍配置信息。 |
| ohos.permission.ACCESS_CERT_MANAGER_INTERNAL | system_basic | system_grant | FALSE | 允许应用进行证书及凭据的安装、卸载、启用、禁用等操作。 |
| ohos.permission.ACCESS_CERT_MANAGER | normal | system_grant | FALSE | 允许应用进行私有凭据的相关操作、查询证书状态等操作。 |
| ohos.permission.ACCESS_PUSH_SERVICE | system_basic | system_grant | TRUE | 允许应用访问推送服务的Ability。 |
| ohos.permission.RECEIVER_STARTUP_COMPLETED | system_basic | system_grant | FALSE | 允许应用订阅开机广播。 |
\ No newline at end of file
......@@ -7,16 +7,8 @@
## 示例
```
common
│ └─ utils
│ └─ utils.ets
└─ pages
└─ index.ets
```
如上所示,将utils放在common中,示例中index.ets访问utils.ets文件
示例页面位于pages目录中,在pages同级目录common中存放utils,从示例xxx.ets访问utils.ets文件方法如下:
```ts
// xxx.ets
import { FoodData, FoodList } from "../common/utils/utils";
......
......@@ -46,15 +46,25 @@
- 校验输入只包含可接受的字符(“白名单”形式),尤其需要注意一些特殊情况下的特殊字符。
**外部数据校验原则**
**1.信任边界**
由于外部数据不可信,因此系统在运行过程中,如果数据传输与处理跨越不同的信任边界,为了防止攻击蔓延,必须对来自信任边界外的其他模块的数据进行合法性校验。
(a)so(或者dll)之间
so或dll作为独立的第三方模块,用于对外导出公共的api函数,供其他模块进行函数调用。so/dll无法确定上层调用者是否传递了合法参数,因此so/dll的公共函数需要检查调用者提供参数的合法性。so/dll应该设计成低耦合、高复用性,尽管有些软件的so/dll当前设计成只在本软件中使用,但仍然应该将不同的so/dll模块视为不同的信任边界。
(b)进程与进程之间
为防止通过高权限进程提权,进程与进程之间的IPC通信(包括单板之间的IPC通信、不同主机间的网络通信),应视为不同信任边界。
(c)应用层进程与操作系统内核
操作系统内核具有比应用层更高的权限,内核向应用层提供的接口,应该将来自应用层的数据作为不可信数据处理。
(d)可信执行环境内外环境
为防止攻击蔓延至可信执行环境,TEE、SGX等对外提供的接口,应该将来自外部的数据作为不可信数据处理。
**2.外部数据校验**
......@@ -2746,7 +2756,7 @@ int Encode(unsigned char *in, size_t inSize, unsigned char *out, size_t maxSize)
**【描述】**
**说明:**内核 mmap接口中,经常使用remap_pfn_range()函数将设备物理内存映射到用户进程空间。如果映射起始地址等参数由用户态控制并缺少合法性校验,将导致用户态可通过映射读写任意内核地址。如果攻击者精心构造传入参数,甚至可在内核中执行任意代码。
**说明**内核 mmap接口中,经常使用remap_pfn_range()函数将设备物理内存映射到用户进程空间。如果映射起始地址等参数由用户态控制并缺少合法性校验,将导致用户态可通过映射读写任意内核地址。如果攻击者精心构造传入参数,甚至可在内核中执行任意代码。
**【错误代码示例】**
......@@ -2876,7 +2886,7 @@ ssize_t correct_write(struct file *file, const char __user *user_buf, size_t cou
## 必须对copy_from_user()拷贝长度进行校验,防止缓冲区溢出
**说明:**内核态从用户态拷贝数据时通常使用copy_from_user()函数,如果未对拷贝长度做校验或者校验不当,会造成内核缓冲区溢出,导致内核panic或提权。
**说明**内核态从用户态拷贝数据时通常使用copy_from_user()函数,如果未对拷贝长度做校验或者校验不当,会造成内核缓冲区溢出,导致内核panic或提权。
**【错误代码示例】**
......@@ -2921,7 +2931,7 @@ static long gser_ioctl(struct file *fp, unsigned cmd, unsigned long arg)
**【描述】**
**说明:**内核态使用copy_to_user()向用户态拷贝数据时,当数据未完全初始化(如结构体成员未赋值、字节对齐引起的内存空洞等),会导致栈上指针等敏感信息泄漏。攻击者可利用绕过kaslr等安全机制。
**说明**内核态使用copy_to_user()向用户态拷贝数据时,当数据未完全初始化(如结构体成员未赋值、字节对齐引起的内存空洞等),会导致栈上指针等敏感信息泄漏。攻击者可利用绕过kaslr等安全机制。
**【错误代码示例】**
......
# xxx *(子系统名)* 错误码
> **说明:**
>
> *1、所有的写作说明,在完成写作后,都要删除。*
>
> *2、错误码文档的命名规则:统一前缀,命名格式为errorcode-xxx(具体子系统名).md。*
| | 说明项 | 细则 |
| ---- | ------------------------------ | ------------------------------------------------------------ |
| 1 | 错误码error.errorNumber | 按统一的错误码编号规则设计错误码ID。 |
| 2 | 错误信息error.message | **字段含义**:出现异常时,会给开发者抛出一个错误对象,对象里包括errorNumber和error.message,此处定义error.message的值,即英文错误码简述。<br/>**要求**<br/>1.应当简洁、具体,避免过于宽泛的定义。<br/>2.此处英文描述必须经过翻译中心审校。在提交本错误码设计评审前,请将预期的中英文message描述提供给翻译中心,将翻译中心审校后的英文填至此处。 |
| 3 | 错误简述<br/>Short Description | **字段含义**:中文错误码简述。<br/>**要求**<br/>1.与”错误信息“对应的中文简述,应当简洁、具体,避免过于宽泛的定义。 |
| 4 | 错误描述<br/>Description | **字段含义**:错误码详细描述,告知错误码所属的业务场景、产生位置等。<br/>**要求**<br/>1.描述错误码所属的业务场景(比如开发xx业务、开发xx功能时)。<br/>2.描述出现异常的具体现象、产生位置(比如xx模块、xx类、xx接口等),辅助开发者理解和处理异常。 |
| 5 | 可能原因<br/>Possible Causes | **字段含义**:列举出现该异常的所有可能原因(对应该错误码的产生机制)。<br/>**要求**<br/>1.全面、无遗漏。<br/>2.言简意赅。<br/>3.根据可能性从高到低排序。 |
| 6 | 处理步骤<br/>Procedure | **字段含义**:根据错误现象及可能原因,告知开发者遇到该异常时如何应对。<br/>**要求**<br/>1.采用step样式描述处理指导。每个大步骤与可能原因一一对应,按顺序分别给出各原因对应的处理指导。大步骤下可以有子步骤。<br/>2.步骤要明确、具体、可执行。涉及判断的,提供明确的判断标准。<br/>3.对系统或业务有影响的操作,在操作前以“注意”或“警告”形式提供警示信息。具体提示要求,请参见“风格指南”中的“提示与说明”:https://gitee.com/openharmony/docs/blob/master/zh-cn/contribute/style-guide/style-guide-content-elements.md |
## 1300001 重复操作 *(错误码number+空格+错误简述)*
### 错误信息
This is repeat operation.
### 错误描述
> **说明:**
>
> *1.描述**错误码所属的业务场景(比如开发xx业务、开发xx功能时)***。
>
> *2.描述**出现异常的具体现象、产生位置(比如xx模块、xx类、xx接口等)**,辅助开发者理解和处理异常。*
当对同一窗口对象存在重复操作时,xx模块(或xx类,或xx接口)会上报此错误码。
### 可能原因
> **说明:**
>
> *列举出现该异常的所有可能原因(对应该错误码的产生机制)。*
>
> *1.全面、无遗漏。*
>
> *2.言简意赅。*
>
> *3.根据可能性从高到低排序。*
1. 重复创建已创建的窗口。
2. xxx。
### 处理步骤
> **说明:**
>
> *根据错误现象及可能原因,告知开发者遇到该异常时如何应对。*
>
> *1.采用step样式描述处理指导。**每个大步骤与可能原因一一对应**,按顺序分别给出各原因对应的处理指导。**大步骤下可以有子步骤**。*
>
> *2.步骤要**明确、具体、可执行。涉及判断的,提供明确的判断标准**。*
>
> *3.对系统或业务有影响的操作,在操作前以“注意”或“警告”形式提供警示信息。具体提示要求,请参见“风格指南”中的“提示与说明”:https://gitee.com/openharmony/docs/blob/master/zh-cn/contribute/style-guide/style-guide-content-elements.md*
1. 检查该窗口是否已创建。
xxx。
```
uth([in] String appId, [in] IHwShareCallback callback);
int shareFaInfo([in] PacMapEx pacMapEx);
}
```
2. xxx。
a. xxx。
```
uth([in] String appId, [in] IHwShareCallback callback);
int shareFaInfo([in] PacMapEx pacMapEx);
}
```
b. xxx。
## 1300002 窗口状态异常
### 错误信息
xxx
### 错误描述
xxx
### 可能原因
1. xxx
### 处理步骤
1. 检查该窗口是否已创建。
xxx。
```
uth([in] String appId, [in] IHwShareCallback callback);
int shareFaInfo([in] PacMapEx pacMapEx);
}
```
2. xxx。
a. xxx。
```
uth([in] String appId, [in] IHwShareCallback callback);
int shareFaInfo([in] PacMapEx pacMapEx);
}
```
b. xxx。
\ No newline at end of file
......@@ -91,7 +91,7 @@
- [DFX概述](subsys-dfx-overview.md)
- [HiLog开发指导](subsys-dfx-hilog-rich.md)
- [HiLog_Lite开发指导](subsys-dfx-hilog-lite.md)
- [HiTrace开发指导](subsys-dfx-hitrace.md)
- [HiTraceChain开发指导](subsys-dfx-hitracechain.md)
- [HiCollie开发指导](subsys-dfx-hicollie.md)
- HiSysEvent开发指导
- [HiSysEvent概述](subsys-dfx-hisysevent-overview.md)
......
......@@ -2,7 +2,7 @@
## 常见编译问题和解决方法
### 编译构建过程中,提示“usr/sbin/ninja: invalid option -- w”
### 提示“usr/sbin/ninja: invalid option -- w”
- **现象描述:** 编译失败,提示“usr/sbin/ninja: invalid option -- w”。
......@@ -10,7 +10,7 @@
- **解决办法:** 卸载环境中ninja和gn,按照[获取工具](../../device-dev/get-code/gettools-ide.md)
### 编译构建过程中,提示“/usr/bin/ld: cannot find -lncurses”
### 提示“/usr/bin/ld: cannot find -lncurses”
- **现象描述:** 编译失败,提示“/usr/bin/ld: cannot find -lncurses”。
......@@ -22,7 +22,7 @@
sudo apt-get install lib32ncurses5-dev
```
### 编译构建过程中,提示“line 77: mcopy: command not found”
### 提示“line 77: mcopy: command not found”
- **现象描述:** 编译失败,提示“line 77: mcopy: command not found”。
......@@ -34,7 +34,7 @@
sudo apt-get install dosfstools mtools
```
### 编译构建过程中,提示“riscv32-unknown-elf-gcc: error trying to exec 'cc1': execvp: No such file or directory”
### 提示“riscv32-unknown-elf-gcc: error trying to exec 'cc1': execvp: No such file or directory”
- **现象描述:** 编译失败,提示“riscv32-unknown-elf-gcc: error trying to exec 'cc1': execvp: No such file or directory”。
......@@ -48,7 +48,7 @@
使用chmod命令修改目录权限为755。
### 编译构建过程中,提示“No module named 'Crypto'”
### 提示“No module named 'Crypto'”
- **现象描述:** 编译失败,提示“No module named 'Crypto'”。
......@@ -68,7 +68,7 @@
sudo pip3 install pycryptodome
```
### 编译构建过程中,提示“xx.sh : xx unexpected operator”
### 提示“xx.sh : xx unexpected operator”
- **现象描述:** 编译失败:“xx.sh [: xx unexpected operator”。
......@@ -82,7 +82,7 @@
```
### 编译构建过程中,提示“some services are not authenticated. Listed as follow”
### 提示“some services are not authenticated. Listed as follow”
- **现象描述:** 编译失败:“some services are not authenticated. Listed as follow”。
......
# HiTrace开发指导
# HiTraceChain开发指导
## 概述
HiTrace主要是对于跨设备/跨进程/跨线程的业务流程,通过相同的traceid在整个业务流程中传递,将流程处理过程中的调用关系、各种输出信息关联和展现出来,帮助使用者分析、定位问题和系统调优。
HiTraceChain主要是对于跨设备/跨进程/跨线程的业务流程,通过相同的traceid在整个业务流程中传递,将流程处理过程中的调用关系、各种输出信息关联和展现出来,帮助使用者分析、定位问题和系统调优。
## 应用场景
HiTrace在产品中应用场景如下,包括:
HiTraceChain在产品中应用场景如下,包括:
- 端侧业务流程信息(日志、事件等)关联、上报
......@@ -15,7 +15,7 @@ HiTrace在产品中应用场景如下,包括:
- IDE对业务流程详细信息、耗时分布进行调试,辅助系统调优
**图1** HiTrace应用场景
**图1** HiTraceChain应用场景
![zh-cn_image_0000001216312860](figures/zh-cn_image_0000001216312860.png)
......@@ -39,9 +39,9 @@ HiTrace在产品中应用场景如下,包括:
## 接口说明
HiTrace提供C++、C接口。上层业务主要使用HiTrace跟踪启动、结束接口。
HiTraceChain提供C++、C接口。上层业务主要使用HiTraceChain跟踪启动、结束接口。
HiTrace实现在C层,主要原理是在一次业务调用流程中,利用通信传递traceid,在业务处理前将traceid设置到当前线程的TLS(Thread Local Storage)中,业务处理结束清除当前线程的TLS;这样的话,在业务处理中可以从当前线程的上下文TLS取到traceid,自动附加到日志、事件信息中。
HiTraceChain实现在C层,主要原理是在一次业务调用流程中,利用通信传递traceid,在业务处理前将traceid设置到当前线程的TLS(Thread Local Storage)中,业务处理结束清除当前线程的TLS;这样的话,在业务处理中可以从当前线程的上下文TLS取到traceid,自动附加到日志、事件信息中。
### 接口形式对比
......@@ -51,28 +51,28 @@ HiTrace实现在C层,主要原理是在一次业务调用流程中,利用通
| | **C++** | **C** |
| -------- | -------- | -------- |
| **类** | **函数** | **函数** |
| HiTrace | HiTraceId&nbsp;Begin(const&nbsp;std::string&amp;&nbsp;name,&nbsp;int&nbsp;flags) | HiTraceIdStruct&nbsp;HiTraceBegin(const&nbsp;char\*&nbsp;name,&nbsp;int&nbsp;flags) |
| | void&nbsp;End(const&nbsp;HiTraceId&amp;&nbsp;id) | void&nbsp;HiTraceEnd(const&nbsp;HiTraceIdStruct\*&nbsp;pId) |
| | HiTraceId&nbsp;GetId(); | HiTraceIdStruct&nbsp;HiTraceGetId() |
| | void&nbsp;SetId(const&nbsp;HiTraceId&amp;&nbsp;id) | void&nbsp;HiTraceSetId(const&nbsp;HiTraceIdStruct\*&nbsp;pId) |
| | void&nbsp;ClearId() | void&nbsp;HiTraceClearId() |
| | HiTraceId&nbsp;CreateSpan() | HiTraceIdStruct&nbsp;HiTraceCreateSpan() |
| | void&nbsp;Tracepoint(HiTraceTracepointType&nbsp;type,&nbsp;const&nbsp;HiTraceId&amp;&nbsp;id,&nbsp;const&nbsp;char\*&nbsp;fmt,&nbsp;...) | void&nbsp;HiTraceTracepoint(HiTraceTracepointType&nbsp;type,&nbsp;const&nbsp;HiTraceIdStruct_&nbsp;pId,&nbsp;const&nbsp;char_&nbsp;fmt,&nbsp;...) |
| | void&nbsp;Tracepoint(HiTraceCommunicationMode&nbsp;mode,&nbsp;HiTraceTracepointType&nbsp;type,&nbsp;const&nbsp;HiTraceId&amp;&nbsp;id,&nbsp;const&nbsp;char\*&nbsp;fmt,&nbsp;...) | void&nbsp;HiTraceTracepointEx(HiTraceCommunicationMode&nbsp;mode,&nbsp;HiTraceTracepointType&nbsp;type,&nbsp;const&nbsp;HiTraceIdStruct_&nbsp;pId,&nbsp;const&nbsp;char_&nbsp;fmt,&nbsp;...) |
| HiTraceId | HiTraceId(); | void&nbsp;HiTraceInitId(HiTraceIdStruct\*&nbsp;pId) |
| | HiTraceId(const&nbsp;uint8_t\*&nbsp;pIdArray,&nbsp;int&nbsp;len) | HiTraceIdStruct&nbsp;HiTraceBytesToId(const&nbsp;uint8_t\*&nbsp;pIdArray,&nbsp;int&nbsp;len) |
| | bool&nbsp;IsValid() | int&nbsp;HiTraceIsValid(const&nbsp;HiTraceIdStruct\*&nbsp;pId) |
| | bool&nbsp;IsFlagEnabled(HiTraceFlag&nbsp;flag) | int&nbsp;HiTraceIsFlagEnabled(const&nbsp;HiTraceIdStruct\*&nbsp;pId,&nbsp;HiTraceFlag&nbsp;flag) |
| | void&nbsp;EnableFlag(HiTraceFlag&nbsp;flag) | void&nbsp;HiTraceEnableFlag(HiTraceIdStruct\*&nbsp;pId,&nbsp;HiTraceFlag&nbsp;flag) |
| | int&nbsp;GetFlags() | int&nbsp;HiTraceGetFlags(const&nbsp;HiTraceIdStruct\*&nbsp;pId) |
| | void&nbsp;SetFlags(int&nbsp;flags) | void&nbsp;HiTraceSetFlags(HiTraceIdStruct\*&nbsp;pId,&nbsp;int&nbsp;flags) |
| | uint64_t&nbsp;GetChainId() | uint64_t&nbsp;HiTraceGetChainId(const&nbsp;HiTraceIdStruct\*&nbsp;pId) |
| | void&nbsp;SetChainId(uint64_t&nbsp;chainId) | void&nbsp;HiTraceSetChainId(HiTraceIdStruct\*&nbsp;pId,&nbsp;uint64_t&nbsp;chainId) |
| | uint64_t&nbsp;GetSpanId() | uint64_t&nbsp;HiTraceGetSpanId(const&nbsp;HiTraceIdStruct\*&nbsp;pId) |
| | void&nbsp;SetSpanId(uint64_t&nbsp;spanId) | void&nbsp;HiTraceSetSpanId(HiTraceIdStruct\*&nbsp;pId,&nbsp;uint64_t&nbsp;spanId) |
| | uint64_t&nbsp;GetParentSpanId() | uint64_t&nbsp;HiTraceGetParentSpanId(const&nbsp;HiTraceIdStruct\*&nbsp;pId) |
| | void&nbsp;SetParentSpanId(uint64_t&nbsp;parentSpanId) | void&nbsp;HiTraceSetParentSpanId(HiTraceIdStruct\*&nbsp;pId,&nbsp;uint64_t&nbsp;parentSpanId) |
| | int&nbsp;ToBytes(uint8_t\*&nbsp;pIdArray,&nbsp;int&nbsp;len) | int&nbsp;HiTraceIdToBytes(const&nbsp;HiTraceIdStruct_&nbsp;pId,&nbsp;uint8_t_&nbsp;pIdArray,&nbsp;int&nbsp;len) |
| HiTraceChain | HiTraceId&nbsp;Begin(const&nbsp;std::string&amp;&nbsp;name,&nbsp;int&nbsp;flags) | HiTraceIdStruct&nbsp;HiTraceChainBegin(const&nbsp;char\*&nbsp;name,&nbsp;int&nbsp;flags) |
| | void&nbsp;End(const&nbsp;HiTraceId&amp;&nbsp;id) | void&nbsp;HiTraceChainEnd(const&nbsp;HiTraceIdStruct\*&nbsp;pId) |
| | HiTraceId&nbsp;GetId(); | HiTraceIdStruct&nbsp;HiTraceChainGetId() |
| | void&nbsp;SetId(const&nbsp;HiTraceId&amp;&nbsp;id) | void&nbsp;HiTraceChainSetId(const&nbsp;HiTraceIdStruct\*&nbsp;pId) |
| | void&nbsp;ClearId() | void&nbsp;HiTraceChainClearId() |
| | HiTraceId&nbsp;CreateSpan() | HiTraceIdStruct&nbsp;HiTraceChainCreateSpan() |
| | void&nbsp;Tracepoint(HiTraceTracepointType&nbsp;type,&nbsp;const&nbsp;HiTraceId&amp;&nbsp;id,&nbsp;const&nbsp;char\*&nbsp;fmt,&nbsp;...) | void&nbsp;HiTraceChainTracepoint(HiTraceTracepointType&nbsp;type,&nbsp;const&nbsp;HiTraceIdStruct_&nbsp;pId,&nbsp;const&nbsp;char_&nbsp;fmt,&nbsp;...) |
| | void&nbsp;Tracepoint(HiTraceCommunicationMode&nbsp;mode,&nbsp;HiTraceTracepointType&nbsp;type,&nbsp;const&nbsp;HiTraceId&amp;&nbsp;id,&nbsp;const&nbsp;char\*&nbsp;fmt,&nbsp;...) | void&nbsp;HiTraceChainTracepointEx(HiTraceCommunicationMode&nbsp;mode,&nbsp;HiTraceTracepointType&nbsp;type,&nbsp;const&nbsp;HiTraceIdStruct_&nbsp;pId,&nbsp;const&nbsp;char_&nbsp;fmt,&nbsp;...) |
| HiTraceId | HiTraceId(); | void&nbsp;HiTraceChainInitId(HiTraceIdStruct\*&nbsp;pId) |
| | HiTraceId(const&nbsp;uint8_t\*&nbsp;pIdArray,&nbsp;int&nbsp;len) | HiTraceIdStruct&nbsp;HiTraceChainBytesToId(const&nbsp;uint8_t\*&nbsp;pIdArray,&nbsp;int&nbsp;len) |
| | bool&nbsp;IsValid() | int&nbsp;HiTraceChainIsValid(const&nbsp;HiTraceIdStruct\*&nbsp;pId) |
| | bool&nbsp;IsFlagEnabled(HiTraceFlag&nbsp;flag) | int&nbsp;HiTraceChainIsFlagEnabled(const&nbsp;HiTraceIdStruct\*&nbsp;pId,&nbsp;HiTraceFlag&nbsp;flag) |
| | void&nbsp;EnableFlag(HiTraceFlag&nbsp;flag) | void&nbsp;HiTraceChainEnableFlag(HiTraceIdStruct\*&nbsp;pId,&nbsp;HiTraceFlag&nbsp;flag) |
| | int&nbsp;GetFlags() | int&nbsp;HiTraceChainGetFlags(const&nbsp;HiTraceIdStruct\*&nbsp;pId) |
| | void&nbsp;SetFlags(int&nbsp;flags) | void&nbsp;HiTraceChainSetFlags(HiTraceIdStruct\*&nbsp;pId,&nbsp;int&nbsp;flags) |
| | uint64_t&nbsp;GetChainId() | uint64_t&nbsp;HiTraceChainGetChainId(const&nbsp;HiTraceIdStruct\*&nbsp;pId) |
| | void&nbsp;SetChainId(uint64_t&nbsp;chainId) | void&nbsp;HiTraceChainSetChainId(HiTraceIdStruct\*&nbsp;pId,&nbsp;uint64_t&nbsp;chainId) |
| | uint64_t&nbsp;GetSpanId() | uint64_t&nbsp;HiTraceChainGetSpanId(const&nbsp;HiTraceIdStruct\*&nbsp;pId) |
| | void&nbsp;SetSpanId(uint64_t&nbsp;spanId) | void&nbsp;HiTraceChainSetSpanId(HiTraceIdStruct\*&nbsp;pId,&nbsp;uint64_t&nbsp;spanId) |
| | uint64_t&nbsp;GetParentSpanId() | uint64_t&nbsp;HiTraceChainGetParentSpanId(const&nbsp;HiTraceIdStruct\*&nbsp;pId) |
| | void&nbsp;SetParentSpanId(uint64_t&nbsp;parentSpanId) | void&nbsp;HiTraceChainSetParentSpanId(HiTraceIdStruct\*&nbsp;pId,&nbsp;uint64_t&nbsp;parentSpanId) |
| | int&nbsp;ToBytes(uint8_t\*&nbsp;pIdArray,&nbsp;int&nbsp;len) | int&nbsp;HiTraceChainIdToBytes(const&nbsp;HiTraceIdStruct_&nbsp;pId,&nbsp;uint8_t_&nbsp;pIdArray,&nbsp;int&nbsp;len) |
### 接口功能参数
......@@ -81,14 +81,14 @@ HiTrace实现在C层,主要原理是在一次业务调用流程中,利用通
| **类** | **方法** | **描述** |
| -------- | -------- | -------- |
| HiTrace | HiTraceId&nbsp;Begin(const&nbsp;std::string&amp;&nbsp;name,&nbsp;int&nbsp;flags) | 功能:启动HiTrace跟踪、生成HiTraceId对象并设置到当前线程TLS中。<br/>输入参数:<br/>-&nbsp;name:业务流程名称。<br/>-&nbsp;flags:跟踪指示位,可以组合使用,具体含义为:<br/>&nbsp;&nbsp;-&nbsp;HITRACE_FLAG_INCLUDE_ASYNC:同时跟踪同步调用和异步调用,缺省只跟踪同步调用。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_FLAG_DONOT_CREATE_SPAN:不创建子分支,缺省创建子分支。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_FLAG_TP_INFO:输出tracepoint信息,缺省不输出。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_FLAG_NO_BE_INFO:不输出起始、结束信息,缺省输出。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_FLAG_DONOT_ENABLE_LOG:不与日志关联输出,缺省关联。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_FLAG_FAULT_TRIGGER:故障触发的跟踪,缺省为正常启动的。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_FLAG_D2D_TP_INFO:输出设备间tracepoint信息,缺省不输出。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_FLAG_DEFAULT:&nbsp;缺省标志。<br/>-&nbsp;输出参数:无<br/>-&nbsp;返回值:启动跟踪超过返回有效HiTraceId对象,否则返回无效对象。<br/>注意:嵌套启动跟踪时,内层启动调用返回无效对象。 |
| | void&nbsp;End(const&nbsp;HiTraceId&amp;&nbsp;id) | 功能:根据Begin返回的HiTraceId停止HiTrace跟踪;清除当前线程TLS中HiTraceId内容。<br/>输入参数:<br/>-&nbsp;id:HiTraceId对象。<br/>输出参数:无。<br/>返回值:无。 |
| HiTraceChain | HiTraceId&nbsp;Begin(const&nbsp;std::string&amp;&nbsp;name,&nbsp;int&nbsp;flags) | 功能:启动HiTraceChain跟踪、生成HiTraceId对象并设置到当前线程TLS中。<br/>输入参数:<br/>-&nbsp;name:业务流程名称。<br/>-&nbsp;flags:跟踪指示位,可以组合使用,具体含义为:<br/>&nbsp;&nbsp;-&nbsp;HITRACE_FLAG_INCLUDE_ASYNC:同时跟踪同步调用和异步调用,缺省只跟踪同步调用。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_FLAG_DONOT_CREATE_SPAN:不创建子分支,缺省创建子分支。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_FLAG_TP_INFO:输出tracepoint信息,缺省不输出。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_FLAG_NO_BE_INFO:不输出起始、结束信息,缺省输出。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_FLAG_DONOT_ENABLE_LOG:不与日志关联输出,缺省关联。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_FLAG_FAULT_TRIGGER:故障触发的跟踪,缺省为正常启动的。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_FLAG_D2D_TP_INFO:输出设备间tracepoint信息,缺省不输出。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_FLAG_DEFAULT:&nbsp;缺省标志。<br/>-&nbsp;输出参数:无<br/>-&nbsp;返回值:启动跟踪超过返回有效HiTraceId对象,否则返回无效对象。<br/>注意:嵌套启动跟踪时,内层启动调用返回无效对象。 |
| | void&nbsp;End(const&nbsp;HiTraceId&amp;&nbsp;id) | 功能:根据Begin返回的HiTraceId停止HiTraceChain跟踪;清除当前线程TLS中HiTraceId内容。<br/>输入参数:<br/>-&nbsp;id:HiTraceId对象。<br/>输出参数:无。<br/>返回值:无。 |
| | HiTraceId&nbsp;GetId(); | 功能:从当前线程TLS中获取HiTraceId对象。<br/>输入参数:无。<br/>输出参数:无。<br/>返回值:当前线程上下文的HiTraceId对象。 |
| | void&nbsp;SetId(const&nbsp;HiTraceId&amp;&nbsp;id) | 功能:设置HiTraceId对象内容到当前线程TLS中。<br/>输入参数:<br/>-&nbsp;id:HiTraceId对象。<br/>输出参数:无。<br/>返回值:无。 |
| | void&nbsp;ClearId() | 功能:清除当前线程TLS中的HiTraceId对象。<br/>输入参数:无。<br/>输出参数:无。<br/>返回值:无。 |
| | HiTraceId&nbsp;CreateSpan() | 接口功能:获取当前HiTraceId对象中的分支ID。<br/>输入参数:无。<br/>输出参数:无。<br/>返回值:当前分支ID。 |
| | void&nbsp;Tracepoint(HiTraceTracepointType&nbsp;type,&nbsp;const&nbsp;HiTraceId&amp;&nbsp;id,&nbsp;const&nbsp;char\*&nbsp;fmt,&nbsp;...) | 功能:根据埋点信息类型输出HiTrace埋点信息,包括时间戳、子分支HiTraceId对象信息。<br/>输入参数:<br/>-&nbsp;type:埋点信息类型,具体为<br/>&nbsp;&nbsp;-&nbsp;HITRACE_TP_CS:Client&nbsp;Send,同步/异步通信客户端发送信息。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_TP_SR:Server&nbsp;Receive,&nbsp;同步/异步通信服务端接收信息。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_TP_SS:Server&nbsp;Send,同步通信服务端发送响应信息。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_TP_CR:Client&nbsp;Receive,同步通信客户端接收响应信息。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_TP_GENERAL:普通输出信息。<br/>-&nbsp;id:当前子分支id。<br/>-&nbsp;fmt:格式化变参描述字符串。<br/>-&nbsp;args:变参。<br/>输出参数:无。<br/>返回值:无。 |
| | void&nbsp;Tracepoint(HiTraceCommunicationMode&nbsp;mode,&nbsp;HiTraceTracepointType&nbsp;type,&nbsp;const&nbsp;HiTraceId&amp;&nbsp;id,&nbsp;const&nbsp;char\*&nbsp;fmt,&nbsp;...) | 功能:根据通信模式、埋点信息类型输出HiTrace埋点信息,包括时间戳、子分支HiTraceId对象信息。<br/>输入参数:<br/>-&nbsp;mode:通信模式,具体为<br/>&nbsp;&nbsp;-&nbsp;HITRACE_CM_DEFAULT:未指定通信模式。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_CM_THREAD:线程间通信。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_CM_PROCESS:进程间通信。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_CM_DEVICE:设备间通信。<br/>-&nbsp;type:埋点信息类型,具体为<br/>&nbsp;&nbsp;-&nbsp;HITRACE_TP_CS:Client&nbsp;Send,同步/异步通信客户端发送信息。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_TP_SR:Server&nbsp;Receive,&nbsp;同步/异步通信服务端接收信息。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_TP_SS:Server&nbsp;Send,同步通信服务端发送响应信息。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_TP_CR:Client&nbsp;Receive,同步通信客户端接收响应信息。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_TP_GENERAL:普通输出信息。<br/>-&nbsp;id:当前子分支id。<br/>-&nbsp;fmt:格式化变参描述字符串。<br/>-&nbsp;args:变参。<br/>输出参数:无。<br/>返回值:无。 |
| | void&nbsp;Tracepoint(HiTraceTracepointType&nbsp;type,&nbsp;const&nbsp;HiTraceId&amp;&nbsp;id,&nbsp;const&nbsp;char\*&nbsp;fmt,&nbsp;...) | 功能:根据埋点信息类型输出HiTraceChain埋点信息,包括时间戳、子分支HiTraceId对象信息。<br/>输入参数:<br/>-&nbsp;type:埋点信息类型,具体为<br/>&nbsp;&nbsp;-&nbsp;HITRACE_TP_CS:Client&nbsp;Send,同步/异步通信客户端发送信息。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_TP_SR:Server&nbsp;Receive,&nbsp;同步/异步通信服务端接收信息。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_TP_SS:Server&nbsp;Send,同步通信服务端发送响应信息。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_TP_CR:Client&nbsp;Receive,同步通信客户端接收响应信息。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_TP_GENERAL:普通输出信息。<br/>-&nbsp;id:当前子分支id。<br/>-&nbsp;fmt:格式化变参描述字符串。<br/>-&nbsp;args:变参。<br/>输出参数:无。<br/>返回值:无。 |
| | void&nbsp;Tracepoint(HiTraceCommunicationMode&nbsp;mode,&nbsp;HiTraceTracepointType&nbsp;type,&nbsp;const&nbsp;HiTraceId&amp;&nbsp;id,&nbsp;const&nbsp;char\*&nbsp;fmt,&nbsp;...) | 功能:根据通信模式、埋点信息类型输出HiTraceChain埋点信息,包括时间戳、子分支HiTraceId对象信息。<br/>输入参数:<br/>-&nbsp;mode:通信模式,具体为<br/>&nbsp;&nbsp;-&nbsp;HITRACE_CM_DEFAULT:未指定通信模式。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_CM_THREAD:线程间通信。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_CM_PROCESS:进程间通信。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_CM_DEVICE:设备间通信。<br/>-&nbsp;type:埋点信息类型,具体为<br/>&nbsp;&nbsp;-&nbsp;HITRACE_TP_CS:Client&nbsp;Send,同步/异步通信客户端发送信息。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_TP_SR:Server&nbsp;Receive,&nbsp;同步/异步通信服务端接收信息。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_TP_SS:Server&nbsp;Send,同步通信服务端发送响应信息。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_TP_CR:Client&nbsp;Receive,同步通信客户端接收响应信息。<br/>&nbsp;&nbsp;-&nbsp;HITRACE_TP_GENERAL:普通输出信息。<br/>-&nbsp;id:当前子分支id。<br/>-&nbsp;fmt:格式化变参描述字符串。<br/>-&nbsp;args:变参。<br/>输出参数:无。<br/>返回值:无。 |
| HiTraceId | HiTraceId(); | 功能:缺省构造函数,生成无效HiTraceId对象。<br/>输入参数:无。<br/>输出参数:无。<br/>返回值:无。 |
| | HiTraceId(const&nbsp;uint8_t\*&nbsp;pIdArray,&nbsp;int&nbsp;len) | 功能:构造函数,根据字节数组创建跟踪HiTraceId对象。<br/>输入参数:<br/>-&nbsp;pIdArray:字节数组指针。<br/>-&nbsp;len:字节数组长度。<br/>输出参数:无。<br/>返回值:无。 |
| | bool&nbsp;IsValid() | 功能:HiTraceId对象是否有效。<br/>输入参数:无。<br/>输出参数:无。<br/>返回值:true&nbsp;有效;false&nbsp;无效。 |
......@@ -107,7 +107,7 @@ HiTrace实现在C层,主要原理是在一次业务调用流程中,利用通
## 通信调用处理
业务使用时跨设备/跨进程/跨线程的调用是通过通信机制实现的,HiTrace需要通信机制传递traceid。
业务使用时跨设备/跨进程/跨线程的调用是通过通信机制实现的,HiTraceChain需要通信机制传递traceid。
OpenHarmony系统内置部分通信机制(如ZIDL)已经支持传递traceid。
......@@ -158,47 +158,47 @@ OpenHarmony系统内置部分通信机制(如ZIDL)已经支持传递traceid
### C++接口实例
1. 源代码开发
在类定义头文件或者类实现源文件中,包含hitrace头文件:
在类定义头文件或者类实现源文件中,包含hitracechain头文件:
```
#include "hitrace/trace.h"
#include "hitrace/tracechain.h"
```
在业务类实现源文件中使用(启动/结束跟踪):
```
using namespace OHOS::HiviewDFX;
HiTraceId traceId = HiTrace::Begin("MyServiceFlow", HITRACE_FLAG_DEFAULT);
auto traceId = HiTraceChain::Begin("MyServiceFlow", HITRACE_FLAG_DEFAULT);
......
HiTrace::End(traceId);
HiTraceChain::End(traceId);
```
2. 编译设置,在BUILD.gn里增加子系统SDK依赖:
```
external_deps = [ "hiviewdfx:libhitrace" ]
external_deps = [ "hiviewdfx:libhitracechain" ]
```
### C接口实例
1. 源代码开发
在源文件中,包含hitrace头文件:
在源文件中,包含hitracechain头文件:
```
#include "hitrace/trace.h"
#include "hitrace/tracechain.h"
```
在业务类实现源文件中使用(启动/结束跟踪):
```
HiTraceIdStruct traceId = HiTraceBegin("MyServiceFlow", HITRACE_FLAG_DEFAULT);
HiTraceIdStruct traceId = HiTraceChainBegin("MyServiceFlow", HITRACE_FLAG_DEFAULT);
......
HiTraceEnd(traceId);
HiTraceChainEnd(traceId);
```
2. 编译设置,在BUILD.gn里增加子系统SDK依赖:
```
external_deps = [ "hiviewdfx:libhitrace" ]
external_deps = [ "hiviewdfx:libhitracechain" ]
```
......@@ -9,7 +9,7 @@
- HiLog流水日志,轻量系统类设备(参考内存≥128KiB)、小型系统类设备(参考内存≥1MiB)、标准系统类设备(参考内存≥128MB)适用。
- HiTrace分布式跟踪,标准系统类设备(参考内存≥128MiB)适用。
- HiTraceChain分布式跟踪,标准系统类设备(参考内存≥128MiB)适用。
- HiCollie卡死故障检测,标准系统类设备(参考内存≥128MiB)适用。
......@@ -45,3 +45,4 @@
**系统事件:**
是OpenHarmony系统某种状态产生的一种标识,通过定义各种事件用于分析系统的状态变化情况。
<!--no_check-->
......@@ -12,13 +12,13 @@
ArkCompiler JS Runtime分成两个部分,分别是JS编译工具链与JS运行时。JS工具链将JS源码编译成方舟字节码\(ArkCompiler Bytecode\),JS运行时负责执行生成的方舟字节码\(后续如无特殊说明,字节码特指方舟字节码\)
图1 JS编译工具链架构:
**图1** JS编译工具链架构:
![](figures/zh-cn_image_ark_frontend.png)
ArkCompiler JS Runtime的源码编译器接收JS源码的输入,再由ts2abc(将JavaScript文件转换为字节码的工具)生成abc文件。
图2 JS运行时\(Ark-JS-Runtime\)架构:
**图2** JS运行时\(Ark-JS-Runtime\)架构:
![](figures/zh-cn_image_ark-js-arch.png)
......@@ -73,9 +73,9 @@ JS Runtime主要由四个子系统组成:
```
/ark
├── js_runtime # JS运行时组件
├── ets_runtime # JS运行时组件
├── runtime_core # 运行时公共组件
└── ts2abc # JS语言的前端工具
└── ets_frontend # JS语言的前端工具
```
## 使用指南<a name="section18393638195820"></a>
......@@ -84,8 +84,8 @@ JS Runtime主要由四个子系统组成:
## 相关仓<a name="section1371113476307"></a>
[ark\_runtime\_core](https://gitee.com/openharmony/ark_runtime_core)
[arkcompiler\_runtime\_core](https://gitee.com/openharmony/arkcompiler_runtime_core)
[ark\_js\_runtime](https://gitee.com/openharmony/ark_js_runtime)
[arkcompiler\_ets\_runtime](https://gitee.com/openharmony/arkcompiler_ets_runtime)
[ark\_ts2abc](https://gitee.com/openharmony/ark_ts2abc)
[arkcompiler\_ets\_frontend](https://gitee.com/openharmony/arkcompiler_ets_frontend)
\ No newline at end of file
......@@ -32,27 +32,27 @@ DeviceProfile主要代码目录结构如下:
```
├── interfaces
│   └── innerkits
│   └── distributeddeviceprofile // 系统内部接口
│   └── distributeddeviceprofile // innerkits接口
├── ohos.build
├── sa_profile // said声明文件
│   ├── 6001.xml
│   └── BUILD.gn
── services
│   └── distributeddeviceprofile
   ├── BUILD.gn
   ├── include
│   │   ├── contentsensor // CS数据采集头文件
│   │   ├── dbstorage // 数据库操作头文件
│   │   ├── devicemanager // 设备管理头文件
│   │   └── subscribemanager // 订阅管理头文件
│   ├── src
│   │   ├── contentsensor // CS数据采集实现
│   │   ├── dbstorage // 数据库操作实现
│   │   ├── devicemanager // 设备管理实现
│   │   ├── subscribemanager // 订阅管理实现
│   └── test // 测试用例
└── tools
└── dp // 辅助测试工具
── services
  └── distributeddeviceprofile
   ├── BUILD.gn
   ├── include
  │   ├── authority // 权限校验
   │   ├── contentsensor // CS数据采集头文件
   │   ├── dbstorage // 数据库操作头文件
   │   ├── devicemanager // 设备管理头文件
   │   └── subscribemanager // 订阅管理头文件
  ├── src
   │   ├── authority // 权限校验
  │   ├── contentsensor // CS数据采集实现
   │   ├── dbstorage // 数据库操作实现
   │   ├── devicemanager // 设备管理实现
   │   └── subscribemanager // 订阅管理实现
   └── test // 测试用例
```
## 约束<a name="section1718733212019"></a>
......
......@@ -6,7 +6,7 @@
- 根据产品配置可以按照组件组装打包产品需要的能力。
## 基本概念<a name="section175012297491"></a>
## 简介<a name="section175012297491"></a>
在了解编译构建子系统的能力前,应了解如下基本概念:
......@@ -31,6 +31,51 @@
ninja是一个专注于速度的小型构建系统。
## 目录
```text
/build # 编译构建主目录
├── __pycache__
├── build_scripts/ # 编译相关的python脚本
├── common/
├── config/ # 编译相关的配置项
├── core
│ ├── gn/ # 编译入口BUILD.gn配置
│ └── build_scripts/
├── docs
├── gn_helpers.py*
├── lite/ # hb和preloader入口
├── misc/
├── ohos # OpenHarmony编译打包流程配置
│ ├── kits # kits编译打包模板和处理流程
│ ├── ndk # ndk模板和处理流程
│ ├── notice # notice模板和处理流程
│ ├── packages # 版本打包模板和处理流程
│ ├── sa_profile # sa模板和处理流程
│ ├── sdk # sdk模板和处理流程,包括sdk中包含的模块配置
│ └── testfwk # 测试相关的处理
├── ohos.gni* # 汇总了常用的gni文件,方便各个模块一次性import
├── ohos_system.prop
├── ohos_var.gni*
├── prebuilts_download.sh* # 预编译脚本
├── print_python_deps.py*
├── scripts/
├── subsystem_config.json
├── subsystem_config_example.json
├── templates/ # c/c++编译模板定义
├── test.gni*
├── toolchain # 编译工具链配置
├── tools # 常用工具
├── version.gni
├── zip.py*
```
**图 1** 编译构建子系统架构图<a name="fig16488143010409"></a>
![](figures/build_framework_ZN.png "编译构建子系统架构图")
## 运作机制<a name="section193961322175011"></a>
OpenHarmony侧的编译构建流程主要包括以下三个步骤:
......@@ -51,9 +96,7 @@ OpenHarmony侧的编译构建流程主要包括以下三个步骤:
## 相关仓<a name="section44651652878"></a>
**编译构建子系统**
[build\_lite](https://gitee.com/openharmony/build_lite)
[build\_lite](https://gitee.com/openharmony/build_lite/blob/master/README_zh.md)
[build](https://gitee.com/openharmony/build)
[build](https://gitee.com/openharmony/build/blob/master/README_zh.md)
......@@ -3,7 +3,7 @@
## 简介<a name="section104mcpsimp"></a>
网络管理子系统,作为设备联网的必备组件,提供了对不同类型网络连接的统一管理、流量管理、策略管理、网络共享,并提供了网络协议栈能力。应用可以通过调用API来获取数据网络的连接信息,查询和订阅数据网络的连接状态,网络流量数据,网策略以及网络共享等,并可通过网络协议栈进行数据传输。
网络管理子系统,作为设备联网的必备组件,提供了对不同类型网络连接的统一管理、流量管理、策略管理、网络共享,并提供了网络协议栈能力。应用可以通过调用API来获取数据网络的连接信息,查询和订阅数据网络的连接状态,网络流量数据,网策略以及网络共享等,并可通过网络协议栈进行数据传输。
下图所示为网络管理子系统架构图。各个部件主要作用如下:
......@@ -67,7 +67,7 @@ foundation/communication/
conn.unregister((err, data) => {});
```
### 网共享<a name="section2458213210369"></a>
### 网共享<a name="section2458213210369"></a>
1. 从@ohos.net.sharing中导入sharing命名空间。
2. 设定共享类型
......
# Readme
本目录记录了OpenHarmony 3.2 Beta2版本相较于OpenHarmony 3.2 Beta1版本的API变化,包括新增、变更、废弃、删除。
- JS API差异报告
- [元能力](js-apidiff-ability.md)
- [无障碍](js-apidiff-accessibility.md)
- [帐号](js-apidiff-account.md)
- [ArkUI](js-apidiff-arkui.md)
- [包管理](js-apidiff-bundle.md)
- [基础通信](js-apidiff-communicate.md)
- [公共基础库](js-apidiff-compiler-and-runtime.md)
- [DFX](js-apidiff-dfx.md)
- [分布式数据管理](js-apidiff-distributed-data.md)
- [事件通知](js-apidiff-event-and-notification.md)
- [文件管理](js-apidiff-file-management.md)
- [位置服务](js-apidiff-geolocation.md)
- [全球化](js-apidiff-global.md)
- [图形图像](js-apidiff-graphic.md)
- [Misc](js-apidiff-misc.md)
- [多模输入](js-apidiff-multi-modal-input.md)
- [多媒体](js-apidiff-multimedia.md)
- [资源调度](js-apidiff-resource-scheduler.md)
- [安全](js-apidiff-security.md)
- [泛Sensor](js-apidiff-sensor.md)
- [分布式软总线](js-apidiff-soft-bus.md)
- [测试框架](js-apidiff-unitest.md)
- [升级服务](js-apidiff-update.md)
- [USB服务](js-apidiff-usb.md)
- [用户身份认证](js-apidiff-user-authentication.md)
- [Web](js-apidiff-web.md)
- [窗口管理](js-apidiff-window.md)
- 变更说明
- [3.2 beta2相对3.2 beta1变更详细说明](changelog-v3.2-beta2.md)
- [OpenHarmony启用应用沙箱机制-适配指导](application-sandbox-adaptation-guide.md)
# 元能力子系统JS API变更
OpenHarmony 3.2 Beta3版本相较于OpenHarmony 3.2 Beta2版本,元能力子系统的API变更如下:
## 接口变更
| 模块名 | 类名 | 方法/属性/枚举/常量 | 变更类型 |
|---|---|---|---|
| abilityDelegator | AbilityDelegator | waitAbilityStageMonitor(monitor: AbilityStageMonitor, callback: AsyncCallback\<AbilityStage>): void;<br>waitAbilityStageMonitor(monitor: AbilityStageMonitor, timeout: number, callback: AsyncCallback\<AbilityStage>): void;<br>waitAbilityStageMonitor(monitor: AbilityStageMonitor, timeout?: number): Promise\<AbilityStage>; | 新增 |
| abilityDelegator | AbilityDelegator | removeAbilityStageMonitor(monitor: AbilityStageMonitor, callback: AsyncCallback\<void>): void;<br>removeAbilityStageMonitor(monitor: AbilityStageMonitor): Promise\<void>; | 新增 |
| abilityDelegator | AbilityDelegator | addAbilityStageMonitor(monitor: AbilityStageMonitor, callback: AsyncCallback\<void>): void;<br>addAbilityStageMonitor(monitor: AbilityStageMonitor): Promise\<void>; | 新增 |
| abilityStageMonitor | AbilityStageMonitor | srcEntrance: string; | 新增 |
| abilityStageMonitor | AbilityStageMonitor | moduleName: string; | 新增 |
| applicationInfo | ApplicationInfo | readonly iconIndex: number; | 新增 |
| applicationInfo | ApplicationInfo | readonly labelIndex: number; | 新增 |
| ApplicationStateObserver | ApplicationStateObserver | onProcessStateChanged(processData: ProcessData): void; | 新增 |
| context | Context | getExternalCacheDir(callback: AsyncCallback\<string>): void<br>getExternalCacheDir(): Promise\<string>; | 新增 |
| lifecycle | LifecycleForm | onShare?(formId: string): {[key: string]: any}; | 新增 |
| MissionListener | MissionListener | onMissionClosed(mission: number): void; | 新增 |
| ohos.ability.wantConstant | Action | DLP_PARAMS_INDEX = "ohos.dlp.params.index" | 新增 |
| ohos.ability.wantConstant | Action | DLP_PARAMS_ABILITY_NAME = "ohos.dlp.params.abilityName" | 新增 |
| ohos.ability.wantConstant | Action | DLP_PARAMS_MODULE_NAME = "ohos.dlp.params.moduleName" | 新增 |
| ohos.ability.wantConstant | Action | DLP_PARAMS_BUNDLE_NAME = "ohos.dlp.params.bundleName" | 新增 |
| ohos.ability.wantConstant | Action | DLP_PARAMS_SANDBOX = "ohos.dlp.params.sandbox" | 新增 |
| ohos.ability.wantConstant | Action | ACTION_MARKET_CROWDTEST = "ohos.want.action.marketCrowdTest" | 新增 |
| ohos.ability.wantConstant | Action | ACTION_MARKET_DOWNLOAD = "ohos.want.action.marketDownload" | 新增 |
| ohos.abilityAccessCtrl | PermissionStateChangeInfo | permissionName: string; | 新增 |
| ohos.abilityAccessCtrl | PermissionStateChangeInfo | tokenID: number; | 新增 |
| ohos.abilityAccessCtrl | PermissionStateChangeInfo | change: PermissionStateChangeType; | 新增 |
| ohos.abilityAccessCtrl | PermissionStateChangeType | PERMISSION_GRANTED_OPER = 1 | 新增 |
| ohos.abilityAccessCtrl | PermissionStateChangeType | PERMISSION_REVOKED_OPER = 0 | 新增 |
| ohos.abilityAccessCtrl | AtManager | off(type: 'permissionStateChange', tokenIDList: Array\<number>, permissionNameList: Array\<string>, callback?: Callback\<PermissionStateChangeInfo>): void; | 新增 |
| ohos.abilityAccessCtrl | AtManager | on(type: 'permissionStateChange', tokenIDList: Array\<number>, permissionNameList: Array\<string>, callback: Callback\<PermissionStateChangeInfo>): void; | 新增 |
| ohos.abilityAccessCtrl | AtManager | getVersion(): Promise\<number>; | 新增 |
| ohos.application.Ability | Ability | onMemoryLevel(level: AbilityConstant.MemoryLevel): void; | 新增 |
| ohos.application.AbilityConstant | WindowMode | WINDOW_MODE_FLOATING = 102 | 新增 |
| ohos.application.AbilityConstant | WindowMode | WINDOW_MODE_SPLIT_SECONDARY = 101 | 新增 |
| ohos.application.AbilityConstant | WindowMode | WINDOW_MODE_SPLIT_PRIMARY = 100 | 新增 |
| ohos.application.AbilityConstant | WindowMode | WINDOW_MODE_FULLSCREEN = 1 | 新增 |
| ohos.application.AbilityConstant | WindowMode | WINDOW_MODE_UNDEFINED = 0 | 新增 |
| ohos.application.AbilityConstant | MemoryLevel | MEMORY_LEVEL_CRITICAL = 2 | 新增 |
| ohos.application.AbilityConstant | MemoryLevel | MEMORY_LEVEL_LOW = 1 | 新增 |
| ohos.application.AbilityConstant | MemoryLevel | MEMORY_LEVEL_MODERATE = 0 | 新增 |
| ohos.application.AbilityLifecycleCallback | AbilityLifecycleCallback | onWindowStageDestroy(ability: Ability, windowStage: window.WindowStage): void; | 新增 |
| ohos.application.AbilityLifecycleCallback | AbilityLifecycleCallback | onWindowStageInactive(ability: Ability, windowStage: window.WindowStage): void; | 新增 |
| ohos.application.AbilityLifecycleCallback | AbilityLifecycleCallback | onWindowStageActive(ability: Ability, windowStage: window.WindowStage): void; | 新增 |
| ohos.application.AbilityLifecycleCallback | AbilityLifecycleCallback | onWindowStageCreate(ability: Ability, windowStage: window.WindowStage): void; | 新增 |
| ohos.application.AbilityStage | AbilityStage | onMemoryLevel(level: AbilityConstant.MemoryLevel): void; | 新增 |
| ohos.application.appManager | ProcessState | STATE_DESTROY | 新增 |
| ohos.application.appManager | ProcessState | STATE_BACKGROUND | 新增 |
| ohos.application.appManager | ProcessState | STATE_ACTIVE | 新增 |
| ohos.application.appManager | ProcessState | STATE_FOREGROUND | 新增 |
| ohos.application.appManager | ProcessState | STATE_CREATE | 新增 |
| ohos.application.appManager | ApplicationState | STATE_DESTROY | 新增 |
| ohos.application.appManager | ApplicationState | STATE_BACKGROUND | 新增 |
| ohos.application.appManager | ApplicationState | STATE_ACTIVE | 新增 |
| ohos.application.appManager | ApplicationState | STATE_FOREGROUND | 新增 |
| ohos.application.appManager | ApplicationState | STATE_CREATE | 新增 |
| ohos.application.Configuration | Configuration | hasPointerDevice?: boolean; | 新增 |
| ohos.application.context | AreaMode | EL2 = 1 | 新增 |
| ohos.application.context | AreaMode | EL1 = 0 | 新增 |
| ohos.application.formError | FormError | ERR_DISTRIBUTED_SCHEDULE_FAILED = 37 | 新增 |
| ohos.application.FormExtension | FormExtension | onShare?(formId: string): {[key: string]: any}; | 新增 |
| ohos.application.formHost | formHost | function shareForm(formId: string, deviceId: string, callback: AsyncCallback\<void>): void;<br>function shareForm(formId: string, deviceId: string): Promise\<void>; | 新增 |
| ohos.application.formInfo | VisibilityType | FORM_INVISIBLE: number | 新增 |
| ohos.application.formInfo | VisibilityType | FORM_VISIBLE: number, | 新增 |
| ohos.application.formInfo | FormDimension | Dimension_2_1 | 新增 |
| ohos.application.formInfo | FormDimension | Dimension_4_4 | 新增 |
| ohos.application.formInfo | FormDimension | Dimension_2_4 | 新增 |
| ohos.application.formInfo | FormDimension | Dimension_2_2 | 新增 |
| ohos.application.formInfo | FormDimension | Dimension_1_2 = 1 | 新增 |
| ohos.application.formInfo | FormParam | DEVICE_ID_KEY = "ohos.extra.param.key.device_id" | 新增 |
| ohos.application.formInfo | FormParam | ABILITY_NAME_KEY = "ohos.extra.param.key.ability_name" | 新增 |
| ohos.application.formInfo | FormParam | BUNDLE_NAME_KEY = "ohos.extra.param.key.bundle_name" | 新增 |
| ohos.application.quickFixManager | quickFixManager | function getApplicationQuickFixInfo(bundleName: string, callback: AsyncCallback\<ApplicationQuickFixInfo>): void;<br>function getApplicationQuickFixInfo(bundleName: string): Promise\<ApplicationQuickFixInfo>; | 新增 |
| ohos.application.quickFixManager | quickFixManager | function applyQuickFix(hapModuleQuickFixFiles: Array\<string>, callback: AsyncCallback\<void>): void;<br>function applyQuickFix(hapModuleQuickFixFiles: Array\<string>): Promise\<void>; | 新增 |
| ohos.application.quickFixManager | ApplicationQuickFixInfo | readonly hapModuleQuickFixInfo: Array\<HapModuleQuickFixInfo>; | 新增 |
| ohos.application.quickFixManager | ApplicationQuickFixInfo | readonly quickFixVersionName: string; | 新增 |
| ohos.application.quickFixManager | ApplicationQuickFixInfo | readonly quickFixVersionCode: number; | 新增 |
| ohos.application.quickFixManager | ApplicationQuickFixInfo | readonly bundleVersionName: string; | 新增 |
| ohos.application.quickFixManager | ApplicationQuickFixInfo | readonly bundleVersionCode: number; | 新增 |
| ohos.application.quickFixManager | ApplicationQuickFixInfo | readonly bundleName: string; | 新增 |
| ohos.application.quickFixManager | HapModuleQuickFixInfo | readonly quickFixFilePath: string; | 新增 |
| ohos.application.quickFixManager | HapModuleQuickFixInfo | readonly originHapHash: string; | 新增 |
| ohos.application.quickFixManager | HapModuleQuickFixInfo | readonly moduleName: string; | 新增 |
| ProcessData | ProcessData | isKeepAlive: boolean; | 新增 |
| ProcessData | ProcessData | isContinuousTask: boolean; | 新增 |
| ProcessData | ProcessData | state: number; | 新增 |
| ServiceExtensionContext | ServiceExtensionContext | startAbilityByCall(want: Want): Promise\<Caller>; | 新增 |
| ohos.ability.wantConstant | Action | ACTION_MARKER_DOWNLOAD = "ohos.want.action.marketDownload" | 删除 |
| ohos.application.AbilityLifecycleCallback | AbilityLifecycleCallback | onAbilityWindowStageDestroy(ability: Ability): void; | 删除 |
| ohos.application.AbilityLifecycleCallback | AbilityLifecycleCallback | onAbilityWindowStageCreate(ability: Ability): void; | 删除 |
| ohos.application.DataShareExtensionAbility | DataShareExtensionAbility | getType?(uri: string, callback: AsyncCallback\<string>): void; | 删除 |
| ohos.application.DataShareExtensionAbility | DataShareExtensionAbility | openFile?(uri: string, mode: string, callback: AsyncCallback\<number>): void; | 删除 |
| ohos.application.DataShareExtensionAbility | DataShareExtensionAbility | getFileTypes?(uri: string, mimeTypeFilter: string, callback: AsyncCallback\<Array\<string>>): void; | 删除 |
| applicationInfo | ApplicationInfo | readonly iconId: string; | 废弃 |
| applicationInfo | ApplicationInfo | readonly labelId: string; | 废弃 |
| want | Want | entities?: Array\<string>; | 废弃 |
| want | Want | parameters?: {[key: string]: any}; | 废弃 |
| want | Want | action?: string; | 废弃 |
| want | Want | flags?: number; | 废弃 |
| want | Want | type?: string; | 废弃 |
| want | Want | uri?: string; | 废弃 |
| want | Want | abilityName?: string; | 废弃 |
| want | Want | bundleName?: string; | 废弃 |
| want | Want | deviceId?: string; | 废弃 |
\ No newline at end of file
# 无障碍子系统JS API变更
OpenHarmony 3.2 Beta3版本相较于OpenHarmony 3.2 Beta2版本,无障碍子系统的API变更如下:
## 接口变更
| 模块名 | 类名 | 方法/属性/枚举/常量 | 变更类型 |
|---|---|---|---|
| AccessibilityExtensionContext | AccessibilityExtensionContext | injectGesture(gesturePath: GesturePath): Promise\<void>;<br>injectGesture(gesturePath: GesturePath, callback: AsyncCallback\<void>): void; | 新增 |
| ohos.accessibility.config | Config | off(callback?: Callback\<T>): void; | 新增 |
| ohos.accessibility.config | Config | on(callback: Callback\<T>): void; | 新增 |
| ohos.accessibility.config | Config | get(): Promise\<T>;<br>get(callback: AsyncCallback\<T>): void; | 新增 |
| ohos.accessibility.config | Config | set(value: T): Promise\<void>;<br>set(value: T, callback: AsyncCallback\<void>): void; | 新增 |
| ohos.accessibility.config | config | function off(type: 'enableAbilityListsStateChanged', callback?: Callback\<void>): void; | 新增 |
| ohos.accessibility.config | config | function on(type: 'enableAbilityListsStateChanged', callback: Callback\<void>): void; | 新增 |
| ohos.accessibility.config | config | function disableAbility(name: string): Promise\<void>;<br>function disableAbility(name: string, callback: AsyncCallback\<void>): void; | 新增 |
| ohos.accessibility.config | config | function enableAbility(name: string, capability: Array\<accessibility.Capability>): Promise\<void>;<br>function enableAbility(name: string, capability: Array\<accessibility.Capability>, callback: AsyncCallback\<void>): void; | 新增 |
| ohos.accessibility.config | config | var captionsStyle: Config\<accessibility.CaptionsStyle>; | 新增 |
| ohos.accessibility.config | config | var captions: Config\<boolean>; | 新增 |
| ohos.accessibility.config | config | var shortkeyTarget: Config\<string>; | 新增 |
| ohos.accessibility.config | config | var shortkey: Config\<boolean>; | 新增 |
| ohos.accessibility.config | config | var mouseAutoClick: Config\<number>; | 新增 |
| ohos.accessibility.config | config | var mouseKey: Config\<boolean>; | 新增 |
| ohos.accessibility.config | config | var brightnessDiscount: Config\<number>; | 新增 |
| ohos.accessibility.config | config | var animationOff: Config\<boolean>; | 新增 |
| ohos.accessibility.config | config | var contentTimeout: Config\<number>; | 新增 |
| ohos.accessibility.config | config | var daltonizationColorFilter: Config\<DaltonizationColorFilter>; | 新增 |
| ohos.accessibility.config | config | var invertColor: Config\<boolean>; | 新增 |
| ohos.accessibility.config | config | var highContrastText: Config\<boolean>; | 新增 |
| AccessibilityExtensionContext | AccessibilityExtensionContext | gestureInject(gesturePath: GesturePath, listener: Callback\<boolean>): Promise\<boolean>;<br>gestureInject(gesturePath: GesturePath, listener: Callback\<boolean>, callback: AsyncCallback\<boolean>): void; | 删除 |
| AccessibilityExtensionContext | AccessibilityExtensionContext | setEventTypeFilter(type: Array\<accessibility.EventType>): Promise\<boolean>;<br>setEventTypeFilter(type: Array\<accessibility.EventType>, callback: AsyncCallback\<boolean>): boolean; | 删除 |
\ No newline at end of file
# 帐号子系统JS API变更
OpenHarmony 3.2 Beta3版本相较于OpenHarmony 3.2 Beta2版本,帐号子系统的API变更如下:
## 接口变更
| 模块名 | 类名 | 方法/属性/枚举/常量 | 变更类型 |
|---|---|---|---|
| ohos.account.appAccount | AppAccountManager | getAssociatedDataSync(name: string, key: string): string; | 新增 |
# ArkUI子系统JS API变更
OpenHarmony 3.2 Beta3版本相较于OpenHarmony 3.2 Beta2版本,ArkUI子系统的API变更如下:
## 接口变更
| 模块名 | 类名 | 方法/属性/枚举/常量 | 变更类型 |
|---|---|---|---|
| ArkUI | WebAttribute | onClientAuthenticationRequest(callback: (event: {handler : ClientAuthenticationHandler, host : string, port : number, keyTypes : Array\<string>, issuers : Array\<string>}) => void): WebAttribute; | 新增 |
| ArkUI | WebAttribute | onSslErrorEventReceive(callback: (event: { handler: SslErrorHandler, error: SslError }) => void): WebAttribute; | 新增 |
| ArkUI | WebAttribute | onScroll(callback: (event: {xOffset: number, yOffset: number}) => void): WebAttribute; | 新增 |
| ArkUI | WebAttribute | onSearchResultReceive(callback: (event?: {activeMatchOrdinal: number, numberOfMatches: number, isDoneCounting: boolean}) => void): WebAttribute | 新增 |
| ArkUI | WebAttribute | mediaPlayGestureAccess(access: boolean): WebAttribute; | 新增 |
| ArkUI | WebAttribute | onContextMenuShow(callback: (event?: { param: WebContextMenuParam, result: WebContextMenuResult }) => boolean): WebAttribute; | 新增 |
| ArkUI | WebAttribute | onPermissionRequest(callback: (event?: { request: PermissionRequest }) => void): WebAttribute; | 新增 |
| ArkUI | WebAttribute | textZoomRatio(textZoomRatio: number): WebAttribute; | 新增 |
| ArkUI | WebController | clearClientAuthenticationCache(): void; | 新增 |
| ArkUI | WebController | clearSslCache(): void; | 新增 |
| ArkUI | WebController | searchNext(forward: boolean): void; | 新增 |
| ArkUI | WebController | clearMatches(): void; | 新增 |
| ArkUI | WebController | searchAllAsync(searchString: string): void; | 新增 |
| ArkUI | WebController | postMessage(options: { message: WebMessageEvent, uri: string}): void; | 新增 |
| ArkUI | WebController | createWebMessagePorts(): Array\<WebMessagePort>; | 新增 |
| ArkUI | WebContextMenuResult | copyImage(): void; | 新增 |
| ArkUI | WebContextMenuResult | closeContextMenu(): void; | 新增 |
| ArkUI | WebContextMenuResult | constructor(); | 新增 |
| ArkUI | WebContextMenuParam | existsImageContents(): boolean; | 新增 |
| ArkUI | WebContextMenuParam | getSourceUrl(): string; | 新增 |
| ArkUI | WebContextMenuParam | getUnfilterendLinkUrl(): string; | 新增 |
| ArkUI | WebContextMenuParam | getLinkUrl(): string; | 新增 |
| ArkUI | WebContextMenuParam | y(): number; | 新增 |
| ArkUI | WebContextMenuParam | x(): number; | 新增 |
| ArkUI | WebContextMenuParam | constructor(); | 新增 |
| ArkUI | PermissionRequest | grant(resources: Array\<string>): void; | 新增 |
| ArkUI | PermissionRequest | getAccessibleResource(): Array\<string>; | 新增 |
| ArkUI | PermissionRequest | getOrigin(): string; | 新增 |
| ArkUI | PermissionRequest | deny(): void; | 新增 |
| ArkUI | PermissionRequest | constructor(); | 新增 |
| ArkUI | ProtectedResourceType | MidiSysex = "TYPE_MIDI_SYSEX" | 新增 |
| ArkUI | ClientAuthenticationHandler | ignore(): void; | 新增 |
| ArkUI | ClientAuthenticationHandler | cancel(): void; | 新增 |
| ArkUI | ClientAuthenticationHandler | confirm(priKeyFile : string, certChainFile : string): void; | 新增 |
| ArkUI | ClientAuthenticationHandler | constructor(); | 新增 |
| ArkUI | SslErrorHandler | handleCancel(): void; | 新增 |
| ArkUI | SslErrorHandler | handleConfirm(): void; | 新增 |
| ArkUI | SslErrorHandler | constructor(); | 新增 |
| ArkUI | SslError | Untrusted | 新增 |
| ArkUI | SslError | DateInvalid | 新增 |
| ArkUI | SslError | HostMismatch | 新增 |
| ArkUI | SslError | Invalid | 新增 |
| ArkUI | WebMessageEvent | setPorts(ports: Array\<WebMessagePort>): void; | 新增 |
| ArkUI | WebMessageEvent | getPorts(): Array\<WebMessagePort>; | 新增 |
| ArkUI | WebMessageEvent | setData(data: string): void; | 新增 |
| ArkUI | WebMessageEvent | getData(): string; | 新增 |
| ArkUI | WebMessageEvent | constructor(); | 新增 |
| ArkUI | WebMessagePort | onMessageEvent(callback: (result: string) => void): void; | 新增 |
| ArkUI | WebMessagePort | postMessageEvent(message: WebMessageEvent): void; | 新增 |
| ArkUI | WebMessagePort | close(): void; | 新增 |
| ArkUI | WebMessagePort | constructor(); | 新增 |
| ArkUI | ColorFilter | constructor(value: number[]); | 新增 |
| ArkUI | TextInputAttribute | style(value: TextInputStyle): TextInputAttribute; | 新增 |
| ArkUI | TextInputStyle | Inline | 新增 |
| ArkUI | TextInputStyle | Default | 新增 |
| ArkUI | TabsAttribute | barPosition(value: BarPosition): TabsAttribute; | 新增 |
| ArkUI | SideBarContainerAttribute | sideBarPosition(value: SideBarPosition): SideBarContainerAttribute; | 新增 |
| ArkUI | SideBarPosition | End | 新增 |
| ArkUI | SideBarPosition | Start | 新增 |
| ArkUI | WindowAnimationTarget | readonly missionId: number; | 新增 |
| ArkUI | PanelAttribute | onHeightChange(callback: (value: number) => void): PanelAttribute; | 新增 |
| ArkUI | PanelAttribute | backgroundMask(color: ResourceColor): PanelAttribute; | 新增 |
| ArkUI | ListItemGroupAttribute | divider(value: {strokeWidth: Length;color?: ResourceColor;startMargin?: Length;endMargin?: Length;} \| null,): ListItemGroupAttribute; | 新增 |
| ArkUI | ListItemGroupInterface | (options?: ListItemGroupOptions): ListItemGroupAttribute; | 新增 |
| ArkUI | ListItemGroupOptions | space?: number \| string; | 新增 |
| ArkUI | ListItemGroupOptions | footer?: CustomBuilder; | 新增 |
| ArkUI | ListItemGroupOptions | header?: CustomBuilder; | 新增 |
| ArkUI | ListItemAttribute | swipeAction(value: SwipeActionOptions): ListItemAttribute; | 新增 |
| ArkUI | SwipeActionOptions | edgeEffect?: SwipeEdgeEffect; | 新增 |
| ArkUI | SwipeActionOptions | end?: CustomBuilder; | 新增 |
| ArkUI | SwipeActionOptions | start?: CustomBuilder; | 新增 |
| ArkUI | SwipeEdgeEffect | None | 新增 |
| ArkUI | SwipeEdgeEffect | Spring | 新增 |
| ArkUI | ListAttribute | sticky(value: StickyStyle): ListAttribute; | 新增 |
| ArkUI | StickyStyle | Footer = 2 | 新增 |
| ArkUI | StickyStyle | Header = 1 | 新增 |
| ArkUI | StickyStyle | None = 0 | 新增 |
| ArkUI | ImageAttribute | copyOption(value: CopyOptions): ImageAttribute; | 新增 |
| ArkUI | ImageAttribute | colorFilter(value: ColorFilter): ImageAttribute; | 新增 |
| ArkUI | GutterOption | y?: Length \| GridRowSizeOption | 新增 |
| ArkUI | GutterOption | x?: Length \| GridRowSizeOption, | 新增 |
| ArkUI | FormDimension | Dimension_2_1 | 新增 |
| ArkUI | HitTestMode | None | 新增 |
| ArkUI | HitTestMode | Transparent | 新增 |
| ArkUI | HitTestMode | Block | 新增 |
| ArkUI | HitTestMode | Default | 新增 |
| ArkUI | CopyOptions | LocalDevice = 2 | 新增 |
| ArkUI | CopyOptions | InApp = 1 | 新增 |
| ArkUI | CopyOptions | None = 0 | 新增 |
| ArkUI | Color | Transparent | 新增 |
| ArkUI | CommonMethod | focusOnTouch(value: boolean): T; | 新增 |
| ArkUI | CommonMethod | groupDefaultFocus(value: boolean): T; | 新增 |
| ArkUI | CommonMethod | defaultFocus(value: boolean): T; | 新增 |
| ArkUI | CommonMethod | hitTestBehavior(value: HitTestMode): T; | 新增 |
| ArkUI | CustomPopupOptions | arrowOffset?: Length; | 新增 |
| ArkUI | PopupOptions | arrowOffset?: Length; | 新增 |
| ArkUI | focusControl | function requestFocus(value: string): boolean; | 新增 |
| basic | BusinessError | data?: T; | 新增 |
| canvaspattern | CanvasPattern | setTransform(transform?: Matrix2D): void; | 新增 |
| canvaspattern | Matrix2D | scaleX?: number; | 新增 |
| canvaspattern | Matrix2D | rotateY?: number; | 新增 |
| canvaspattern | Matrix2D | rotateX?: number; | 新增 |
| canvaspattern | Matrix2D | scaleY?: number; | 新增 |
| canvaspattern | Matrix2D | translateX?: number; | 新增 |
| canvaspattern | Matrix2D | translateY?: number; | 新增 |
| canvaspattern | Matrix2D | identity(): Matrix2D; | 新增 |
| canvaspattern | Matrix2D | invert(): Matrix2D; | 新增 |
| canvaspattern | Matrix2D | multiply(other?: Matrix2D): Matrix2D; | 新增 |
| canvaspattern | Matrix2D | rotate(rx?: number, ry?: number): Matrix2D; | 新增 |
| canvaspattern | Matrix2D | translate(tx?: number, ty?: number): Matrix2D; | 新增 |
| canvaspattern | Matrix2D | scale(sx?: number, sy?: number): Matrix2D; | 新增 |
| canvaspattern | Matrix2D | constructor(); | 新增 |
| ohos.curves | curves | function responsiveSpringMotion(response?: number, dampingFraction?: number, overlapDuration?: number): ICurve; | 新增 |
| ohos.curves | curves | function springMotion(response?: number, dampingFraction?: number, overlapDuration?: number): ICurve; | 新增 |
| ArkUI | CanvasPattern | setTransform(transform?: Matrix2D): void; | 删除 |
| ArkUI | GetterOption | y?: Length \| GridRowSizeOption | 删除 |
| ArkUI | GetterOption | x?: Length \| GridRowSizeOption, | 删除 |
| ArkUI | CopyOption | CrossDevice = 2 | 删除 |
| ArkUI | CopyOption | LocalDevice = 1 | 删除 |
| ArkUI | CopyOption | InApp = 0 | 删除 |
| ArkUI | WebAttribute | textZoomAtio(textZoomAtio: number): WebAttribute; | 废弃 |
| ArkUI | CommonMethod | touchable(value: boolean): T; | 废弃 |
| system.app | App | static requestFullWindow(options?: RequestFullWindowOptions): void; | 废弃 |
\ No newline at end of file
# 电源服务子系统JS API变更
OpenHarmony 3.2 Beta3版本相较于OpenHarmony 3.2 Beta2版本,电源服务子系统的API变更如下:
## 接口变更
| 模块名 | 类名 | 方法/属性/枚举/常量 | 变更类型 |
|---|---|---|---|
| system.battery | Battery | static getStatus(options?: GetStatusOptions): void; | 废弃 |
| system.battery | GetStatusOptions | complete?: () => void; | 废弃 |
| system.battery | GetStatusOptions | fail?: (data: string, code: number) => void; | 废弃 |
| system.battery | GetStatusOptions | success?: (data: BatteryResponse) => void; | 废弃 |
| system.battery | BatteryResponse | level: number; | 废弃 |
| system.battery | BatteryResponse | charging: boolean; | 废弃 |
| system.brightness | Brightness | static setKeepScreenOn(options?: SetKeepScreenOnOptions): void; | 废弃 |
| system.brightness | Brightness | static setMode(options?: SetBrightnessModeOptions): void; | 废弃 |
| system.brightness | Brightness | static getMode(options?: GetBrightnessModeOptions): void; | 废弃 |
| system.brightness | Brightness | static setValue(options?: SetBrightnessOptions): void; | 废弃 |
| system.brightness | Brightness | static getValue(options?: GetBrightnessOptions): void; | 废弃 |
| system.brightness | SetKeepScreenOnOptions | complete?: () => void | 废弃 |
| system.brightness | SetKeepScreenOnOptions | fail?: (data: string, code: number) => void; | 废弃 |
| system.brightness | SetKeepScreenOnOptions | success?: () => void; | 废弃 |
| system.brightness | SetKeepScreenOnOptions | keepScreenOn: boolean; | 废弃 |
| system.brightness | SetBrightnessModeOptions | complete?: () => void | 废弃 |
| system.brightness | SetBrightnessModeOptions | fail?: (data: string, code: number) => void; | 废弃 |
| system.brightness | SetBrightnessModeOptions | success?: () => void; | 废弃 |
| system.brightness | SetBrightnessModeOptions | mode: number; | 废弃 |
| system.brightness | GetBrightnessModeOptions | complete?: () => void; | 废弃 |
| system.brightness | GetBrightnessModeOptions | fail?: (data: string, code: number) => void; | 废弃 |
| system.brightness | GetBrightnessModeOptions | success?: (data: BrightnessModeResponse) => void; | 废弃 |
| system.brightness | BrightnessModeResponse | mode: number; | 废弃 |
| system.brightness | SetBrightnessOptions | complete?: () => void | 废弃 |
| system.brightness | SetBrightnessOptions | fail?: (data: string, code: number) => void; | 废弃 |
| system.brightness | SetBrightnessOptions | success?: () => void; | 废弃 |
| system.brightness | SetBrightnessOptions | value: number; | 废弃 |
| system.brightness | GetBrightnessOptions | complete?: () => void; | 废弃 |
| system.brightness | GetBrightnessOptions | fail?: (data: string, code: number) => void; | 废弃 |
| system.brightness | GetBrightnessOptions | success?: (data: BrightnessResponse) => void; | 废弃 |
| system.brightness | BrightnessResponse | value: number; | 废弃 |
\ No newline at end of file
# 包管理子系统JS API变更
OpenHarmony 3.2 Beta3版本相较于OpenHarmony 3.2 Beta2版本,包管理子系统的API变更如下:
## 接口变更
| 模块名 | 类名 | 方法/属性/枚举/常量 | 变更类型 |
|---|---|---|---|
| dispatchInfo | DispatchInfo | readonly version: string; | 新增 |
| ohos.bundle | bundle | function getBundleInfoSync(bundleName: string, bundleFlags: number, options: BundleOptions): BundleInfo;<br>function getBundleInfoSync(bundleName: string, bundleFlags: number): BundleInfo; | 新增 |
| ohos.bundle | bundle | function getApplicationInfoSync(bundleName: string, bundleFlags: number, userId: number) : ApplicationInfo;<br>function getApplicationInfoSync(bundleName: string, bundleFlags: number) : ApplicationInfo; | 新增 |
| ohos.bundle | ExtensionAbilityType | PREVIEW = 14 | 新增 |
| ohos.bundle | ExtensionAbilityType | THUMBNAIL = 13 | 新增 |
| dispatchInfo | DispatchInfo | readonly verison: string; | 删除 |
\ No newline at end of file
# 基础通信子系统JS API变更
OpenHarmony 3.2 Beta3版本相较于OpenHarmony 3.2 Beta2版本,基础通信子系统的API变更如下:
## 接口变更
| 模块名 | 类名 | 方法/属性/枚举/常量 | 变更类型 |
|---|---|---|---|
| ohos.wifi | wifi | function off(type: "deviceConfigChange", callback?: Callback\<number>): void; | 新增 |
| ohos.wifi | wifi | function on(type: "deviceConfigChange", callback: Callback\<number>): void; | 新增 |
| ohos.wifi | wifi | function removeUntrustedConfig(config: WifiDeviceConfig): Promise\<boolean>;<br>function removeUntrustedConfig(config: WifiDeviceConfig, callback: AsyncCallback\<boolean>): void; | 废弃 |
| ohos.wifi | wifi | function addUntrustedConfig(config: WifiDeviceConfig): Promise\<boolean>;<br>function addUntrustedConfig(config: WifiDeviceConfig, callback: AsyncCallback\<boolean>): void; | 废弃 |
\ No newline at end of file
# 公共基础库子系统JS API变更
OpenHarmony 3.2 Beta3版本相较于OpenHarmony 3.2 Beta2版本,公共基础库子系统的API变更如下:
## 接口变更
| 模块名 | 类名 | 方法/属性/枚举/常量 | 变更类型 |
|---|---|---|---|
| ohos.buffer | Blob | text(): Promise\<string>; | 新增 |
| ohos.buffer | Blob | slice(start?: number, end?: number, type?: string): Blob; | 新增 |
| ohos.buffer | Blob | arrayBuffer(): Promise\<ArrayBuffer>; | 新增 |
| ohos.buffer | Blob | type: string; | 新增 |
| ohos.buffer | Blob | size: number; | 新增 |
| ohos.buffer | Blob | constructor(sources: string[] \| ArrayBuffer[] \| TypedArray[] \| DataView[] \| Blob[] , options?: Object); | 新增 |
| ohos.buffer | Buffer | writeUIntLE(value: number, offset: number, byteLength: number): number; | 新增 |
| ohos.buffer | Buffer | writeUIntBE(value: number, offset: number, byteLength: number): number; | 新增 |
| ohos.buffer | Buffer | writeUInt32LE(value: number, offset?: number): number; | 新增 |
| ohos.buffer | Buffer | writeUInt32BE(value: number, offset?: number): number; | 新增 |
| ohos.buffer | Buffer | writeUInt16LE(value: number, offset?: number): number; | 新增 |
| ohos.buffer | Buffer | writeUInt16BE(value: number, offset?: number): number; | 新增 |
| ohos.buffer | Buffer | writeUInt8(value: number, offset?: number): number; | 新增 |
| ohos.buffer | Buffer | writeIntLE(value : number, offset: number, byteLength: number): number; | 新增 |
| ohos.buffer | Buffer | writeIntBE(value: number, offset: number, byteLength: number): number; | 新增 |
| ohos.buffer | Buffer | writeInt32LE(value: number, offset?: number): number; | 新增 |
| ohos.buffer | Buffer | writeInt32BE(value: number, offset?: number): number; | 新增 |
| ohos.buffer | Buffer | writeInt16LE(value: number, offset?: number): number; | 新增 |
| ohos.buffer | Buffer | writeInt16BE(value: number, offset?: number): number; | 新增 |
| ohos.buffer | Buffer | writeInt8(value: number, offset?: number): number; | 新增 |
| ohos.buffer | Buffer | writeFloatLE(value: number, offset?: number): number; | 新增 |
| ohos.buffer | Buffer | writeFloatBE(value: number, offset?: number): number; | 新增 |
| ohos.buffer | Buffer | writeDoubleLE(value: number, offset?: number): number; | 新增 |
| ohos.buffer | Buffer | writeDoubleBE(value: number, offset?: number): number; | 新增 |
| ohos.buffer | Buffer | writeBigUInt64LE(value: bigint, offset?: number): number; | 新增 |
| ohos.buffer | Buffer | writeBigUInt64BE(value: bigint, offset?: number): number; | 新增 |
| ohos.buffer | Buffer | writeBigInt64LE(value: bigint, offset?: number): number; | 新增 |
| ohos.buffer | Buffer | writeBigInt64BE(value: bigint, offset?: number): number; | 新增 |
| ohos.buffer | Buffer | write(str: string, offset?: number, length?: number, encoding?: string): number; | 新增 |
| ohos.buffer | Buffer | toString(encoding?: string, start?: number, end?: number): string; | 新增 |
| ohos.buffer | Buffer | toJSON(): Object; | 新增 |
| ohos.buffer | Buffer | swap64(): Buffer; | 新增 |
| ohos.buffer | Buffer | swap32(): Buffer; | 新增 |
| ohos.buffer | Buffer | swap16(): Buffer; | 新增 |
| ohos.buffer | Buffer | subarray(start?: number, end?: number): Buffer; | 新增 |
| ohos.buffer | Buffer | readUIntLE(offset: number, byteLength: number): number; | 新增 |
| ohos.buffer | Buffer | readUIntBE(offset: number, byteLength: number): number; | 新增 |
| ohos.buffer | Buffer | readUInt32LE(offset?: number): number; | 新增 |
| ohos.buffer | Buffer | readUInt32BE(offset?: number): number; | 新增 |
| ohos.buffer | Buffer | readUInt16LE(offset?: number): number; | 新增 |
| ohos.buffer | Buffer | readUInt16BE(offset?: number): number; | 新增 |
| ohos.buffer | Buffer | readUInt8(offset?: number): number; | 新增 |
| ohos.buffer | Buffer | readIntLE(offset: number, byteLength: number): number; | 新增 |
| ohos.buffer | Buffer | readIntBE(offset: number, byteLength: number): number; | 新增 |
| ohos.buffer | Buffer | readInt32LE(offset?: number): number; | 新增 |
| ohos.buffer | Buffer | readInt32BE(offset?: number): number; | 新增 |
| ohos.buffer | Buffer | readInt16LE(offset?: number): number; | 新增 |
| ohos.buffer | Buffer | readInt16BE(offset?: number): number; | 新增 |
| ohos.buffer | Buffer | readInt8(offset?: number): number; | 新增 |
| ohos.buffer | Buffer | readFloatLE(offset?: number): number; | 新增 |
| ohos.buffer | Buffer | readFloatBE(offset?: number): number; | 新增 |
| ohos.buffer | Buffer | readDoubleLE(offset?: number): number; | 新增 |
| ohos.buffer | Buffer | readDoubleBE(offset?: number): number; | 新增 |
| ohos.buffer | Buffer | readBigUInt64LE(offset?: number): bigint; | 新增 |
| ohos.buffer | Buffer | readBigUInt64BE(offset?: number): bigint; | 新增 |
| ohos.buffer | Buffer | readBigInt64LE(offset?: number): bigint; | 新增 |
| ohos.buffer | Buffer | readBigInt64BE(offset?: number): bigint; | 新增 |
| ohos.buffer | Buffer | lastIndexOf(value: string \| number \| Buffer \| Uint8Array, byteOffset?: number, encoding?: BufferEncoding): number; | 新增 |
| ohos.buffer | Buffer | entries(): IterableIterator\<[number, number]>; | 新增 |
| ohos.buffer | Buffer | values(): IterableIterator\<number>; | 新增 |
| ohos.buffer | Buffer | keys(): IterableIterator\<number>; | 新增 |
| ohos.buffer | Buffer | indexOf(value: string \| number \| Buffer \| Uint8Array, byteOffset?: number, encoding?: BufferEncoding): number; | 新增 |
| ohos.buffer | Buffer | includes(value: string \| number \| Buffer \| Uint8Array, byteOffset?: number, encoding?: BufferEncoding): boolean; | 新增 |
| ohos.buffer | Buffer | equals(otherBuffer: Uint8Array \| Buffer): boolean; | 新增 |
| ohos.buffer | Buffer | copy(target: Buffer \| Uint8Array, targetStart?: number, sourceStart?: number, sourceEnd?: number): number; | 新增 |
| ohos.buffer | Buffer | compare(target: Buffer \| Uint8Array, targetStart?: number, targetEnd?: number, sourceStart?: number, sourceEnd?: number): -1 \| 0 \| 1; | 新增 |
| ohos.buffer | Buffer | fill(value: string \| Buffer \| Uint8Array \| number, offset?: number, end?: number, encoding?: BufferEncoding): Buffer; | 新增 |
| ohos.buffer | Buffer | byteOffset: number; | 新增 |
| ohos.buffer | Buffer | buffer: ArrayBuffer; | 新增 |
| ohos.buffer | Buffer | length: number; | 新增 |
| ohos.buffer | buffer | function transcode(source: Buffer \| Uint8Array, fromEnc: string, toEnc: string): Buffer; | 新增 |
| ohos.buffer | buffer | function compare(buf1: Buffer \| Uint8Array, buf2: Buffer \| Uint8Array): -1 \| 0 \| 1; | 新增 |
| ohos.buffer | buffer | function isEncoding(encoding: string):boolean; | 新增 |
| ohos.buffer | buffer | function isBuffer(obj: Object): boolean; | 新增 |
| ohos.buffer | buffer | function from(array: number[]): Buffer;<br>function from(arrayBuffer: ArrayBuffer \| SharedArrayBuffer, byteOffset?: number, length?: number): Buffer;<br>function from(buffer: Buffer \| Uint8Array): Buffer;<br>function from(object: Object, offsetOrEncoding: number \| string, length: number): Buffer;<br>function from(string: String, encoding?: BufferEncoding): Buffer; | 新增 |
| ohos.buffer | buffer | function concat(list: Buffer[] \| Uint8Array[], totalLength?: number): Buffer; | 新增 |
| ohos.buffer | buffer | function byteLength(string: string \| Buffer \| TypedArray \| DataView \| ArrayBuffer \| SharedArrayBuffer, encoding?: BufferEncoding): number; | 新增 |
| ohos.buffer | buffer | function allocUninitialized(size: number): Buffer; | 新增 |
| ohos.buffer | buffer | function allocUninitializedFromPool(size: number): Buffer; | 新增 |
| ohos.buffer | buffer | function alloc(size: number, fill?: string \| Buffer \| number, encoding?: BufferEncoding): Buffer; | 新增 |
| ohos.util | TextDecoder | decodeWithStream(input: Uint8Array, options?: { stream?: boolean }): string; | 新增 |
| ohos.util | util | function parseUUID(uuid: string): Uint8Array; | 新增 |
| ohos.util | util | function randomBinaryUUID(entropyCache?: boolean): Uint8Array; | 新增 |
| ohos.util | util | function randomUUID(entropyCache?: boolean): string; | 新增 |
| ohos.worker | DedicatedWorkerGlobalScope | postMessage(messageObject: Object, transfer: Transferable[]): void;<br>postMessage(messageObject: Object, options?: PostMessageOptions): void;<br>postMessage(messageObject: Object, transfer: ArrayBuffer[]): void; | 废弃 |
\ No newline at end of file
# DFX子系统JS API变更
OpenHarmony 3.2 Beta3版本相较于OpenHarmony 3.2 Beta2版本,DFX子系统的API变更如下:
## 接口变更
| 模块名 | 类名 | 方法/属性/枚举/常量 | 变更类型 |
|---|---|---|---|
| ohos.hiAppEvent | hiAppEvent | function clearData(): void; | 新增 |
| ohos.hiAppEvent | hiAppEvent | function removeWatcher(watcher: Watcher): void; | 新增 |
| ohos.hiAppEvent | hiAppEvent | function addWatcher(watcher: Watcher): AppEventPackageHolder; | 新增 |
| ohos.hiAppEvent | Watcher | onTrigger?: (curRow: number, curSize:number, holder:AppEventPackageHolder) => void; | 新增 |
| ohos.hiAppEvent | Watcher | appEventFilters?: AppEventFilter[]; | 新增 |
| ohos.hiAppEvent | Watcher | triggerCondition?: TriggerCondition; | 新增 |
| ohos.hiAppEvent | Watcher | name: string; | 新增 |
| ohos.hiAppEvent | AppEventFilter | eventTypes?: EventType[]; | 新增 |
| ohos.hiAppEvent | AppEventFilter | domain: string; | 新增 |
| ohos.hiAppEvent | TriggerCondition | timeOut?: number; | 新增 |
| ohos.hiAppEvent | TriggerCondition | size?: number; | 新增 |
| ohos.hiAppEvent | TriggerCondition | row?: number; | 新增 |
| ohos.hiAppEvent | AppEventPackageHolder | takeNext(): AppEventPackage; | 新增 |
| ohos.hiAppEvent | AppEventPackageHolder | setSize(size: number): void; | 新增 |
| ohos.hiAppEvent | AppEventPackageHolder | constructor(watcherName: string); | 新增 |
| ohos.hiAppEvent | AppEventPackage | data: string[]; | 新增 |
| ohos.hiAppEvent | AppEventPackage | size: number; | 新增 |
| ohos.hiAppEvent | AppEventPackage | row: number; | 新增 |
| ohos.hiAppEvent | AppEventPackage | packageId: number; | 新增 |
| ohos.hiAppEvent | AppEventInfo | params: object; | 新增 |
| ohos.hiAppEvent | AppEventInfo | eventType: EventType; | 新增 |
| ohos.hiAppEvent | AppEventInfo | name: string; | 新增 |
| ohos.hiAppEvent | AppEventInfo | domain: string; | 新增 |
| ohos.hiAppEvent | hiAppEvent | function write(eventName: string, eventType: EventType, keyValues: object): Promise\<void>;<br>function write(eventName: string, eventType: EventType, keyValues: object, callback: AsyncCallback\<void>): void;<br>function write(info: AppEventInfo): Promise\<void>;<br>function write(info: AppEventInfo, callback: AsyncCallback\<void>): void; | 废弃 |
\ No newline at end of file
# 分布式数据管理子系统JS API变更
OpenHarmony 3.2 Beta3版本相较于OpenHarmony 3.2 Beta2版本,分布式数据管理子系统的API变更如下:
## 接口变更
| 模块名 | 类名 | 方法/属性/枚举/常量 | 变更类型 |
|---|---|---|---|
| ohos.data.distributedData | KVStore | deleteBackup(files:Array\<string>, callback: AsyncCallback\<Array\<[string, number]>>):void;<br>deleteBackup(files:Array\<string>): Promise\<Array\<[string, number]>>; | 新增 |
| ohos.data.distributedData | KVStore | restore(file:string, callback: AsyncCallback\<void>):void;<br>restore(file:string): Promise\<void>; | 新增 |
| ohos.data.distributedData | KVStore | backup(file:string, callback: AsyncCallback\<void>):void;<br>backup(file:string): Promise\<void>; | 新增 |
| ohos.data.rdb | StoreConfig | encrypt?: boolean; | 新增 |
| ohos.data.rdb | RdbStore | remoteQuery(device: string, table: string, predicates: RdbPredicates, columns: Array\<string>, callback: AsyncCallback\<ResultSet>): void;<br>remoteQuery(device: string, table: string, predicates: RdbPredicates, columns: Array\<string>): Promise\<ResultSet>; | 新增 |
| ohos.data.rdb | RdbStore | batchInsert(table: string, values: Array\<ValuesBucket>, callback: AsyncCallback\<number>): void;<br>batchInsert(table: string, values: Array\<ValuesBucket>): Promise\<number>; | 新增 |
| ohos.data.dataShare | DataShareHelper | getFileTypes(uri: string, mimeTypeFilter:string, callback: AsyncCallback\<Array\<string>>): void;<br>getFileTypes(uri: string, mimeTypeFilter: string): Promise\<Array\<string>>; | 删除 |
| ohos.data.dataShare | DataShareHelper | getType(uri: string, callback: AsyncCallback\<string>): void;<br>getType(uri: string): Promise\<string>; | 删除 |
| ohos.data.dataShare | DataShareHelper | openFile(uri: string, mode: string, callback: AsyncCallback\<number>): void;<br>openFile(uri: string, mode: string): Promise\<number>; | 删除 |
\ No newline at end of file
# 分布式硬件子系统JS API变更
OpenHarmony 3.2 Beta3版本相较于OpenHarmony 3.2 Beta2版本,分布式硬件子系统的API变更如下:
## 接口变更
| 模块名 | 类名 | 方法/属性/枚举/常量 | 变更类型 |
|---|---|---|---|
| ohos.distributedHardware.deviceManager | DeviceManager | off(type: 'publishFail', callback?: Callback<{ publishId: number, reason: number }>): void; | 新增 |
| ohos.distributedHardware.deviceManager | DeviceManager | on(type: 'publishFail', callback: Callback<{ publishId: number, reason: number }>): void; | 新增 |
| ohos.distributedHardware.deviceManager | DeviceManager | off(type: 'publishSuccess', callback?: Callback<{ publishId: number }>): void; | 新增 |
| ohos.distributedHardware.deviceManager | DeviceManager | on(type: 'publishSuccess', callback: Callback<{ publishId: number }>): void; | 新增 |
| ohos.distributedHardware.deviceManager | DeviceManager | unPublishDeviceDiscovery(publishId: number): void; | 新增 |
| ohos.distributedHardware.deviceManager | DeviceManager | publishDeviceDiscovery(publishInfo: PublishInfo): void; | 新增 |
| ohos.distributedHardware.deviceManager | PublishInfo | ranging : boolean; | 新增 |
| ohos.distributedHardware.deviceManager | PublishInfo | freq: ExchangeFreq; | 新增 |
| ohos.distributedHardware.deviceManager | PublishInfo | mode: DiscoverMode; | 新增 |
| ohos.distributedHardware.deviceManager | PublishInfo | publishId: number; | 新增 |
| ohos.distributedHardware.deviceManager | DeviceInfo | range: number; | 新增 |
\ No newline at end of file
# 事件通知子系统JS API变更
OpenHarmony 3.2 Beta3版本相较于OpenHarmony 3.2 Beta2版本,事件通知子系统的API变更如下:
## 接口变更
| 模块名 | 类名 | 方法/属性/枚举/常量 | 变更类型 |
|---|---|---|---|
| ohos.commonEvent | Support | COMMON_EVENT_QUICK_FIX_APPLY_RESULT = "usual.event.QUICK_FIX_APPLY_RESULT" | 新增 |
| ohos.commonEvent | Support | COMMON_EVENT_USB_PORT_CHANGED = "usual.event.hardware.usb.action.USB_PORT_CHANGED" | 新增 |
| ohos.commonEvent | Support | COMMON_EVENT_USB_STATE = "usual.event.hardware.usb.action.USB_STATE" | 新增 |
| ohos.commonEvent | Support | COMMON_EVENT_PACKAGE_CACHE_CLEARED = "usual.event.PACKAGE_CACHE_CLEARED" | 新增 |
| ohos.notification | RemoveReason | CANCEL_REASON_REMOVE = 2 | 新增 |
| ohos.notification | RemoveReason | CLICK_REASON_REMOVE = 1 | 新增 |
| ohos.notification | notification | function getSyncNotificationEnabledWithoutApp(userId: number, callback: AsyncCallback\<boolean>): void;<br>function getSyncNotificationEnabledWithoutApp(userId: number): Promise\<boolean>; | 新增 |
| ohos.notification | notification | function setSyncNotificationEnabledWithoutApp(userId: number, enable: boolean, callback: AsyncCallback\<void>): void;<br>function setSyncNotificationEnabledWithoutApp(userId: number, enable: boolean): Promise\<void>; | 新增 |
| ohos.notification | notification | function getSyncNotificationEnabledForUninstallApp(userId: number, callback: AsyncCallback\<boolean>): void;<br>function getSyncNotificationEnabledForUninstallApp(userId: number): Promise\<boolean>; | 删除 |
| ohos.notification | notification | function setSyncNotificationEnabledForUninstallApp(userId: number, enable: boolean, callback: AsyncCallback\<void>): void;<br>function setSyncNotificationEnabledForUninstallApp(userId: number, enable: boolean): Promise\<void>; | 删除 |
\ No newline at end of file
# 文件管理子系统JS API变更
OpenHarmony 3.2 Beta3版本相较于OpenHarmony 3.2 Beta2版本,文件管理子系统的API变更如下:
## 接口变更
| 模块名 | 类名 | 方法/属性/枚举/常量 | 变更类型 |
|---|---|---|---|
| ohos.data.fileAccess | FileAccessHelper | getRoots(): Promise\<RootIterator>;<br>getRoots(callback:AsyncCallback\<RootIterator>) : void; | 新增 |
| ohos.data.fileAccess | FileAccessHelper | access(sourceFileUri: string) : Promise\<boolean>;<br>access(sourceFileUri: string, callback: AsyncCallback\<boolean>) : void; | 新增 |
| ohos.data.fileAccess | FileAccessHelper | rename(uri: string, displayName: string) : Promise\<string>;<br>rename(uri: string, displayName: string, callback: AsyncCallback\<string>) : void; | 新增 |
| ohos.data.fileAccess | FileAccessHelper | move(sourceFile: string, destFile: string) : Promise\<string>;<br>move(sourceFile: string, destFile: string, callback: AsyncCallback\<string>) : void; | 新增 |
| ohos.data.fileAccess | FileAccessHelper | delete(uri: string) : Promise\<number>;<br>delete(uri: string, callback: AsyncCallback\<number>) : void; | 新增 |
| ohos.data.fileAccess | FileAccessHelper | mkDir(parentUri: string, displayName: string) : Promise\<string>;<br>mkDir(parentUri: string, displayName: string, callback: AsyncCallback\<string>) : void; | 新增 |
| ohos.data.fileAccess | FileAccessHelper | createFile(uri: string, displayName: string) : Promise\<string>;<br>createFile(uri: string, displayName: string, callback: AsyncCallback\<string>) : void; | 新增 |
| ohos.data.fileAccess | FileAccessHelper | openFile(uri: string, flags: OPENFLAGS) : Promise\<number>;<br>openFile(uri: string, flags: OPENFLAGS, callback: AsyncCallback\<number>) : void; | 新增 |
| ohos.data.fileAccess | OPENFLAGS | WRITE_READ = 0o2 | 新增 |
| ohos.data.fileAccess | OPENFLAGS | WRITE = 0o1 | 新增 |
| ohos.data.fileAccess | OPENFLAGS | READ = 0o0 | 新增 |
| ohos.data.fileAccess | RootIterator | next(): {value: RootInfo, done: boolean} | 新增 |
| ohos.data.fileAccess | RootInfo | scanFile(filter?: Filter): FileIterator; | 新增 |
| ohos.data.fileAccess | RootInfo | listFile(filter?: Filter): FileIterator; | 新增 |
| ohos.data.fileAccess | RootInfo | deviceFlags: number; | 新增 |
| ohos.data.fileAccess | RootInfo | displayName: string; | 新增 |
| ohos.data.fileAccess | RootInfo | uri: string; | 新增 |
| ohos.data.fileAccess | RootInfo | deviceType: number; | 新增 |
| ohos.data.fileAccess | FileIterator | next(): {value: FileInfo, done: boolean} | 新增 |
| ohos.data.fileAccess | FileInfo | scanFile(filter?: Filter): FileIterator; | 新增 |
| ohos.data.fileAccess | FileInfo | listFile(filter?: Filter): FileIterator; | 新增 |
| ohos.data.fileAccess | FileInfo | mimeType: string; | 新增 |
| ohos.data.fileAccess | FileInfo | mtime: number; | 新增 |
| ohos.data.fileAccess | FileInfo | size: number; | 新增 |
| ohos.data.fileAccess | FileInfo | mode: number; | 新增 |
| ohos.data.fileAccess | FileInfo | fileName: string; | 新增 |
| ohos.data.fileAccess | FileInfo | uri: string; | 新增 |
| ohos.data.fileAccess | fileAccess | createFileAccessHelper(context: Context): FileAccessHelper;<br>createFileAccessHelper(context: Context, wants: Array\<Want>): FileAccessHelper; | 新增 |
| ohos.data.fileAccess | fileAccess | getFileAccessAbilityInfo(callback: AsyncCallback\<Array\<Want>>): void;<br>getFileAccessAbilityInfo(): Promise\<Array\<Want>>; | 新增 |
| ohos.fileExtensionInfo | DocumentFlag | const SUPPORTS_WRITE = 0b1000; | 新增 |
| ohos.fileExtensionInfo | DocumentFlag | const SUPPORTS_READ = 0b100; | 新增 |
| ohos.fileExtensionInfo | DocumentFlag | const REPRESENTS_DIR = 0b10; | 新增 |
| ohos.fileExtensionInfo | DocumentFlag | const REPRESENTS_FILE = 0b1; | 新增 |
| ohos.fileExtensionInfo | DeviceFlag | const SUPPORTS_WRITE = 0b10; | 新增 |
| ohos.fileExtensionInfo | DeviceFlag | const SUPPORTS_READ = 0b1; | 新增 |
| ohos.fileExtensionInfo | DeviceType | DEVICE_EXTERNAL_CLOUD | 新增 |
| ohos.fileExtensionInfo | DeviceType | DEVICE_EXTERNAL_USB | 新增 |
| ohos.fileExtensionInfo | DeviceType | DEVICE_EXTERNAL_MTP | 新增 |
| ohos.fileExtensionInfo | DeviceType | DEVICE_NETWORK_NEIGHBORHOODS | 新增 |
| ohos.fileExtensionInfo | DeviceType | DEVICE_SHARED_TERMINAL | 新增 |
| ohos.fileExtensionInfo | DeviceType | DEVICE_SHARED_DISK | 新增 |
| ohos.fileExtensionInfo | DeviceType | DEVICE_LOCAL_DISK = 1 | 新增 |
| ohos.filemanagement.userfile_manager | VirtualAlbum | getFileAssets(type: Array\<MediaType>, options: MediaFetchOptions, callback: AsyncCallback\<FetchFileResult>): void;<br>getFileAssets(type: Array\<MediaType>, options: MediaFetchOptions): Promise\<FetchFileResult>; | 新增 |
| ohos.filemanagement.userfile_manager | VirtualAlbumType | TYPE_TRASH | 新增 |
| ohos.filemanagement.userfile_manager | VirtualAlbumType | TYPE_FAVORITE | 新增 |
| ohos.filemanagement.userfile_manager | PeerInfo | readonly isOnline: boolean; | 新增 |
| ohos.filemanagement.userfile_manager | PeerInfo | readonly networkId: string; | 新增 |
| ohos.filemanagement.userfile_manager | PeerInfo | readonly deviceName: string; | 新增 |
| ohos.filemanagement.userfile_manager | Size | height: number; | 新增 |
| ohos.filemanagement.userfile_manager | Size | width: number; | 新增 |
| ohos.filemanagement.userfile_manager | UserFileManager | release(callback: AsyncCallback\<void>): void;<br>release(): Promise\<void>; | 新增 |
| ohos.filemanagement.userfile_manager | UserFileManager | getAllPeers(callback: AsyncCallback\<Array\<PeerInfo>>): void;<br>getAllPeers(): Promise\<Array\<PeerInfo>>; | 新增 |
| ohos.filemanagement.userfile_manager | UserFileManager | getActivePeers(callback: AsyncCallback\<Array\<PeerInfo>>): void;<br>getActivePeers(): Promise\<Array\<PeerInfo>>; | 新增 |
| ohos.filemanagement.userfile_manager | UserFileManager | getPrivateAlbum(type: VirtualAlbumType, callback: AsyncCallback\<Array\<VirtualAlbum>>): void;<br>getPrivateAlbum(type: VirtualAlbumType): Promise\<Array\<VirtualAlbum>>; | 新增 |
| ohos.filemanagement.userfile_manager | UserFileManager | getAlbums(type: Array\<MediaType>, options: MediaFetchOptions, callback: AsyncCallback\<Array\<Album>>): void;<br>getAlbums(type: Array\<MediaType>, options: MediaFetchOptions): Promise\<Array\<Album>>; | 新增 |
| ohos.filemanagement.userfile_manager | UserFileManager | deleteAsset(uri: string, callback: AsyncCallback\<void>): void;<br>deleteAsset(uri: string): Promise\<void>; | 新增 |
| ohos.filemanagement.userfile_manager | UserFileManager | createAsset(mediaType: MediaType, displayName: string, relativePath: string, callback: AsyncCallback\<FileAsset>): void;<br>createAsset(mediaType: MediaType, displayName: string, relativePath: string): Promise\<FileAsset>; | 新增 |
| ohos.filemanagement.userfile_manager | UserFileManager | off(type: 'deviceChange'\|'albumChange'\|'imageChange'\|'audioChange'\|'videoChange'\|'fileChange'\|'remoteFileChange', callback?: Callback\<void>): void; | 新增 |
| ohos.filemanagement.userfile_manager | UserFileManager | off(type: 'deviceChange'\|'albumChange'\|'imageChange'\|'audioChange'\|'videoChange'\|'fileChange'\|'remoteFileChange', callback?: Callback\<void>): void; | 新增 |
| ohos.filemanagement.userfile_manager | UserFileManager | off(type: 'deviceChange'\|'albumChange'\|'imageChange'\|'audioChange'\|'videoChange'\|'fileChange'\|'remoteFileChange', callback?: Callback\<void>): void; | 新增 |
| ohos.filemanagement.userfile_manager | UserFileManager | off(type: 'deviceChange'\|'albumChange'\|'imageChange'\|'audioChange'\|'videoChange'\|'fileChange'\|'remoteFileChange', callback?: Callback\<void>): void; | 新增 |
| ohos.filemanagement.userfile_manager | UserFileManager | off(type: 'deviceChange'\|'albumChange'\|'imageChange'\|'audioChange'\|'videoChange'\|'fileChange'\|'remoteFileChange', callback?: Callback\<void>): void; | 新增 |
| ohos.filemanagement.userfile_manager | UserFileManager | off(type: 'deviceChange'\|'albumChange'\|'imageChange'\|'audioChange'\|'videoChange'\|'fileChange'\|'remoteFileChange', callback?: Callback\<void>): void; | 新增 |
| ohos.filemanagement.userfile_manager | UserFileManager | off(type: 'deviceChange'\|'albumChange'\|'imageChange'\|'audioChange'\|'videoChange'\|'fileChange'\|'remoteFileChange', callback?: Callback\<void>): void; | 新增 |
| ohos.filemanagement.userfile_manager | UserFileManager | on(type: 'deviceChange'\|'albumChange'\|'imageChange'\|'audioChange'\|'videoChange'\|'fileChange'\|'remoteFileChange', callback: Callback\<void>): void; | 新增 |
| ohos.filemanagement.userfile_manager | UserFileManager | on(type: 'deviceChange'\|'albumChange'\|'imageChange'\|'audioChange'\|'videoChange'\|'fileChange'\|'remoteFileChange', callback: Callback\<void>): void; | 新增 |
| ohos.filemanagement.userfile_manager | UserFileManager | on(type: 'deviceChange'\|'albumChange'\|'imageChange'\|'audioChange'\|'videoChange'\|'fileChange'\|'remoteFileChange', callback: Callback\<void>): void; | 新增 |
| ohos.filemanagement.userfile_manager | UserFileManager | on(type: 'deviceChange'\|'albumChange'\|'imageChange'\|'audioChange'\|'videoChange'\|'fileChange'\|'remoteFileChange', callback: Callback\<void>): void; | 新增 |
| ohos.filemanagement.userfile_manager | UserFileManager | on(type: 'deviceChange'\|'albumChange'\|'imageChange'\|'audioChange'\|'videoChange'\|'fileChange'\|'remoteFileChange', callback: Callback\<void>): void; | 新增 |
| ohos.filemanagement.userfile_manager | UserFileManager | on(type: 'deviceChange'\|'albumChange'\|'imageChange'\|'audioChange'\|'videoChange'\|'fileChange'\|'remoteFileChange', callback: Callback\<void>): void; | 新增 |
| ohos.filemanagement.userfile_manager | UserFileManager | on(type: 'deviceChange'\|'albumChange'\|'imageChange'\|'audioChange'\|'videoChange'\|'fileChange'\|'remoteFileChange', callback: Callback\<void>): void; | 新增 |
| ohos.filemanagement.userfile_manager | UserFileManager | getFileAssets(type: Array\<MediaType>, options: MediaFetchOptions, callback: AsyncCallback\<FetchFileResult>): void;<br>getFileAssets(type: Array\<MediaType>, options: MediaFetchOptions): Promise\<FetchFileResult>; | 新增 |
| ohos.filemanagement.userfile_manager | UserFileManager | getPublicDirectory(type: DirectoryType, callback: AsyncCallback\<string>): void;<br>getPublicDirectory(type: DirectoryType): Promise\<string>; | 新增 |
| ohos.filemanagement.userfile_manager | DirectoryType | DIR_DOWNLOAD | 新增 |
| ohos.filemanagement.userfile_manager | DirectoryType | DIR_DOCUMENTS | 新增 |
| ohos.filemanagement.userfile_manager | DirectoryType | DIR_AUDIO | 新增 |
| ohos.filemanagement.userfile_manager | DirectoryType | DIR_IMAGE | 新增 |
| ohos.filemanagement.userfile_manager | DirectoryType | DIR_VIDEO | 新增 |
| ohos.filemanagement.userfile_manager | DirectoryType | DIR_CAMERA = 0 | 新增 |
| ohos.filemanagement.userfile_manager | Album | getFileAssets(type: Array\<MediaType>, callback: AsyncCallback\<FetchFileResult>): void;<br>getFileAssets(type: Array\<MediaType>, options: MediaFetchOptions, callback: AsyncCallback\<FetchFileResult>): void;<br>getFileAssets(type: Array\<MediaType>, options?: MediaFetchOptions): Promise\<FetchFileResult>; | 新增 |
| ohos.filemanagement.userfile_manager | Album | commitModify(callback: AsyncCallback\<void>): void;<br>commitModify(): Promise\<void>; | 新增 |
| ohos.filemanagement.userfile_manager | Album | readonly coverUri: string; | 新增 |
| ohos.filemanagement.userfile_manager | Album | readonly relativePath: string; | 新增 |
| ohos.filemanagement.userfile_manager | Album | readonly count: number; | 新增 |
| ohos.filemanagement.userfile_manager | Album | readonly dateModified: number; | 新增 |
| ohos.filemanagement.userfile_manager | Album | readonly albumUri: string; | 新增 |
| ohos.filemanagement.userfile_manager | Album | albumName: string; | 新增 |
| ohos.filemanagement.userfile_manager | FetchFileResult | getPositionObject(index: number, callback: AsyncCallback\<FileAsset>): void;<br>getPositionObject(index: number): Promise\<FileAsset>; | 新增 |
| ohos.filemanagement.userfile_manager | FetchFileResult | getLastObject(callback: AsyncCallback\<FileAsset>): void;<br>getLastObject(): Promise\<FileAsset>; | 新增 |
| ohos.filemanagement.userfile_manager | FetchFileResult | getNextObject(callback: AsyncCallback\<FileAsset>): void;<br>getNextObject(): Promise\<FileAsset>; | 新增 |
| ohos.filemanagement.userfile_manager | FetchFileResult | getFirstObject(callback: AsyncCallback\<FileAsset>): void;<br>getFirstObject(): Promise\<FileAsset>; | 新增 |
| ohos.filemanagement.userfile_manager | FetchFileResult | close(): void; | 新增 |
| ohos.filemanagement.userfile_manager | FetchFileResult | isAfterLast(): boolean; | 新增 |
| ohos.filemanagement.userfile_manager | FetchFileResult | getCount(): number; | 新增 |
| ohos.filemanagement.userfile_manager | MediaFetchOptions | selectionArgs: Array\<string>; | 新增 |
| ohos.filemanagement.userfile_manager | MediaFetchOptions | selections: string; | 新增 |
| ohos.filemanagement.userfile_manager | AlbumKey | DATE_MODIFIED = "date_modified" | 新增 |
| ohos.filemanagement.userfile_manager | AlbumKey | DATE_ADDED = "date_added" | 新增 |
| ohos.filemanagement.userfile_manager | AlbumKey | DISPLAY_NAME = "display_name" | 新增 |
| ohos.filemanagement.userfile_manager | AlbumKey | RELATIVE_PATH = "relative_path" | 新增 |
| ohos.filemanagement.userfile_manager | AlbumKey | URI = "uri" | 新增 |
| ohos.filemanagement.userfile_manager | ImageVideoKey | DATE_TAKEN = "date_taken" | 新增 |
| ohos.filemanagement.userfile_manager | ImageVideoKey | HEIGHT = "height" | 新增 |
| ohos.filemanagement.userfile_manager | ImageVideoKey | WIDTH = "width" | 新增 |
| ohos.filemanagement.userfile_manager | ImageVideoKey | DURATION = "duration" | 新增 |
| ohos.filemanagement.userfile_manager | ImageVideoKey | TITLE = "title" | 新增 |
| ohos.filemanagement.userfile_manager | ImageVideoKey | DATE_MODIFIED = "date_modified" | 新增 |
| ohos.filemanagement.userfile_manager | ImageVideoKey | DATE_ADDED = "date_added" | 新增 |
| ohos.filemanagement.userfile_manager | ImageVideoKey | DISPLAY_NAME = "display_name" | 新增 |
| ohos.filemanagement.userfile_manager | ImageVideoKey | RELATIVE_PATH = "relative_path" | 新增 |
| ohos.filemanagement.userfile_manager | ImageVideoKey | URI = "uri" | 新增 |
| ohos.filemanagement.userfile_manager | AudioKey | DURATION = "duration" | 新增 |
| ohos.filemanagement.userfile_manager | AudioKey | AUDIOALBUM = "audio_album" | 新增 |
| ohos.filemanagement.userfile_manager | AudioKey | ARTIST = "artist" | 新增 |
| ohos.filemanagement.userfile_manager | AudioKey | TITLE = "title" | 新增 |
| ohos.filemanagement.userfile_manager | AudioKey | DATE_MODIFIED = "date_modified" | 新增 |
| ohos.filemanagement.userfile_manager | AudioKey | DATE_ADDED = "date_added" | 新增 |
| ohos.filemanagement.userfile_manager | AudioKey | DISPLAY_NAME = "display_name" | 新增 |
| ohos.filemanagement.userfile_manager | AudioKey | RELATIVE_PATH = "relative_path" | 新增 |
| ohos.filemanagement.userfile_manager | AudioKey | URI = "uri" | 新增 |
| ohos.filemanagement.userfile_manager | FileKey | TITLE = "title" | 新增 |
| ohos.filemanagement.userfile_manager | FileKey | DATE_MODIFIED = "date_modified" | 新增 |
| ohos.filemanagement.userfile_manager | FileKey | DATE_ADDED = "date_added" | 新增 |
| ohos.filemanagement.userfile_manager | FileKey | DISPLAY_NAME = "display_name" | 新增 |
| ohos.filemanagement.userfile_manager | FileKey | RELATIVE_PATH = "relative_path" | 新增 |
| ohos.filemanagement.userfile_manager | FileKey | URI = "uri" | 新增 |
| ohos.filemanagement.userfile_manager | FileAsset | isTrash(callback: AsyncCallback\<boolean>): void;<br>isTrash():Promise\<boolean>; | 新增 |
| ohos.filemanagement.userfile_manager | FileAsset | trash(isTrash: boolean, callback: AsyncCallback\<void>): void;<br>trash(isTrash: boolean): Promise\<void>; | 新增 |
| ohos.filemanagement.userfile_manager | FileAsset | isFavorite(callback: AsyncCallback\<boolean>): void;<br>isFavorite():Promise\<boolean>; | 新增 |
| ohos.filemanagement.userfile_manager | FileAsset | favorite(isFavorite: boolean, callback: AsyncCallback\<void>): void;<br>favorite(isFavorite: boolean): Promise\<void>; | 新增 |
| ohos.filemanagement.userfile_manager | FileAsset | getThumbnail(callback: AsyncCallback\<image.PixelMap>): void;<br>getThumbnail(size: Size, callback: AsyncCallback\<image.PixelMap>): void;<br>getThumbnail(size?: Size): Promise\<image.PixelMap>; | 新增 |
| ohos.filemanagement.userfile_manager | FileAsset | close(fd: number, callback: AsyncCallback\<void>): void;<br>close(fd: number): Promise\<void>; | 新增 |
| ohos.filemanagement.userfile_manager | FileAsset | open(mode: string, callback: AsyncCallback\<number>): void;<br>open(mode: string): Promise\<number>; | 新增 |
| ohos.filemanagement.userfile_manager | FileAsset | commitModify(callback: AsyncCallback\<void>): void;<br>commitModify(): Promise\<void>; | 新增 |
| ohos.filemanagement.userfile_manager | FileAsset | isDirectory(callback: AsyncCallback\<boolean>): void;<br>isDirectory():Promise\<boolean>; | 新增 |
| ohos.filemanagement.userfile_manager | FileAsset | displayName: string; | 新增 |
| ohos.filemanagement.userfile_manager | FileAsset | readonly mediaType: MediaType; | 新增 |
| ohos.filemanagement.userfile_manager | FileAsset | readonly uri: string; | 新增 |
| ohos.filemanagement.userfile_manager | MediaType | AUDIO | 新增 |
| ohos.filemanagement.userfile_manager | MediaType | VIDEO | 新增 |
| ohos.filemanagement.userfile_manager | MediaType | IMAGE | 新增 |
| ohos.filemanagement.userfile_manager | MediaType | FILE = 0 | 新增 |
| ohos.filemanagement.userfile_manager | userfile_manager | getUserFileMgr(): UserFileManager;<br>getUserFileMgr(context: Context): UserFileManager; | 新增 |
| ohos.document | document | show(uri: string, type: string): Promise\<void>;<br>show(uri: string, type: string, callback: AsyncCallback\<void>): void; | 废弃 |
| ohos.document | document | choose(types?: string[]): Promise\<string>;<br>choose(callback: AsyncCallback\<string>): void;<br>choose(types: string[], callback: AsyncCallback\<string>): void; | 废弃 |
\ No newline at end of file
# 全球化子系统JS API变更
OpenHarmony 3.2 Beta3版本相较于OpenHarmony 3.2 Beta2版本,全球化子系统的API变更如下:
## 接口变更
| 模块名 | 类名 | 方法/属性/枚举/常量 | 变更类型 |
|---|---|---|---|
| ohos.i18n | Unicode | static getType(char: string): string; | 新增 |
| ohos.i18n | Unicode | static isUpperCase(char: string): boolean; | 新增 |
| ohos.i18n | Unicode | static isLowerCase(char: string): boolean; | 新增 |
| ohos.i18n | Unicode | static isLetter(char: string): boolean; | 新增 |
| ohos.i18n | Unicode | static isIdeograph(char: string): boolean; | 新增 |
| ohos.i18n | Unicode | static isRTL(char: string): boolean; | 新增 |
| ohos.i18n | Unicode | static isWhitespace(char: string): boolean; | 新增 |
| ohos.i18n | Unicode | static isSpaceChar(char: string): boolean; | 新增 |
| ohos.i18n | Unicode | static isDigit(char: string): boolean; | 新增 |
| ohos.i18n | I18NUtil | static getDateOrder(locale: string): string; | 新增 |
| ohos.i18n | I18NUtil | static unitConvert(fromUnit: UnitInfo, toUnit: UnitInfo, value: number, locale: string, style?: string): string; | 新增 |
| ohos.i18n | Util | getDateOrder(locale: string): string; | 删除 |
| ohos.i18n | Character | getType(char: string): string; | 废弃 |
| ohos.i18n | Character | isUpperCase(char: string): boolean; | 废弃 |
| ohos.i18n | Character | isLowerCase(char: string): boolean; | 废弃 |
| ohos.i18n | Character | isLetter(char: string): boolean; | 废弃 |
| ohos.i18n | Character | isIdeograph(char: string): boolean; | 废弃 |
| ohos.i18n | Character | isRTL(char: string): boolean; | 废弃 |
| ohos.i18n | Character | isWhitespace(char: string): boolean; | 废弃 |
| ohos.i18n | Character | isSpaceChar(char: string): boolean; | 废弃 |
| ohos.i18n | Character | isDigit(char: string): boolean; | 废弃 |
| ohos.i18n | Util | unitConvert(fromUnit: UnitInfo, toUnit: UnitInfo, value: number, locale: string, style?: string): string; | 废弃 |
# 图形图像子系统JS API变更
OpenHarmony 3.2 Beta3版本相较于OpenHarmony 3.2 Beta2版本,图形图像子系统的API变更如下:
## 接口变更
| 模块名 | 类名 | 方法/属性/枚举/常量 | 变更类型 |
|---|---|---|---|
| ohos.graphics.colorSpaceManager | colorSpaceManager | function create(colorSpaceName: ColorSpace): ColorSpaceManager;<br>function create(primaries: ColorSpacePrimaries, gamma: number): ColorSpaceManager; | 新增 |
| ohos.graphics.colorSpaceManager | ColorSpaceManager | getGamma(): number; | 新增 |
| ohos.graphics.colorSpaceManager | ColorSpaceManager | getWhitePoint(): Array\<number>; | 新增 |
| ohos.graphics.colorSpaceManager | ColorSpaceManager | getColorSpaceName(): ColorSpace; | 新增 |
| ohos.graphics.colorSpaceManager | ColorSpacePrimaries | whitePointY: number; | 新增 |
| ohos.graphics.colorSpaceManager | ColorSpacePrimaries | whitePointX: number; | 新增 |
| ohos.graphics.colorSpaceManager | ColorSpacePrimaries | blueY: number; | 新增 |
| ohos.graphics.colorSpaceManager | ColorSpacePrimaries | blueX: number; | 新增 |
| ohos.graphics.colorSpaceManager | ColorSpacePrimaries | greenY: number; | 新增 |
| ohos.graphics.colorSpaceManager | ColorSpacePrimaries | greenX: number; | 新增 |
| ohos.graphics.colorSpaceManager | ColorSpacePrimaries | redY: number; | 新增 |
| ohos.graphics.colorSpaceManager | ColorSpacePrimaries | redX: number; | 新增 |
| ohos.graphics.colorSpaceManager | ColorSpace | CUSTOM = 5 | 新增 |
| ohos.graphics.colorSpaceManager | ColorSpace | SRGB = 4 | 新增 |
| ohos.graphics.colorSpaceManager | ColorSpace | DISPLAY_P3 = 3 | 新增 |
| ohos.graphics.colorSpaceManager | ColorSpace | DCI_P3 = 2 | 新增 |
| ohos.graphics.colorSpaceManager | ColorSpace | ADOBE_RGB_1998 = 1 | 新增 |
| ohos.graphics.colorSpaceManager | ColorSpace | UNKNOWN = 0 | 新增 |
\ No newline at end of file
# 杂散软件服务子系统JS API变更
OpenHarmony 3.2 Beta3版本相较于OpenHarmony 3.2 Beta2版本,杂散软件服务子系统的API变更如下:
## 接口变更
| 模块名 | 方法/事件名 | 方法/属性/枚举/常量 | 变更类型 |
|---|---|---|---|
| ohos.inputmethod | InputMethodController | hideSoftKeyboard(callback: AsyncCallback\<void>): void;<br>hideSoftKeyboard():Promise\<void>; | 新增 |
| ohos.inputmethod | InputMethodController | showSoftKeyboard(callback: AsyncCallback\<void>): void;<br>showSoftKeyboard():Promise\<void>; | 新增 |
| ohos.inputmethod | inputMethod | getCurrentInputMethod(): InputMethodProperty; | 新增 |
| ohos.inputmethodengine | TextInputClient | moveCursor(direction: number, callback: AsyncCallback\<void>): void;<br>moveCursor(direction: number): Promise\<void>; | 新增 |
| ohos.inputmethodengine | InputMethodEngine | off(type: 'setCallingWindow', callback: (wid:number) => void): void; | 新增 |
| ohos.inputmethodengine | InputMethodEngine | on(type: 'setCallingWindow', callback: (wid:number) => void): void; | 新增 |
| ohos.inputmethodengine | InputMethodEngine | off(type: 'inputStop', callback: () => void): void; | 新增 |
| ohos.inputmethodengine | InputMethodEngine | on(type: 'inputStop', callback: () => void): void; | 新增 |
| ohos.inputmethodengine | inputMethodEngine | const WINDOW_TYPE_INPUT_METHOD_FLOAT: number; | 新增 |
| ohos.inputmethodengine | inputMethodEngine | const CURSOR_RIGHT: number; | 新增 |
| ohos.inputmethodengine | inputMethodEngine | const CURSOR_LEFT: number; | 新增 |
| ohos.inputmethodengine | inputMethodEngine | const CURSOR_DOWN: number; | 新增 |
| ohos.inputmethodengine | inputMethodEngine | const CURSOR_UP: number; | 新增 |
| ohos.inputmethodextensionability | InputMethodExtensionAbility | onDestroy(): void; | 新增 |
| ohos.inputmethodextensionability | InputMethodExtensionAbility | onCreate(want: Want): void; | 新增 |
| ohos.inputmethodextensionability | InputMethodExtensionAbility | context: InputMethodExtensionContext; | 新增 |
| ohos.inputmethodextensioncontext | InputMethodExtensionContext | terminateSelf(callback: AsyncCallback\<void>): void;<br>terminateSelf(): Promise\<void>; | 新增 |
| ohos.inputmethodextensioncontext | InputMethodExtensionContext | startAbility(want: Want, callback: AsyncCallback\<void>): void;<br>startAbility(want: Want, options: StartOptions, callback: AsyncCallback\<void>): void;<br>startAbility(want: Want, options?: StartOptions): Promise\<void>; | 新增 |
| ohos.pasteboard | PasteData | setProperty(property: PasteDataProperty): void; | 新增 |
| ohos.pasteboard | PasteData | getPrimaryPixelMap(): image.PixelMap; | 新增 |
| ohos.pasteboard | PasteData | addPixelMapRecord(pixelMap: image.PixelMap): void; | 新增 |
| ohos.pasteboard | PasteDataRecord | data: { [mimeType: string]: ArrayBuffer } | 新增 |
| ohos.pasteboard | PasteDataRecord | pixelMap: image.PixelMap; | 新增 |
| ohos.pasteboard | PasteDataProperty | shareOption: ShareOption; | 新增 |
| ohos.pasteboard | ShareOption | CrossDevice | 新增 |
| ohos.pasteboard | ShareOption | LocalDevice | 新增 |
| ohos.pasteboard | ShareOption | InApp | 新增 |
| ohos.pasteboard | pasteboard | createRecord(mimeType: string, value: ArrayBuffer):PasteDataRecord; | 新增 |
| ohos.pasteboard | pasteboard | createPixelMapRecord(pixelMap: image.PixelMap):PasteDataRecord; | 新增 |
| ohos.pasteboard | pasteboard | createData(mimeType: string, value: ArrayBuffer): PasteData; | 新增 |
| ohos.pasteboard | pasteboard | createPixelMapData(pixelMap: image.PixelMap): PasteData; | 新增 |
| ohos.pasteboard | pasteboard | const MIMETYPE_PIXELMAP: string; | 新增 |
| ohos.request | UploadTask | off(type:'complete' \| 'fail', callback?: Callback\<Array\<TaskState>>): void; | 新增 |
| ohos.request | UploadTask | off(type:'complete' \| 'fail', callback?: Callback\<Array\<TaskState>>): void; | 新增 |
| ohos.request | UploadTask | on(type:'complete' \| 'fail', callback: Callback\<Array\<TaskState>>): void; | 新增 |
| ohos.request | UploadTask | on(type:'complete' \| 'fail', callback: Callback\<Array\<TaskState>>): void; | 新增 |
| ohos.request | TaskState | message: string; | 新增 |
| ohos.request | TaskState | responseCode: number; | 新增 |
| ohos.request | TaskState | path: string; | 新增 |
| ohos.request | DownloadConfig | background?: boolean; | 新增 |
| ohos.screenLock | screenLock | onSystemEvent(callback: Callback\<SystemEvent>): boolean; | 新增 |
| ohos.screenLock | SystemEvent | params: string | 新增 |
| ohos.screenLock | SystemEvent | eventType: EventType, | 新增 |
| ohos.screenLock | screenLock | lockScreen(callback: AsyncCallback\<boolean>): void;<br>lockScreen():Promise\<boolean>; | 新增 |
| ohos.screenLock | screenLock | off(type: 'beginWakeUp' \| 'endWakeUp' \| 'beginScreenOn' \| 'endScreenOn' \| 'beginScreenOff' \| 'endScreenOff' \| 'unlockScreen' \| 'beginExitAnimation' \| 'screenlockEnabled' \| 'beginSleep' \| 'endSleep' \| 'changeUser', callback: Callback\<void>): void; | 删除 |
| ohos.screenLock | screenLock | off(type: 'beginWakeUp' \| 'endWakeUp' \| 'beginScreenOn' \| 'endScreenOn' \| 'beginScreenOff' \| 'endScreenOff' \| 'unlockScreen' \| 'beginExitAnimation' \| 'screenlockEnabled' \| 'beginSleep' \| 'endSleep' \| 'changeUser', callback: Callback\<void>): void; | 删除 |
| ohos.screenLock | screenLock | off(type: 'beginWakeUp' \| 'endWakeUp' \| 'beginScreenOn' \| 'endScreenOn' \| 'beginScreenOff' \| 'endScreenOff' \| 'unlockScreen' \| 'beginExitAnimation' \| 'screenlockEnabled' \| 'beginSleep' \| 'endSleep' \| 'changeUser', callback: Callback\<void>): void; | 删除 |
| ohos.screenLock | screenLock | off(type: 'beginWakeUp' \| 'endWakeUp' \| 'beginScreenOn' \| 'endScreenOn' \| 'beginScreenOff' \| 'endScreenOff' \| 'unlockScreen' \| 'beginExitAnimation' \| 'screenlockEnabled' \| 'beginSleep' \| 'endSleep' \| 'changeUser', callback: Callback\<void>): void; | 删除 |
| ohos.screenLock | screenLock | off(type: 'beginWakeUp' \| 'endWakeUp' \| 'beginScreenOn' \| 'endScreenOn' \| 'beginScreenOff' \| 'endScreenOff' \| 'unlockScreen' \| 'beginExitAnimation' \| 'screenlockEnabled' \| 'beginSleep' \| 'endSleep' \| 'changeUser', callback: Callback\<void>): void; | 删除 |
| ohos.screenLock | screenLock | off(type: 'beginWakeUp' \| 'endWakeUp' \| 'beginScreenOn' \| 'endScreenOn' \| 'beginScreenOff' \| 'endScreenOff' \| 'unlockScreen' \| 'beginExitAnimation' \| 'screenlockEnabled' \| 'beginSleep' \| 'endSleep' \| 'changeUser', callback: Callback\<void>): void; | 删除 |
| ohos.screenLock | screenLock | off(type: 'beginWakeUp' \| 'endWakeUp' \| 'beginScreenOn' \| 'endScreenOn' \| 'beginScreenOff' \| 'endScreenOff' \| 'unlockScreen' \| 'beginExitAnimation' \| 'screenlockEnabled' \| 'beginSleep' \| 'endSleep' \| 'changeUser', callback: Callback\<void>): void; | 删除 |
| ohos.screenLock | screenLock | off(type: 'beginWakeUp' \| 'endWakeUp' \| 'beginScreenOn' \| 'endScreenOn' \| 'beginScreenOff' \| 'endScreenOff' \| 'unlockScreen' \| 'beginExitAnimation' \| 'screenlockEnabled' \| 'beginSleep' \| 'endSleep' \| 'changeUser', callback: Callback\<void>): void; | 删除 |
| ohos.screenLock | screenLock | off(type: 'beginWakeUp' \| 'endWakeUp' \| 'beginScreenOn' \| 'endScreenOn' \| 'beginScreenOff' \| 'endScreenOff' \| 'unlockScreen' \| 'beginExitAnimation' \| 'screenlockEnabled' \| 'beginSleep' \| 'endSleep' \| 'changeUser', callback: Callback\<void>): void; | 删除 |
| ohos.screenLock | screenLock | off(type: 'beginWakeUp' \| 'endWakeUp' \| 'beginScreenOn' \| 'endScreenOn' \| 'beginScreenOff' \| 'endScreenOff' \| 'unlockScreen' \| 'beginExitAnimation' \| 'screenlockEnabled' \| 'beginSleep' \| 'endSleep' \| 'changeUser', callback: Callback\<void>): void; | 删除 |
| ohos.screenLock | screenLock | off(type: 'beginWakeUp' \| 'endWakeUp' \| 'beginScreenOn' \| 'endScreenOn' \| 'beginScreenOff' \| 'endScreenOff' \| 'unlockScreen' \| 'beginExitAnimation' \| 'screenlockEnabled' \| 'beginSleep' \| 'endSleep' \| 'changeUser', callback: Callback\<void>): void; | 删除 |
| ohos.screenLock | screenLock | off(type: 'beginWakeUp' \| 'endWakeUp' \| 'beginScreenOn' \| 'endScreenOn' \| 'beginScreenOff' \| 'endScreenOff' \| 'unlockScreen' \| 'beginExitAnimation' \| 'screenlockEnabled' \| 'beginSleep' \| 'endSleep' \| 'changeUser', callback: Callback\<void>): void; | 删除 |
| ohos.screenLock | screenLock | on(type: 'screenlockEnabled', callback: Callback\<boolean>): void; | 删除 |
| ohos.screenLock | screenLock | on(type: 'beginSleep' \| 'endSleep' \| 'changeUser', callback: Callback\<number>): void; | 删除 |
| ohos.screenLock | screenLock | on(type: 'beginSleep' \| 'endSleep' \| 'changeUser', callback: Callback\<number>): void; | 删除 |
| ohos.screenLock | screenLock | on(type: 'beginSleep' \| 'endSleep' \| 'changeUser', callback: Callback\<number>): void; | 删除 |
| ohos.screenLock | screenLock | on(type: 'beginWakeUp' \| 'endWakeUp' \| 'beginScreenOn' \| 'endScreenOn' \| 'beginScreenOff' \| 'endScreenOff' \| 'unlockScreen' \| 'beginExitAnimation', callback: Callback\<void>): void; | 删除 |
| ohos.screenLock | screenLock | on(type: 'beginWakeUp' \| 'endWakeUp' \| 'beginScreenOn' \| 'endScreenOn' \| 'beginScreenOff' \| 'endScreenOff' \| 'unlockScreen' \| 'beginExitAnimation', callback: Callback\<void>): void; | 删除 |
| ohos.screenLock | screenLock | on(type: 'beginWakeUp' \| 'endWakeUp' \| 'beginScreenOn' \| 'endScreenOn' \| 'beginScreenOff' \| 'endScreenOff' \| 'unlockScreen' \| 'beginExitAnimation', callback: Callback\<void>): void; | 删除 |
| ohos.screenLock | screenLock | on(type: 'beginWakeUp' \| 'endWakeUp' \| 'beginScreenOn' \| 'endScreenOn' \| 'beginScreenOff' \| 'endScreenOff' \| 'unlockScreen' \| 'beginExitAnimation', callback: Callback\<void>): void; | 删除 |
| ohos.screenLock | screenLock | on(type: 'beginWakeUp' \| 'endWakeUp' \| 'beginScreenOn' \| 'endScreenOn' \| 'beginScreenOff' \| 'endScreenOff' \| 'unlockScreen' \| 'beginExitAnimation', callback: Callback\<void>): void; | 删除 |
| ohos.screenLock | screenLock | on(type: 'beginWakeUp' \| 'endWakeUp' \| 'beginScreenOn' \| 'endScreenOn' \| 'beginScreenOff' \| 'endScreenOff' \| 'unlockScreen' \| 'beginExitAnimation', callback: Callback\<void>): void; | 删除 |
| ohos.screenLock | screenLock | on(type: 'beginWakeUp' \| 'endWakeUp' \| 'beginScreenOn' \| 'endScreenOn' \| 'beginScreenOff' \| 'endScreenOff' \| 'unlockScreen' \| 'beginExitAnimation', callback: Callback\<void>): void; | 删除 |
| ohos.screenLock | screenLock | on(type: 'beginWakeUp' \| 'endWakeUp' \| 'beginScreenOn' \| 'endScreenOn' \| 'beginScreenOff' \| 'endScreenOff' \| 'unlockScreen' \| 'beginExitAnimation', callback: Callback\<void>): void; | 删除 |
# 多模输入子系统JS API变更
OpenHarmony 3.2 Beta3版本相较于OpenHarmony 3.2 Beta2版本,多模输入子系统的API变更如下:
## 接口变更
| 模块名 | 类名 | 方法/属性/枚举/常量 | 变更类型 |
|---|---|---|---|
| ohos.multimodalInput.inputDeviceCooperate | inputDeviceCooperate | off(type: 'cooperation', callback?: AsyncCallback\<void>): void; | 新增 |
| ohos.multimodalInput.inputDeviceCooperate | inputDeviceCooperate | on(type: 'cooperation', callback: AsyncCallback\<{ deviceDescriptor: string, eventMsg: EventMsg }>): void; | 新增 |
| ohos.multimodalInput.inputDeviceCooperate | inputDeviceCooperate | getState(deviceDescriptor: string, callback: AsyncCallback\<{ state: boolean }>): void;<br>getState(deviceDescriptor: string): Promise\<{ state: boolean }>; | 新增 |
| ohos.multimodalInput.inputDeviceCooperate | inputDeviceCooperate | stop(callback: AsyncCallback\<void>): void;<br>stop(): Promise\<void>; | 新增 |
| ohos.multimodalInput.inputDeviceCooperate | inputDeviceCooperate | start(sinkDeviceDescriptor: string, srcInputDeviceId: number, callback: AsyncCallback\<void>): void;<br>start(sinkDeviceDescriptor: string, srcInputDeviceId: number): Promise\<void>; | 新增 |
| ohos.multimodalInput.inputDeviceCooperate | inputDeviceCooperate | enable(enable: boolean, callback: AsyncCallback\<void>): void;<br>enable(enable: boolean): Promise\<void>; | 新增 |
| ohos.multimodalInput.inputDeviceCooperate | EventMsg | MSG_COOPERATE_STATE_OFF = 501 | 新增 |
| ohos.multimodalInput.inputDeviceCooperate | EventMsg | MSG_COOPERATE_STATE_ON = 500 | 新增 |
| ohos.multimodalInput.inputDeviceCooperate | EventMsg | MSG_COOPERATE_INFO_FAIL = 202 | 新增 |
| ohos.multimodalInput.inputDeviceCooperate | EventMsg | MSG_COOPERATE_INFO_SUCCESS = 201 | 新增 |
| ohos.multimodalInput.inputDeviceCooperate | EventMsg | MSG_COOPERATE_INFO_START = 200 | 新增 |
| ohos.multimodalInput.pointer | pointer | isPointerVisible(callback: AsyncCallback\<boolean>): void;<br>isPointerVisible(): Promise\<boolean>; | 新增 |
| ohos.multimodalInput.pointer | pointer | setPointerVisible(visible: boolean, callback: AsyncCallback\<void>): void;<br>setPointerVisible(visible: boolean): Promise\<void>; | 新增 |
| ohos.multimodalInput.pointer | pointer | getPointerStyle(windowId: number, callback: AsyncCallback\<PointerStyle>): void;<br>getPointerStyle(windowId: number): Promise\<PointerStyle>; | 新增 |
| ohos.multimodalInput.pointer | pointer | setPointerStyle(windowId: number, pointerStyle: PointerStyle, callback: AsyncCallback\<void>): void;<br>setPointerStyle(windowId: number, pointerStyle: PointerStyle): Promise\<void>; | 新增 |
| ohos.multimodalInput.pointer | pointer | getPointerSpeed(callback: AsyncCallback\<number>): void;<br>getPointerSpeed(): Promise\<number>; | 新增 |
| ohos.multimodalInput.pointer | pointer | setPointerSpeed(speed: number, callback: AsyncCallback\<void>): void;<br>setPointerSpeed(speed: number): Promise\<void>; | 新增 |
| ohos.multimodalInput.pointer | PointerStyle | MIDDLE_BTN_NORTH_SOUTH_WEST_EAST | 新增 |
| ohos.multimodalInput.pointer | PointerStyle | MIDDLE_BTN_SOUTH_WEST | 新增 |
| ohos.multimodalInput.pointer | PointerStyle | MIDDLE_BTN_SOUTH_EAST | 新增 |
| ohos.multimodalInput.pointer | PointerStyle | MIDDLE_BTN_NORTH_WEST | 新增 |
| ohos.multimodalInput.pointer | PointerStyle | MIDDLE_BTN_NORTH_EAST | 新增 |
| ohos.multimodalInput.pointer | PointerStyle | MIDDLE_BTN_NORTH_SOUTH | 新增 |
| ohos.multimodalInput.pointer | PointerStyle | MIDDLE_BTN_NORTH | 新增 |
| ohos.multimodalInput.pointer | PointerStyle | MIDDLE_BTN_SOUTH | 新增 |
| ohos.multimodalInput.pointer | PointerStyle | MIDDLE_BTN_WEST | 新增 |
| ohos.multimodalInput.pointer | PointerStyle | MIDDLE_BTN_EAST | 新增 |
| ohos.multimodalInput.pointer | PointerStyle | ZOOM_OUT | 新增 |
| ohos.multimodalInput.pointer | PointerStyle | ZOOM_IN | 新增 |
| ohos.multimodalInput.pointer | PointerStyle | TEXT_CURSOR | 新增 |
| ohos.multimodalInput.pointer | PointerStyle | SCREENSHOT_CURSOR | 新增 |
| ohos.multimodalInput.pointer | PointerStyle | SCREENSHOT_CHOOSE | 新增 |
| ohos.multimodalInput.pointer | PointerStyle | RESIZE_UP_DOWN | 新增 |
| ohos.multimodalInput.pointer | PointerStyle | RESIZE_LEFT_RIGHT | 新增 |
| ohos.multimodalInput.pointer | PointerStyle | MOVE | 新增 |
| ohos.multimodalInput.pointer | PointerStyle | HELP | 新增 |
| ohos.multimodalInput.pointer | PointerStyle | HAND_POINTING | 新增 |
| ohos.multimodalInput.pointer | PointerStyle | HAND_OPEN | 新增 |
| ohos.multimodalInput.pointer | PointerStyle | HAND_GRABBING | 新增 |
| ohos.multimodalInput.pointer | PointerStyle | COLOR_SUCKER | 新增 |
| ohos.multimodalInput.pointer | PointerStyle | CURSOR_FORBID | 新增 |
| ohos.multimodalInput.pointer | PointerStyle | CURSOR_COPY | 新增 |
| ohos.multimodalInput.pointer | PointerStyle | CROSS | 新增 |
| ohos.multimodalInput.pointer | PointerStyle | NORTH_WEST_SOUTH_EAST | 新增 |
| ohos.multimodalInput.pointer | PointerStyle | NORTH_EAST_SOUTH_WEST | 新增 |
| ohos.multimodalInput.pointer | PointerStyle | SOUTH_WEST | 新增 |
| ohos.multimodalInput.pointer | PointerStyle | SOUTH_EAST | 新增 |
| ohos.multimodalInput.pointer | PointerStyle | NORTH_WEST | 新增 |
| ohos.multimodalInput.pointer | PointerStyle | NORTH_EAST | 新增 |
| ohos.multimodalInput.pointer | PointerStyle | NORTH_SOUTH | 新增 |
| ohos.multimodalInput.pointer | PointerStyle | WEST_EAST | 新增 |
| ohos.multimodalInput.pointer | PointerStyle | NORTH | 新增 |
| ohos.multimodalInput.pointer | PointerStyle | SOUTH | 新增 |
| ohos.multimodalInput.pointer | PointerStyle | WEST | 新增 |
| ohos.multimodalInput.pointer | PointerStyle | EAST | 新增 |
| ohos.multimodalInput.pointer | PointerStyle | DEFAULT | 新增 |
# 媒体子系统JS API变更
OpenHarmony 3.2 Beta3版本相较于OpenHarmony 3.2 Beta2版本,媒体子系统的API变更如下:
## 接口变更
| 模块名 | 类名 | 方法/属性/枚举/常量 | 变更类型 |
|---|---|---|---|
| ohos.multimedia.audio | VolumeEvent | networkId: string; | 新增 |
| ohos.multimedia.audio | VolumeEvent | volumeGroupId: number; | 新增 |
| ohos.multimedia.audio | AudioDeviceDescriptor | readonly volumeGroupId: number; | 新增 |
| ohos.multimedia.audio | AudioDeviceDescriptor | readonly interruptGroupId: number; | 新增 |
| ohos.multimedia.audio | AudioDeviceDescriptor | readonly networkId: string; | 新增 |
| ohos.multimedia.audio | VolumeGroupInfo | readonly type: ConnectType; | 新增 |
| ohos.multimedia.audio | VolumeGroupInfo | readonly groupName: string; | 新增 |
| ohos.multimedia.audio | VolumeGroupInfo | readonly mappingId: number; | 新增 |
| ohos.multimedia.audio | VolumeGroupInfo | readonly groupId: number; | 新增 |
| ohos.multimedia.audio | VolumeGroupInfo | readonly networkId: string; | 新增 |
| ohos.multimedia.audio | ConnectType | CONNECT_TYPE_DISTRIBUTED = 2 | 新增 |
| ohos.multimedia.audio | ConnectType | CONNECT_TYPE_LOCAL = 1 | 新增 |
| ohos.multimedia.audio | AudioGroupManager | isMute(volumeType: AudioVolumeType, callback: AsyncCallback\<boolean>): void;<br>isMute(volumeType: AudioVolumeType): Promise\<boolean>; | 新增 |
| ohos.multimedia.audio | AudioGroupManager | mute(volumeType: AudioVolumeType, mute: boolean, callback: AsyncCallback\<void>): void;<br>mute(volumeType: AudioVolumeType, mute: boolean): Promise\<void>; | 新增 |
| ohos.multimedia.audio | AudioGroupManager | getMaxVolume(volumeType: AudioVolumeType, callback: AsyncCallback\<number>): void;<br>getMaxVolume(volumeType: AudioVolumeType): Promise\<number>; | 新增 |
| ohos.multimedia.audio | AudioGroupManager | getMinVolume(volumeType: AudioVolumeType, callback: AsyncCallback\<number>): void;<br>getMinVolume(volumeType: AudioVolumeType): Promise\<number>; | 新增 |
| ohos.multimedia.audio | AudioGroupManager | getVolume(volumeType: AudioVolumeType, callback: AsyncCallback\<number>): void;<br>getVolume(volumeType: AudioVolumeType): Promise\<number>; | 新增 |
| ohos.multimedia.audio | AudioGroupManager | setVolume(volumeType: AudioVolumeType, volume: number, callback: AsyncCallback\<void>): void;<br>setVolume(volumeType: AudioVolumeType, volume: number): Promise\<void>; | 新增 |
| ohos.multimedia.audio | AudioRoutingManager | selectOutputDeviceByFilter(filter: AudioRendererFilter, outputAudioDevices: AudioDeviceDescriptors, callback: AsyncCallback\<void>): void;<br>selectOutputDeviceByFilter(filter: AudioRendererFilter, outputAudioDevices: AudioDeviceDescriptors): Promise\<void>; | 新增 |
| ohos.multimedia.audio | AudioRoutingManager | selectOutputDevice(outputAudioDevices: AudioDeviceDescriptors, callback: AsyncCallback\<void>): void;<br>selectOutputDevice(outputAudioDevices: AudioDeviceDescriptors): Promise\<void>; | 新增 |
| ohos.multimedia.audio | AudioRoutingManager | off(type: 'deviceChange', callback?: Callback\<DeviceChangeAction>): void; | 新增 |
| ohos.multimedia.audio | AudioRoutingManager | on(type: 'deviceChange', deviceFlag: DeviceFlag, callback: Callback\<DeviceChangeAction>): void; | 新增 |
| ohos.multimedia.audio | AudioRoutingManager | getDevices(deviceFlag: DeviceFlag, callback: AsyncCallback\<AudioDeviceDescriptors>): void;<br>getDevices(deviceFlag: DeviceFlag): Promise\<AudioDeviceDescriptors>; | 新增 |
| ohos.multimedia.audio | AudioManager | getRoutingManager(callback: AsyncCallback\<AudioRoutingManager>): void;<br>getRoutingManager(): Promise\<AudioRoutingManager>; | 新增 |
| ohos.multimedia.audio | AudioManager | getGroupManager(groupId: number, callback: AsyncCallback\<AudioGroupManager>): void;<br>getGroupManager(groupId: number): Promise\<AudioGroupManager>; | 新增 |
| ohos.multimedia.audio | AudioManager | getVolumeGroups(networkId: string, callback: AsyncCallback\<VolumeGroupInfos>): void;<br>getVolumeGroups(networkId: string): Promise\<VolumeGroupInfos>; | 新增 |
| ohos.multimedia.audio | AudioRendererFilter | rendererId?: number; | 新增 |
| ohos.multimedia.audio | AudioRendererFilter | rendererInfo?: AudioRendererInfo; | 新增 |
| ohos.multimedia.audio | AudioRendererFilter | uid: number; | 新增 |
| ohos.multimedia.audio | DeviceType | DEFAULT = 1000 | 新增 |
| ohos.multimedia.audio | DeviceFlag | ALL_DISTRIBUTED_DEVICES_FLAG = 12 | 新增 |
| ohos.multimedia.audio | DeviceFlag | DISTRIBUTED_INPUT_DEVICES_FLAG = 8 | 新增 |
| ohos.multimedia.audio | DeviceFlag | DISTRIBUTED_OUTPUT_DEVICES_FLAG = 4 | 新增 |
| ohos.multimedia.audio | DeviceFlag | NONE_DEVICES_FLAG = 0 | 新增 |
| ohos.multimedia.audio | audio | const LOCAL_NETWORK_ID: string; | 新增 |
| ohos.multimedia.image | PixelMapFormat | BGRA_8888 = 4 | 新增 |
| ohos.multimedia.media | VideoPlayer | on(type: 'availableBitratesCollect', callback: (bitrates: Array\<number>) => void): void; | 新增 |
| ohos.multimedia.media | VideoPlayer | on(type: 'availableBitratesCollected', callback: (bitrates: Array\<number>) => void): void | 删除 |
| ohos.multimedia.mediaLibrary | DeviceType | TYPE_TV | 废弃 |
| ohos.multimedia.mediaLibrary | DeviceType | TYPE_CAR | 废弃 |
| ohos.multimedia.mediaLibrary | DeviceType | TYPE_WATCH | 废弃 |
| ohos.multimedia.mediaLibrary | DeviceType | TYPE_TABLET | 废弃 |
| ohos.multimedia.mediaLibrary | DeviceType | TYPE_PHONE | 废弃 |
| ohos.multimedia.mediaLibrary | DeviceType | TYPE_LAPTOP | 废弃 |
| ohos.multimedia.mediaLibrary | DeviceType | TYPE_UNKNOWN = 0 | 废弃 |
| ohos.multimedia.mediaLibrary | PeerInfo | readonly isOnline: boolean; | 废弃 |
| ohos.multimedia.mediaLibrary | PeerInfo | readonly deviceType: DeviceType; | 废弃 |
| ohos.multimedia.mediaLibrary | PeerInfo | readonly networkId: string; | 废弃 |
| ohos.multimedia.mediaLibrary | PeerInfo | readonly deviceName: string; | 废弃 |
| ohos.multimedia.mediaLibrary | Size | height: number; | 废弃 |
| ohos.multimedia.mediaLibrary | Size | width: number; | 废弃 |
| ohos.multimedia.mediaLibrary | MediaLibrary | release(callback: AsyncCallback\<void>): void;<br>release(): Promise\<void>; | 废弃 |
| ohos.multimedia.mediaLibrary | MediaLibrary | getAllPeers(callback: AsyncCallback\<Array\<PeerInfo>>): void;<br>getAllPeers(): Promise\<Array\<PeerInfo>>; | 废弃 |
| ohos.multimedia.mediaLibrary | MediaLibrary | getActivePeers(callback: AsyncCallback\<Array\<PeerInfo>>): void;<br>getActivePeers(): Promise\<Array\<PeerInfo>>; | 废弃 |
| ohos.multimedia.mediaLibrary | MediaLibrary | getAlbums(options: MediaFetchOptions, callback: AsyncCallback\<Array\<Album>>): void;<br>getAlbums(options: MediaFetchOptions): Promise\<Array\<Album>>; | 废弃 |
| ohos.multimedia.mediaLibrary | MediaLibrary | deleteAsset(uri: string, callback: AsyncCallback\<void>): void;<br>deleteAsset(uri: string): Promise\<void>; | 废弃 |
| 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>; | 废弃 |
| ohos.multimedia.mediaLibrary | MediaLibrary | off(type: 'deviceChange'\|'albumChange'\|'imageChange'\|'audioChange'\|'videoChange'\|'fileChange'\|'remoteFileChange', callback?: Callback\<void>): void; | 废弃 |
| ohos.multimedia.mediaLibrary | MediaLibrary | off(type: 'deviceChange'\|'albumChange'\|'imageChange'\|'audioChange'\|'videoChange'\|'fileChange'\|'remoteFileChange', callback?: Callback\<void>): void; | 废弃 |
| ohos.multimedia.mediaLibrary | MediaLibrary | off(type: 'deviceChange'\|'albumChange'\|'imageChange'\|'audioChange'\|'videoChange'\|'fileChange'\|'remoteFileChange', callback?: Callback\<void>): void; | 废弃 |
| ohos.multimedia.mediaLibrary | MediaLibrary | off(type: 'deviceChange'\|'albumChange'\|'imageChange'\|'audioChange'\|'videoChange'\|'fileChange'\|'remoteFileChange', callback?: Callback\<void>): void; | 废弃 |
| ohos.multimedia.mediaLibrary | MediaLibrary | off(type: 'deviceChange'\|'albumChange'\|'imageChange'\|'audioChange'\|'videoChange'\|'fileChange'\|'remoteFileChange', callback?: Callback\<void>): void; | 废弃 |
| ohos.multimedia.mediaLibrary | MediaLibrary | off(type: 'deviceChange'\|'albumChange'\|'imageChange'\|'audioChange'\|'videoChange'\|'fileChange'\|'remoteFileChange', callback?: Callback\<void>): void; | 废弃 |
| ohos.multimedia.mediaLibrary | MediaLibrary | off(type: 'deviceChange'\|'albumChange'\|'imageChange'\|'audioChange'\|'videoChange'\|'fileChange'\|'remoteFileChange', callback?: Callback\<void>): void; | 废弃 |
| ohos.multimedia.mediaLibrary | MediaLibrary | on(type: 'deviceChange'\|'albumChange'\|'imageChange'\|'audioChange'\|'videoChange'\|'fileChange'\|'remoteFileChange', callback: Callback\<void>): void; | 废弃 |
| ohos.multimedia.mediaLibrary | MediaLibrary | on(type: 'deviceChange'\|'albumChange'\|'imageChange'\|'audioChange'\|'videoChange'\|'fileChange'\|'remoteFileChange', callback: Callback\<void>): void; | 废弃 |
| ohos.multimedia.mediaLibrary | MediaLibrary | on(type: 'deviceChange'\|'albumChange'\|'imageChange'\|'audioChange'\|'videoChange'\|'fileChange'\|'remoteFileChange', callback: Callback\<void>): void; | 废弃 |
| ohos.multimedia.mediaLibrary | MediaLibrary | on(type: 'deviceChange'\|'albumChange'\|'imageChange'\|'audioChange'\|'videoChange'\|'fileChange'\|'remoteFileChange', callback: Callback\<void>): void; | 废弃 |
| ohos.multimedia.mediaLibrary | MediaLibrary | on(type: 'deviceChange'\|'albumChange'\|'imageChange'\|'audioChange'\|'videoChange'\|'fileChange'\|'remoteFileChange', callback: Callback\<void>): void; | 废弃 |
| ohos.multimedia.mediaLibrary | MediaLibrary | on(type: 'deviceChange'\|'albumChange'\|'imageChange'\|'audioChange'\|'videoChange'\|'fileChange'\|'remoteFileChange', callback: Callback\<void>): void; | 废弃 |
| ohos.multimedia.mediaLibrary | MediaLibrary | on(type: 'deviceChange'\|'albumChange'\|'imageChange'\|'audioChange'\|'videoChange'\|'fileChange'\|'remoteFileChange', callback: Callback\<void>): void; | 废弃 |
| ohos.multimedia.mediaLibrary | MediaLibrary | getFileAssets(options: MediaFetchOptions, callback: AsyncCallback\<FetchFileResult>): void;<br>getFileAssets(options: MediaFetchOptions): Promise\<FetchFileResult>; | 废弃 |
| ohos.multimedia.mediaLibrary | MediaLibrary | getPublicDirectory(type: DirectoryType, callback: AsyncCallback\<string>): void;<br>getPublicDirectory(type: DirectoryType): Promise\<string>; | 废弃 |
| ohos.multimedia.mediaLibrary | DirectoryType | DIR_DOWNLOAD | 废弃 |
| ohos.multimedia.mediaLibrary | DirectoryType | DIR_DOCUMENTS | 废弃 |
| ohos.multimedia.mediaLibrary | DirectoryType | DIR_AUDIO | 废弃 |
| ohos.multimedia.mediaLibrary | DirectoryType | DIR_IMAGE | 废弃 |
| ohos.multimedia.mediaLibrary | DirectoryType | DIR_VIDEO | 废弃 |
| ohos.multimedia.mediaLibrary | DirectoryType | DIR_CAMERA = 0 | 废弃 |
| ohos.multimedia.mediaLibrary | Album | getFileAssets(callback: AsyncCallback\<FetchFileResult>): void;<br>getFileAssets(options: MediaFetchOptions, callback: AsyncCallback\<FetchFileResult>): void;<br>getFileAssets(options?: MediaFetchOptions): Promise\<FetchFileResult>; | 废弃 |
| ohos.multimedia.mediaLibrary | Album | commitModify(callback: AsyncCallback\<void>): void;<br>commitModify(): Promise\<void>; | 废弃 |
| ohos.multimedia.mediaLibrary | Album | readonly coverUri: string; | 废弃 |
| ohos.multimedia.mediaLibrary | Album | readonly relativePath: string; | 废弃 |
| ohos.multimedia.mediaLibrary | Album | readonly count: number; | 废弃 |
| ohos.multimedia.mediaLibrary | Album | readonly dateModified: number; | 废弃 |
| ohos.multimedia.mediaLibrary | Album | readonly albumUri: string; | 废弃 |
| ohos.multimedia.mediaLibrary | Album | albumName: string; | 废弃 |
| ohos.multimedia.mediaLibrary | Album | readonly albumId: number; | 废弃 |
| ohos.multimedia.mediaLibrary | FetchFileResult | getAllObject(callback: AsyncCallback\<Array\<FileAsset>>): void;<br>getAllObject(): Promise\<Array\<FileAsset>>; | 废弃 |
| ohos.multimedia.mediaLibrary | FetchFileResult | getPositionObject(index: number, callback: AsyncCallback\<FileAsset>): void;<br>getPositionObject(index: number): Promise\<FileAsset>; | 废弃 |
| ohos.multimedia.mediaLibrary | FetchFileResult | getLastObject(callback: AsyncCallback\<FileAsset>): void;<br>getLastObject(): Promise\<FileAsset>; | 废弃 |
| ohos.multimedia.mediaLibrary | FetchFileResult | getNextObject(callback: AsyncCallback\<FileAsset>): void;<br>getNextObject(): Promise\<FileAsset>; | 废弃 |
| ohos.multimedia.mediaLibrary | FetchFileResult | getFirstObject(callback: AsyncCallback\<FileAsset>): void;<br>getFirstObject(): Promise\<FileAsset>; | 废弃 |
| ohos.multimedia.mediaLibrary | FetchFileResult | close(): void; | 废弃 |
| ohos.multimedia.mediaLibrary | FetchFileResult | isAfterLast(): boolean; | 废弃 |
| ohos.multimedia.mediaLibrary | FetchFileResult | getCount(): number; | 废弃 |
| ohos.multimedia.mediaLibrary | MediaFetchOptions | extendArgs?: string; | 废弃 |
| ohos.multimedia.mediaLibrary | MediaFetchOptions | networkId?: string; | 废弃 |
| ohos.multimedia.mediaLibrary | MediaFetchOptions | uri?: string; | 废弃 |
| ohos.multimedia.mediaLibrary | MediaFetchOptions | order?: string; | 废弃 |
| ohos.multimedia.mediaLibrary | MediaFetchOptions | selectionArgs: Array\<string>; | 废弃 |
| ohos.multimedia.mediaLibrary | MediaFetchOptions | selections: string; | 废弃 |
| ohos.multimedia.mediaLibrary | FileKey | ALBUM_NAME = "bucket_display_name" | 废弃 |
| ohos.multimedia.mediaLibrary | FileKey | ALBUM_ID = "bucket_id" | 废弃 |
| ohos.multimedia.mediaLibrary | FileKey | ORIENTATION = "orientation" | 废弃 |
| ohos.multimedia.mediaLibrary | FileKey | HEIGHT = "height" | 废弃 |
| ohos.multimedia.mediaLibrary | FileKey | WIDTH = "width" | 废弃 |
| ohos.multimedia.mediaLibrary | FileKey | DURATION = "duration" | 废弃 |
| ohos.multimedia.mediaLibrary | FileKey | AUDIOALBUM = "audio_album" | 废弃 |
| ohos.multimedia.mediaLibrary | FileKey | ARTIST = "artist" | 废弃 |
| ohos.multimedia.mediaLibrary | FileKey | TITLE = "title" | 废弃 |
| ohos.multimedia.mediaLibrary | FileKey | DATE_TAKEN = "date_taken" | 废弃 |
| ohos.multimedia.mediaLibrary | FileKey | DATE_MODIFIED = "date_modified" | 废弃 |
| ohos.multimedia.mediaLibrary | FileKey | DATE_ADDED = "date_added" | 废弃 |
| ohos.multimedia.mediaLibrary | FileKey | SIZE = "size" | 废弃 |
| ohos.multimedia.mediaLibrary | FileKey | MEDIA_TYPE = "media_type" | 废弃 |
| ohos.multimedia.mediaLibrary | FileKey | MIME_TYPE = "mime_type" | 废弃 |
| ohos.multimedia.mediaLibrary | FileKey | PARENT = "parent" | 废弃 |
| ohos.multimedia.mediaLibrary | FileKey | DISPLAY_NAME = "display_name" | 废弃 |
| ohos.multimedia.mediaLibrary | FileKey | RELATIVE_PATH = "relative_path" | 废弃 |
| ohos.multimedia.mediaLibrary | FileKey | ID = "file_id" | 废弃 |
| ohos.multimedia.mediaLibrary | FileAsset | isTrash(callback: AsyncCallback\<boolean>): void;<br>isTrash():Promise\<boolean>; | 废弃 |
| ohos.multimedia.mediaLibrary | FileAsset | trash(isTrash: boolean, callback: AsyncCallback\<void>): void;<br>trash(isTrash: boolean): Promise\<void>; | 废弃 |
| ohos.multimedia.mediaLibrary | FileAsset | isFavorite(callback: AsyncCallback\<boolean>): void;<br>isFavorite():Promise\<boolean>; | 废弃 |
| ohos.multimedia.mediaLibrary | FileAsset | favorite(isFavorite: boolean, callback: AsyncCallback\<void>): void;<br>favorite(isFavorite: boolean): Promise\<void>; | 废弃 |
| 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>; | 废弃 |
| ohos.multimedia.mediaLibrary | FileAsset | close(fd: number, callback: AsyncCallback\<void>): void;<br>close(fd: number): Promise\<void>; | 废弃 |
| ohos.multimedia.mediaLibrary | FileAsset | open(mode: string, callback: AsyncCallback\<number>): void;<br>open(mode: string): Promise\<number>; | 废弃 |
| ohos.multimedia.mediaLibrary | FileAsset | commitModify(callback: AsyncCallback\<void>): void;<br>commitModify(): Promise\<void>; | 废弃 |
| ohos.multimedia.mediaLibrary | FileAsset | isDirectory(callback: AsyncCallback\<boolean>): void;<br>isDirectory():Promise\<boolean>; | 废弃 |
| ohos.multimedia.mediaLibrary | FileAsset | readonly albumName: string; | 废弃 |
| ohos.multimedia.mediaLibrary | FileAsset | readonly albumUri: string; | 废弃 |
| ohos.multimedia.mediaLibrary | FileAsset | readonly albumId: number; | 废弃 |
| ohos.multimedia.mediaLibrary | FileAsset | readonly duration: number; | 废弃 |
| ohos.multimedia.mediaLibrary | FileAsset | orientation: number; | 废弃 |
| ohos.multimedia.mediaLibrary | FileAsset | readonly height: number; | 废弃 |
| ohos.multimedia.mediaLibrary | FileAsset | readonly width: number; | 废弃 |
| ohos.multimedia.mediaLibrary | FileAsset | readonly audioAlbum: string; | 废弃 |
| ohos.multimedia.mediaLibrary | FileAsset | readonly artist: string; | 废弃 |
| ohos.multimedia.mediaLibrary | FileAsset | readonly dateTaken: number; | 废弃 |
| ohos.multimedia.mediaLibrary | FileAsset | readonly dateModified: number; | 废弃 |
| ohos.multimedia.mediaLibrary | FileAsset | readonly dateAdded: number; | 废弃 |
| ohos.multimedia.mediaLibrary | FileAsset | readonly size: number; | 废弃 |
| ohos.multimedia.mediaLibrary | FileAsset | readonly parent: number; | 废弃 |
| ohos.multimedia.mediaLibrary | FileAsset | relativePath: string; | 废弃 |
| ohos.multimedia.mediaLibrary | FileAsset | title: string; | 废弃 |
| ohos.multimedia.mediaLibrary | FileAsset | displayName: string; | 废弃 |
| ohos.multimedia.mediaLibrary | FileAsset | readonly mediaType: MediaType; | 废弃 |
| ohos.multimedia.mediaLibrary | FileAsset | readonly mimeType: string; | 废弃 |
| ohos.multimedia.mediaLibrary | FileAsset | readonly uri: string; | 废弃 |
| ohos.multimedia.mediaLibrary | FileAsset | readonly id: number; | 废弃 |
| ohos.multimedia.mediaLibrary | MediaType | AUDIO | 废弃 |
| ohos.multimedia.mediaLibrary | MediaType | VIDEO | 废弃 |
| ohos.multimedia.mediaLibrary | MediaType | IMAGE | 废弃 |
| ohos.multimedia.mediaLibrary | MediaType | FILE = 0 | 废弃 |
| ohos.multimedia.mediaLibrary | mediaLibrary | getMediaLibrary(): MediaLibrary;<br>getMediaLibrary(context: Context): MediaLibrary; | 废弃 |
# 资源调度子系统JS API变更
OpenHarmony 3.2 Beta3版本相较于OpenHarmony 3.2 Beta2版本,资源调度子系统的API变更如下:
## 接口变更
| 模块名 | 类名 | 方法/属性/枚举/常量 | 变更类型 |
|---|---|---|---|
| ohos.backgroundTaskManager | EfficiencyResourcesRequest | reason: string; | 新增 |
| ohos.backgroundTaskManager | EfficiencyResourcesRequest | isProcess?: boolean; | 新增 |
| ohos.backgroundTaskManager | EfficiencyResourcesRequest | isPersist?: boolean; | 新增 |
| ohos.backgroundTaskManager | EfficiencyResourcesRequest | timeOut: number; | 新增 |
| ohos.backgroundTaskManager | EfficiencyResourcesRequest | isApply: boolean; | 新增 |
| ohos.backgroundTaskManager | EfficiencyResourcesRequest | resourceTypes: number; | 新增 |
| ohos.backgroundTaskManager | ResourceType | AUDIO = 1 << 6 | 新增 |
| ohos.backgroundTaskManager | ResourceType | GPS = 1 << 5 | 新增 |
| ohos.backgroundTaskManager | ResourceType | BLUETOOTH = 1 << 4 | 新增 |
| ohos.backgroundTaskManager | ResourceType | WORK_SCHEDULER = 1 << 3 | 新增 |
| ohos.backgroundTaskManager | ResourceType | TIMER = 1 << 2 | 新增 |
| ohos.backgroundTaskManager | ResourceType | COMMON_EVENT = 1 << 1 | 新增 |
| ohos.backgroundTaskManager | ResourceType | CPU = 1 | 新增 |
| ohos.backgroundTaskManager | backgroundTaskManager | resetAllEfficiencyResources(): void; | 新增 |
| ohos.backgroundTaskManager | backgroundTaskManager | applyEfficiencyResources(request: EfficiencyResourcesRequest): boolean; | 新增 |
| ohos.workScheduler | WorkInfo | parameters?: {[key: string]: any}; | 新增 |
# 安全子系统JS API变更
OpenHarmony 3.2 Beta3版本相较于OpenHarmony 3.2 Beta2版本,安全子系统的API变更如下:
## 接口变更
| 模块名 | 类名 | 方法/属性/枚举/常量 | 变更类型 |
|---|---|---|---|
| ohos.privacyManager | ActiveChangeResponse | activeStatus: PermissionActiveStatus; | 新增 |
| ohos.privacyManager | ActiveChangeResponse | deviceId: string; | 新增 |
| ohos.privacyManager | ActiveChangeResponse | permissionName: string; | 新增 |
| ohos.privacyManager | ActiveChangeResponse | tokenId: number; | 新增 |
| ohos.privacyManager | PermissionActiveStatus | PERM_ACTIVE_IN_BACKGROUND = 2 | 新增 |
| ohos.privacyManager | PermissionActiveStatus | PERM_ACTIVE_IN_FOREGROUND = 1 | 新增 |
| ohos.privacyManager | PermissionActiveStatus | PERM_INACTIVE = 0 | 新增 |
| ohos.privacyManager | privacyManager | off(type: 'activeStateChange', permissionNameList: Array\<string>, callback?: Callback\<ActiveChangeResponse>): void; | 新增 |
| ohos.privacyManager | privacyManager | on(type: 'activeStateChange', permissionNameList: Array\<string>, callback: Callback\<ActiveChangeResponse>): void; | 新增 |
| ohos.privacyManager | privacyManager | stopUsingPermission(tokenID: number, permissionName: string): Promise\<number>;<br>stopUsingPermission(tokenID: number, permissionName: string, callback: AsyncCallback\<number>): void; | 新增 |
| ohos.privacyManager | privacyManager | startUsingPermission(tokenID: number, permissionName: string): Promise\<number>;<br>startUsingPermission(tokenID: number, permissionName: string, callback: AsyncCallback\<number>): void; | 新增 |
| ohos.security.cryptoFramework | cryptoFramework | createCertChainValidator(algorithm :string) : CertChainValidator; | 新增 |
| ohos.security.cryptoFramework | CertChainValidator | readonly algorithm : string; | 新增 |
| ohos.security.cryptoFramework | CertChainValidator | validate(certChain : CertChainData, callback : AsyncCallback\<void>) : void;<br>validate(certChain : CertChainData) : Promise\<void>; | 新增 |
| ohos.security.cryptoFramework | cryptoFramework | createX509Crl(inStream : EncodingBlob, callback : AsyncCallback\<X509Crl>) : void;<br>createX509Crl(inStream : EncodingBlob) : Promise\<X509Crl>; | 新增 |
| ohos.security.cryptoFramework | X509Crl | getSignatureAlgParams() : DataBlob; | 新增 |
| ohos.security.cryptoFramework | X509Crl | getSignatureAlgOid() : string; | 新增 |
| ohos.security.cryptoFramework | X509Crl | getSignatureAlgName() : string; | 新增 |
| ohos.security.cryptoFramework | X509Crl | getSignature() : DataBlob; | 新增 |
| ohos.security.cryptoFramework | X509Crl | getTbsInfo(callback : AsyncCallback\<DataBlob>) : void;<br>getTbsInfo() : Promise\<DataBlob>; | 新增 |
| ohos.security.cryptoFramework | X509Crl | getRevokedCerts(callback : AsyncCallback\<Array\<X509CrlEntry>>) : void;<br>getRevokedCerts() : Promise\<Array\<X509CrlEntry>>; | 新增 |
| ohos.security.cryptoFramework | X509Crl | getRevokedCertWithCert(cert : X509Cert, callback : AsyncCallback\<X509CrlEntry>) : void;<br>getRevokedCertWithCert(cert : X509Cert) : Promise\<X509CrlEntry>; | 新增 |
| ohos.security.cryptoFramework | X509Crl | getRevokedCert(serialNumber : number, callback : AsyncCallback\<X509CrlEntry>) : void;<br>getRevokedCert(serialNumber : number) : Promise\<X509CrlEntry>; | 新增 |
| ohos.security.cryptoFramework | X509Crl | getNextUpdate() : string; | 新增 |
| ohos.security.cryptoFramework | X509Crl | getLastUpdate() : string; | 新增 |
| ohos.security.cryptoFramework | X509Crl | getIssuerName() : DataBlob; | 新增 |
| ohos.security.cryptoFramework | X509Crl | getVersion() : number; | 新增 |
| ohos.security.cryptoFramework | X509Crl | verify(key : PubKey, callback : AsyncCallback\<void>) : void;<br>verify(key : PubKey) : Promise\<void>; | 新增 |
| ohos.security.cryptoFramework | X509Crl | getEncoded(callback : AsyncCallback\<EncodingBlob>) : void;<br>getEncoded() : Promise\<EncodingBlob>; | 新增 |
| ohos.security.cryptoFramework | X509Crl | getType() : string; | 新增 |
| ohos.security.cryptoFramework | X509Crl | isRevoked(cert : X509Cert, callback : AsyncCallback\<boolean>) : void;<br>isRevoked(cert : X509Cert) : Promise\<boolean>; | 新增 |
| ohos.security.cryptoFramework | X509CrlEntry | getRevocationDate(callback : AsyncCallback\<string>) : void;<br>getRevocationDate() : Promise\<string>; | 新增 |
| ohos.security.cryptoFramework | X509CrlEntry | getCertIssuer(callback : AsyncCallback\<DataBlob>) : void;<br>getCertIssuer() : Promise\<DataBlob>; | 新增 |
| ohos.security.cryptoFramework | X509CrlEntry | getSerialNumber() : number; | 新增 |
| ohos.security.cryptoFramework | X509CrlEntry | getEncoded(callback : AsyncCallback\<EncodingBlob>) : void;<br>getEncoded() : Promise\<EncodingBlob>; | 新增 |
| ohos.security.cryptoFramework | cryptoFramework | createX509Cert(inStream : EncodingBlob, callback : AsyncCallback\<X509Cert>) : void;<br>createX509Cert(inStream : EncodingBlob) : Promise\<X509Cert>; | 新增 |
| ohos.security.cryptoFramework | X509Cert | getIssuerAltNames() : DataArray; | 新增 |
| ohos.security.cryptoFramework | X509Cert | getSubjectAltNames() : DataArray; | 新增 |
| ohos.security.cryptoFramework | X509Cert | getBasicConstraints() : number; | 新增 |
| ohos.security.cryptoFramework | X509Cert | getExtKeyUsage() : DataArray; | 新增 |
| ohos.security.cryptoFramework | X509Cert | getKeyUsage() : DataBlob; | 新增 |
| ohos.security.cryptoFramework | X509Cert | getSignatureAlgParams() : DataBlob; | 新增 |
| ohos.security.cryptoFramework | X509Cert | getSignatureAlgOid() : string; | 新增 |
| ohos.security.cryptoFramework | X509Cert | getSignatureAlgName() : string; | 新增 |
| ohos.security.cryptoFramework | X509Cert | getSignature() : DataBlob; | 新增 |
| ohos.security.cryptoFramework | X509Cert | getNotAfterTime() : string; | 新增 |
| ohos.security.cryptoFramework | X509Cert | getNotBeforeTime() : string; | 新增 |
| ohos.security.cryptoFramework | X509Cert | getSubjectName() : DataBlob; | 新增 |
| ohos.security.cryptoFramework | X509Cert | getIssuerName() : DataBlob; | 新增 |
| ohos.security.cryptoFramework | X509Cert | getSerialNumber() : number; | 新增 |
| ohos.security.cryptoFramework | X509Cert | getVersion() : number; | 新增 |
| ohos.security.cryptoFramework | X509Cert | checkValidityWithDate(date: string, callback : AsyncCallback\<void>) : void;<br>checkValidityWithDate(date: string) : Promise\<void>; | 新增 |
| ohos.security.cryptoFramework | X509Cert | getPublicKey(callback : AsyncCallback\<PubKey>) : void;<br>getPublicKey() : Promise\<PubKey>; | 新增 |
| ohos.security.cryptoFramework | X509Cert | getEncoded(callback : AsyncCallback\<EncodingBlob>) : void;<br>getEncoded() : Promise\<EncodingBlob>; | 新增 |
| ohos.security.cryptoFramework | X509Cert | verify(key : PubKey, callback : AsyncCallback\<void>) : void;<br>verify(key : PubKey) : Promise\<void>; | 新增 |
| ohos.security.cryptoFramework | cryptoFramework | createKeyAgreement(algName : string) : KeyAgreement; | 新增 |
| ohos.security.cryptoFramework | KeyAgreement | readonly algName : string; | 新增 |
| ohos.security.cryptoFramework | KeyAgreement | generateSecret(priKey : PriKey, pubKey : PubKey, callback : AsyncCallback\<DataBlob>) : void;<br>generateSecret(priKey : PriKey, pubKey : PubKey) : Promise\<DataBlob>; | 新增 |
| ohos.security.cryptoFramework | cryptoFramework | createVerify(algName : string) : Verify; | 新增 |
| ohos.security.cryptoFramework | cryptoFramework | createSign(algName : string) : Sign; | 新增 |
| ohos.security.cryptoFramework | Verify | readonly algName : string; | 新增 |
| ohos.security.cryptoFramework | Verify | verify(data : DataBlob, signatureData : DataBlob, callback : AsyncCallback\<boolean>) : void;<br>verify(data : DataBlob, signatureData : DataBlob) : Promise\<boolean>; | 新增 |
| ohos.security.cryptoFramework | Verify | update(data : DataBlob, callback : AsyncCallback\<void>) : void;<br>update(data : DataBlob) : Promise\<void>; | 新增 |
| ohos.security.cryptoFramework | Verify | init(pubKey : PubKey, callback : AsyncCallback\<void>) : void;<br>init(pubKey : PubKey) : Promise\<void>; | 新增 |
| ohos.security.cryptoFramework | Sign | readonly algName : string; | 新增 |
| ohos.security.cryptoFramework | Sign | sign(data : DataBlob, callback : AsyncCallback\<DataBlob>) : void;<br>sign(data : DataBlob) : Promise\<DataBlob>; | 新增 |
| ohos.security.cryptoFramework | Sign | update(data : DataBlob, callback : AsyncCallback\<void>) : void;<br>update(data : DataBlob) : Promise\<void>; | 新增 |
| ohos.security.cryptoFramework | Sign | init(priKey : PriKey, callback : AsyncCallback\<void>) : void;<br>init(priKey : PriKey) : Promise\<void>; | 新增 |
| ohos.security.cryptoFramework | cryptoFramework | createCipher(transformation : string) : Cipher; | 新增 |
| ohos.security.cryptoFramework | Cipher | readonly algName : string; | 新增 |
| ohos.security.cryptoFramework | Cipher | doFinal(data : DataBlob, callback : AsyncCallback\<DataBlob>) : void;<br>doFinal(data : DataBlob) : Promise\<DataBlob>; | 新增 |
| ohos.security.cryptoFramework | Cipher | update(data : DataBlob, callback : AsyncCallback\<DataBlob>) : void;<br>update(data : DataBlob) : Promise\<DataBlob>; | 新增 |
| ohos.security.cryptoFramework | Cipher | init(opMode : CryptoMode, key : Key, params : ParamsSpec, callback : AsyncCallback\<void>) : void;<br>init(opMode : CryptoMode, key : Key, params : ParamsSpec) : Promise\<void>; | 新增 |
| ohos.security.cryptoFramework | cryptoFramework | createMd(algName : string) : Md; | 新增 |
| ohos.security.cryptoFramework | Md | readonly algName : string; | 新增 |
| ohos.security.cryptoFramework | Md | getMdLength() : number; | 新增 |
| ohos.security.cryptoFramework | Md | digest(callback : AsyncCallback\<DataBlob>) : void;<br>digest() : Promise\<DataBlob>; | 新增 |
| ohos.security.cryptoFramework | Md | update(input : DataBlob, callback : AsyncCallback\<void>) : void;<br>update(input : DataBlob) : Promise\<void>; | 新增 |
| ohos.security.cryptoFramework | cryptoFramework | createMac(algName : string) : Mac; | 新增 |
| ohos.security.cryptoFramework | Mac | readonly algName : string; | 新增 |
| ohos.security.cryptoFramework | Mac | getMacLength() : number; | 新增 |
| ohos.security.cryptoFramework | Mac | doFinal(callback : AsyncCallback\<DataBlob>) : void;<br>doFinal() : Promise\<DataBlob>; | 新增 |
| ohos.security.cryptoFramework | Mac | update(input : DataBlob, callback : AsyncCallback\<void>) : void;<br>update(input : DataBlob) : Promise\<void>; | 新增 |
| ohos.security.cryptoFramework | Mac | init(key : SymKey, callback : AsyncCallback\<void>) : void;<br>init(key : SymKey) : Promise\<void>; | 新增 |
| ohos.security.cryptoFramework | cryptoFramework | createSymKeyGenerator(algName : string) : SymKeyGenerator; | 新增 |
| ohos.security.cryptoFramework | cryptoFramework | createAsyKeyGenerator(algName : string) : AsyKeyGenerator; | 新增 |
| ohos.security.cryptoFramework | SymKeyGenerator | readonly algName : string; | 新增 |
| ohos.security.cryptoFramework | SymKeyGenerator | convertKey(key : DataBlob, callback : AsyncCallback\<SymKey>) : void;<br>convertKey(key : DataBlob) : Promise\<SymKey>; | 新增 |
| ohos.security.cryptoFramework | SymKeyGenerator | generateSymKey(callback : AsyncCallback\<SymKey>) : void;<br>generateSymKey() : Promise\<SymKey>; | 新增 |
| ohos.security.cryptoFramework | AsyKeyGenerator | readonly algName : string; | 新增 |
| ohos.security.cryptoFramework | AsyKeyGenerator | convertKey(pubKey : DataBlob, priKey : DataBlob, callback : AsyncCallback\<KeyPair>) : void;<br>convertKey(pubKey : DataBlob, priKey : DataBlob) : Promise\<KeyPair>; | 新增 |
| ohos.security.cryptoFramework | AsyKeyGenerator | generateKeyPair(callback : AsyncCallback\<KeyPair>) : void;<br>generateKeyPair() : Promise\<KeyPair>; | 新增 |
| ohos.security.cryptoFramework | cryptoFramework | createRandom() : Random; | 新增 |
| ohos.security.cryptoFramework | Random | setSeed(seed : DataBlob, callback : AsyncCallback\<void>) : void;<br>setSeed(seed : DataBlob) : Promise\<void>; | 新增 |
| ohos.security.cryptoFramework | Random | generateRandom(len : number, callback: AsyncCallback\<DataBlob>) : void;<br>generateRandom(len : number) : Promise\<DataBlob>; | 新增 |
| ohos.security.cryptoFramework | KeyPair | readonly pubKey : PubKey; | 新增 |
| ohos.security.cryptoFramework | KeyPair | readonly priKey : PriKey; | 新增 |
| ohos.security.cryptoFramework | PriKey | clearMem() : void; | 新增 |
| ohos.security.cryptoFramework | SymKey | clearMem() : void; | 新增 |
| ohos.security.cryptoFramework | Key | readonly algName : string; | 新增 |
| ohos.security.cryptoFramework | Key | readonly format : string; | 新增 |
| ohos.security.cryptoFramework | Key | getEncoded() : DataBlob; | 新增 |
| ohos.security.cryptoFramework | CryptoMode | DECRYPT_MODE = 1 | 新增 |
| ohos.security.cryptoFramework | CryptoMode | ENCRYPT_MODE = 0 | 新增 |
| ohos.security.cryptoFramework | CcmParamsSpec | authTag : DataBlob; | 新增 |
| ohos.security.cryptoFramework | CcmParamsSpec | aad : DataBlob; | 新增 |
| ohos.security.cryptoFramework | CcmParamsSpec | iv : DataBlob; | 新增 |
| ohos.security.cryptoFramework | GcmParamsSpec | authTag : DataBlob; | 新增 |
| ohos.security.cryptoFramework | GcmParamsSpec | aad : DataBlob; | 新增 |
| ohos.security.cryptoFramework | GcmParamsSpec | iv : DataBlob; | 新增 |
| ohos.security.cryptoFramework | IvParamsSpec | iv : DataBlob; | 新增 |
| ohos.security.cryptoFramework | ParamsSpec | algoName : string; | 新增 |
| ohos.security.cryptoFramework | CertChainData | encodingFormat: EncodingFormat; | 新增 |
| ohos.security.cryptoFramework | CertChainData | count : number; | 新增 |
| ohos.security.cryptoFramework | CertChainData | data: Uint8Array; | 新增 |
| ohos.security.cryptoFramework | EncodingBlob | encodingFormat : EncodingFormat; | 新增 |
| ohos.security.cryptoFramework | EncodingBlob | data : Uint8Array; | 新增 |
| ohos.security.cryptoFramework | EncodingFormat | FORMAT_PEM = 1 | 新增 |
| ohos.security.cryptoFramework | EncodingFormat | FORMAT_DER = 0 | 新增 |
| ohos.security.cryptoFramework | DataArray | data : Array\<Uint8Array>; | 新增 |
| ohos.security.cryptoFramework | DataBlob | data : Uint8Array; | 新增 |
| ohos.security.cryptoFramework | Result | ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE = 17630007 | 新增 |
| ohos.security.cryptoFramework | Result | ERR_KEYUSAGE_NO_CERTSIGN = 17630006 | 新增 |
| ohos.security.cryptoFramework | Result | ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY = 17630005 | 新增 |
| ohos.security.cryptoFramework | Result | ERR_CERT_HAS_EXPIRED = 17630004 | 新增 |
| ohos.security.cryptoFramework | Result | ERR_CERT_NOT_YET_VALID = 17630003 | 新增 |
| ohos.security.cryptoFramework | Result | ERR_CERT_SIGNATURE_FAILURE = 17630002 | 新增 |
| ohos.security.cryptoFramework | Result | ERR_CRYPTO_OPERATION = 17630001 | 新增 |
| ohos.security.cryptoFramework | Result | ERR_EXTERNAL_ERROR = 17620002 | 新增 |
| ohos.security.cryptoFramework | Result | ERR_OUT_OF_MEMORY = 17620001 | 新增 |
| ohos.security.cryptoFramework | Result | NOT_SUPPORT = 801 | 新增 |
| ohos.security.cryptoFramework | Result | INVALID_PARAMS = 401 | 新增 |
| ohos.security.huks | HuksTag | HUKS_TAG_CHALLENGE_POS = HuksTagType.HUKS_TAG_TYPE_UINT | 310 |
| ohos.security.huks | HuksTag | HUKS_TAG_CHALLENGE_TYPE = HuksTagType.HUKS_TAG_TYPE_UINT | 309 |
| ohos.security.huks | HuksTag | HUKS_TAG_KEY_SECURE_SIGN_TYPE = HuksTagType.HUKS_TAG_TYPE_UINT | 308 |
| ohos.security.huks | HuksTag | HUKS_TAG_KEY_AUTH_ACCESS_TYPE = HuksTagType.HUKS_TAG_TYPE_UINT | 307 |
| ohos.security.huks | HuksSecureSignType | HUKS_SECURE_SIGN_WITH_AUTHINFO = 1 | 新增 |
| ohos.security.huks | HuksChallengePosition | HUKS_CHALLENGE_POS_3 | 新增 |
| ohos.security.huks | HuksChallengePosition | HUKS_CHALLENGE_POS_2 | 新增 |
| ohos.security.huks | HuksChallengePosition | HUKS_CHALLENGE_POS_1 | 新增 |
| ohos.security.huks | HuksChallengePosition | HUKS_CHALLENGE_POS_0 = 0 | 新增 |
| ohos.security.huks | HuksChallengeType | HUKS_CHALLENGE_TYPE_NONE = 2 | 新增 |
| ohos.security.huks | HuksChallengeType | HUKS_CHALLENGE_TYPE_CUSTOM = 1 | 新增 |
| ohos.security.huks | HuksChallengeType | HUKS_CHALLENGE_TYPE_NORMAL = 0 | 新增 |
| ohos.security.huks | HuksAuthAccessType | HUKS_AUTH_ACCESS_INVALID_NEW_BIO_ENROLL = 1 \<\< 1 | 新增 |
| ohos.security.huks | HuksAuthAccessType | HUKS_AUTH_ACCESS_INVALID_CLEAR_PASSWORD = 1 \<\< 0 | 新增 |
| ohos.security.huks | HuksUserAuthType | HUKS_USER_AUTH_TYPE_PIN = 1 \<\< 2 | 新增 |
| ohos.security.huks | HuksUserAuthType | HUKS_USER_AUTH_TYPE_FACE = 1 \<\< 1 | 新增 |
| ohos.security.huks | HuksUserAuthType | HUKS_USER_AUTH_TYPE_FINGERPRINT = 1 \<\< 0 | 新增 |
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_DEVICE_NO_CREDENTIAL = -44 | 新增 |
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_KEY_AUTH_FAILED = -43 | 新增 |
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_USER_AUTH_TYPE_NOT_SUPPORT = -42 | 新增 |
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_GET_USERIAM_AUTHINFO_FAILED = -41 | 新增 |
| ohos.security.huks | HuksErrorCode | HUKS_ERROR_GET_USERIAM_SECINFO_FAILED = -40 | 新增 |
| ohos.security.huks | huks | attestKey(keyAlias: string, options: HuksOptions, callback: AsyncCallback\<HuksResult>) : void;<br>attestKey(keyAlias: string, options: HuksOptions) : Promise\<HuksResult>; | 新增 |
# 泛Sensor子系统JS API变更
OpenHarmony 3.2 Beta3版本相较于OpenHarmony 3.2 Beta2版本,泛Sensor子系统的API变更如下:
## 接口变更
| 模块名 | 类名 | 方法/属性/枚举/常量 | 变更类型 |
|---|---|---|---|
| ohos.vibrator | VibratePreset | count: number; | 新增 |
| ohos.vibrator | VibratePreset | effectId: string; | 新增 |
| ohos.vibrator | VibratePreset | type: "preset"; | 新增 |
| ohos.vibrator | VibrateTime | duration: number; | 新增 |
| ohos.vibrator | VibrateTime | type: "time"; | 新增 |
| ohos.vibrator | VibrateAttribute | usage: Usage, | 新增 |
| ohos.vibrator | VibrateAttribute | id?: number, | 新增 |
# 分布式软总线子系统JS API变更
OpenHarmony 3.2 Beta3版本相较于OpenHarmony 3.2 Beta2版本,分布式软总线子系统的API变更如下:
## 接口变更
| 模块名 | 类名 | 方法/属性/枚举/常量 | 变更类型 |
|---|---|---|---|
| ohos.rpc | RemoteObject | onRemoteRequestEx(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption): boolean \| Promise\<boolean>; | 新增 |
| ohos.rpc | RemoteObject | onRemoteRequest(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption): boolean; | 废弃 |
# 电话服务子系统JS API变更
OpenHarmony 3.2 Beta3版本相较于OpenHarmony 3.2 Beta2版本,电话服务子系统的API变更如下:
## 接口变更
| 模块名 | 类名 | 方法/属性/枚举/常量 | 变更类型 |
|---|---|---|---|
| ohos.telephony.data | data | getDefaultCellularDataSlotIdSync(): number; | 新增 |
| ohos.telephony.radio | ImsServiceType | TYPE_SMS | 新增 |
| ohos.telephony.radio | ImsServiceType | TYPE_UT | 新增 |
| ohos.telephony.radio | ImsServiceType | TYPE_VIDEO | 新增 |
| ohos.telephony.radio | ImsServiceType | TYPE_VOICE | 新增 |
| ohos.telephony.radio | ImsRegInfo | imsRegTech: ImsRegTech; | 新增 |
| ohos.telephony.radio | ImsRegInfo | imsRegState: ImsRegState; | 新增 |
| ohos.telephony.radio | ImsRegTech | REGISTRATION_TECH_NR | 新增 |
| ohos.telephony.radio | ImsRegTech | REGISTRATION_TECH_IWLAN | 新增 |
| ohos.telephony.radio | ImsRegTech | REGISTRATION_TECH_LTE | 新增 |
| ohos.telephony.radio | ImsRegTech | REGISTRATION_TECH_NONE | 新增 |
| ohos.telephony.radio | ImsRegState | IMS_REGISTERED | 新增 |
| ohos.telephony.radio | ImsRegState | IMS_UNREGISTERED | 新增 |
| ohos.telephony.radio | radio | off(type: 'imsRegStateChange', slotId: number, imsType: ImsServiceType, callback?: Callback\<ImsRegInfo>): void; | 新增 |
| ohos.telephony.radio | radio | on(type: 'imsRegStateChange', slotId: number, imsType: ImsServiceType, callback: Callback\<ImsRegInfo>): void; | 新增 |
| ohos.telephony.radio | radio | getImsRegInfo(slotId: number, imsType: ImsServiceType, callback: AsyncCallback\<ImsRegInfo>): void;<br>getImsRegInfo(slotId: number, imsType: ImsServiceType): Promise\<ImsRegInfo>; | 新增 |
| ohos.telephony.sim | sim | getOpName(slotId: number, callback: AsyncCallback\<string>): void;<br>getOpName(slotId: number): Promise\<string>; | 新增 |
| ohos.telephony.sim | sim | getOpKey(slotId: number, callback: AsyncCallback\<string>): void;<br>getOpKey(slotId: number): Promise\<string>; | 新增 |
\ No newline at end of file
# 测试框架子系统JS API变更
OpenHarmony 3.2 Beta3版本相较于OpenHarmony 3.2 Beta2版本,测试框架子系统的API变更如下:
## 接口变更
| 模块名 | 类名 | 方法/属性/枚举/常量 | 变更类型 |
|---|---|---|---|
| ohos.uitest | PointerMatrix | setPoint(finger: number, step: number, point: Point):void; | 新增 |
| ohos.uitest | PointerMatrix | static create(fingers: number, steps: number):PointerMatrix; | 新增 |
| ohos.uitest | UiDriver | injectMultiPointerAction(pointers: PointerMatrix, speed?: number):Promise\<boolean>; | 新增 |
| ohos.uitest | UiDriver | fling(from: Point, to: Point, stepLen: number, speed: number):Promise\<void>; | 新增 |
| ohos.uitest | UiDriver | waitForIdle(idleTime: number, timeout: number):Promise\<boolean>; | 新增 |
| ohos.uitest | UiDriver | pressHome():Promise\<void>; | 新增 |
| ohos.uitest | UiDriver | wakeUpDisplay():Promise\<void>; | 新增 |
| ohos.uitest | UiDriver | getDisplayDensity():Promise\<Point>; | 新增 |
| ohos.uitest | UiDriver | getDisplaySize():Promise\<Point>; | 新增 |
| ohos.uitest | UiDriver | setDisplayRotationEnabled(enabled:boolean):Promise\<void>; | 新增 |
| ohos.uitest | UiDriver | getDisplayRotation():Promise\<DisplayRotation>; | 新增 |
| ohos.uitest | UiDriver | setDisplayRotation(rotation: DisplayRotation):Promise\<void>; | 新增 |
| ohos.uitest | DisplayRotation | ROTATION_270 | 新增 |
| ohos.uitest | DisplayRotation | ROTATION_180 | 新增 |
| ohos.uitest | DisplayRotation | ROTATION_90 | 新增 |
| ohos.uitest | DisplayRotation | ROTATION_0 | 新增 |
# 升级服务子系统JS API变更
OpenHarmony 3.2 Beta3版本相较于OpenHarmony 3.2 Beta2版本,升级服务子系统的API变更如下:
## 接口变更
| 模块名 | 类名 | 方法/属性/枚举/常量 | 变更类型 |
|---|---|---|---|
| ohos.update | Order | INSTALL_AND_APPLY = 6 | 新增 |
| ohos.update | Order | DOWNLOAD_AND_INSTALL = 3 | 新增 |
| ohos.update | NetType | CELLULAR_AND_WIFI = 7 | 新增 |
| ohos.update | NetType | WIFI = 6 | 新增 |
| ohos.update | DescriptionFormat | SIMPLIFIED = 1 | 新增 |
| ohos.update | DescriptionFormat | STANDARD = 0 | 新增 |
| ohos.update | ComponentDescription | descriptionInfo: DescriptionInfo; | 新增 |
| ohos.update | ComponentDescription | componentId: string; | 新增 |
| ohos.update | DescriptionOptions | language: string; | 新增 |
| ohos.update | DescriptionOptions | format: DescriptionFormat; | 新增 |
| ohos.update | VersionComponent | componentId: string; | 新增 |
| ohos.update | Updater | getCurrentVersionDescription(descriptionOptions: DescriptionOptions, callback: AsyncCallback<Array\<ComponentDescription>>): void;<br>getCurrentVersionDescription(descriptionOptions: DescriptionOptions): Promise<Array\<ComponentDescription>>; | 新增 |
| ohos.update | Updater | getNewVersionDescription(versionDigestInfo: VersionDigestInfo, descriptionOptions: DescriptionOptions, callback: AsyncCallback<Array\<ComponentDescription>>): void;<br>getNewVersionDescription(versionDigestInfo: VersionDigestInfo, descriptionOptions: DescriptionOptions): Promise<Array\<ComponentDescription>>; | 新增 |
| ohos.update | BusinessSubType | PARAM = 2 | 删除 |
\ No newline at end of file
# Web子系统JS API变更
OpenHarmony 3.2 Beta3版本相较于OpenHarmony 3.2 Beta2版本,Web子系统的API变更如下:
## 接口变更
| 模块名 | 类名 | 方法/属性/枚举/常量 | 变更类型 |
|---|---|---|---|
| ohos.web.webview | WebCookieManager | static deleteSessionCookie(): void; | 新增 |
| ohos.web.webview | WebCookieManager | static deleteEntireCookie(): void; | 新增 |
| ohos.web.webview | WebCookieManager | static existCookie(): boolean; | 新增 |
| ohos.web.webview | WebCookieManager | static putAcceptThirdPartyCookieEnabled(accept: boolean): void; | 新增 |
| ohos.web.webview | WebCookieManager | static isThirdPartyCookieAllowed(): boolean; | 新增 |
| ohos.web.webview | WebCookieManager | static putAcceptCookieEnabled(accept: boolean): void; | 新增 |
| ohos.web.webview | WebCookieManager | static isCookieAllowed(): boolean; | 新增 |
| ohos.web.webview | WebCookieManager | static saveCookieAsync(): Promise\<boolean>;<br>static saveCookieAsync(callback: AsyncCallback\<boolean>): void; | 新增 |
| ohos.web.webview | WebCookieManager | static saveCookieSync(): boolean; | 新增 |
| ohos.web.webview | WebCookieManager | static setCookie(url: string, value: string): boolean; | 新增 |
| ohos.web.webview | WebCookieManager | static getCookie(url: string): string; | 新增 |
| ohos.web.webview | GeolocationPermissions | static getStoredGeolocation() : Promise\<Array\<string>>;<br>static getStoredGeolocation(callback : AsyncCallback\<Array\<string>>): void; | 新增 |
| ohos.web.webview | GeolocationPermissions | static getAccessibleGeolocation(origin: string): Promise\<boolean>;<br>static getAccessibleGeolocation(origin: string, callback: AsyncCallback\<boolean>): void; | 新增 |
| ohos.web.webview | GeolocationPermissions | static deleteAllGeolocation(): void; | 新增 |
| ohos.web.webview | GeolocationPermissions | static deleteGeolocation(origin: string): void; | 新增 |
| ohos.web.webview | GeolocationPermissions | static allowGeolocation(origin: string): void; | 新增 |
| ohos.web.webview | WebAsyncController | storeWebArchive(baseName: string, autoName: boolean): Promise\<string>;<br>storeWebArchive(baseName: string, autoName: boolean, callback : AsyncCallback\<string>): void; | 新增 |
| ohos.web.webview | WebAsyncController | constructor(controller: WebController); | 新增 |
| ohos.web.webview | WebDataBase | static saveHttpAuthCredentials(host: string, realm: string, username: string, password: string): void; | 新增 |
| ohos.web.webview | WebDataBase | static getHttpAuthCredentials(host: string, realm: string): Array\<string>; | 新增 |
| ohos.web.webview | WebDataBase | static deleteHttpAuthCredentials(): void; | 新增 |
| ohos.web.webview | WebDataBase | static existHttpAuthCredentials(): boolean; | 新增 |
| ohos.web.webview | WebStorage | static getOriginUsage(origin : string) : Promise\<number> ;<br>static getOriginUsage(origin : string, callback : AsyncCallback\<number>) : void; | 新增 |
| ohos.web.webview | WebStorage | static getOriginQuota(origin : string) : Promise\<number>;<br>static getOriginQuota(origin : string, callback : AsyncCallback\<number>) : void; | 新增 |
| ohos.web.webview | WebStorage | static getOrigins() : Promise\<Array\<WebStorageOrigin>>;<br>static getOrigins(callback: AsyncCallback\<Array\<WebStorageOrigin>>) : void; | 新增 |
| ohos.web.webview | WebStorage | static deleteOrigin(origin : string): void; | 新增 |
| ohos.web.webview | WebStorage | static deleteAllData() : void; | 新增 |
| ohos.web.webview | WebStorageOrigin | quota: number; | 新增 |
| ohos.web.webview | WebStorageOrigin | usage: number; | 新增 |
| ohos.web.webview | WebStorageOrigin | origin: string; | 新增 |
| ohos.web | WebDataBase | static saveHttpAuthCredentials(host: string, realm: string, username: string, password: string): void; | 删除 |
| ohos.web | WebDataBase | static getHttpAuthCredentials(host: string, realm: string): Array\<string>; | 删除 |
| ohos.web | WebDataBase | static deleteHttpAuthCredentials(): void; | 删除 |
| ohos.web | WebDataBase | static existHttpAuthCredentials(): boolean; | 删除 |
| ohos.web | WebStorage | static getOriginUsage(origin : string) : Promise\<number> ;<br>static getOriginUsage(origin : string, callback : AsyncCallback\<number>) : void; | 删除 |
| ohos.web | WebStorage | static getOriginQuota(origin : string) : Promise\<number>;<br>static getOriginQuota(origin : string, callback : AsyncCallback\<number>) : void; | 删除 |
| ohos.web | WebStorage | static getOrigins() : Promise\<Array\<WebStorageOrigin>>;<br>static getOrigins(callback: AsyncCallback\<Array\<WebStorageOrigin>>) : void; | 删除 |
| ohos.web | WebStorage | static deleteOrigin(origin : string): void; | 删除 |
| ohos.web | WebStorage | static deleteAllData() : void; | 删除 |
| ohos.web | WebStorageOrigin | quota: number; | 删除 |
| ohos.web | WebStorageOrigin | usage: number; | 删除 |
| ohos.web | WebStorageOrigin | origin: string; | 删除 |
# 窗口管理子系统JS API变更
OpenHarmony 3.2 Beta3版本相较于OpenHarmony 3.2 Beta2版本,窗口管理子系统的API变更如下:
## 接口变更
| 模块名 | 类名 | 方法/属性/枚举/常量 | 变更类型 |
|---|---|---|---|
| ohos.animation.windowAnimationManager | WindowAnimationController | onWindowAnimationTargetsUpdate(fullScreenWindowTarget: WindowAnimationTarget, floatingWindowTargets: Array\<WindowAnimationTarget>): void; | 新增 |
| ohos.animation.windowAnimationManager | WindowAnimationTarget | readonly missionId: number; | 新增 |
| ohos.animation.windowAnimationManager | windowAnimationManager | minimizeWindowWithAnimation(windowTarget: WindowAnimationTarget, callback: AsyncCallback\<WindowAnimationFinishedCallback>): void;<br>minimizeWindowWithAnimation(windowTarget: WindowAnimationTarget): Promise\<WindowAnimationFinishedCallback>; | 新增 |
| ohos.display | Display | getCutoutInfo(callback: AsyncCallback\<CutoutInfo>): void;<br>getCutoutInfo(): Promise\<CutoutInfo>; | 新增 |
| ohos.display | CutoutInfo | readonly waterfallDisplayAreaRects: WaterfallDisplayAreaRects; | 新增 |
| ohos.display | CutoutInfo | readonly boundingRects: Array\<Rect>; | 新增 |
| ohos.display | WaterfallDisplayAreaRects | readonly bottom: Rect; | 新增 |
| ohos.display | WaterfallDisplayAreaRects | readonly top: Rect; | 新增 |
| ohos.display | WaterfallDisplayAreaRects | readonly right: Rect; | 新增 |
| ohos.display | WaterfallDisplayAreaRects | readonly left: Rect; | 新增 |
| ohos.display | Rect | height: number; | 新增 |
| ohos.display | Rect | width: number; | 新增 |
| ohos.display | Rect | top: number; | 新增 |
| ohos.display | Rect | left: number; | 新增 |
| ohos.display | display | hasPrivateWindow(displayId: number): boolean; | 新增 |
| ohos.window | Window | setCornerRadius(cornerRadius: number): void; | 新增 |
| ohos.window | Window | setShadow(radius: number, color?: string, offsetX?: number, offsetY?: number): void; | 新增 |
| ohos.window | Window | setBackdropBlurStyle(blurStyle: BlurStyle): void; | 新增 |
| ohos.window | Window | setBackdropBlur(radius: number): void; | 新增 |
| ohos.window | Window | setBlur(radius: number): void; | 新增 |
| ohos.window | Window | getTransitionController(): TransitionController; | 新增 |
| ohos.window | Window | translate(translateOptions: TranslateOptions): void; | 新增 |
| ohos.window | Window | rotate(rotateOptions: RotateOptions): void; | 新增 |
| ohos.window | Window | scale(scaleOptions: ScaleOptions): void; | 新增 |
| ohos.window | Window | opacity(opacity: number): void; | 新增 |
| ohos.window | Window | snapshot(callback: AsyncCallback\<image.PixelMap>): void;<br>snapshot(): Promise\<image.PixelMap>; | 新增 |
| ohos.window | Window | setSnapshotSkip(isSkip: boolean): void; | 新增 |
| ohos.window | Window | setWakeUpScreen(wakeUp: boolean): void; | 新增 |
| ohos.window | Window | bindDialogTarget(token: rpc.RemoteObject, deathCallback: Callback\<void>): Promise\<void>;<br>bindDialogTarget(token: rpc.RemoteObject, deathCallback: Callback\<void>, callback: AsyncCallback\<void>): void; | 新增 |
| ohos.window | Window | off(type: 'dialogTargetTouch', callback?: Callback\<void>): void; | 新增 |
| ohos.window | Window | on(type: 'dialogTargetTouch', callback: Callback\<void>): void; | 新增 |
| ohos.window | Window | off(type: 'screenshot', callback?: Callback\<void>): void; | 新增 |
| ohos.window | Window | on(type: 'screenshot', callback: Callback\<void>): void; | 新增 |
| ohos.window | Window | showWithAnimation(callback: AsyncCallback\<void>): void;<br>showWithAnimation(): Promise\<void>; | 新增 |
| ohos.window | Window | hideWithAnimation(callback: AsyncCallback\<void>): void;<br>hideWithAnimation(): Promise\<void>; | 新增 |
| ohos.window | BlurStyle | THICK | 新增 |
| ohos.window | BlurStyle | REGULAR | 新增 |
| ohos.window | BlurStyle | THIN | 新增 |
| ohos.window | BlurStyle | OFF | 新增 |
| ohos.window | TransitionController | animationForHidden(context: TransitionContext): void; | 新增 |
| ohos.window | TransitionController | animationForShown(context: TransitionContext): void; | 新增 |
| ohos.window | TransitionContext | completeTransition(isCompleted: boolean): void; | 新增 |
| ohos.window | TransitionContext | toWindow: Window | 新增 |
| ohos.window | TranslateOptions | z?: number; | 新增 |
| ohos.window | TranslateOptions | y?: number; | 新增 |
| ohos.window | TranslateOptions | x?: number; | 新增 |
| ohos.window | RotateOptions | pivotY?: number; | 新增 |
| ohos.window | RotateOptions | pivotX?: number; | 新增 |
| ohos.window | RotateOptions | z?: number; | 新增 |
| ohos.window | RotateOptions | y?: number; | 新增 |
| ohos.window | RotateOptions | x?: number; | 新增 |
| ohos.window | ScaleOptions | pivotY?: number; | 新增 |
| ohos.window | ScaleOptions | pivotX?: number; | 新增 |
| ohos.window | ScaleOptions | y?: number; | 新增 |
| ohos.window | ScaleOptions | x?: number; | 新增 |
| ohos.window | WindowProperties | id: number | 新增 |
| ohos.window | WindowType | TYPE_SCREENSHOT | 新增 |
| ohos.window | WindowType | TYPE_DIALOG | 新增 |
| ohos.window | WindowType | TYPE_FLOAT_CAMERA | 新增 |
| ohos.screen | Orientation | SENSOR_HORIZONTAL = 7 | 删除 |
| ohos.screen | Orientation | SENSOR_VERTICAL = 6 | 删除 |
| ohos.screen | Orientation | SENSOR = 5 | 删除 |
| ohos.window | Window | setWindowType(type: WindowType): Promise\<void>;<br>setWindowType(type: WindowType, callback: AsyncCallback\<void>): void; | 废弃 |
| ohos.window | WindowProperties | isRoundCorner: boolean | 废弃 |
# Readme
本目录记录了OpenHarmony 3.2 Beta3版本相较于OpenHarmony 3.2 Beta2版本的API变化,包括新增、变更、废弃、删除。
- JS API差异报告
- [元能力](js-apidiff-ability.md)
- [无障碍](js-apidiff-accessibility.md)
- [帐号](js-apidiff-account.md)
- [ArkUI](js-apidiff-arkui.md)
- [电源管理](js-apidiff-battery.md)
- [包管理](js-apidiff-bundle.md)
- [基础通信](js-apidiff-communicate.md)
- [公共基础库](js-apidiff-compiler-and-runtime.md)
- [DFX](js-apidiff-dfx.md)
- [分布式数据管理](js-apidiff-distributed-data.md)
- [分布式硬件](js-apidiff-distributed-hardware.md)
- [事件通知](js-apidiff-event-and-notification.md)
- [文件管理](js-apidiff-file-management.md)
- [全球化](js-apidiff-global.md)
- [图形图像](js-apidiff-graphic.md)
- [Misc](js-apidiff-misc.md)
- [多模输入](js-apidiff-multi-modal-input.md)
- [多媒体](js-apidiff-multimedia.md)
- [资源调度](js-apidiff-resource-scheduler.md)
- [安全](js-apidiff-security.md)
- [泛Sensor](js-apidiff-sensor.md)
- [分布式软总线](js-apidiff-soft-bus.md)
- [电话服务](js-apidiff-telephony.md)
- [测试框架](js-apidiff-unitest.md)
- [升级服务](js-apidiff-update.md)
- [Web](js-apidiff-web.md)
- [窗口管理](js-apidiff-window.md)
......@@ -30,7 +30,35 @@
- [OpenHarmony 1.0 (2020-09-10)](release-notes/OpenHarmony-1-0.md)
- API差异报告
- OpenHarmony 3.2 Beta3
- JS API差异报告
- [元能力](release-notes/api-change/v3.2-beta3/js-apidiff-ability.md)
- [无障碍](release-notes/api-change/v3.2-beta3/js-apidiff-accessibility.md)
- [帐号](release-notes/api-change/v3.2-beta3/js-apidiff-account.md)
- [ArkUI](release-notes/api-change/v3.2-beta3/js-apidiff-arkui.md)
- [电源管理](release-notes/api-change/v3.2-beta3/js-apidiff-battery.md)
- [包管理](release-notes/api-change/v3.2-beta3/js-apidiff-bundle.md)
- [基础通信](release-notes/api-change/v3.2-beta3/js-apidiff-communicate.md)
- [公共基础库](release-notes/api-change/v3.2-beta3/js-apidiff-compiler-and-runtime.md)
- [DFX](release-notes/api-change/v3.2-beta3/js-apidiff-dfx.md)
- [分布式数据管理](release-notes/api-change/v3.2-beta3/js-apidiff-distributed-data.md)
- [分布式硬件](release-notes/api-change/v3.2-beta3/js-apidiff-distributed-hardware.md)
- [事件通知](release-notes/api-change/v3.2-beta3/js-apidiff-event-and-notification.md)
- [文件管理](release-notes/api-change/v3.2-beta3/js-apidiff-file-management.md)
- [全球化](release-notes/api-change/v3.2-beta3/js-apidiff-global.md)
- [图形图像](release-notes/api-change/v3.2-beta3/js-apidiff-graphic.md)
- [Misc](release-notes/api-change/v3.2-beta3/js-apidiff-misc.md)
- [多模输入](release-notes/api-change/v3.2-beta3/js-apidiff-multi-modal-input.md)
- [多媒体](release-notes/api-change/v3.2-beta3/js-apidiff-multimedia.md)
- [资源调度](release-notes/api-change/v3.2-beta3/js-apidiff-resource-scheduler.md)
- [安全](release-notes/api-change/v3.2-beta3/js-apidiff-security.md)
- [泛Sensor](release-notes/api-change/v3.2-beta3/js-apidiff-sensor.md)
- [分布式软总线](release-notes/api-change/v3.2-beta3/js-apidiff-soft-bus.md)
- [电话服务](release-notes/api-change/v3.2-beta3/js-apidiff-telephony.md)
- [测试框架](release-notes/api-change/v3.2-beta3/js-apidiff-unitest.md)
- [升级服务](release-notes/api-change/v3.2-beta3/js-apidiff-update.md)
- [Web](release-notes/api-change/v3.2-beta3/js-apidiff-web.md)
- [窗口管理](release-notes/api-change/v3.2-beta3/js-apidiff-window.md)
- OpenHarmony 3.2 Beta2
- JS API差异报告
- [元能力](release-notes/api-change/v3.2-beta2/js-apidiff-ability.md)
......@@ -80,7 +108,6 @@
- [多模输入](release-notes/api-change/v3.2-beta1/js-apidiff-multi-modal-input.md)
- [多媒体](release-notes/api-change/v3.2-beta1/js-apidiff-multimedia.md)
- [资源调度](release-notes/api-change/v3.2-beta1/js-apidiff-resource-scheduler.md)
- [分布式软总线](release-notes/api-change/v3.2-beta1/js-apidiff-soft-bus.md)
- [测试框架](release-notes/api-change/v3.2-beta1/js-apidiff-unitest.md)
- [Web](release-notes/api-change/v3.2-beta1/js-apidiff-web.md)
- [窗口管理](release-notes/api-change/v3.2-beta1/js-apidiff-window.md)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册