提交 6b1290ad 编写于 作者: J jiaoyanlin3

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

# ArkCompiler Subsystem Changelog
## cl.ArkCompiler.1 type compileMode uses es2abc by default
The composition of ArkCompiler in sdk has ts2abc compiler and es2abc compiler, supporting compilation of ets/ts/js files.<br>
Compilation Mode Introduction:<br>
&emsp;Non-type compilation: convert ets/ts sourceCode into js sourceCode, and use ArkCompiler compiler es2abc to generate bytecode. <br>
&emsp;type compilation: convert ets/ts sourceCode into ts sourceCode, and use ArkCompiler compiler ts2abc (previous version)/es2abc (enabled in this version) to generate bytecode. <br>
Application Project hvigor version:<br>
&emsp;hvigorVersion field and @ohos/hvigor-ohos-plugin field in dependencies of hvigor-config.json5 file in the hvigor directory of the application project.<br>
Enable type compilation:<br>
&emsp;When the hvigor version is greater than or equal to 2.6.0-rc.9.s, the type compilation mode is used by default, or in the build-profile.json5 file of the same level directory as the application sourceCode (src directory), configure the "aotCompileMode": "type" option under the buildOption tag<br>
When type compilation is enabled and this version of the SDK is used, the ArkCompiler compiler es2abc will be used by default to compile the ts sourceCode to generate bytecode, and it is not recommended to use the old version SDK with ts2abc enabled for type compilation.<br>
**Change Impact**<br>
With DevEco Studio development, after the type compilation mode is enabled and the new version of the SDK is used, due to the change of the compilation mode and the change of the ArkCompiler compiler, application compilation failures and runtime crashes may occur.<br>
**Key API/Component Changes**<br>
type compileMode uses arkcompiler frontend compiler es2abc by default<br>
**Adaptation Guide**
1. When the hvigor version is greater than or equal to 2.6.0-rc.9.s, the developer needs to configure "aotCompileMode": "" in the build-profile.json5 file to switch to the original compilation mode (not type).
...@@ -93,14 +93,14 @@ build() { ...@@ -93,14 +93,14 @@ build() {
```shell ```shell
Launching com.example.myapptfjs Launching com.example.myapptfjs
$ hdc uninstall com.example.myapptfjs $ hdc uninstall com.example.myapptfjs
$ hdc install -r "D:\TVOS\JSAPI\MyAppTfjs\entry\build\default\outputs\default\entry-default-signed.hap" $ hdc install -r "path/to/xxx.hap"
$ hdc shell aa start -a EntryAbility -b com.example.myapptfjs $ hdc shell aa start -a EntryAbility -b com.example.myapptfjs
``` ```
2. 使用hdc连接设备,并将mnet.caffemodel.ms推送到设备中的沙盒目录。mnet_caffemodel_nhwc.bin在本地项目中的rawfile目录下。 2. 使用hdc连接设备,并将mnet.caffemodel.ms推送到设备中的沙盒目录。mnet_caffemodel_nhwc.bin在本地项目中的rawfile目录下。
```shell ```shell
hdc -t 7001005458323933328a00bcdf423800 file send .\mnet.caffemodel.ms /data/app/el2/100/base/com.example.myapptfjs/haps/entry/files/ hdc -t your_device_id file send .\mnet.caffemodel.ms /data/app/el2/100/base/com.example.myapptfjs/haps/entry/files/
``` ```
3. 在设备屏幕点击Test_MSLiteModel_predict触发用例,在HiLog打印结果中得到如下结果: 3. 在设备屏幕点击Test_MSLiteModel_predict触发用例,在HiLog打印结果中得到如下结果:
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
ArrayList依据泛型定义,要求存储位置是一片连续的内存空间,初始容量大小为10,并支持动态扩容,每次扩容大小为原始容量的1.5倍。 ArrayList依据泛型定义,要求存储位置是一片连续的内存空间,初始容量大小为10,并支持动态扩容,每次扩容大小为原始容量的1.5倍。
ArrayList进行增、删、改、查操作的相关API如下: ArrayList进行增、删、改、查操作的常用API如下:
| 操作 | 描述 | | 操作 | 描述 |
| --------- | ------- | | --------- | ------- |
...@@ -35,7 +35,7 @@ Vector和[ArrayList](../reference/apis/js-apis-arraylist.md)相似,都是基 ...@@ -35,7 +35,7 @@ Vector和[ArrayList](../reference/apis/js-apis-arraylist.md)相似,都是基
API version 9开始,该接口不再维护,推荐使用[ArrayList](../reference/apis/js-apis-arraylist.md) API version 9开始,该接口不再维护,推荐使用[ArrayList](../reference/apis/js-apis-arraylist.md)
Vector进行增、删、改、查操作的相关API如下: Vector进行增、删、改、查操作的常用API如下:
| 操作 | 描述 | | 操作 | 描述 |
| --------- | ------- | | --------- | ------- |
...@@ -64,7 +64,7 @@ List和[LinkedList](../reference/apis/js-apis-linkedlist.md)相比,LinkedList ...@@ -64,7 +64,7 @@ List和[LinkedList](../reference/apis/js-apis-linkedlist.md)相比,LinkedList
当需要频繁的插入删除时,推荐使用List高效操作。 当需要频繁的插入删除时,推荐使用List高效操作。
可以通过get/set等接口对存储的元素进行修改,List进行增、删、改、查操作的相关API如下: 可以通过get/set等接口对存储的元素进行修改,List进行增、删、改、查操作的常用API如下:
| 操作 | 描述 | | 操作 | 描述 |
| --------- | ------ | | --------- | ------ |
...@@ -77,6 +77,7 @@ List和[LinkedList](../reference/apis/js-apis-linkedlist.md)相比,LinkedList ...@@ -77,6 +77,7 @@ List和[LinkedList](../reference/apis/js-apis-linkedlist.md)相比,LinkedList
| 访问元素 | 通过getlndexOf(element: T)获取第一个匹配到元素的位置。 | | 访问元素 | 通过getlndexOf(element: T)获取第一个匹配到元素的位置。 |
| 访问元素 | 通过getLastlndexOf(element: T)获取最后一个匹配到元素的位置。 | | 访问元素 | 通过getLastlndexOf(element: T)获取最后一个匹配到元素的位置。 |
| 访问元素 | 通过forEach(callbackfn: (value:T, index?: number, list?: List&lt;T&gt;)=&gt; void,thisArg?: Object)访问整个List的元素。 | | 访问元素 | 通过forEach(callbackfn: (value:T, index?: number, list?: List&lt;T&gt;)=&gt; void,thisArg?: Object)访问整个List的元素。 |
| 访问元素 | 通过\[Symbol.iterator]():IterableIterator&lt;T&gt;迭代器进行数据访问。 |
| 修改元素 | 通过list\[index] = xxx修改指定index位置对应的value值。 | | 修改元素 | 通过list\[index] = xxx修改指定index位置对应的value值。 |
| 修改元素 | 通过set(index:number, element: T)修改指定index位置的元素值为element。 | | 修改元素 | 通过set(index:number, element: T)修改指定index位置的元素值为element。 |
| 修改元素 | 通过replaceAllElements(callbackFn:(value: T,index?: number,list?: List&lt;T&gt;)=&gt;T,thisArg?: Object)对List内元素进行替换操作。 | | 修改元素 | 通过replaceAllElements(callbackFn:(value: T,index?: number,list?: List&lt;T&gt;)=&gt;T,thisArg?: Object)对List内元素进行替换操作。 |
...@@ -94,7 +95,7 @@ LinkedList和[ArrayList](../reference/apis/js-apis-arraylist.md)相比,插入 ...@@ -94,7 +95,7 @@ LinkedList和[ArrayList](../reference/apis/js-apis-arraylist.md)相比,插入
当需要频繁的插入删除时,推荐使用LinkedList高效操作。 当需要频繁的插入删除时,推荐使用LinkedList高效操作。
可以通过get/set等接口对存储的元素进行修改,LinkedList进行增、删、改、查操作的相关API如下: 可以通过get/set等接口对存储的元素进行修改,LinkedList进行增、删、改、查操作的常用API如下:
| 操作 | 描述 | | 操作 | 描述 |
| ---------- | ------ | | ---------- | ------ |
...@@ -107,6 +108,7 @@ LinkedList和[ArrayList](../reference/apis/js-apis-arraylist.md)相比,插入 ...@@ -107,6 +108,7 @@ LinkedList和[ArrayList](../reference/apis/js-apis-arraylist.md)相比,插入
| 访问元素 | 通过getlndexOf(element: T)获取第一个匹配到元素的位置。 | | 访问元素 | 通过getlndexOf(element: T)获取第一个匹配到元素的位置。 |
| 访问元素 | 通过getLastlndexOf(element: T)获取最后一个匹配到元素的位置。 | | 访问元素 | 通过getLastlndexOf(element: T)获取最后一个匹配到元素的位置。 |
| 访问元素 | 通过forEach(callbackFn: (value: T, index?: number, list?: LinkedList&lt;T&gt;) =&gt; void, thisArg?: Object)访问整个LinkedList的元素。 | | 访问元素 | 通过forEach(callbackFn: (value: T, index?: number, list?: LinkedList&lt;T&gt;) =&gt; void, thisArg?: Object)访问整个LinkedList的元素。 |
| 访问元素 | 通过\[Symbol.iterator]():IterableIterator&lt;T&gt;迭代器进行数据访问。 |
| 修改元素 | 通过list\[index]=xxx修改指定index位置对应的value值。 | | 修改元素 | 通过list\[index]=xxx修改指定index位置对应的value值。 |
| 修改元素 | 通过set(index: number,element: T)修改指定index位置的元素值为element。 | | 修改元素 | 通过set(index: number,element: T)修改指定index位置的元素值为element。 |
| 删除元素 | 通过removeBylndex(index: number)删除index位置对应的value值。 | | 删除元素 | 通过removeBylndex(index: number)删除index位置对应的value值。 |
...@@ -115,7 +117,7 @@ LinkedList和[ArrayList](../reference/apis/js-apis-arraylist.md)相比,插入 ...@@ -115,7 +117,7 @@ LinkedList和[ArrayList](../reference/apis/js-apis-arraylist.md)相比,插入
## Deque ## Deque
[Deque](../reference/apis/js-apis-deque.md)可用来构造双端队列对象,存储元素遵循先进先出的规则,双端队列可以分别从队头或者队尾进行访问。 [Deque](../reference/apis/js-apis-deque.md)可用来构造双端队列对象,存储元素遵循先进先出以及先进后出的规则,双端队列可以分别从队头或者队尾进行访问。
Deque依据泛型定义,要求存储位置是一片连续的内存空间,其初始容量大小为8,并支持动态扩容,每次扩容大小为原始容量的2倍。Deque底层采用循环队列实现,入队及出队操作效率都比较高。 Deque依据泛型定义,要求存储位置是一片连续的内存空间,其初始容量大小为8,并支持动态扩容,每次扩容大小为原始容量的2倍。Deque底层采用循环队列实现,入队及出队操作效率都比较高。
...@@ -125,7 +127,7 @@ Deque和[Vector](../reference/apis/js-apis-vector.md)相比,它们都支持在 ...@@ -125,7 +127,7 @@ Deque和[Vector](../reference/apis/js-apis-vector.md)相比,它们都支持在
需要频繁在集合两端进行增删元素的操作时,推荐使用Deque。 需要频繁在集合两端进行增删元素的操作时,推荐使用Deque。
Deque进行增、删、改、查操作的相关API如下: Deque进行增、删、改、查操作的常用API如下:
| 操作 | 描述 | | 操作 | 描述 |
| ---------- | ------ | | ---------- | ------ |
...@@ -154,7 +156,7 @@ Queue和[Deque](../reference/apis/js-apis-deque.md)相比,Queue只能在一端 ...@@ -154,7 +156,7 @@ Queue和[Deque](../reference/apis/js-apis-deque.md)相比,Queue只能在一端
一般符合先进先出的场景可以使用Queue。 一般符合先进先出的场景可以使用Queue。
Queue进行增、删、改、查操作的相关API如下: Queue进行增、删、改、查操作的常用API如下:
| 操作 | 描述 | | 操作 | 描述 |
| ---------- | ------ | | ---------- | ------ |
...@@ -177,7 +179,7 @@ Stack和[Queue](../reference/apis/js-apis-queue.md)相比,Queue基于循环队 ...@@ -177,7 +179,7 @@ Stack和[Queue](../reference/apis/js-apis-queue.md)相比,Queue基于循环队
一般符合先进后出的场景可以使用Stack。 一般符合先进后出的场景可以使用Stack。
Stack进行增、删、改、查操作的相关API如下: Stack进行增、删、改、查操作的常用API如下:
| 操作 | 描述 | | 操作 | 描述 |
| ---------- | ------ | | ---------- | ------ |
......
...@@ -16,19 +16,19 @@ HashMap和[TreeMap](../reference/apis/js-apis-treemap.md)相比,HashMap依据 ...@@ -16,19 +16,19 @@ HashMap和[TreeMap](../reference/apis/js-apis-treemap.md)相比,HashMap依据
需要快速存取、删除以及插入键值对数据时,推荐使用HashMap。 需要快速存取、删除以及插入键值对数据时,推荐使用HashMap。
HashMap进行增、删、改、查操作的相关API如下: HashMap进行增、删、改、查操作的常用API如下:
| 操作 | 描述 | | 操作 | 描述 |
| -------- | ------ | | -------- | ------ |
| 增加元素 | 通过set(key: K, value: V)函数每次在HashMap增加一个键值对。 | | 增加元素 | 通过set(key: K, value: V)函数每次在HashMap增加一个键值对。 |
| 访问元素 | 通过get(key: K)获取key对应的value值。 | | 访问元素 | 通过get(key: K)获取key对应的value值。 |
| 访问元素 | 通过keys()返回一个迭代器对象,包含map中的所有key值。 | | 访问元素 | 通过keys()返回一个迭代器对象,包含map中的所有key值。 |
| 访问元素 | 通过value()返回一个迭代器对象,包含map中的所有value值。 | | 访问元素 | 通过values()返回一个迭代器对象,包含map中的所有value值。 |
| 访问元素 | 通过entries()返回一个迭代器对象,包含map中的所有键值对。 | | 访问元素 | 通过entries()返回一个迭代器对象,包含map中的所有键值对。 |
| 访问元素 | forEach(callbackfn: (value: T, index?: number, map?: HashMap&lt;K,V&gt;) =&gt; void,thisArg?: Object)访问整个map的元素。 | | 访问元素 | forEach(callbackFn: (value?: V, key?: K, map?: HashMap<K, V>) => void, thisArg?: Object)访问整个map的元素。 |
| 访问元素 | 通过\[Symbol.iterator]():Iterablelterator&lt;[K,V]&gt;迭代器进行数据访问。 | | 访问元素 | 通过\[Symbol.iterator]():IterableIterator&lt;[K,V]&gt;迭代器进行数据访问。 |
| 修改元素 | 通过replace(key: K, newValue: V)对指定key对应的value值进行修改操作。 | | 修改元素 | 通过replace(key: K, newValue: V)对指定key对应的value值进行修改操作。 |
| 修改元素 | 通过forEach(callbackfn: (value: T, index?: number, map?: HashMap&lt;K, V&gt;) =&gt; void,thisArg?: Object)对map中元素进行修改操作。 | | 修改元素 | 通过forEach(callbackFn: (value?: V, key?: K, map?: HashMap<K, V>) => void, thisArg?: Object)对map中元素进行修改操作。 |
| 删除元素 | 通过remove(key: K)对map中匹配到的键值对进行删除操作。 | | 删除元素 | 通过remove(key: K)对map中匹配到的键值对进行删除操作。 |
| 删除元素 | 通过clear()清空整个map集合。 | | 删除元素 | 通过clear()清空整个map集合。 |
...@@ -45,16 +45,16 @@ HashSet和[TreeSet](../reference/apis/js-apis-treeset.md)相比,HashSet中的 ...@@ -45,16 +45,16 @@ HashSet和[TreeSet](../reference/apis/js-apis-treeset.md)相比,HashSet中的
可以利用HashSet不重复的特性,当需要不重复的集合或需要去重某个集合的时候使用。 可以利用HashSet不重复的特性,当需要不重复的集合或需要去重某个集合的时候使用。
HashSet进行增、删、改、查操作的相关API如下: HashSet进行增、删、改、查操作的常用API如下:
| 操作 | 描述 | | 操作 | 描述 |
| -------- | ------ | | -------- | ------ |
| 增加元素 | 通过add(value: T)函数每次在HashSet增加一个键值对。 | | 增加元素 | 通过add(value: T)函数每次在HashSet增加一个。 |
| 访问元素 | 通过value()返回一个迭代器对象,包含set中的所有value值。 | | 访问元素 | 通过values()返回一个迭代器对象,包含set中的所有value值。 |
| 访问元素 | 通过entries()返回一个迭代器对象,包含类似键值对的数组,键值都是value。 | | 访问元素 | 通过entries()返回一个迭代器对象,包含类似键值对的数组,键值都是value。 |
| 访问元素 | 通过forEach(callbackfn: (value: T, index?: number, set?: HashSet&lt;T&gt;) =&gt; void, thisArg?: Object)访问整个set的元素。 | | 访问元素 | 通过forEach(callbackFn: (value?: T, key?: T, set?: HashSet<T>) => void, thisArg?: Object)访问整个set的元素。 |
| 访问元素 | 通过\[Symbol.iterator]():Iterablelterator&lt;T&gt;迭代器进行数据访问。 | | 访问元素 | 通过\[Symbol.iterator]():IterableIterator&lt;T&gt;迭代器进行数据访问。 |
| 修改元素 | 通过forEach(callbackfn:(value: T, index?: number, set?: HashSet&lt;T&gt;) =&gt; void,thisArg?: Object)对set中value进行修改操作。 | | 修改元素 | 通过forEach(callbackFn: (value?: T, key?: T, set?: HashSet<T>) => void, thisArg?: Object)对set中value进行修改操作。 |
| 删除元素 | 通过remove(value: T)对set中匹配到的值进行删除操作。 | | 删除元素 | 通过remove(value: T)对set中匹配到的值进行删除操作。 |
| 删除元素 | 通过clear()清空整个set集合。 | | 删除元素 | 通过clear()清空整个set集合。 |
...@@ -69,7 +69,7 @@ TreeMap和[HashMap](../reference/apis/js-apis-hashmap.md)相比,HashMap依据 ...@@ -69,7 +69,7 @@ TreeMap和[HashMap](../reference/apis/js-apis-hashmap.md)相比,HashMap依据
一般需要存储有序键值对的场景,可以使用TreeMap。 一般需要存储有序键值对的场景,可以使用TreeMap。
TreeMap进行增、删、改、查操作的相关API如下: TreeMap进行增、删、改、查操作的常用API如下:
| 操作 | 描述 | | 操作 | 描述 |
| ------- | ------ | | ------- | ------ |
...@@ -78,12 +78,12 @@ TreeMap进行增、删、改、查操作的相关API如下: ...@@ -78,12 +78,12 @@ TreeMap进行增、删、改、查操作的相关API如下:
| 访问元素 | 通过getFirstKey()获取map中排在首位的key值。 | | 访问元素 | 通过getFirstKey()获取map中排在首位的key值。 |
| 访问元素 | 通过getLastKey()获取map中排在未位的key值。 | | 访问元素 | 通过getLastKey()获取map中排在未位的key值。 |
| 访问元素 | 通过keys()返回一个迭代器对象,包含map中的所有key值。 | | 访问元素 | 通过keys()返回一个迭代器对象,包含map中的所有key值。 |
| 访问元素 | 通过value()返回一个迭代器对象,包含map中的所有value值。 | | 访问元素 | 通过values()返回一个迭代器对象,包含map中的所有value值。 |
| 访问元素 | 通过entries()返回一个迭代器对象,包含map中的所有键值对。 | | 访问元素 | 通过entries()返回一个迭代器对象,包含map中的所有键值对。 |
| 访问元素 | 通过forEach(callbackfn: (value: T, index?: number, map?: TreeMap\<K, V>) =&gt; void, thisArg?: Object)访问整个map的元素。 | | 访问元素 | 通过forEach(callbackFn: (value?: V, key?: K, map?: TreeMap<K, V>) => void, thisArg?: Object)访问整个map的元素。 |
| 访问元素 | 通过\[Symbol.iterator]():Iterablelterator\<[K,V]>迭代器进行数据访问。 | | 访问元素 | 通过\[Symbol.iterator]():IterableIterator\<[K,V]>迭代器进行数据访问。 |
| 修改元素 | 通过replace(key: K,newValue: V)对指定key对应的value值进行修改操作。 | | 修改元素 | 通过replace(key: K,newValue: V)对指定key对应的value值进行修改操作。 |
| 修改元素 | 通过forEach(callbackfn: (value: T, index?: number, map?: TreeMap\<K, V>) =&gt; void, thisArg?: Object)对map中元素进行修改操作。 | | 修改元素 | 通过forEach(callbackFn: (value?: V, key?: K, map?: TreeMap<K, V>) => void, thisArg?: Object)对map中元素进行修改操作。 |
| 删除元素 | 通过remove(key: K)对map中匹配到的键值对进行删除操作。 | | 删除元素 | 通过remove(key: K)对map中匹配到的键值对进行删除操作。 |
| 删除元素 | 通过clear()清空整个map集合。 | | 删除元素 | 通过clear()清空整个map集合。 |
...@@ -100,49 +100,49 @@ TreeSet和[HashSet](../reference/apis/js-apis-hashset.md)相比,HashSet中的 ...@@ -100,49 +100,49 @@ TreeSet和[HashSet](../reference/apis/js-apis-hashset.md)相比,HashSet中的
一般需要存储有序集合的场景,可以使用TreeSet。 一般需要存储有序集合的场景,可以使用TreeSet。
TreeSet进行增、删、改、查操作的相关API如下: TreeSet进行增、删、改、查操作的常用API如下:
| 操作 | 描述 | | 操作 | 描述 |
| -------- | ------ | | -------- | ------ |
| 增加元素 | 通过add(value: T)函数每次在HashSet增加一个键值对。 | | 增加元素 | 通过add(value: T)函数每次在HashSet增加一个。 |
| 访问元素 | 通过value()返回一个迭代器对象,包含set中的所有value值。 | | 访问元素 | 通过values()返回一个迭代器对象,包含set中的所有value值。 |
| 访问元素 | 通过entries()返回一个迭代器对象,包含类似键值对的数组,键值都是value。 | | 访问元素 | 通过entries()返回一个迭代器对象,包含类似键值对的数组,键值都是value。 |
| 访问元素 | 通过getFirstValue()获取set中排在首位的value值。 | | 访问元素 | 通过getFirstValue()获取set中排在首位的value值。 |
| 访问元素 | 通过getLastValue()获取set中排在未位的value值。 | | 访问元素 | 通过getLastValue()获取set中排在未位的value值。 |
| 访问元素 | 通过forEach(callbackfn: (value: T, index?: number, set?: TreeSet&lt;T&gt;) =&gt; void, thisArg?: Object)访问整个set的元素。 | | 访问元素 | 通过forEach(callbackFn: (value?: T, key?: T, set?: TreeSet<T>) => void, thisArg?: Object)访问整个set的元素。 |
| 访问元素 | 通过\[Symbol.iterator]():Iterablelterator&lt;T&gt;迭代器进行数据访问。 | | 访问元素 | 通过\[Symbol.iterator]():IterableIterator&lt;T&gt;迭代器进行数据访问。 |
| 修改元素 | 通过forEach(callbackfn: (value: T, index?: number, set?: TreeSet&lt;T&gt;) =&gt; void,thisArg?: Object)对set中value进行修改操作。 | | 修改元素 | 通过forEach(callbackFn: (value?: T, key?: T, set?: TreeSet<T>) => void, thisArg?: Object)对set中value进行修改操作。 |
| 删除元素 | 通过remove(value: T)对set中匹配到的值进行删除操作。 | | 删除元素 | 通过remove(value: T)对set中匹配到的值进行删除操作。 |
| 删除元素 | 通过clear()清空整个set集合。 | | 删除元素 | 通过clear()清空整个set集合。 |
## LightWeightMap ## LightWeightMap
[LightWeightMap](../reference/apis/js-apis-lightweightmap.md)可用来存储具有关联关系的key-value键值对集合,存储元素中key是唯一的,每个key会对应一个value值。LightWeightMap依据泛型定义,采用更加轻量级的结构,集合中的key值的查找依赖于hash值以及二分查找算法,通过一个数组存储hash值,然后映射到其他数组中的key值以及value值,key的类型满足ECMA标准中要求的类型。 [LightWeightMap](../reference/apis/js-apis-lightweightmap.md)可用来存储具有关联关系的key-value键值对集合,存储元素中key是唯一的,每个key会对应一个value值。LightWeightMap依据泛型定义,采用更加轻量级的结构,底层标识唯一key通过hash实现,其冲突策略为线性探测法。集合中的key值的查找依赖于hash值以及二分查找算法,通过一个数组存储hash值,然后映射到其他数组中的key值以及value值,key的类型满足ECMA标准中要求的类型。
初始默认容量大小为8,每次扩容大小为原始容量的2倍。LightWeightMap底层标识唯一key通过hash实现,其冲突策略为线性探测法,查找策略基于二分查找法。 初始默认容量大小为8,每次扩容大小为原始容量的2倍。
LightWeightMap和[HashMap](../reference/apis/js-apis-hashmap.md)都是用来存储键值对的集合,LightWeightMap占用内存更小。 LightWeightMap和[HashMap](../reference/apis/js-apis-hashmap.md)都是用来存储键值对的集合,LightWeightMap占用内存更小。
当需要存取key-value键值对时,推荐使用占用内存更小的LightWeightMap。 当需要存取key-value键值对时,推荐使用占用内存更小的LightWeightMap。
LightWeightMap进行增、删、改、查操作的相关API如下: LightWeightMap进行增、删、改、查操作的常用API如下:
| 操作 | 描述 | | 操作 | 描述 |
| -------- | ------ | | -------- | ------ |
| 增加元素 | 通过set(key: K,value: V)函数每次在LightWeightMap增加一个键值对。 | | 增加元素 | 通过set(key: K,value: V)函数每次在LightWeightMap增加一个键值对。 |
| 访问元素 | 通过get(key: K)获取key对应的value值。 | | 访问元素 | 通过get(key: K)获取key对应的value值。 |
| 访问元素 | 通过getlndexOfKey(key: K)获取map中指定key的index。 | | 访问元素 | 通过getIndexOfKey(key: K)获取map中指定key的index。 |
| 访问元素 | 通过getindexOfValue(value: V)获取map中指定value的index。 | | 访问元素 | 通过getIndexOfValue(value: V)获取map中指定value出现的第一个的index。 |
| 访问元素 | 通过keys()返回一个迭代器对象,包含map中的所有key值。 | | 访问元素 | 通过keys()返回一个迭代器对象,包含map中的所有key值。 |
| 访问元素 | 通过value()返回一个迭代器对象,包含map中的所有value值。 | | 访问元素 | 通过values()返回一个迭代器对象,包含map中的所有value值。 |
| 访问元素 | 通过entries()返回一个迭代器对象,包含map中的所有键值对。 | | 访问元素 | 通过entries()返回一个迭代器对象,包含map中的所有键值对。 |
| 访问元素 | 通过getKeyAt(index: number)获取指定index对应的key值。 | | 访问元素 | 通过getKeyAt(index: number)获取指定index对应的key值。 |
| 访问元素 | 通过getValueAt(index: number)获取指定index对应的value值。 | | 访问元素 | 通过getValueAt(index: number)获取指定index对应的value值。 |
| 访问元素 | 通过forEach(callbackfn: (value: T, index?: number, map?: LightWeightMap&lt;K, V&gt;) =&gt; void,thisArg? Object)访问整个map的元素。 | | 访问元素 | 通过forEach(callbackFn: (value?: V, key?: K, map?: LightWeightMap<K, V>) => void, thisArg?: Object)访问整个map的元素。 |
| 访问元素 | 通过\[Symbol.iterator]():Iterablelterator&lt;[K,V]&gt;迭代器进行数据访问。 | | 访问元素 | 通过\[Symbol.iterator]():IterableIterator&lt;[K,V]&gt;迭代器进行数据访问。 |
| 修改元素 | 通过setValueAt(key: K,newValue: V)对指定key对应的value值进行修改操作。 | | 修改元素 | 通过setValueAt(index: number, newValue: V)对指定index对应的value值进行修改操作。 |
| 修改元素 | 通过forEach(callbackfn: (value: T, index?: number, map?: LightWeightMap&lt;K, V&gt;) =&gt; void,thisArg?: Object)对map中元素进行修改操作。 | | 修改元素 | 通过forEach(callbackFn: (value?: V, key?: K, map?: LightWeightMap<K, V>) => void, thisArg?: Object)对map中元素进行修改操作。 |
| 删除元素 | 通过remove(key: K)对map中匹配到的键值对进行删除操作。 | | 删除元素 | 通过remove(key: K)对map中匹配到的键值对进行删除操作。 |
| 删除元素 | 通过removeAt(index: number)对map中指定index的位置进行删除操作。 | | 删除元素 | 通过removeAt(index: number)对map中指定index的位置进行删除操作。 |
| 删除元素 | 通过clear()清空整个map集合。 | | 删除元素 | 通过clear()清空整个map集合。 |
...@@ -160,18 +160,18 @@ LightWeightSet和[HashSet](../reference/apis/js-apis-hashset.md)都是用来存 ...@@ -160,18 +160,18 @@ LightWeightSet和[HashSet](../reference/apis/js-apis-hashset.md)都是用来存
当需要存取某个集合或是对某个集合去重时,推荐使用占用内存更小的LightWeightSet。 当需要存取某个集合或是对某个集合去重时,推荐使用占用内存更小的LightWeightSet。
LightWeightSet进行增、删、改、查操作的相关API如下: LightWeightSet进行增、删、改、查操作的常用API如下:
| 操作 | 描述 | | 操作 | 描述 |
| -------- | ------ | | -------- | ------ |
| 增加元素 | 通过add(obj: T)函数每次在LightWeightSet增加一个键值对。 | | 增加元素 | 通过add(obj: T)函数每次在LightWeightSet增加一个。 |
| 访问元素 | 通过getlndexOf(key: T)获取对应的index值。 | | 访问元素 | 通过getIndexOf(key: T)获取对应的index值。 |
| 访问元素 | 通过value()返回一个迭代器对象,包含map中的所有value值。 | | 访问元素 | 通过values()返回一个迭代器对象,包含map中的所有value值。 |
| 访问元素 | 通过entries()返回一个迭代器对象,包含map中的所有键值对。 | | 访问元素 | 通过entries()返回一个迭代器对象,包含map中的所有键值对。 |
| 访问元素 | 通过getValueAt(index: number)获取指定index对应的value值。 | | 访问元素 | 通过getValueAt(index: number)获取指定index对应的value值。 |
| 访问元素 | 通过forEach(callbackfn: (value: T, index?: number, set?: LightWeightSet&lt;T&gt;) =&gt; void,thisArg?: Object)访问整个set的元素。 | | 访问元素 | 通过forEach(callbackFn: (value?: T, key?: T, set?: LightWeightSet<T>) => void, thisArg?: Object)访问整个set的元素。 |
| 访问元素 | 通过\[Symbol.iterator]():Iterablelterator&lt;T&gt;迭代器进行数据访问。 | | 访问元素 | 通过\[Symbol.iterator]():IterableIterator&lt;T&gt;迭代器进行数据访问。 |
| 修改元素 | 通过forEach(callbackfn: (value: T, index?: number, set?: LightWeightSet&lt;T&gt;) =&gt; void,thisArg?: Object)对set中元素进行修改操作。 | | 修改元素 | 通过forEach(callbackFn: (value?: T, key?: T, set?: LightWeightSet<T>) => void, thisArg?: Object)对set中元素进行修改操作。 |
| 删除元素 | 通过remove(key: K)对set中匹配到的键值对进行删除操作。 | | 删除元素 | 通过remove(key: K)对set中匹配到的键值对进行删除操作。 |
| 删除元素 | 通过removeAt(index: number)对set中指定index的位置进行删除操作。 | | 删除元素 | 通过removeAt(index: number)对set中指定index的位置进行删除操作。 |
| 删除元素 | 通过clear()清空整个set集合。 | | 删除元素 | 通过clear()清空整个set集合。 |
...@@ -181,26 +181,26 @@ LightWeightSet进行增、删、改、查操作的相关API如下: ...@@ -181,26 +181,26 @@ LightWeightSet进行增、删、改、查操作的相关API如下:
[PlainArray](../reference/apis/js-apis-plainarray.md)可用来存储具有关联关系的键值对集合,存储元素中key是唯一的,并且对于PlainArray来说,其key的类型为number类型。每个key会对应一个value值,类型依据泛型的定义,PlainArray采用更加轻量级的结构,集合中的key值的查找依赖于二分查找算法,然后映射到其他数组中的value值。 [PlainArray](../reference/apis/js-apis-plainarray.md)可用来存储具有关联关系的键值对集合,存储元素中key是唯一的,并且对于PlainArray来说,其key的类型为number类型。每个key会对应一个value值,类型依据泛型的定义,PlainArray采用更加轻量级的结构,集合中的key值的查找依赖于二分查找算法,然后映射到其他数组中的value值。
初始默认容量大小为16,每次扩容大小为原始容量的2倍。PlainArray的查找策略基于二分查找法。 初始默认容量大小为16,每次扩容大小为原始容量的2倍。
PlainArray和[LightWeightMap](../reference/apis/js-apis-lightweightmap.md)都是用来存储键值对,且均采用轻量级结构,但PlainArray的key值类型只能为number类型。 PlainArray和[LightWeightMap](../reference/apis/js-apis-lightweightmap.md)都是用来存储键值对,且均采用轻量级结构,但PlainArray的key值类型只能为number类型。
当需要存储key值为number类型的键值对时,可以使用PlainArray。 当需要存储key值为number类型的键值对时,可以使用PlainArray。
PlainArray进行增、删、改、查操作的相关API如下: PlainArray进行增、删、改、查操作的常用API如下:
| 操作 | 描述 | | 操作 | 描述 |
| -------- | ------ | | -------- | ------ |
| 增加元素 | 通过add(key: number,value: T)函数每次在PlainArray增加一个键值对。 | | 增加元素 | 通过add(key: number,value: T)函数每次在PlainArray增加一个键值对。 |
| 访问元素 | 通过get(key: number)获取key对应的value值。 | | 访问元素 | 通过get(key: number)获取key对应的value值。 |
| 访问元素 | 通过getlndexOfKey(key: number)获取PlainArray中指定key的index。 | | 访问元素 | 通过getIndexOfKey(key: number)获取PlainArray中指定key的index。 |
| 访问元素 | 通过getlndexOfValue(value: T)获取PlainArray中指定value的index。 | | 访问元素 | 通过getIndexOfValue(value: T)获取PlainArray中指定value的index。 |
| 访问元素 | 通过getKeyAt(index: number)获取指定index对应的key值。 | | 访问元素 | 通过getKeyAt(index: number)获取指定index对应的key值。 |
| 访问元素 | 通过getValueAt(index: number)获取指定index对应的value值。 | | 访问元素 | 通过getValueAt(index: number)获取指定index对应的value值。 |
| 访问元素 | 通过forEach(callbackfn: (value: T, index?: number, PlainArray?: PlainArray&lt;T&gt;) =&gt;void, thisArg?: Object)访问整个plainarray的元素。 | | 访问元素 | 通过forEach(callbackFn: (value: T, index?: number, PlainArray?: PlainArray<T>) => void, thisArg?: Object)访问整个plainarray的元素。 |
| 访问元素 | 通过\[Symbol.iterator]():Iterablelterator&lt;[number, T]&gt;迭代器进行数据访问。 | | 访问元素 | 通过\[Symbol.iterator]():IterableIterator&lt;[number, T]&gt;迭代器进行数据访问。 |
| 修改元素 | 通过setValueAt(index:number, value: T)对指定index对应的value值进行修改操作。 | | 修改元素 | 通过setValueAt(index:number, value: T)对指定index对应的value值进行修改操作。 |
| 修改元素 | 通过forEach(callbackfn: (value: T, index?: number, PlainArray?: PlainArray&lt;T&gt;) =&gt; void,thisArg?: Object)对plainarray中元素进行修改操作。 | | 修改元素 | 通过forEach(callbackFn: (value: T, index?: number, PlainArray?: PlainArray<T>) => void, thisArg?: Object)对plainarray中元素进行修改操作。 |
| 删除元素 | 通过remove(key: number)对plainarray中匹配到的键值对进行删除操作。 | | 删除元素 | 通过remove(key: number)对plainarray中匹配到的键值对进行删除操作。 |
| 删除元素 | 通过removeAt(index: number)对plainarray中指定index的位置进行删除操作。 | | 删除元素 | 通过removeAt(index: number)对plainarray中指定index的位置进行删除操作。 |
| 删除元素 | 通过removeRangeFrom(index: number, size: number)对plainarray中指定范围内的元素进行删除操作。 | | 删除元素 | 通过removeRangeFrom(index: number, size: number)对plainarray中指定范围内的元素进行删除操作。 |
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
- [网络连接管理](net-connection-manager.md) - [网络连接管理](net-connection-manager.md)
- [MDNS管理](net-mdns.md) - [MDNS管理](net-mdns.md)
- [流量管理](net-statistics.md) - [流量管理](net-statistics.md)
- [VPN管理](net-vpn.md)
- IPC与RPC通信 - IPC与RPC通信
- [IPC与RPC通信概述](ipc-rpc-overview.md) - [IPC与RPC通信概述](ipc-rpc-overview.md)
- [IPC与RPC通信开发指导](ipc-rpc-development-guideline.md) - [IPC与RPC通信开发指导](ipc-rpc-development-guideline.md)
......
...@@ -262,7 +262,7 @@ ...@@ -262,7 +262,7 @@
| 默认设备 | 平板 | | 默认设备 | 平板 |
| -------- | -------- | | -------- | -------- |
| ![message_bubble_basic_default](figures/pic/message_bubble_basic_default.png) | ![message_bubble_basic_tablet](figures/pic/message_bubble_basic_tablet.png) | | ![message_bubble_basic_default](figures/message_bubble_basic_default.png) | ![message_bubble_basic_tablet](figures/message_bubble_basic_tablet.png) |
``` ```
...@@ -294,7 +294,7 @@ struct MessageBubble { ...@@ -294,7 +294,7 @@ struct MessageBubble {
| 默认设备 | 平板 | | 默认设备 | 平板 |
| -------- | -------- | | -------- | -------- |
| ![message_bubble_radius_default](figures/pic/message_bubble_radius_default.png) | ![message_bubble_radius_tablet](figures/pic/message_bubble_radius_tablet.png) | | ![message_bubble_radius_default](figures/message_bubble_radius_default.png) | ![message_bubble_radius_tablet](figures/message_bubble_radius_tablet.png) |
``` ```
...@@ -331,7 +331,7 @@ struct MessageBubble { ...@@ -331,7 +331,7 @@ struct MessageBubble {
| 默认设备 | 平板 | | 默认设备 | 平板 |
| -------- | -------- | | -------- | -------- |
| ![message_bubble_recv_default](figures/pic/message_bubble_recv_default.png) | ![message_bubble_recv_tablet](figures/pic/message_bubble_recv_tablet.png) | | ![message_bubble_recv_default](figures/message_bubble_recv_default.png) | ![message_bubble_recv_tablet](figures/message_bubble_recv_tablet.png) |
``` ```
...@@ -379,7 +379,7 @@ struct MessageBubble { ...@@ -379,7 +379,7 @@ struct MessageBubble {
| 默认设备 | 平板 | | 默认设备 | 平板 |
| -------- | -------- | | -------- | -------- |
| ![message_bubble_send_default](figures/pic/message_bubble_send_default.png) | ![message_bubble_send_tablet](figures/pic/message_bubble_send_tablet.png) | | ![message_bubble_send_default](figures/message_bubble_send_default.png) | ![message_bubble_send_tablet](figures/message_bubble_send_tablet.png) |
``` ```
......
...@@ -12,7 +12,7 @@ DevEco Studio的基本使用,请参考[DevEco Studio使用指南](../../quick- ...@@ -12,7 +12,7 @@ DevEco Studio的基本使用,请参考[DevEco Studio使用指南](../../quick-
参考[创建系统工程](https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/create_new_project-0000001053342414-V3?catalogVersion=V3),先创建出最基本的项目工程。可以看到DevEco Studio创建出的默认工程,仅包含一个的entry类型的模块。 参考[创建系统工程](https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/create_new_project-0000001053342414-V3?catalogVersion=V3),先创建出最基本的项目工程。可以看到DevEco Studio创建出的默认工程,仅包含一个的entry类型的模块。
![zh-cn_image_0000001267274204](figures/pic/zh-cn_image_0000001267274204.png) ![zh-cn_image_0000001267274204](figures/zh-cn_image_0000001267274204.png)
如果直接使用如下所示的平级目录进行模块管理,工程逻辑结构较混乱且模块间的依赖关系不够清晰,不利于开发及后期维护。 如果直接使用如下所示的平级目录进行模块管理,工程逻辑结构较混乱且模块间的依赖关系不够清晰,不利于开发及后期维护。
...@@ -53,7 +53,7 @@ DevEco Studio的基本使用,请参考[DevEco Studio使用指南](../../quick- ...@@ -53,7 +53,7 @@ DevEco Studio的基本使用,请参考[DevEco Studio使用指南](../../quick-
参考[开发系统 npm包](https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/creating_har_api8-0000001494155892-V3?catalogVersion=V3),新建三个npm模块,分别命名为common、feature1、feature2。参考[添加/删除Module](https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/add_new_module-0000001053223741-V3?catalogVersion=V3),新建一个entry类型的模块,假设命名为“wearable”(仅仅为了说明某一类产品)。示例如下: 参考[开发系统 npm包](https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/creating_har_api8-0000001494155892-V3?catalogVersion=V3),新建三个npm模块,分别命名为common、feature1、feature2。参考[添加/删除Module](https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/add_new_module-0000001053223741-V3?catalogVersion=V3),新建一个entry类型的模块,假设命名为“wearable”(仅仅为了说明某一类产品)。示例如下:
![zh-cn_image_0000001315434285](figures/pic/zh-cn_image_0000001315434285.png) ![zh-cn_image_0000001315434285](figures/zh-cn_image_0000001315434285.png)
> **说明:** > **说明:**
> - 在一个工程中同一个设备类型只支持一个Entry类型的模块。 > - 在一个工程中同一个设备类型只支持一个Entry类型的模块。
...@@ -70,7 +70,7 @@ DevEco Studio的基本使用,请参考[DevEco Studio使用指南](../../quick- ...@@ -70,7 +70,7 @@ DevEco Studio的基本使用,请参考[DevEco Studio使用指南](../../quick-
修改创建工程时默认的entry模块名称。在该模块上点击鼠标右键,依次选择”Refactor -&gt; Rename”,将名称修改为default。 修改创建工程时默认的entry模块名称。在该模块上点击鼠标右键,依次选择”Refactor -&gt; Rename”,将名称修改为default。
![zh-cn_image_0000001315914185](figures/pic/zh-cn_image_0000001315914185.png) ![zh-cn_image_0000001315914185](figures/zh-cn_image_0000001315914185.png)
### 修改Module类型及其设备类型 ### 修改Module类型及其设备类型
...@@ -80,12 +80,12 @@ DevEco Studio的基本使用,请参考[DevEco Studio使用指南](../../quick- ...@@ -80,12 +80,12 @@ DevEco Studio的基本使用,请参考[DevEco Studio使用指南](../../quick-
- 将default模块的deviceTypes配置为["default", "tablet"],同时将其type字段配置为entry。 - 将default模块的deviceTypes配置为["default", "tablet"],同时将其type字段配置为entry。
即default模块编译出的HAP在默认设备和平板上安装和运行。 即default模块编译出的HAP在默认设备和平板上安装和运行。
![zh-cn_image_0000001267914116](figures/pic/zh-cn_image_0000001267914116.png) ![zh-cn_image_0000001267914116](figures/zh-cn_image_0000001267914116.png)
- 将wearable模块的deviceTypes配置为["wearable"],同时将其type字段配置为entry。 - 将wearable模块的deviceTypes配置为["wearable"],同时将其type字段配置为entry。
即wearable模块编译出的HAP仅在智能穿戴设备上安装和运行。 即wearable模块编译出的HAP仅在智能穿戴设备上安装和运行。
![zh-cn_image_0000001267514192](figures/pic/zh-cn_image_0000001267514192.png) ![zh-cn_image_0000001267514192](figures/zh-cn_image_0000001267514192.png)
## 调整目录结构 ## 调整目录结构
...@@ -94,15 +94,15 @@ DevEco Studio的基本使用,请参考[DevEco Studio使用指南](../../quick- ...@@ -94,15 +94,15 @@ DevEco Studio的基本使用,请参考[DevEco Studio使用指南](../../quick-
在工程根目录(MyApplication)上点击鼠标右键,依次选择“New -&gt; Directory”新建子目录。创建product和features两个子目录。 在工程根目录(MyApplication)上点击鼠标右键,依次选择“New -&gt; Directory”新建子目录。创建product和features两个子目录。
![zh-cn_image_0000001266874320](figures/pic/zh-cn_image_0000001266874320.png) ![zh-cn_image_0000001266874320](figures/zh-cn_image_0000001266874320.png)
用鼠标左键将default目录拖拽到新建的product目录中,在IDE弹出的确认窗口中,点击“Refactor”即可。 用鼠标左键将default目录拖拽到新建的product目录中,在IDE弹出的确认窗口中,点击“Refactor”即可。
![zh-cn_image_0000001315714137](figures/pic/zh-cn_image_0000001315714137.png) ![zh-cn_image_0000001315714137](figures/zh-cn_image_0000001315714137.png)
按照同样的步骤,将wearable目录放到product目录中,将feature1和feature2放到features目录中。 按照同样的步骤,将wearable目录放到product目录中,将feature1和feature2放到features目录中。
![zh-cn_image_0000001316914105](figures/pic/zh-cn_image_0000001316914105.png) ![zh-cn_image_0000001316914105](figures/zh-cn_image_0000001316914105.png)
## 修改依赖关系 ## 修改依赖关系
...@@ -111,7 +111,7 @@ DevEco Studio的基本使用,请参考[DevEco Studio使用指南](../../quick- ...@@ -111,7 +111,7 @@ DevEco Studio的基本使用,请参考[DevEco Studio使用指南](../../quick-
配置依赖关系可以通过修改模块中的oh-package.json文件。如下图所示,通过修改default模块中的oh-package.json文件,使其可以使用common、feature1和feature2模块中的代码。更多详情参考[配置系统 npm包依赖](https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/creating_har_api9-0000001518082393-V3?catalogVersion=V3) 配置依赖关系可以通过修改模块中的oh-package.json文件。如下图所示,通过修改default模块中的oh-package.json文件,使其可以使用common、feature1和feature2模块中的代码。更多详情参考[配置系统 npm包依赖](https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/creating_har_api9-0000001518082393-V3?catalogVersion=V3)
![zh-cn_image_0000001267274208](figures/pic/zh-cn_image_0000001267274208.png) ![zh-cn_image_0000001267274208](figures/zh-cn_image_0000001267274208.png)
同样的,修改feature1和feature2模块中的oh-package.json文件,使其可以使用common模块中的代码。 同样的,修改feature1和feature2模块中的oh-package.json文件,使其可以使用common模块中的代码。
...@@ -131,13 +131,13 @@ DevEco Studio的基本使用,请参考[DevEco Studio使用指南](../../quick- ...@@ -131,13 +131,13 @@ DevEco Studio的基本使用,请参考[DevEco Studio使用指南](../../quick-
- 在default模块中,使用common模块新增的ComplexNumber类和Add函数。 - 在default模块中,使用common模块新增的ComplexNumber类和Add函数。
1. 在”common/src/main/ets”目录中,按照需要新增文件和自定义类和函数。 1. 在”common/src/main/ets”目录中,按照需要新增文件和自定义类和函数。
![zh-cn_image_0000001315434289](figures/pic/zh-cn_image_0000001315434289.png) ![zh-cn_image_0000001315434289](figures/zh-cn_image_0000001315434289.png)
2. 在”common/index.ets”文件中,申明需要export的类、函数的名称及在当前模块中的位置,否则其它模块无法使用。 2. 在”common/index.ets”文件中,申明需要export的类、函数的名称及在当前模块中的位置,否则其它模块无法使用。
![zh-cn_image_0000001315914189](figures/pic/zh-cn_image_0000001315914189.png) ![zh-cn_image_0000001315914189](figures/zh-cn_image_0000001315914189.png)
3. 在default模块中import和使用这些类和函数。注意提前在default模块的oh-package.json文件中配置对common模块的依赖关系。 3. 在default模块中import和使用这些类和函数。注意提前在default模块的oh-package.json文件中配置对common模块的依赖关系。
![zh-cn_image_0000001267914120](figures/pic/zh-cn_image_0000001267914120.png) ![zh-cn_image_0000001267914120](figures/zh-cn_image_0000001267914120.png)
> **说明:** > **说明:**
> 如果需要将HarmonyOS npm包发布供其他开发者使用,当前npm包可发布到npm官方中心仓和HarmonyOS npm专用仓,具体可参考[发布HarmonyOS npm包](https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/creating_har_api8-0000001494155892-V3?catalogVersion=V3)。 > 如果需要将HarmonyOS npm包发布供其他开发者使用,当前npm包可发布到npm官方中心仓和HarmonyOS npm专用仓,具体可参考[发布HarmonyOS npm包](https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/creating_har_api8-0000001494155892-V3?catalogVersion=V3)。
......
...@@ -78,19 +78,19 @@ interface DataChangeListener { ...@@ -78,19 +78,19 @@ interface DataChangeListener {
| 接口声明 | 参数类型 | 说明 | | 接口声明 | 参数类型 | 说明 |
| ------------------------------------------------------------ | -------------------------------------- | ------------------------------------------------------------ | | ------------------------------------------------------------ | -------------------------------------- | ------------------------------------------------------------ |
| onDataReloaded():&nbsp;void | - | 通知组件重新加载所有数据。 | | onDataReloaded():&nbsp;void | - | 通知组件重新加载所有数据。 |
| onDataAdded(index:&nbsp;number):void<sup>(deprecated)</sup> | number | 通知组件index的位置有数据添加。<br/>从API 8开始,建议使用onDataAdd。<br/>index:数据添加位置的索引值 |
| onDataMoved(from:&nbsp;number,&nbsp;to:&nbsp;number):&nbsp;void<sup>(deprecated)</sup> | from:&nbsp;number,<br/>to:&nbsp;number | 通知组件数据有移动。<br/>从API 8开始,建议使用onDataMove。<br/>from:&nbsp;数据移动起始位置,to:&nbsp;数据移动目标位置。<br/>**说明:**<br/>数据移动前后键值要保持不变,如果键值有变化,应使用删除数据和新增数据接口。 |
| onDataDeleted(index: number):void<sup>(deprecated)</sup> | number | 通知组件删除index位置的数据并刷新LazyForEach的展示内容。<br/>从API 8开始,建议使用onDataDelete。<br/>index:数据删除位置的索引值 |
| onDataChanged(index:&nbsp;number):&nbsp;void<sup>(deprecated)</sup> | number | 通知组件index的位置有数据有变化。<br/>从API 8开始,建议使用onDataChange。<br/>index:数据变化监听器。 |
| onDataAdd(index:&nbsp;number):&nbsp;void<sup>8+</sup> | number | 通知组件index的位置有数据添加。<br/>index:数据添加位置的索引值 | | onDataAdd(index:&nbsp;number):&nbsp;void<sup>8+</sup> | number | 通知组件index的位置有数据添加。<br/>index:数据添加位置的索引值 |
| onDataMove(from:&nbsp;number,&nbsp;to:&nbsp;number):&nbsp;void<sup>8+</sup> | from:&nbsp;number,<br/>to:&nbsp;number | 通知组件数据有移动。<br/>from:&nbsp;数据移动起始位置,to:&nbsp;数据移动目标位置。<br/>**说明:**<br/>数据移动前后键值要保持不变,如果键值有变化,应使用删除数据和新增数据接口。 | | onDataMove(from:&nbsp;number,&nbsp;to:&nbsp;number):&nbsp;void<sup>8+</sup> | from:&nbsp;number,<br/>to:&nbsp;number | 通知组件数据有移动。<br/>from:&nbsp;数据移动起始位置,to:&nbsp;数据移动目标位置。<br/>**说明:**<br/>数据移动前后键值要保持不变,如果键值有变化,应使用删除数据和新增数据接口。 |
| onDataDelete(index: number):void<sup>8+</sup> | number | 通知组件删除index位置的数据并刷新LazyForEach的展示内容。<br/>index:数据删除位置的索引值<br/>**说明:** <br/>需要保证dataSource中的对应数据已经在调用onDataDelete前删除,否则页面渲染将出现未定义的行为。 | | onDataDelete(index: number):void<sup>8+</sup> | number | 通知组件删除index位置的数据并刷新LazyForEach的展示内容。<br/>index:数据删除位置的索引值<br/>**说明:** <br/>需要保证dataSource中的对应数据已经在调用onDataDelete前删除,否则页面渲染将出现未定义的行为。 |
| onDataChange(index:&nbsp;number):&nbsp;void<sup>8+</sup> | number | 通知组件index的位置有数据有变化。<br/>index:数据变化位置的索引值 | | onDataChange(index:&nbsp;number):&nbsp;void<sup>8+</sup> | number | 通知组件index的位置有数据有变化。<br/>index:数据变化位置的索引值 |
| onDataAdded(index:&nbsp;number):void<sup>(deprecated)</sup> | number | 通知组件index的位置有数据添加。<br/>从API 8开始,建议使用onDataAdd。<br/>index:数据添加位置的索引值 |
| onDataMoved(from:&nbsp;number,&nbsp;to:&nbsp;number):&nbsp;void<sup>(deprecated)</sup> | from:&nbsp;number,<br/>to:&nbsp;number | 通知组件数据有移动。<br/>从API 8开始,建议使用onDataMove。<br/>from:&nbsp;数据移动起始位置,to:&nbsp;数据移动目标位置。<br/>**说明:**<br/>数据移动前后键值要保持不变,如果键值有变化,应使用删除数据和新增数据接口。 |
| onDataDeleted(index: number):void<sup>(deprecated)</sup> | number | 通知组件删除index位置的数据并刷新LazyForEach的展示内容。<br/>从API 8开始,建议使用onDataDelete。<br/>index:数据删除位置的索引值 |
| onDataChanged(index:&nbsp;number):&nbsp;void<sup>(deprecated)</sup> | number | 通知组件index的位置有数据有变化。<br/>从API 8开始,建议使用onDataChange。<br/>index:数据变化监听器。 |
## 使用限制 ## 使用限制
- LazyForEach必须在容器组件内使用,仅有List、Grid以及Swiper组件支持数据懒加载(即只加载可视部分以及其前后少量数据用于缓冲),其他组件仍然是一次性加载所有的数据。 - LazyForEach必须在容器组件内使用,仅有[List](../reference/arkui-ts/ts-container-list.md)[Grid](../reference/arkui-ts/ts-container-grid.md)以及[Swiper](../reference/arkui-ts/ts-container-swiper.md)组件支持数据懒加载(可配置cachedCount属性,即只加载可视部分以及其前后少量数据用于缓冲),其他组件仍然是一次性加载所有的数据。
- LazyForEach在每次迭代中,必须创建且只允许创建一个子组件。 - LazyForEach在每次迭代中,必须创建且只允许创建一个子组件。
...@@ -177,7 +177,7 @@ class BasicDataSource implements IDataSource { ...@@ -177,7 +177,7 @@ class BasicDataSource implements IDataSource {
} }
class MyDataSource extends BasicDataSource { class MyDataSource extends BasicDataSource {
private dataArray: string[] = ['/path/image0', '/path/image1', '/path/image2', '/path/image3']; private dataArray: string[] = [];
public totalCount(): number { public totalCount(): number {
return this.dataArray.length; return this.dataArray.length;
...@@ -201,6 +201,12 @@ class MyDataSource extends BasicDataSource { ...@@ -201,6 +201,12 @@ class MyDataSource extends BasicDataSource {
@Entry @Entry
@Component @Component
struct MyComponent { struct MyComponent {
aboutToAppear() {
for (var i = 100; i >= 80; i--) {
this.data.pushData(`Hello ${i}`)
}
}
private data: MyDataSource = new MyDataSource(); private data: MyDataSource = new MyDataSource();
build() { build() {
...@@ -208,15 +214,17 @@ struct MyComponent { ...@@ -208,15 +214,17 @@ struct MyComponent {
LazyForEach(this.data, (item: string) => { LazyForEach(this.data, (item: string) => {
ListItem() { ListItem() {
Row() { Row() {
Image(item).width('30%').height(50) Text(item).fontSize(50)
Text(item).fontSize(20).margin({ left: 10 }) .onAppear(() => {
console.info("appear:" + item)
})
}.margin({ left: 10, right: 10 }) }.margin({ left: 10, right: 10 })
} }
.onClick(() => { .onClick(() => {
this.data.pushData('/path/image' + this.data.totalCount()); this.data.pushData(`Hello ${this.data.totalCount()}`);
}) })
}, item => item) }, item => item)
} }.cachedCount(5)
} }
} }
``` ```
# 接口 # 接口
- [开发说明](development-intro.md) - [开发说明](development-intro.md)
...@@ -315,12 +315,23 @@ ...@@ -315,12 +315,23 @@
- [@ohos.net.sharing (网络共享管理)](js-apis-net-sharing.md) - [@ohos.net.sharing (网络共享管理)](js-apis-net-sharing.md)
- [@ohos.net.socket (Socket连接)](js-apis-socket.md) - [@ohos.net.socket (Socket连接)](js-apis-socket.md)
- [@ohos.net.statistics (流量管理)](js-apis-net-statistics.md) - [@ohos.net.statistics (流量管理)](js-apis-net-statistics.md)
- [@ohos.net.vpn (VPN管理)](js-apis-net-vpn.md)
- [@ohos.net.webSocket (WebSocket连接)](js-apis-webSocket.md) - [@ohos.net.webSocket (WebSocket连接)](js-apis-webSocket.md)
- [@ohos.request (上传下载)](js-apis-request.md) - [@ohos.request (上传下载)](js-apis-request.md)
- 通信与连接 - 通信与连接
- [@ohos.bluetooth.a2dp(蓝牙a2dp模块)(推荐)](js-apis-bluetooth-a2dp.md)
- [@ohos.bluetooth.access(蓝牙access模块)(推荐)](js-apis-bluetooth-access.md)
- [@ohos.bluetooth.baseProfile(蓝牙baseProfile模块)(推荐)](js-apis-bluetooth-baseProfile.md)
- [@ohos.bluetooth.ble(蓝牙ble模块)(推荐)](js-apis-bluetooth-ble.md)
- [@ohos.bluetooth.connection(蓝牙connection模块)(推荐)](js-apis-bluetooth-connection.md)
- [@ohos.bluetooth.constant(蓝牙constant模块)(推荐)](js-apis-bluetooth-constant.md)
- [@ohos.bluetooth.hfp(蓝牙hfp模块)(推荐)](js-apis-bluetooth-hfp.md)
- [@ohos.bluetooth.hid(蓝牙hid模块)(推荐)](js-apis-bluetooth-hid.md)
- [@ohos.bluetooth.pan(蓝牙pan模块)(推荐)](js-apis-bluetooth-pan.md)
- [@ohos.bluetooth.socket(蓝牙socket模块)(推荐)](js-apis-bluetooth-socket.md)
- [@ohos.bluetooth (蓝牙)(待停用)](js-apis-bluetooth.md) - [@ohos.bluetooth (蓝牙)(待停用)](js-apis-bluetooth.md)
- [@ohos.bluetoothManager (蓝牙)(推荐)](js-apis-bluetoothManager.md) - [@ohos.bluetoothManager (蓝牙)(待停用)](js-apis-bluetoothManager.md)
- [@ohos.connectedTag (有源标签)](js-apis-connectedTag.md) - [@ohos.connectedTag (有源标签)](js-apis-connectedTag.md)
- [@ohos.nfc.cardEmulation (标准NFC-cardEmulation)](js-apis-cardEmulation.md) - [@ohos.nfc.cardEmulation (标准NFC-cardEmulation)](js-apis-cardEmulation.md)
- [@ohos.nfc.controller (标准NFC)](js-apis-nfcController.md) - [@ohos.nfc.controller (标准NFC)](js-apis-nfcController.md)
...@@ -397,6 +408,7 @@ ...@@ -397,6 +408,7 @@
- [@ohos.multimodalInput.touchEvent (触摸输入事件)](js-apis-touchevent.md) - [@ohos.multimodalInput.touchEvent (触摸输入事件)](js-apis-touchevent.md)
- [@ohos.multimodalInput.shortKey(快捷键)](js-apis-shortKey.md) - [@ohos.multimodalInput.shortKey(快捷键)](js-apis-shortKey.md)
- [@ohos.power (系统电源管理)](js-apis-power.md) - [@ohos.power (系统电源管理)](js-apis-power.md)
- [@ohos.resourceschedule.deviceStandby (设备待机模块)](js-apis-resourceschedule-deviceStandby.md)
- [@ohos.runningLock (Runninglock锁)](js-apis-runninglock.md) - [@ohos.runningLock (Runninglock锁)](js-apis-runninglock.md)
- [@ohos.sensor (传感器)](js-apis-sensor.md) - [@ohos.sensor (传感器)](js-apis-sensor.md)
- [@ohos.settings (设置数据项名称)](js-apis-settings.md) - [@ohos.settings (设置数据项名称)](js-apis-settings.md)
......
...@@ -519,7 +519,7 @@ uiContext.runScopedTask( ...@@ -519,7 +519,7 @@ uiContext.runScopedTask(
### registerFont ### registerFont
registerFont(options: FontOptions): void registerFont(options: font.FontOptions): void
在字体管理中注册自定义字体。 在字体管理中注册自定义字体。
...@@ -594,7 +594,7 @@ font.getFontByName('Sans Italic') ...@@ -594,7 +594,7 @@ font.getFontByName('Sans Italic')
### getRectangleById ### getRectangleById
getRectangleById(id: string): ComponentUtils.ComponentInfo getRectangleById(id: string): componentUtils.ComponentInfo
获取组件大小、位置、平移缩放旋转及仿射矩阵属性信息。 获取组件大小、位置、平移缩放旋转及仿射矩阵属性信息。
...@@ -721,21 +721,19 @@ pushUrl(options: router.RouterOptions): Promise&lt;void&gt; ...@@ -721,21 +721,19 @@ pushUrl(options: router.RouterOptions): Promise&lt;void&gt;
```ts ```ts
let router = uiContext.getRouter(); let router = uiContext.getRouter();
router.pushUrl({ try {
url: 'pages/routerpage2', router.pushUrl({
params: { url: 'pages/routerpage2',
data1: 'message', params: {
data2: { data1: 'message',
data3: [123, 456, 789] data2: {
data3: [123, 456, 789]
}
} }
}
})
.then(() => {
// success
})
.catch(err => {
console.error(`pushUrl failed, code is ${err.code}, message is ${err.message}`);
}) })
} catch (err) {
console.error(`pushUrl failed, code is ${err.code}, message is ${err.message}`);
}
``` ```
### pushUrl ### pushUrl
...@@ -819,21 +817,19 @@ pushUrl(options: router.RouterOptions, mode: router.RouterMode): Promise&lt;void ...@@ -819,21 +817,19 @@ pushUrl(options: router.RouterOptions, mode: router.RouterMode): Promise&lt;void
```ts ```ts
let router = uiContext.getRouter(); let router = uiContext.getRouter();
router.pushUrl({ try {
url: 'pages/routerpage2', router.pushUrl({
params: { url: 'pages/routerpage2',
data1: 'message', params: {
data2: { data1: 'message',
data3: [123, 456, 789] data2: {
data3: [123, 456, 789]
}
} }
} }, router.RouterMode.Standard)
}, router.RouterMode.Standard) } catch (err) {
.then(() => { console.error(`pushUrl failed, code is ${err.code}, message is ${err.message}`);
// success }
})
.catch(err => {
console.error(`pushUrl failed, code is ${err.code}, message is ${err.message}`);
})
``` ```
### pushUrl ### pushUrl
...@@ -916,23 +912,21 @@ replaceUrl(options: router.RouterOptions): Promise&lt;void&gt; ...@@ -916,23 +912,21 @@ replaceUrl(options: router.RouterOptions): Promise&lt;void&gt;
```ts ```ts
let router = uiContext.getRouter(); let router = uiContext.getRouter();
router.replaceUrl({ try {
url: 'pages/detail', router.replaceUrl({
params: { url: 'pages/detail',
data1: 'message' params: {
} data1: 'message'
}) }
.then(() => {
// success
})
.catch(err => {
console.error(`replaceUrl failed, code is ${err.code}, message is ${err.message}`);
}) })
} catch (err) {
console.error(`replaceUrl failed, code is ${err.code}, message is ${err.message}`);
}
``` ```
### replaceUrl ### replaceUrl
replaceUrl(options: RouterOptions, callback: AsyncCallback&lt;void&gt;): void replaceUrl(options: router.RouterOptions, callback: AsyncCallback&lt;void&gt;): void
用应用内的某个页面替换当前页面,并销毁被替换的页面。 用应用内的某个页面替换当前页面,并销毁被替换的页面。
...@@ -1006,18 +1000,16 @@ replaceUrl(options: router.RouterOptions, mode: router.RouterMode): Promise&lt;v ...@@ -1006,18 +1000,16 @@ replaceUrl(options: router.RouterOptions, mode: router.RouterMode): Promise&lt;v
```ts ```ts
let router = uiContext.getRouter(); let router = uiContext.getRouter();
router.replaceUrl({ try {
url: 'pages/detail', router.replaceUrl({
params: { url: 'pages/detail',
data1: 'message' params: {
} data1: 'message'
}, router.RouterMode.Standard) }
.then(() => { }, router.RouterMode.Standard)
// success } catch (err) {
}) console.error(`replaceUrl failed, code is ${err.code}, message is ${err.message}`);
.catch(err => { }
console.error(`replaceUrl failed, code is ${err.code}, message is ${err.message}`);
})
``` ```
### replaceUrl ### replaceUrl
...@@ -1097,21 +1089,19 @@ pushNamedRoute(options: router.NamedRouterOptions): Promise&lt;void&gt; ...@@ -1097,21 +1089,19 @@ pushNamedRoute(options: router.NamedRouterOptions): Promise&lt;void&gt;
```ts ```ts
let router = uiContext.getRouter(); let router = uiContext.getRouter();
router.pushNamedRoute({ try {
name: 'myPage', router.pushNamedRoute({
params: { name: 'myPage',
data1: 'message', params: {
data2: { data1: 'message',
data3: [123, 456, 789] data2: {
data3: [123, 456, 789]
}
} }
}
})
.then(() => {
// success
})
.catch(err => {
console.error(`pushNamedRoute failed, code is ${err.code}, message is ${err.message}`);
}) })
} catch (err) {
console.error(`pushNamedRoute failed, code is ${err.code}, message is ${err.message}`);
}
``` ```
### pushNamedRoute ### pushNamedRoute
...@@ -1194,26 +1184,24 @@ pushNamedRoute(options: router.NamedRouterOptions, mode: router.RouterMode): Pro ...@@ -1194,26 +1184,24 @@ pushNamedRoute(options: router.NamedRouterOptions, mode: router.RouterMode): Pro
```ts ```ts
let router = uiContext.getRouter(); let router = uiContext.getRouter();
router.pushNamedRoute({ try {
name: 'myPage', router.pushNamedRoute({
params: { name: 'myPage',
data1: 'message', params: {
data2: { data1: 'message',
data3: [123, 456, 789] data2: {
data3: [123, 456, 789]
}
} }
} }, router.RouterMode.Standard)
}, router.RouterMode.Standard) } catch (err) {
.then(() => { console.error(`pushNamedRoute failed, code is ${err.code}, message is ${err.message}`);
// success }
})
.catch(err => {
console.error(`pushNamedRoute failed, code is ${err.code}, message is ${err.message}`);
})
``` ```
### pushNamedRoute ### pushNamedRoute
pushNamedRoute(options: NamedRouterOptions, mode: RouterMode, callback: AsyncCallback&lt;void&gt;): void pushNamedRoute(options: router.NamedRouterOptions, mode: RouterMode, callback: AsyncCallback&lt;void&gt;): void
跳转到指定的命名路由页面。 跳转到指定的命名路由页面。
...@@ -1291,18 +1279,16 @@ replaceNamedRoute(options: router.NamedRouterOptions): Promise&lt;void&gt; ...@@ -1291,18 +1279,16 @@ replaceNamedRoute(options: router.NamedRouterOptions): Promise&lt;void&gt;
```ts ```ts
let router = uiContext.getRouter(); let router = uiContext.getRouter();
router.replaceNamedRoute({ try {
name: 'myPage', router.replaceNamedRoute({
params: { name: 'myPage',
data1: 'message' params: {
} data1: 'message'
}) }
.then(() => {
// success
})
.catch(err => {
console.error(`replaceNamedRoute failed, code is ${err.code}, message is ${err.message}`);
}) })
} catch (err) {
console.error(`replaceNamedRoute failed, code is ${err.code}, message is ${err.message}`);
}
``` ```
### replaceNamedRoute ### replaceNamedRoute
...@@ -1375,30 +1361,28 @@ replaceNamedRoute(options: router.NamedRouterOptions, mode: router.RouterMode): ...@@ -1375,30 +1361,28 @@ replaceNamedRoute(options: router.NamedRouterOptions, mode: router.RouterMode):
| 错误码ID | 错误信息 | | 错误码ID | 错误信息 |
| --------- | ------- | | --------- | ------- |
| 100001 | if the pages are pushed too much. | | 100001 | if UI execution context not found, only throw in standard system. |
| 100004 | if the named route is not exist. | | 100004 | if the named route is not exist. |
**示例:** **示例:**
```ts ```ts
let router = uiContext.getRouter(); let router = uiContext.getRouter();
router.replaceNamedRoute({ try {
name: 'myPage', router.replaceNamedRoute({
params: { name: 'myPage',
data1: 'message' params: {
} data1: 'message'
}, router.RouterMode.Standard) }
.then(() => { }, router.RouterMode.Standard)
// success } catch (err) {
}) console.error(`replaceNamedRoute failed, code is ${err.code}, message is ${err.message}`);
.catch(err => { }
console.error(`replaceNamedRoute failed, code is ${err.code}, message is ${err.message}`);
})
``` ```
### replaceNamedRoute ### replaceNamedRoute
replaceNamedRoute(options: NamedRouterOptions, mode: RouterMode, callback: AsyncCallback&lt;void&gt;): void replaceNamedRoute(options: router.NamedRouterOptions, mode: router.RouterMode, callback: AsyncCallback&lt;void&gt;): void
用指定的命名路由页面替换当前页面,并销毁被替换的页面。 用指定的命名路由页面替换当前页面,并销毁被替换的页面。
...@@ -1441,7 +1425,7 @@ router.replaceNamedRoute({ ...@@ -1441,7 +1425,7 @@ router.replaceNamedRoute({
### back ### back
back(options?: router.RouterOptions ): void back(options: router.RouterOptions ): void
返回上一页面或指定的页面。 返回上一页面或指定的页面。
...@@ -1451,7 +1435,7 @@ back(options?: router.RouterOptions ): void ...@@ -1451,7 +1435,7 @@ back(options?: router.RouterOptions ): void
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| ------- | ------------------------------------------------------- | ---- | ------------------------------------------------------------ | | ------- | ------------------------------------------------------- | ---- | ------------------------------------------------------------ |
| options | [router.RouterOptions](js-apis-router.md#routeroptions) | | 返回页面描述信息,其中参数url指路由跳转时会返回到指定url的界面,如果页面栈上没有url页面,则不响应该情况。如果url未设置,则返回上一页,页面不会重新构建,页面栈里面的page不会回收,出栈后会被回收。 | | options | [router.RouterOptions](js-apis-router.md#routeroptions) | | 返回页面描述信息,其中参数url指路由跳转时会返回到指定url的界面,如果页面栈上没有url页面,则不响应该情况。如果url未设置,则返回上一页,页面不会重新构建,页面栈里面的page不会回收,出栈后会被回收。 |
**示例:** **示例:**
...@@ -1634,7 +1618,7 @@ try { ...@@ -1634,7 +1618,7 @@ try {
### showDialog ### showDialog
showDialog(options: promptAction.ShowDialogOptions, callback: AsyncCallback&lt;ShowDialogSuccessResponse&lt;): void showDialog(options: promptAction.ShowDialogOptions, callback: AsyncCallback&lt;promptAction.ShowDialogSuccessResponse&lt;): void
创建并显示对话框,对话框响应结果异步返回。 创建并显示对话框,对话框响应结果异步返回。
...@@ -1745,7 +1729,7 @@ try { ...@@ -1745,7 +1729,7 @@ try {
### showActionMenu ### showActionMenu
showActionMenu(options: promptAction.ActionMenuOptions, callback: AsyncCallback&lt;promptAction.ActionMenuSuccessResponse&gt;):void showActionMenu(options: promptAction.ActionMenuOptions, callback:promptAction.ActionMenuSuccessResponse):void
创建并显示操作菜单,菜单响应结果异步返回。 创建并显示操作菜单,菜单响应结果异步返回。
...@@ -1756,7 +1740,7 @@ showActionMenu(options: promptAction.ActionMenuOptions, callback: AsyncCallback& ...@@ -1756,7 +1740,7 @@ showActionMenu(options: promptAction.ActionMenuOptions, callback: AsyncCallback&
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------------------------------------------------ | ---- | ------------------ | | -------- | ------------------------------------------------------------ | ---- | ------------------ |
| options | [promptAction.ActionMenuOptions](js-apis-promptAction.md#actionmenuoptions) | 是 | 操作菜单选项。 | | options | [promptAction.ActionMenuOptions](js-apis-promptAction.md#actionmenuoptions) | 是 | 操作菜单选项。 |
| callback | AsyncCallback&lt;[promptAction.ActionMenuSuccessResponse](js-apis-promptAction.md#actionmenusuccessresponse)> | 是 | 菜单响应结果回调。 | | callback | [promptAction.ActionMenuSuccessResponse](js-apis-promptAction.md#actionmenusuccessresponse) | 是 | 菜单响应结果回调。 |
**错误码:** **错误码:**
......
...@@ -28,7 +28,7 @@ executeDrag(custom: CustomBuilder | DragItemInfo, dragInfo: DragInfo, callback: ...@@ -28,7 +28,7 @@ executeDrag(custom: CustomBuilder | DragItemInfo, dragInfo: DragInfo, callback:
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------------------------------------------------ | ---- | -------------------------------- | | -------- | ------------------------------------------------------------ | ---- | -------------------------------- |
| custom | [CustomBuilder](../arkui-ts/ts-types.md#custombuilder8) \| [DragItemInfo](../arkui-ts/ts-universal-events-drag-drop.md#dragiteminfo说明) | 是 | 拖拽发起后跟手效果所拖拽的对象。 | | custom | [CustomBuilder](../arkui-ts/ts-types.md#custombuilder8) \| [DragItemInfo](../arkui-ts/ts-universal-events-drag-drop.md#dragiteminfo说明) | 是 | 拖拽发起后跟手效果所拖拽的对象。 |
| dragInfo | [DragInfo](#draginfo说明) | 是 | 拖拽信息。 | | dragInfo | [DragInfo](#draginfo) | 是 | 拖拽信息。 |
| callback | AsyncCallback&lt;{event: [DragEvent](../arkui-ts/ts-universal-events-drag-drop.md#dragevent说明), extraParams: string}&gt; | 是 | 拖拽结束返回结果的回调。 | | callback | AsyncCallback&lt;{event: [DragEvent](../arkui-ts/ts-universal-events-drag-drop.md#dragevent说明), extraParams: string}&gt; | 是 | 拖拽结束返回结果的回调。 |
**示例:** **示例:**
...@@ -89,9 +89,9 @@ executeDrag(custom: CustomBuilder | DragItemInfo, dragInfo: DragInfo): Promise&l ...@@ -89,9 +89,9 @@ executeDrag(custom: CustomBuilder | DragItemInfo, dragInfo: DragInfo): Promise&l
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------------------------------------------------ | ---- | -------------------------------- | | -------- | ------------------------------------------------------------ | ---- | -------------------------------- |
| custom | [CustomBuilder](../arkui-ts/ts-types.md#custombuilder8) \| [DragItemInfo](../arkui-ts/ts-universal-events-drag-drop.md#dragiteminfo说明) | 是 | 拖拽发起后跟手效果所拖拽的对象。 | | custom | [CustomBuilder](../arkui-ts/ts-types.md#custombuilder8) \| [DragItemInfo](../arkui-ts/ts-universal-events-drag-drop.md#dragiteminfo说明) | 是 | 拖拽发起后跟手效果所拖拽的对象。 |
| dragInfo | [DragInfo](#draginfo说明) | 是 | 拖拽信息。 | | dragInfo | [DragInfo](#draginfo) | 是 | 拖拽信息。 |
**返回值:** **返回值:**
| 类型 | 说明 | | 类型 | 说明 |
| ------------------------------------------------------ | ------------------ | | ------------------------------------------------------ | ------------------ |
...@@ -169,7 +169,9 @@ struct DragControllerPage { ...@@ -169,7 +169,9 @@ struct DragControllerPage {
} }
``` ```
## DragInfo说明 ## DragInfo
**系统能力:** SystemCapability.ArkUI.ArkUI.Full
发起拖拽所需要的属性和拖拽时携带的信息。 发起拖拽所需要的属性和拖拽时携带的信息。
......
...@@ -57,7 +57,7 @@ struct Index { ...@@ -57,7 +57,7 @@ struct Index {
Row() { Row() {
Column() { Column() {
Image((<LayeredDrawableDescriptor> (this.resManager.getDrawableDescriptor($r('app.media.icon').id)))) Image((<LayeredDrawableDescriptor> (this.resManager.getDrawableDescriptor($r('app.media.icon').id))))
Image(((<LayeredDrawableDescriptor> (this.resManager.getDrawableDescriptor($r('app.media.drawable') Image(((<LayeredDrawableDescriptor> (this.resManager.getDrawableDescriptor($r('app.media.icon')
.id))).getForeground()).getPixelMap()) .id))).getForeground()).getPixelMap())
}.height('50%') }.height('50%')
}.width('50%') }.width('50%')
...@@ -81,7 +81,7 @@ getPixelMap(): image.PixelMap; ...@@ -81,7 +81,7 @@ getPixelMap(): image.PixelMap;
**示例:** **示例:**
```ts ```ts
let resManager = getContext().resourceManager let resManager = getContext().resourceManager
pixmap: PixelMap = (<DrawableDescriptor> (resManager.getDrawableDescriptor($r('app.media.icon') let pixmap: PixelMap = (<DrawableDescriptor> (resManager.getDrawableDescriptor($r('app.media.icon')
.id))).getPixelMap(); .id))).getPixelMap();
``` ```
...@@ -101,7 +101,7 @@ getPixelMap(): image.PixelMap; ...@@ -101,7 +101,7 @@ getPixelMap(): image.PixelMap;
**示例:** **示例:**
```ts ```ts
let resManager = getContext().resourceManager let resManager = getContext().resourceManager
pixmap: PixelMap = (<LayeredDrawableDescriptor> (resManager.getDrawableDescriptor($r('app.media.drawable') let pixmap: PixelMap = (<LayeredDrawableDescriptor> (resManager.getDrawableDescriptor($r('app.media.icon')
.id))).getPixelMap(); .id))).getPixelMap();
``` ```
...@@ -121,7 +121,7 @@ getForeground(): DrawableDescriptor; ...@@ -121,7 +121,7 @@ getForeground(): DrawableDescriptor;
**示例:** **示例:**
```ts ```ts
let resManager = getContext().resourceManager let resManager = getContext().resourceManager
drawable: DrawableDescriptor = (<LayeredDrawableDescriptor> (resManager.getDrawableDescriptor($r('app.media.drawable') let drawable: DrawableDescriptor = (<LayeredDrawableDescriptor> (resManager.getDrawableDescriptor($r('app.media.icon')
.id))).getForeground(); .id))).getForeground();
``` ```
...@@ -141,7 +141,7 @@ getBackground(): DrawableDescriptor; ...@@ -141,7 +141,7 @@ getBackground(): DrawableDescriptor;
**示例:** **示例:**
```ts ```ts
let resManager = getContext().resourceManager let resManager = getContext().resourceManager
drawable: DrawableDescriptor = (<LayeredDrawableDescriptor> (resManager.getDrawableDescriptor($r('app.media.drawable') drawable: DrawableDescriptor = (<LayeredDrawableDescriptor> (resManager.getDrawableDescriptor($r('app.media.icon')
.id))).getBackground(); .id))).getBackground();
``` ```
...@@ -161,11 +161,11 @@ getMask(): DrawableDescriptor; ...@@ -161,11 +161,11 @@ getMask(): DrawableDescriptor;
**示例:** **示例:**
```ts ```ts
let resManager = getContext().resourceManager let resManager = getContext().resourceManager
drawable: DrawableDescriptor = (<LayeredDrawableDescriptor> (resManager.getDrawableDescriptor($r('app.media.drawable') let drawable: DrawableDescriptor = (<LayeredDrawableDescriptor> (resManager.getDrawableDescriptor($r('app.media.icon')
.id))).getMask(); .id))).getMask();
``` ```
## LayeredDrawableDescriptor.getMashClipPath ## LayeredDrawableDescriptor.getMaskClipPath
static getMashClipPath(): string static getMaskClipPath(): string
LayeredDrawableDescriptor的静态方法,获取系统内置的裁切路径参数。 LayeredDrawableDescriptor的静态方法,获取系统内置的裁切路径参数。
...@@ -179,7 +179,7 @@ LayeredDrawableDescriptor的静态方法,获取系统内置的裁切路径参 ...@@ -179,7 +179,7 @@ LayeredDrawableDescriptor的静态方法,获取系统内置的裁切路径参
**示例:** **示例:**
```ts ```ts
Image($r('app.media.testImg')) Image($r('app.media.icon'))
.width('200px').height('200px') .width('200px').height('200px')
.clip(new Path({commands:LayeredDrawableDescriptor.getMaskClipPath()})) .clip(new Path({commands:LayeredDrawableDescriptor.getMaskClipPath()}))
``` ```
\ No newline at end of file
# @ohos.bluetooth.a2dp (蓝牙a2dp模块)
a2dp模块提供了访问蓝牙音频接口的方法。
> **说明:**
>
> 本模块首批接口从API version 10开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
## 导入模块
```js
import a2dp from '@ohos.bluetooth.a2dp';
```
## a2dp.createA2dpSrcProfile<a name="createA2dpSrcProfile"></a>
createA2dpSrcProfile(): A2dpSourceProfile
创建a2dp profile实例。
**系统能力**:SystemCapability.Communication.Bluetooth.Core。
**返回值:**
| 类型 | 说明 |
| ----------------------------- | ---------- |
| A2dpSourceProfile | 返回该profile的实例。 |
**示例:**
```js
try {
let a2dpProfile = a2dp.createA2dpSrcProfile();
console.info('a2dp success');
} catch (err) {
console.error('errCode: ' + err.code + ', errMessage: ' + err.message);
}
```
## A2dpSourceProfile
使用A2dpSourceProfile方法之前需要创建该类的实例进行操作,通过createA2dpSrcProfile()方法构造此实例。
### connect<a name="a2dp-connect"></a>
connect(deviceId: string): void
发起设备的A2dp服务连接请求。
**系统接口**:此接口为系统接口。
**需要权限**:ohos.permission.ACCESS_BLUETOOTH
**系统能力**:SystemCapability.Communication.Bluetooth.Core。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | ------- |
| deviceId | string | 是 | 远端设备地址。 |
**错误码**
以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)
| 错误码ID | 错误信息 |
| -------- | ---------------------------- |
|2900001 | Service stopped. |
|2900003 | Bluetooth switch is off. |
|2900004 | Profile is not supported. |
|2900099 | Operation failed. |
**示例:**
```js
try {
let a2dpSrc = a2dp.createA2dpSrcProfile();
a2dpSrc.connect('XX:XX:XX:XX:XX:XX');
} catch (err) {
console.error('errCode: ' + err.code + ', errMessage: ' + err.message);
}
```
### disconnect<a name="a2dp-disconnect"></a>
disconnect(deviceId: string): void
断开设备的a2dp服务连接。
**系统接口**:此接口为系统接口。
**需要权限**:ohos.permission.ACCESS_BLUETOOTH
**系统能力**:SystemCapability.Communication.Bluetooth.Core。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | ------- |
| deviceId | string | 是 | 远端设备地址。 |
**错误码**
以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)
| 错误码ID | 错误信息 |
| -------- | ---------------------------- |
|2900001 | Service stopped. |
|2900003 | Bluetooth switch is off. |
|2900004 | Profile is not supported. |
|2900099 | Operation failed. |
**示例:**
```js
try {
let a2dpSrc = a2dp.createA2dpSrcProfile();
a2dpSrc.disconnect('XX:XX:XX:XX:XX:XX');
} catch (err) {
console.error('errCode: ' + err.code + ', errMessage: ' + err.message);
}
```
### getPlayingState
getPlayingState(deviceId: string): PlayingState
获取设备的播放状态。
**需要权限**:ohos.permission.ACCESS_BLUETOOTH
**系统能力**:SystemCapability.Communication.Bluetooth.Core。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | ------- |
| device | string | 是 | 远端设备地址。 |
**返回值:**
| 类型 | 说明 |
| ----------------------------- | ---------- |
| [PlayingState](#PlayingState) | 远端设备的播放状态。 |
**错误码**
以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)
| 错误码ID | 错误信息 |
| -------- | ---------------------------- |
|2900001 | Service stopped. |
|2900003 | Bluetooth switch is off. |
|2900004 | Profile is not supported. |
|2900099 | Operation failed. |
**示例:**
```js
try {
let a2dpSrc = a2dp.createA2dpSrcProfile();
let state = a2dpSrc.getPlayingState('XX:XX:XX:XX:XX:XX');
} catch (err) {
console.error('errCode: ' + err.code + ', errMessage: ' + err.message);
}
```
## PlayingState<a name="PlayingState"></a>
枚举,蓝牙A2DP 播放状态。
**系统能力**:SystemCapability.Communication.Bluetooth.Core。
| 名称 | 值 | 说明 |
| ----------------- | ------ | ------- |
| STATE_NOT_PLAYING | 0x0000 | 表示未播放。 |
| STATE_PLAYING | 0x0001 | 表示正在播放。 |
\ No newline at end of file
# @ohos.bluetooth.access (蓝牙access模块)
access模块提供了打开和关闭蓝牙、获取蓝牙状态的方法。
> **说明:**
>
> 本模块首批接口从API version 10开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
## 导入模块
```js
import access from '@ohos.bluetooth.access';
```
## access.enableBluetooth<a name="enableBluetooth"></a>
enableBluetooth(): void
开启蓝牙。
**需要权限**:ohos.permission.ACCESS_BLUETOOTH
**系统能力**:SystemCapability.Communication.Bluetooth.Core。
**错误码**
以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)
| 错误码ID | 错误信息 |
| -------- | ------------------ |
|2900001 | Service stopped. |
|2900099 | Operation failed. |
**示例:**
```js
try {
access.enableBluetooth();
} catch (err) {
console.error('errCode: ' + err.code + ', errMessage: ' + err.message);
}
```
## access.disableBluetooth<a name="disableBluetooth"></a>
disableBluetooth(): void
关闭蓝牙。
**需要权限**:ohos.permission.ACCESS_BLUETOOTH
**系统能力**:SystemCapability.Communication.Bluetooth.Core。
**错误码**
以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)
|错误码ID | 错误信息 |
| -------- | ------------------ |
|2900001 | Service stopped. |
|2900099 | Operation failed. |
**示例:**
```js
try {
access.disableBluetooth();
} catch (err) {
console.error('errCode: ' + err.code + ', errMessage: ' + err.message);
}
```
## access.getState<a name="getState"></a>
getState(): BluetoothState
获取蓝牙开关状态。
**需要权限**:ohos.permission.ACCESS_BLUETOOTH
**系统能力**:SystemCapability.Communication.Bluetooth.Core。
**返回值:**
| 类型 | 说明 |
| --------------------------------- | ---------------- |
| [BluetoothState](#bluetoothstate) | 表示蓝牙开关状态。 |
**错误码**
以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)
|错误码ID | 错误信息 |
| -------- | ------------------ |
|2900001 | Service stopped. |
|2900099 | Operation failed. |
**示例:**
```js
try {
let state = access.getState();
} catch (err) {
console.error('errCode: ' + err.code + ', errMessage: ' + err.message);
}
```
## access.on('stateChange')<a name="stateChange"></a>
on(type: "stateChange", callback: Callback&lt;BluetoothState&gt;): void
订阅蓝牙设备开关状态事件。
**需要权限**:ohos.permission.ACCESS_BLUETOOTH
**系统能力**:SystemCapability.Communication.Bluetooth.Core。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------------------------------------- | ----- | ---------------------------------------------------------- |
| type | string | 是 | 填写"stateChange"字符串,表示蓝牙状态改变事件。 |
| callback | Callback&lt;[BluetoothState](#bluetoothstate)&gt; | 是 | 表示回调函数的入参,蓝牙状态。回调函数由用户创建通过该接口注册。 |
**错误码**
以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)
|错误码ID | 错误信息 |
| -------- | ------------------ |
|2900099 | Operation failed. |
**示例:**
```js
function onReceiveEvent(data) {
console.info('bluetooth state = '+ JSON.stringify(data));
}
try {
access.on('stateChange', onReceiveEvent);
} catch (err) {
console.error('errCode: ' + err.code + ', errMessage: ' + err.message);
}
```
## access.off('stateChange')<a name="stateChange"></a>
off(type: "stateChange", callback?: Callback&lt;BluetoothState&gt;): void
取消订阅蓝牙设备开关状态事件。
**需要权限**:ohos.permission.ACCESS_BLUETOOTH
**系统能力**:SystemCapability.Communication.Bluetooth.Core。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ---------------------------------------- | ---- | ---------------------------------------- |
| type | string | 是 | 填写"stateChange"字符串,表示蓝牙状态改变事件。 |
| callback | Callback&lt;[BluetoothState](#bluetoothstate)&gt; | 否 | 表示取消订阅蓝牙状态改变事件上报。不填该参数则取消订阅该type对应的所有回调。 |
**错误码**
以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)
| 错误码ID | 错误信息 |
| -------- | ---------------------------- |
|2900099 | Operation failed. |
**示例:**
```js
function onReceiveEvent(data) {
console.info('bluetooth state = '+ JSON.stringify(data));
}
try {
access.on('stateChange', onReceiveEvent);
access.off('stateChange', onReceiveEvent);
} catch (err) {
console.error('errCode: ' + err.code + ', errMessage: ' + err.message);
}
```
## BluetoothState<a name="BluetoothState"></a>
枚举,蓝牙开关状态。
**系统能力**:SystemCapability.Communication.Bluetooth.Core。
| 名称 | 值 | 说明 |
| --------------------- | ---- | ------------------ |
| STATE_OFF | 0 | 表示蓝牙已关闭。 |
| STATE_TURNING_ON | 1 | 表示蓝牙正在打开。 |
| STATE_ON | 2 | 表示蓝牙已打开。 |
| STATE_TURNING_OFF | 3 | 表示蓝牙正在关闭。 |
| STATE_BLE_TURNING_ON | 4 | 表示蓝牙正在打开LE-only模式。 |
| STATE_BLE_ON | 5 | 表示蓝牙正处于LE-only模式。 |
| STATE_BLE_TURNING_OFF | 6 | 表示蓝牙正在关闭LE-only模式。 |
# @ohos.bluetooth.baseProfile (蓝牙baseProfile模块)
baseProfile模块提供了基础的profile方法。
> **说明:**
>
> 本模块首批接口从API version 10开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
## 导入模块
```js
import baseProfile from '@ohos.bluetooth.baseProfile';
```
## ConnectionStrategy<a name="ConnectionStrategy"></a>
枚举,表示Profile的连接策略。
**系统接口:** 此接口为系统接口。
**系统能力**:SystemCapability.Communication.Bluetooth.Core。
| 名称 | 值 | 说明 |
| -------------------------------- | ------ | --------------- |
| CONNECTION_STRATEGY_UNSUPPORTED | 0 | 当设备未配对时的默认连接策略。<br/>此接口为系统接口。 |
| CONNECTION_STRATEGY_ALLOWED | 1 | 设备允许接受或发起配对时的连接策略。<br/>此接口为系统接口。 |
| CONNECTION_STRATEGY_FORBIDDEN | 2 | 设备不允许接受或发起配对时的连接策略。<br/>此接口为系统接口。 |
## StateChangeParam<a name="StateChangeParam"></a>
描述profile状态改变参数。
**系统能力**:SystemCapability.Communication.Bluetooth.Core。
| 名称 | 类型 | 可读 | 可写 | 说明 |
| -------- | ----------------------------- | ---- | ---- | ------------------------------- |
| deviceId | string | 是 | 否 | 表示蓝牙设备地址。 |
| state | ProfileConnectionState | 是 | 否 | 表示蓝牙设备的profile连接状态。 |
## baseProfile.setConnectionStrategy<a name="setConnectionStrategy"></a>
setConnectionStrategy(deviceId: string, strategy: ConnectionStrategy, callback: AsyncCallback&lt;void&gt;): void
设置该设备Profile的连接策略。
**系统接口**:此接口为系统接口。
**需要权限**:ohos.permission.ACCESS_BLUETOOTH 和 ohos.permission.MANAGE_BLUETOOTH
**系统能力**:SystemCapability.Communication.Bluetooth.Core。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ------ | ---- | ----------------------------------- |
| deviceId | string | 是 | 表示配对的远端设备地址,例如:"XX:XX:XX:XX:XX:XX"。 |
| strategy | [ConnectionStrategy](#connectionstrategy) | 是 |Profile的连接策略。 |
| callback | AsyncCallback&lt;void&gt; | 是 | 回调函数。当设置成功,err为undefined,否则为错误对象。 |
**错误码**
以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)
| 错误码ID | 错误信息 |
| -------- | ---------------------------- |
|2900001 | Service stopped. |
|2900003 | Bluetooth switch is off. |
|2900004 | Profile is not supported. |
|2900099 | Operation failed. |
**示例:**
```js
import a2dp from '@ohos.bluetooth.a2dp';
try {
let a2dpSrc = a2dp.createA2dpSrcProfile();
let setRet = a2dpSrc.setConnectionStrategy('XX:XX:XX:XX:XX:XX', 0, (err, data) => {
console.info('setConnectionStrategy, err: ' + JSON.stringify(err) + ', data: ' + JSON.stringify(data));
});
} catch (err) {
console.error('errCode: ' + err.code + ', errMessage: ' + err.message);
}
```
## baseProfile.setConnectionStrategy<a name="setConnectionStrategy"></a>
setConnectionStrategy(deviceId: string, strategy: ConnectionStrategy): Promise&lt;void&gt;
设置该设备Profile的连接策略。
**系统接口**:此接口为系统接口。
**需要权限**:ohos.permission.ACCESS_BLUETOOTH 和 ohos.permission.MANAGE_BLUETOOTH
**系统能力**:SystemCapability.Communication.Bluetooth.Core。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ------ | ---- | ----------------------------------- |
| deviceId | string | 是 | 表示配对的远端设备地址,例如:"XX:XX:XX:XX:XX:XX"。 |
| strategy | [ConnectionStrategy](#connectionstrategy) | 是 |Profile的连接策略。 |
**返回值:**
| 类型 | 说明 |
| ------------------- | ------------- |
| Promise&lt;void&gt; | 返回promise对象。 |
**错误码**
以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)
| 错误码ID | 错误信息 |
| -------- | ---------------------------- |
|2900001 | Service stopped. |
|2900003 | Bluetooth switch is off. |
|2900004 | Profile is not supported. |
|2900099 | Operation failed. |
**示例:**
```js
import a2dp from '@ohos.bluetooth.a2dp';
try {
let a2dpSrc = a2dp.createA2dpSrcProfile();
let setRet = a2dpSrc.setConnectionStrategy('XX:XX:XX:XX:XX:XX', 1).then((data) => {
console.info('setConnectionStrategy');
}, (err) => {
console.error('setConnectionStrategy errCode: ' + err.code + ', errMessage: ' + err.message);
});
} catch (err) {
console.error('errCode: ' + err.code + ', errMessage: ' + err.message);
}
```
## baseProfile.getConnectionStrategy<a name="getConnectionStrategy"></a>
getConnectionStrategy(deviceId: string, callback: AsyncCallback&lt;ConnectionStrategy&gt;): void
获取该Profile的连接策略。
**系统接口**:此接口为系统接口。
**需要权限**:ohos.permission.ACCESS_BLUETOOTH 和 ohos.permission.MANAGE_BLUETOOTH
**系统能力**:SystemCapability.Communication.Bluetooth.Core。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ------ | ---- | ----------------------------------- |
| deviceId | string | 是 | 表示配对的远端设备地址,例如:"XX:XX:XX:XX:XX:XX"。 |
| callback | AsyncCallback&lt;[ConnectionStrategy](#connectionstrategy)&gt; | 是 | 回调函数。当获取策略成功,err为undefined,否则为错误对象。 |
**错误码**
以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)
| 错误码ID | 错误信息 |
| -------- | ---------------------------- |
|2900001 | Service stopped. |
|2900003 | Bluetooth switch is off. |
|2900004 | Profile is not supported. |
|2900099 | Operation failed. |
**示例:**
```js
import a2dp from '@ohos.bluetooth.a2dp';
try {
let a2dpSrc = a2dp.createA2dpSrcProfile();
let setRet = a2dpSrc.getConnectionStrategy('XX:XX:XX:XX:XX:XX', 0, (err, data) => {
console.info('getConnectionStrategy, err: ' + JSON.stringify(err) + ', data: ' + JSON.stringify(data));
});
} catch (err) {
console.error('errCode: ' + err.code + ', errMessage: ' + err.message);
}
```
## baseProfile.getConnectionStrategy<a name="getConnectionStrategy"></a>
getConnectionStrategy(deviceId: string): Promise&lt;ConnectionStrategy&gt;
获取该Profile的连接策略。
**系统接口**:此接口为系统接口。
**需要权限**:ohos.permission.ACCESS_BLUETOOTH 和 ohos.permission.MANAGE_BLUETOOTH
**系统能力**:SystemCapability.Communication.Bluetooth.Core。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ------ | ---- | ----------------------------------- |
| deviceId | string | 是 | 表示配对的远端设备地址,例如:"XX:XX:XX:XX:XX:XX"。 |
**返回值:**
| 类型 | 说明 |
| ------------------- | ------------- |
| Promise&lt;[ConnectionStrategy](#connectionstrategy)&gt; | 返回promise对象。 |
**错误码**
以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)
| 错误码ID | 错误信息 |
| -------- | ---------------------------- |
|2900001 | Service stopped. |
|2900003 | Bluetooth switch is off. |
|2900004 | Profile is not supported. |
|2900099 | Operation failed. |
**示例:**
```js
import a2dp from '@ohos.bluetooth.a2dp';
try {
let a2dpSrc = a2dp.createA2dpSrcProfile();
let setRet = a2dpSrc.getConnectionStrategy('XX:XX:XX:XX:XX:XX', 1).then((data) => {
console.info('getConnectionStrategy');
}, (error) => {
console.error('getConnectionStrategy errCode: ' + err.code + ', errMessage: ' + err.message);
});
} catch (err) {
console.error('errCode: ' + err.code + ', errMessage: ' + err.message);
}
```
## baseProfile.getConnectedDevices<a name="getConnectedDevices"></a>
getConnectedDevices(): Array&lt;string&gt;
获取已连接设备列表。
**需要权限**:ohos.permission.ACCESS_BLUETOOTH
**系统能力**:SystemCapability.Communication.Bluetooth.Core。
**返回值:**
| 类型 | 说明 |
| ------------------- | ------------------- |
| Array&lt;string&gt; | 返回当前已连接设备的地址。 |
**错误码**
以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)
| 错误码ID | 错误信息 |
| -------- | ---------------------------- |
|2900001 | Service stopped. |
|2900003 | Bluetooth switch is off. |
|2900004 | Profile is not supported. |
|2900099 | Operation failed. |
**示例:**
```js
import a2dp from '@ohos.bluetooth.a2dp';
try {
let a2dpSrc = a2dp.createA2dpSrcProfile();
let retArray = a2dpSrc.getConnectedDevices();
} catch (err) {
console.error("errCode:" + err.code + ",errMessage:" + err.message);
}
```
## baseProfile.getConnectionState<a name="getConnectionState"></a>
getConnectionState(deviceId: string): ProfileConnectionState
获取设备profile的连接状态。
**需要权限**:ohos.permission.ACCESS_BLUETOOTH
**系统能力**:SystemCapability.Communication.Bluetooth.Core。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | ------- |
| deviceId | string | 是 | 远端设备地址。 |
**返回值:**
| 类型 | 说明 |
| ------------------------------------------------- | ----------------------- |
| [ProfileConnectionState](js-apis-bluetooth-constant.md#profileconnectionstate) | 返回profile的连接状态。 |
**错误码**
以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)
| 错误码ID | 错误信息 |
| -------- | ---------------------------- |
|2900001 | Service stopped. |
|2900003 | Bluetooth switch is off. |
|2900004 | Profile is not supported. |
|2900099 | Operation failed. |
**示例:**
```js
import a2dp from '@ohos.bluetooth.a2dp';
try {
let a2dpSrc = a2dp.createA2dpSrcProfile();
let ret = a2dpSrc.getConnectionState('XX:XX:XX:XX:XX:XX');
} catch (err) {
console.error('errCode: ' + err.code + ', errMessage: ' + err.message);
}
```
## baseProfile.on('connectionStateChange')
on(type: 'connectionStateChange', callback: Callback&lt;StateChangeParam&gt;): void
订阅连接状态变化事件。
**需要权限**:ohos.permission.ACCESS_BLUETOOTH
**系统能力**:SystemCapability.Communication.Bluetooth.Core。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ---------------------------------------- | ---- | ---------------------------------------- |
| type | string | 是 | 填写"connectionStateChange"字符串,表示连接状态变化事件。 |
| callback | Callback&lt;[StateChangeParam](#statechangeparam)&gt; | 是 | 表示回调函数的入参。 |
**示例:**
```js
import a2dp from '@ohos.bluetooth.a2dp';
try {
function onReceiveEvent(data) {
console.info('a2dp state = '+ JSON.stringify(data));
}
let a2dpSrc = a2dp.createA2dpSrcProfile();
a2dpSrc.on('connectionStateChange', onReceiveEvent);
} catch (err) {
console.error('errCode: ' + err.code + ', errMessage: ' + err.message);
}
```
## baseProfile.off('connectionStateChange')
off(type: 'connectionStateChange', callback?: Callback&lt;[StateChangeParam](#StateChangeParam)&gt;): void
取消订阅a2dp连接状态变化事件。
**需要权限**:ohos.permission.ACCESS_BLUETOOTH
**系统能力**:SystemCapability.Communication.Bluetooth.Core。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ---------------------------------------- | ---- | ---------------------------------------- |
| type | string | 是 | 填写"connectionStateChange"字符串,表示连接状态变化事件。 |
| callback | Callback&lt;[StateChangeParam](#StateChangeParam)&gt; | 否 | 表示回调函数的入参。 |
**示例:**
```js
import a2dp from '@ohos.bluetooth.a2dp';
try {
function onReceiveEvent(data) {
console.info('a2dp state = '+ JSON.stringify(data));
}
let a2dpSrc = a2dp.createA2dpSrcProfile();
a2dpSrc.on('connectionStateChange', onReceiveEvent);
a2dpSrc.off('connectionStateChange', onReceiveEvent);
} catch (err) {
console.error('errCode: ' + err.code + ', errMessage: ' + err.message);
}
```
\ No newline at end of file
# @ohos.bluetooth.constant (蓝牙constant模块)
constant模块提供了蓝牙中常量的定义。
> **说明:**
>
> 本模块首批接口从API version 10开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
## 导入模块
```js
import constant from '@ohos.bluetooth.constant';
```
## ProfileId<a name="ProfileId"></a>
蓝牙profile枚举。
**系统能力**:SystemCapability.Communication.Bluetooth.Core。
| 名称 | 值 | 说明 |
| -------------------------------- | ------ | --------------- |
| PROFILE_A2DP_SOURCE | 1 | 表示A2DP profile。 |
| PROFILE_HANDSFREE_AUDIO_GATEWAY | 4 | 表示HFP profile。 |
| PROFILE_HID_HOST | 6 | 表示HID profile。 |
| PROFILE_PAN_NETWORK | 7 | 表示PAN profile。 |
## ProfileUuids<a name="ProfileUuids"></a>
枚举,表示Profile的UUID。
**系统接口:** 此接口为系统接口。
**系统能力**:SystemCapability.Communication.Bluetooth.Core。
| 名称 | 值 | 说明 |
| ------------------------------------| ------ | --------------- |
| PROFILE_UUID_HFP_AG | '0000111F-0000-1000-8000-00805F9B34FB' | 代表HFPAG Profile的UUID。<br/>此接口为系统接口。 |
| PROFILE_UUID_HFP_HF | '0000111E-0000-1000-8000-00805F9B34FB' | 代表HFPHF Profile的UUID。<br/>此接口为系统接口。 |
| PROFILE_UUID_HSP_AG | '00001112-0000-1000-8000-00805F9B34FB' | 代表HSPAG Profile的UUID。<br/>此接口为系统接口。 |
| PROFILE_UUID_HSP_HS | '00001108-0000-1000-8000-00805F9B34FB' | 代表HSPHS Profile的UUID。<br/>此接口为系统接口。 |
| PROFILE_UUID_A2DP_SRC | '0000110A-0000-1000-8000-00805F9B34FB' | 代表A2DPSRC Profile的UUID。<br/>此接口为系统接口。 |
| PROFILE_UUID_A2DP_SINK | '0000110B-0000-1000-8000-00805F9B34FB' | 代表A2DPSINK Profile的UUID。<br/>此接口为系统接口。 |
| PROFILE_UUID_AVRCP_CT | '0000110E-0000-1000-8000-00805F9B34FB' | 代表AVRCPCT Profile的UUID。<br/>此接口为系统接口。 |
| PROFILE_UUID_AVRCP_TG | '0000110C-0000-1000-8000-00805F9B34FB' | 代表AVRCPTG Profile的UUID。<br/>此接口为系统接口。 |
| PROFILE_UUID_HID | '00001124-0000-1000-8000-00805F9B34FB' | 代表HID Profile的UUID。<br/>此接口为系统接口。 |
| PROFILE_UUID_HOGP | '00001812-0000-1000-8000-00805F9B34FB' | 代表HOGP Profile的UUID。<br/>此接口为系统接口。 |
## ProfileConnectionState
枚举,蓝牙设备的profile连接状态。
**系统能力**:SystemCapability.Communication.Bluetooth.Core。
| 名称 | 值 | 说明 |
| ------------------- | ---- | -------------- |
| STATE_DISCONNECTED | 0 | 表示profile已断连。 |
| STATE_CONNECTING | 1 | 表示profile正在连接。 |
| STATE_CONNECTED | 2 | 表示profile已连接。 |
| STATE_DISCONNECTING | 3 | 表示profile正在断连。 |
## MajorClass<a name="MajorClass"></a>
枚举,蓝牙设备主要类别。
**系统能力**:SystemCapability.Communication.Bluetooth.Core。
| 名称 | 值 | 说明 |
| ------------------- | ------ | ---------- |
| MAJOR_MISC | 0x0000 | 表示杂项设备。 |
| MAJOR_COMPUTER | 0x0100 | 表示计算机设备。 |
| MAJOR_PHONE | 0x0200 | 表示手机设备。 |
| MAJOR_NETWORKING | 0x0300 | 表示网络设备。 |
| MAJOR_AUDIO_VIDEO | 0x0400 | 表示音频和视频设备。 |
| MAJOR_PERIPHERAL | 0x0500 | 表示外围设备。 |
| MAJOR_IMAGING | 0x0600 | 表示成像设备。 |
| MAJOR_WEARABLE | 0x0700 | 表示可穿戴设备。 |
| MAJOR_TOY | 0x0800 | 表示玩具设备。 |
| MAJOR_HEALTH | 0x0900 | 表示健康设备。 |
| MAJOR_UNCATEGORIZED | 0x1F00 | 表示未分类设备。 |
## MajorMinorClass<a name="MajorMinorClass"></a>
枚举,主要次要蓝牙设备类别。
**系统能力**:SystemCapability.Communication.Bluetooth.Core。
| 名称 | 值 | 说明 |
| ---------------------------------------- | ------ | --------------- |
| COMPUTER_UNCATEGORIZED | 0x0100 | 表示未分类计算机设备。 |
| COMPUTER_DESKTOP | 0x0104 | 表示台式计算机设备。 |
| COMPUTER_SERVER | 0x0108 | 表示服务器设备。 |
| COMPUTER_LAPTOP | 0x010C | 表示便携式计算机设备。 |
| COMPUTER_HANDHELD_PC_PDA | 0x0110 | 表示手持式计算机设备。 |
| COMPUTER_PALM_SIZE_PC_PDA | 0x0114 | 表示掌上电脑设备。 |
| COMPUTER_WEARABLE | 0x0118 | 表示可穿戴计算机设备。 |
| COMPUTER_TABLET | 0x011C | 表示平板电脑设备。 |
| PHONE_UNCATEGORIZED | 0x0200 | 表示未分类手机设备。 |
| PHONE_CELLULAR | 0x0204 | 表示便携式手机设备。 |
| PHONE_CORDLESS | 0x0208 | 表示无线电话设备。 |
| PHONE_SMART | 0x020C | 表示智能手机设备。 |
| PHONE_MODEM_OR_GATEWAY | 0x0210 | 表示调制解调器或网关手机设备。 |
| PHONE_ISDN | 0x0214 | 表示ISDN手机设备。 |
| NETWORK_FULLY_AVAILABLE | 0x0300 | 表示网络完全可用设备。 |
| NETWORK_1_TO_17_UTILIZED | 0x0320 | 表示使用网络1到17设备。 |
| NETWORK_17_TO_33_UTILIZED | 0x0340 | 表示使用网络17到33设备。 |
| NETWORK_33_TO_50_UTILIZED | 0x0360 | 表示使用网络33到50设备。 |
| NETWORK_60_TO_67_UTILIZED | 0x0380 | 表示使用网络60到67设备。 |
| NETWORK_67_TO_83_UTILIZED | 0x03A0 | 表示使用网络67到83设备。 |
| NETWORK_83_TO_99_UTILIZED | 0x03C0 | 表示使用网络83到99设备。 |
| NETWORK_NO_SERVICE | 0x03E0 | 表示网络无服务设备。 |
| AUDIO_VIDEO_UNCATEGORIZED | 0x0400 | 表示未分类音频视频设备。 |
| AUDIO_VIDEO_WEARABLE_HEADSET | 0x0404 | 表示可穿戴式音频视频设备。 |
| AUDIO_VIDEO_HANDSFREE | 0x0408 | 表示免提音频视频设备。 |
| AUDIO_VIDEO_MICROPHONE | 0x0410 | 表示麦克风音频视频设备。 |
| AUDIO_VIDEO_LOUDSPEAKER | 0x0414 | 表示扬声器音频视频设备。 |
| AUDIO_VIDEO_HEADPHONES | 0x0418 | 表示头戴式音频视频设备。 |
| AUDIO_VIDEO_PORTABLE_AUDIO | 0x041C | 表示便携式音频视频设备。 |
| AUDIO_VIDEO_CAR_AUDIO | 0x0420 | 表示汽车音频视频设备。 |
| AUDIO_VIDEO_SET_TOP_BOX | 0x0424 | 表示机顶盒音频视频设备。 |
| AUDIO_VIDEO_HIFI_AUDIO | 0x0428 | 表示高保真音响设备。 |
| AUDIO_VIDEO_VCR | 0x042C | 表示录像机音频视频设备。 |
| AUDIO_VIDEO_VIDEO_CAMERA | 0x0430 | 表示照相机音频视频设备。 |
| AUDIO_VIDEO_CAMCORDER | 0x0434 | 表示摄像机音频视频设备。 |
| AUDIO_VIDEO_VIDEO_MONITOR | 0x0438 | 表示监视器音频视频设备。 |
| AUDIO_VIDEO_VIDEO_DISPLAY_AND_LOUDSPEAKER | 0x043C | 表示视频显示器和扬声器设备。 |
| AUDIO_VIDEO_VIDEO_CONFERENCING | 0x0440 | 表示音频视频会议设备。 |
| AUDIO_VIDEO_VIDEO_GAMING_TOY | 0x0448 | 表示游戏玩具音频视频设备。 |
| PERIPHERAL_NON_KEYBOARD_NON_POINTING | 0x0500 | 表示非键盘非指向外围设备。 |
| PERIPHERAL_KEYBOARD | 0x0540 | 表示外设键盘设备。 |
| PERIPHERAL_POINTING_DEVICE | 0x0580 | 表示定点装置外围设备。 |
| PERIPHERAL_KEYBOARD_POINTING | 0x05C0 | 表示键盘指向外围设备。 |
| PERIPHERAL_UNCATEGORIZED | 0x0500 | 表示未分类外围设备。 |
| PERIPHERAL_JOYSTICK | 0x0504 | 表示周边操纵杆设备。 |
| PERIPHERAL_GAMEPAD | 0x0508 | 表示周边游戏板设备。 |
| PERIPHERAL_REMOTE_CONTROL | 0x05C0 | 表示远程控制外围设备。 |
| PERIPHERAL_SENSING_DEVICE | 0x0510 | 表示外围传感设备设备。 |
| PERIPHERAL_DIGITIZER_TABLET | 0x0514 | 表示外围数字化仪平板电脑设备。 |
| PERIPHERAL_CARD_READER | 0x0518 | 表示外围读卡器设备。 |
| PERIPHERAL_DIGITAL_PEN | 0x051C | 表示外设数码笔设备。 |
| PERIPHERAL_SCANNER_RFID | 0x0520 | 表示射频识别扫描仪外围设备。 |
| PERIPHERAL_GESTURAL_INPUT | 0x0522 | 表示手势输入外围设备。 |
| IMAGING_UNCATEGORIZED | 0x0600 | 表示未分类的图像设备。 |
| IMAGING_DISPLAY | 0x0610 | 表示图像显示设备。 |
| IMAGING_CAMERA | 0x0620 | 表示成像照相机设备。 |
| IMAGING_SCANNER | 0x0640 | 表示成像扫描仪设备。 |
| IMAGING_PRINTER | 0x0680 | 表示成像打印机设备。 |
| WEARABLE_UNCATEGORIZED | 0x0700 | 表示未分类的可穿戴设备。 |
| WEARABLE_WRIST_WATCH | 0x0704 | 表示可穿戴腕表设备。 |
| WEARABLE_PAGER | 0x0708 | 表示可穿戴寻呼机设备。 |
| WEARABLE_JACKET | 0x070C | 表示夹克可穿戴设备。 |
| WEARABLE_HELMET | 0x0710 | 表示可穿戴头盔设备。 |
| WEARABLE_GLASSES | 0x0714 | 表示可穿戴眼镜设备。 |
| TOY_UNCATEGORIZED | 0x0800 | 表示未分类的玩具设备。 |
| TOY_ROBOT | 0x0804 | 表示玩具机器人设备。 |
| TOY_VEHICLE | 0x0808 | 表示玩具车设备。 |
| TOY_DOLL_ACTION_FIGURE | 0x080C | 表示人形娃娃玩具设备。 |
| TOY_CONTROLLER | 0x0810 | 表示玩具控制器设备。 |
| TOY_GAME | 0x0814 | 表示玩具游戏设备。 |
| HEALTH_UNCATEGORIZED | 0x0900 | 表示未分类健康设备。 |
| HEALTH_BLOOD_PRESSURE | 0x0904 | 表示血压健康设备。 |
| HEALTH_THERMOMETER | 0x0908 | 表示温度计健康设备。 |
| HEALTH_WEIGHING | 0x090C | 表示体重健康设备。 |
| HEALTH_GLUCOSE | 0x0910 | 表示葡萄糖健康设备。 |
| HEALTH_PULSE_OXIMETER | 0x0914 | 表示脉搏血氧仪健康设备。 |
| HEALTH_PULSE_RATE | 0x0918 | 表示脉搏率健康设备。 |
| HEALTH_DATA_DISPLAY | 0x091C | 表示数据显示健康设备。 |
| HEALTH_STEP_COUNTER | 0x0920 | 表示阶梯计数器健康设备。 |
| HEALTH_BODY_COMPOSITION_ANALYZER | 0x0924 | 表示身体成分分析仪健康设备。 |
| HEALTH_PEAK_FLOW_MONITOR | 0x0928 | 表示湿度计健康设备。 |
| HEALTH_MEDICATION_MONITOR | 0x092C | 表示药物监视仪健康设备。 |
| HEALTH_KNEE_PROSTHESIS | 0x0930 | 表示膝盖假肢健康设备。 |
| HEALTH_ANKLE_PROSTHESIS | 0x0934 | 表示脚踝假肢健康设备。 |
| HEALTH_GENERIC_HEALTH_MANAGER | 0x0938 | 表示通用健康管理设备。 |
| HEALTH_PERSONAL_MOBILITY_DEVICE | 0x093C | 表示个人移动健康设备。 |
\ No newline at end of file
# @ohos.bluetooth.hfp (蓝牙hfp模块)
hfp模块提供了访问蓝牙呼叫接口的方法。
> **说明:**
>
> 本模块首批接口从API version 10开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
## 导入模块
```js
import hfp from '@ohos.bluetooth.hfp';
```
## hfp.createHfpAgProfile<a name="createHfpAgProfile"></a>
createHfpAgProfile(): HandsFreeAudioGatewayProfile
创建hfp profile实例。
**系统能力**:SystemCapability.Communication.Bluetooth.Core。
**返回值:**
| 类型 | 说明 |
| ----------------------------- | ---------- |
| HandsFreeAudioGatewayProfile | 返回该profile的实例。 |
**示例:**
```js
try {
let hfpAgProfile = hfp.createHfpAgProfile();
console.info('hfpAg success');
} catch (err) {
console.error('errCode: ' + err.code + ', errMessage: ' + err.message);
}
```
## HandsFreeAudioGatewayProfile
使用HandsFreeAudioGatewayProfile方法之前需要创建该类的实例进行操作,通过createHfpAgProfile()方法构造此实例。
### connect<a name="hfp-connect"></a>
connect(deviceId: string): void
连接设备的HFP服务。
**系统接口**:此接口为系统接口。
**需要权限**:ohos.permission.ACCESS_BLUETOOTH
**系统能力**:SystemCapability.Communication.Bluetooth.Core。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | ------- |
| deviceId | string | 是 | 远端设备地址。 |
**错误码**
以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)
| 错误码ID | 错误信息 |
| -------- | ---------------------------- |
|2900001 | Service stopped. |
|2900003 | Bluetooth switch is off. |
|2900004 | Profile is not supported. |
|2900099 | Operation failed. |
**示例:**
```js
try {
let hfpAg = hfp.createHfpAgProfile();
hfpAg.connect('XX:XX:XX:XX:XX:XX');
} catch (err) {
console.error('errCode: ' + err.code + ', errMessage: ' + err.message);
}
```
### disconnect<a name="hfp-disconnect"></a>
disconnect(deviceId: string): void
断开连接设备的HFP服务。
**系统接口**:此接口为系统接口。
**需要权限**:ohos.permission.ACCESS_BLUETOOTH
**系统能力**:SystemCapability.Communication.Bluetooth.Core。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | ------- |
| deviceId | string | 是 | 远端设备地址。 |
**错误码**
以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)
| 错误码ID | 错误信息 |
| -------- | ---------------------------- |
|2900001 | Service stopped. |
|2900003 | Bluetooth switch is off. |
|2900004 | Profile is not supported. |
|2900099 | Operation failed. |
**示例:**
```js
try {
let hfpAg = hfp.createHfpAgProfile();
hfpAg.disconnect('XX:XX:XX:XX:XX:XX');
} catch (err) {
console.error('errCode: ' + err.code + ', errMessage: ' + err.message);
}
```
\ No newline at end of file
# @ohos.bluetooth.hid (蓝牙hid模块)
hid模块提供了访问蓝牙hid相关功能的方法。
> **说明:**
>
> 本模块首批接口从API version 10开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
## 导入模块
```js
import hid from '@ohos.bluetooth.hid';
```
## hid.createHidHostProfile<a name="createHidHostProfile"></a>
createHidHostProfile(): HidHostProfile
创建hid profile实例。
**系统能力**:SystemCapability.Communication.Bluetooth.Core。
**返回值:**
| 类型 | 说明 |
| ----------------------------- | ---------- |
| HidHostProfile | 返回该profile的实例。 |
**示例:**
```js
try {
let hidHostProfile = hid.createHidHostProfile();
console.info('hidHost success');
} catch (err) {
console.error('errCode: ' + err.code + ', errMessage: ' + err.message);
}
```
## HidHostProfile
使用HidHostProfile方法之前需要创建该类的实例进行操作,通过createHidHostProfile()方法构造此实例。
### connect<a name="HidHost-connect"></a>
connect(deviceId: string): void
连接设备的HidHost服务。
**系统接口**:此接口为系统接口。
**需要权限**:ohos.permission.ACCESS_BLUETOOTH 和 ohos.permission.MANAGE_BLUETOOTH
**系统能力**:SystemCapability.Communication.Bluetooth.Core。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | ------- |
| deviceId | string | 是 | 远端设备地址。 |
**错误码**
以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)
| 错误码ID | 错误信息 |
| -------- | ---------------------------- |
|2900001 | Service stopped. |
|2900003 | Bluetooth switch is off. |
|2900004 | Profile is not supported. |
|2900099 | Operation failed. |
**示例:**
```js
try {
let hidHostProfile = hid.createHidHostProfile();
hidHostProfile.connect('XX:XX:XX:XX:XX:XX');
} catch (err) {
console.error('errCode: ' + err.code + ', errMessage: ' + err.message);
}
```
### disconnect<a name="HidHost-disconnect"></a>
disconnect(deviceId: string): void
断开连接设备的HidHost服务。
**系统接口**:此接口为系统接口。
**需要权限**:ohos.permission.ACCESS_BLUETOOTH 和 ohos.permission.MANAGE_BLUETOOTH
**系统能力**:SystemCapability.Communication.Bluetooth.Core。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | ------- |
| deviceId | string | 是 | 远端设备地址。 |
**错误码**
以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)
| 错误码ID | 错误信息 |
| -------- | ---------------------------- |
|2900001 | Service stopped. |
|2900003 | Bluetooth switch is off. |
|2900004 | Profile is not supported. |
|2900099 | Operation failed. |
**示例:**
```js
try {
let hidHostProfile = hid.createHidHostProfile();
hidHostProfile.disconnect('XX:XX:XX:XX:XX:XX');
} catch (err) {
console.error('errCode: ' + err.code + ', errMessage: ' + err.message);
}
```
\ No newline at end of file
# @ohos.bluetooth.pan (蓝牙socket模块)
pan模块提供了访问蓝牙个人区域网相关功能的方法。
> **说明:**
>
> 本模块首批接口从API version 10开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
## 导入模块
```js
import pan from '@ohos.bluetooth.pan';
```
## pan.createPanProfile<a name="createPanProfile"></a>
createPanProfile(): PanProfile
创建pan profile实例。
**系统能力**:SystemCapability.Communication.Bluetooth.Core。
**返回值:**
| 类型 | 说明 |
| ----------------------------- | ---------- |
| PanProfile | 返回该profile的实例。 |
**示例:**
```js
try {
let panProfile = pan.createPanProfile();
console.info('pan success');
} catch (err) {
console.error('errCode: ' + err.code + ', errMessage: ' + err.message);
}
```
## PanProfile
使用PanProfile方法之前需要创建该类的实例进行操作,通过createPanProfile()方法构造此实例。
### disconnect<a name="PanP-disconnect"></a>
disconnect(deviceId: string): void
断开连接设备的Pan服务。
**系统接口**:此接口为系统接口。
**需要权限**:ohos.permission.ACCESS_BLUETOOTH
**系统能力**:SystemCapability.Communication.Bluetooth.Core。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | ------- |
| deviceId | string | 是 | 远端设备地址。 |
**错误码**
以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)
| 错误码ID | 错误信息 |
| -------- | ---------------------------- |
|2900001 | Service stopped. |
|2900003 | Bluetooth switch is off. |
|2900004 | Profile is not supported. |
|2900099 | Operation failed. |
**示例:**
```js
try {
let panProfile = pan.createPanProfile();
panProfile.disconnect('XX:XX:XX:XX:XX:XX');
} catch (err) {
console.error('errCode: ' + err.code + ', errMessage: ' + err.message);
}
```
### setTethering<a name="setTethering"></a>
setTethering(enable: boolean): void
设置网络共享状态。
**系统接口**:此接口为系统接口。
**需要权限**:ohos.permission.ACCESS_BLUETOOTH 和 ohos.permission.MANAGE_BLUETOOTH
**系统能力**:SystemCapability.Communication.Bluetooth.Core。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | ------- |
| value | boolean | 是 | 是否设置蓝牙共享。 |
**错误码**
以下错误码的详细介绍请参见[蓝牙服务子系统错误码](../errorcodes/errorcode-bluetoothManager.md)
| 错误码ID | 错误信息 |
| -------- | ---------------------------- |
|2900001 | Service stopped. |
|2900003 | Bluetooth switch is off. |
|2900004 | Profile is not supported. |
|2900099 | Operation failed. |
**示例:**
```js
try {
let panProfile = pan.createPanProfile();
panProfile.setTethering(false);
} catch (err) {
console.error('errCode: ' + err.code + ', errMessage: ' + err.message);
}
```
### isTetheringOn<a name="isTetheringOn"></a>
isTetheringOn(): boolean
获取网络共享状态。
**系统接口**:此接口为系统接口。
**需要权限**:ohos.permission.ACCESS_BLUETOOTH
**系统能力**:SystemCapability.Communication.Bluetooth.Core。
**返回值:**
| 类型 | 说明 |
| --------------------- | --------------------------------- |
| boolean | 网络共享开启返回true,网络共享关闭返回false。 |
**示例:**
```js
try {
let panProfile = pan.createPanProfile();
let ret = panProfile.isTetheringOn();
} catch (err) {
console.error('errCode: ' + err.code + ', errMessage: ' + err.message);
}
```
\ No newline at end of file
...@@ -279,8 +279,8 @@ customCurve(interpolate: (fraction: number) => number): ICurve ...@@ -279,8 +279,8 @@ customCurve(interpolate: (fraction: number) => number): ICurve
```ts ```ts
import Curves from '@ohos.curves' import Curves from '@ohos.curves'
interpolate(fraction) { let interpolate = function(fraction) {
return Math.sqrt(fraction); return Math.sqrt(fraction)
} }
let curve = Curves.customCurve(interpolate) // 创建一个用户自定义插值曲线 let curve = Curves.customCurve(interpolate) // 创建一个用户自定义插值曲线
``` ```
......
...@@ -82,7 +82,8 @@ bindDevice(deviceId: number, onDisconnect: AsyncCallback&lt;number&gt;, ...@@ -82,7 +82,8 @@ bindDevice(deviceId: number, onDisconnect: AsyncCallback&lt;number&gt;,
```js ```js
try { try {
deviceManager.bindDevice(device.deviceId, (error, data) => { // 12345678为示例deviceId,应用开发时可通过queryDevices查询到相应设备的deviceId作为入参
deviceManager.bindDevice(12345678, (error, data) => {
console.error('Device is disconnected'); console.error('Device is disconnected');
}, (error, data) => { }, (error, data) => {
if (error) { if (error) {
...@@ -131,7 +132,8 @@ bindDevice(deviceId: number, onDisconnect: AsyncCallback&lt;number&gt;): Promise ...@@ -131,7 +132,8 @@ bindDevice(deviceId: number, onDisconnect: AsyncCallback&lt;number&gt;): Promise
```js ```js
try { try {
deviceManager.bindDevice(matchDevice.deviceId, (error, data) => { // 12345678为示例deviceId,应用开发时可通过queryDevices查询到相应设备的deviceId作为入参
deviceManager.bindDevice(12345678, (error, data) => {
console.error('Device is disconnected'); console.error('Device is disconnected');
}).then(data => { }).then(data => {
console.info('bindDevice success'); console.info('bindDevice success');
...@@ -169,7 +171,8 @@ unbindDevice(deviceId: number, callback: AsyncCallback&lt;number&gt;): void ...@@ -169,7 +171,8 @@ unbindDevice(deviceId: number, callback: AsyncCallback&lt;number&gt;): void
```js ```js
try { try {
deviceManager.unbindDevice(matchDevice.deviceId, (error, data) => { // 12345678为示例deviceId,应用开发时可通过queryDevices查询到相应设备的deviceId作为入参
deviceManager.unbindDevice(12345678, (error, data) => {
if (error) { if (error) {
console.error('unbindDevice async fail. Code is ${error.code}, message is ${error.message}'); console.error('unbindDevice async fail. Code is ${error.code}, message is ${error.message}');
return; return;
...@@ -211,7 +214,8 @@ unbindDevice(deviceId: number): Promise&lt;number&gt; ...@@ -211,7 +214,8 @@ unbindDevice(deviceId: number): Promise&lt;number&gt;
```js ```js
try { try {
deviceManager.unbindDevice(matchDevice.deviceId).then(data => { // 12345678为示例deviceId,应用开发时可通过queryDevices查询到相应设备的deviceId作为入参
deviceManager.unbindDevice(12345678).then(data => {
console.info('unbindDevice success'); console.info('unbindDevice success');
}, error => { }, error => {
console.error('unbindDevice async fail. Code is ${error.code}, message is ${error.message}'); console.error('unbindDevice async fail. Code is ${error.code}, message is ${error.message}');
......
...@@ -508,7 +508,7 @@ setGlobalProxy(admin: Want, httpProxy: connection.HttpProxy, callback: AsyncCall ...@@ -508,7 +508,7 @@ setGlobalProxy(admin: Want, httpProxy: connection.HttpProxy, callback: AsyncCall
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | ---------------------------------------- | ---- | ------------------------------- | | -------- | ---------------------------------------- | ---- | ------------------------------- |
| admin | [Want](js-apis-app-ability-want.md) | 是 | 设备管理应用。 | | admin | [Want](js-apis-app-ability-want.md) | 是 | 设备管理应用。 |
| httpProxy | [connection.HttpProxy](js-apis-net-connection.md) | 是 | 网络全局Http代理配置信息。 | | httpProxy | [connection.HttpProxy](js-apis-net-connection.md#httpproxy10) | 是 | 网络全局Http代理配置信息。 |
| callback | AsyncCallback&lt;void&gt; | 是 | 回调函数。当接口调用成功,err为null,否则err为错误对象。 | | callback | AsyncCallback&lt;void&gt; | 是 | 回调函数。当接口调用成功,err为null,否则err为错误对象。 |
**错误码** **错误码**
...@@ -561,7 +561,7 @@ setGlobalProxy(admin: Want, httpProxy: connection.HttpProxy): Promise\<void> ...@@ -561,7 +561,7 @@ setGlobalProxy(admin: Want, httpProxy: connection.HttpProxy): Promise\<void>
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| ----- | ----------------------------------- | ---- | ------- | | ----- | ----------------------------------- | ---- | ------- |
| admin | [Want](js-apis-app-ability-want.md) | 是 | 设备管理应用。 | | admin | [Want](js-apis-app-ability-want.md) | 是 | 设备管理应用。 |
| httpProxy | [connection.HttpProxy](js-apis-net-connection.md) | 是 | 网络全局Http代理配置信息。 | | httpProxy | [connection.HttpProxy](js-apis-net-connection.md#httpproxy10) | 是 | 网络全局Http代理配置信息。 |
| isDisabled | boolean | 是 | true表示禁用该网络接口,false表示开启该网络接口。 | | isDisabled | boolean | 是 | true表示禁用该网络接口,false表示开启该网络接口。 |
**返回值:** **返回值:**
...@@ -618,7 +618,7 @@ getGlobalProxy(admin: Want, callback: AsyncCallback\<connection.HttpProxy>): voi ...@@ -618,7 +618,7 @@ getGlobalProxy(admin: Want, callback: AsyncCallback\<connection.HttpProxy>): voi
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | ---------------------------------------- | ---- | ------------------------------- | | -------- | ---------------------------------------- | ---- | ------------------------------- |
| admin | [Want](js-apis-app-ability-want.md) | 是 | 设备管理应用。 | | admin | [Want](js-apis-app-ability-want.md) | 是 | 设备管理应用。 |
| callback | AsyncCallback&lt;connection.HttpProxy&gt; | 是 | 回调函数。当接口调用成功,err为null,否则err为错误对象。 | | callback | AsyncCallback&lt;[connection.HttpProxy](js-apis-net-connection.md#httpproxy10)&gt; | 是 | 回调函数。当接口调用成功,err为null,否则err为错误对象。 |
**错误码** **错误码**
...@@ -668,7 +668,7 @@ getGlobalProxy(admin: Want): Promise\<connection.HttpProxy> ...@@ -668,7 +668,7 @@ getGlobalProxy(admin: Want): Promise\<connection.HttpProxy>
| 类型 | 说明 | | 类型 | 说明 |
| --------------------- | ------------------------- | | --------------------- | ------------------------- |
| Promise&lt;connection.HttpProxy&gt; | Promise对象,返回网络全局Http代理配置信息。 | | Promise&lt;[connection.HttpProxy](js-apis-net-connection.md#httpproxy10)&gt; | Promise对象,返回网络全局Http代理配置信息。 |
**错误码** **错误码**
......
...@@ -115,7 +115,7 @@ usbManager.setUsbPolicy(wantTemp, policy).then(() => { ...@@ -115,7 +115,7 @@ usbManager.setUsbPolicy(wantTemp, policy).then(() => {
## UsbPolicy ## UsbPolicy
USB读写策略的枚举 USB读写策略的枚举
**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager **系统能力:** SystemCapability.Customization.EnterpriseDeviceManager
...@@ -124,4 +124,4 @@ USB读写策略的枚举 ...@@ -124,4 +124,4 @@ USB读写策略的枚举
| 名称 | 值 | 说明 | | 名称 | 值 | 说明 |
| -------- | -------- | -------- | | -------- | -------- | -------- |
| READ_WRITE | 0 | 可读可写。 | | READ_WRITE | 0 | 可读可写。 |
| READ_ONLY | 1 | 只读 | | READ_ONLY | 1 | 只读 |
...@@ -25,7 +25,7 @@ import process from '@ohos.process'; ...@@ -25,7 +25,7 @@ import process from '@ohos.process';
## EventListener ## EventListener
系统能力: SystemCapability.Utils.Lang **系统能力:** SystemCapability.Utils.Lang
| 名称 | 说明 | | 名称 | 说明 |
| -------- | -------- | | -------- | -------- |
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册