• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.wifi (WLAN)
2
3该模块主要提供WLAN基础功能、P2P(peer-to-peer)功能和WLAN消息通知的相应服务,让应用可以通过WLAN和其他设备互联互通。
4
5> **说明:**
6>
7> 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8> 从API Version 9 开始,该接口不再维护,推荐使用[`@ohos.wifiManager (WLAN)`](js-apis-wifiManager.md)等相关接口。
9
10
11## 导入模块
12
13```ts
14import wifi from '@ohos.wifi';
15```
16
17
18## wifi.isWifiActive
19
20isWifiActive(): boolean
21
22查询WLAN是否已使能。
23
24**需要权限:** ohos.permission.GET_WIFI_INFO
25
26**系统能力:** SystemCapability.Communication.WiFi.STA
27
28**返回值:**
29
30  | **类型** | **说明** |
31  | -------- | -------- |
32  | boolean | true:已使能, false:未使能。 |
33
34**示例:**
35
36```ts
37import wifi from '@ohos.wifi';
38
39try {
40	let isWifiActive = wifi.isWifiActive();
41	console.info("isWifiActive:" + isWifiActive);
42}catch(error){
43	console.error("failed:" + JSON.stringify(error));
44}
45```
46
47## wifi.scan
48
49scan(): boolean
50
51启动WLAN扫描。
52
53**需要权限:** ohos.permission.SET_WIFI_INFOohos.permission.LOCATION
54
55**系统能力:** SystemCapability.Communication.WiFi.STA
56
57**返回值:**
58
59  | **类型** | **说明** |
60  | -------- | -------- |
61  | boolean | true:扫描操作执行成功, false:扫描操作执行失败。 |
62
63**示例:**
64
65```ts
66import wifi from '@ohos.wifi';
67
68try {
69	wifi.scan();
70}catch(error){
71	console.error("failed:" + JSON.stringify(error));
72}
73```
74
75## wifi.getScanInfos
76
77getScanInfos(): Promise<Array<WifiScanInfo>>
78
79获取扫描结果,使用Promise异步回调。
80
81**需要权限:** ohos.permission.GET_WIFI_INFO 和 (ohos.permission.GET_WIFI_PEERS_MACohos.permission.LOCATION)
82ohos.permission.GET_WIFI_PEERS_MAC权限仅系统应用可申请。
83
84**系统能力:** SystemCapability.Communication.WiFi.STA
85
86**返回值:**
87
88  | **类型** | **说明** |
89  | -------- | -------- |
90  | Promise< Array<[WifiScanInfo](#wifiscaninfo)> > | Promise对象。返回扫描到的热点列表。 |
91
92
93## wifi.getScanInfos
94
95getScanInfos(callback: AsyncCallback<Array<WifiScanInfo>>): void
96
97获取扫描结果,使用callback异步回调。
98
99**需要权限:** ohos.permission.GET_WIFI_INFO 和 (ohos.permission.GET_WIFI_PEERS_MACohos.permission.LOCATION)
100ohos.permission.GET_WIFI_PEERS_MAC权限仅系统应用可申请。
101
102**系统能力:** SystemCapability.Communication.WiFi.STA
103
104**参数:**
105
106  | **参数名** | **类型** | **必填** | **说明** |
107  | -------- | -------- | -------- | -------- |
108  | callback | AsyncCallback< Array<[WifiScanInfo](#wifiscaninfo)>> | 是 | 回调函数。当成功时,err为0,data为扫描到的热点;否则err为非0值,data为空。 |
109
110**示例:**
111
112```ts
113import wifi from '@ohos.wifi';
114
115wifi.getScanInfos((err, result) => {
116    if (err) {
117        console.error("get scan info error");
118        return;
119    }
120
121    let len = result.length;
122    console.log("wifi received scan info: " + len);
123    for (let i = 0; i < len; ++i) {
124        console.info("ssid: " + result[i].ssid);
125        console.info("bssid: " + result[i].bssid);
126        console.info("capabilities: " + result[i].capabilities);
127        console.info("securityType: " + result[i].securityType);
128        console.info("rssi: " + result[i].rssi);
129        console.info("band: " + result[i].band);
130        console.info("frequency: " + result[i].frequency);
131        console.info("channelWidth: " + result[i].channelWidth);
132        console.info("timestamp: " + result[i].timestamp);
133    }
134});
135
136wifi.getScanInfos().then(result => {
137    let len = result.length;
138    console.log("wifi received scan info: " + len);
139    for (let i = 0; i < len; ++i) {
140        console.info("ssid: " + result[i].ssid);
141        console.info("bssid: " + result[i].bssid);
142        console.info("capabilities: " + result[i].capabilities);
143        console.info("securityType: " + result[i].securityType);
144        console.info("rssi: " + result[i].rssi);
145        console.info("band: " + result[i].band);
146        console.info("frequency: " + result[i].frequency);
147        console.info("channelWidth: " + result[i].channelWidth);
148        console.info("timestamp: " + result[i].timestamp);
149    }
150});
151```
152
153
154## WifiScanInfo
155
156WLAN热点信息。
157
158**系统能力:** SystemCapability.Communication.WiFi.STA
159
160
161| **名称** | **类型** | **可读** | **可写** | **说明** |
162| -------- | -------- | -------- | -------- | -------- |
163| ssid | string | 是 | 否 | 热点的SSID,最大长度为32字节,编码格式为UTF-8。 |
164| bssid | string | 是 | 否 | 热点的BSSID,例如:00:11:22:33:44:55。 |
165| capabilities | string | 是 | 否 | 热点能力。 |
166| securityType | [WifiSecurityType](#wifisecuritytype) | 是 | 否 | WLAN加密类型。 |
167| rssi | number | 是 | 否 | 热点的信号强度(dBm)。 |
168| band | number | 是 | 否 | WLAN接入点的频段。1表示2.4GHZ,2表示5GHZ。|
169| frequency | number | 是 | 否 | WLAN接入点的频率。 |
170| channelWidth | number | 是 | 否 | WLAN接入点的带宽。 |
171| timestamp | number | 是 | 否 | 时间戳。 |
172
173
174## WifiSecurityType
175
176表示加密类型的枚举。
177
178**系统能力:** SystemCapability.Communication.WiFi.Core
179
180
181| **名称** | **值** | **说明** |
182| -------- | -------- | -------- |
183| WIFI_SEC_TYPE_INVALID | 0 | 无效加密类型。 |
184| WIFI_SEC_TYPE_OPEN | 1 | 开放加密类型。 |
185| WIFI_SEC_TYPE_WEP | 2 | Wired&nbsp;Equivalent&nbsp;Privacy&nbsp;(WEP)加密类型。 |
186| WIFI_SEC_TYPE_PSK | 3 | Pre-shared&nbsp;key&nbsp;(PSK)加密类型。 |
187| WIFI_SEC_TYPE_SAE | 4 | Simultaneous&nbsp;Authentication&nbsp;of&nbsp;Equals&nbsp;(SAE)加密类型。 |
188
189
190
191## WifiDeviceConfig
192
193WLAN配置信息。
194
195**系统能力:** SystemCapability.Communication.WiFi.STA
196
197
198| **名称** | **类型** | **可读** | **可写** | **说明** |
199| -------- | -------- | -------- | -------- | -------- |
200| ssid | string | 是 | 否 | 热点的SSID,最大长度为32字节,编码格式为UTF-8。 |
201| bssid | string | 是 | 否 | 热点的BSSID,例如:00:11:22:33:44:55。 |
202| preSharedKey | string | 是 | 否 | 热点的密钥,最大长度为64字节。 |
203| isHiddenSsid | boolean | 是 | 否 | 是否是隐藏网络。 |
204| securityType | [WifiSecurityType](#wifisecuritytype) | 是 | 否 | 加密类型。 |
205
206
207
208## wifi.addUntrustedConfig<sup>7+</sup>
209
210addUntrustedConfig(config: WifiDeviceConfig): Promise&lt;boolean&gt;
211
212添加不可信网络配置,使用Promise异步回调。
213
214**需要权限:** ohos.permission.SET_WIFI_INFO
215
216**系统能力:** SystemCapability.Communication.WiFi.STA
217
218**参数:**
219
220  | **参数名** | **类型** | **必填** | **说明** |
221  | -------- | -------- | -------- | -------- |
222  | config | [WifiDeviceConfig](#wifideviceconfig) | 是 | WLAN配置信息。 |
223
224**返回值:**
225
226  | **类型** | **说明** |
227  | -------- | -------- |
228  | Promise&lt;boolean&gt; | Promise对象。表示操作结果,true: 成功, false: 失败。 |
229
230**示例:**
231```ts
232import wifi from '@ohos.wifi';
233
234try {
235	let config:wifi.WifiDeviceConfig = {
236		ssid : "****",
237		bssid:  "****",
238		preSharedKey: "****",
239		isHiddenSsid: false,
240		securityType: 0,
241		creatorUid: 0,
242		disableReason: 0,
243		netId: 0,
244		randomMacType: 0,
245		randomMacAddr:  "****",
246		ipType: 0,
247		staticIp: {
248			ipAddress: 0,
249			gateway: 0,
250			dnsServers: [],
251			domains: []
252		}
253	}
254	wifi.addUntrustedConfig(config).then(result => {
255		console.info("result:" + JSON.stringify(result));
256	});
257}catch(error){
258	console.error("failed:" + JSON.stringify(error));
259}
260```
261
262## wifi.addUntrustedConfig<sup>7+</sup>
263
264addUntrustedConfig(config: WifiDeviceConfig, callback: AsyncCallback&lt;boolean&gt;): void
265
266添加不可信网络配置,使用callback异步回调。
267
268**需要权限:** ohos.permission.SET_WIFI_INFO
269
270**系统能力:** SystemCapability.Communication.WiFi.STA
271
272**参数:**
273
274  | **参数名** | **类型** | **必填** | **说明** |
275  | -------- | -------- | -------- | -------- |
276  | config | [WifiDeviceConfig](#wifideviceconfig) | 是 | WLAN配置信息。 |
277  | callback | AsyncCallback&lt;boolean&gt; | 是 | 回调函数。当操作成功时,err为0,data表示操作结果,true: 成功, false: 失败。如果error为非0,表示处理出现错误。 |
278
279**示例:**
280```ts
281import wifi from '@ohos.wifi';
282
283try {
284	let config:wifi.WifiDeviceConfig = {
285		ssid : "****",
286		bssid:  "****",
287		preSharedKey: "****",
288		isHiddenSsid: false,
289		securityType: 0,
290		creatorUid: 0,
291		disableReason: 0,
292		netId: 0,
293		randomMacType: 0,
294		randomMacAddr:  "****",
295		ipType: 0,
296		staticIp: {
297			ipAddress: 0,
298			gateway: 0,
299			dnsServers: [],
300			domains: []
301		}
302	}
303	wifi.addUntrustedConfig(config,(error,result) => {
304		console.info("result:" + JSON.stringify(result));
305	});
306}catch(error){
307	console.error("failed:" + JSON.stringify(error));
308}
309```
310
311## wifi.removeUntrustedConfig<sup>7+</sup>
312
313removeUntrustedConfig(config: WifiDeviceConfig): Promise&lt;boolean&gt;
314
315移除不可信网络配置,使用Promise异步回调。
316
317**需要权限:** ohos.permission.SET_WIFI_INFO
318
319**系统能力:** SystemCapability.Communication.WiFi.STA
320
321**参数:**
322
323  | **参数名** | **类型** | **必填** | **说明** |
324  | -------- | -------- | -------- | -------- |
325  | config | [WifiDeviceConfig](#wifideviceconfig) | 是 | WLAN配置信息。 |
326
327**返回值:**
328
329  | **类型** | **说明** |
330  | -------- | -------- |
331  | Promise&lt;boolean&gt; | Promise对象。表示操作结果,true: 成功, false: 失败。 |
332
333**示例:**
334
335```ts
336import wifi from '@ohos.wifi';
337
338try {
339	let config:wifi.WifiDeviceConfig = {
340		ssid : "****",
341		bssid:  "****",
342		preSharedKey: "****",
343		isHiddenSsid: false,
344		securityType: 0,
345		creatorUid: 0,
346		disableReason: 0,
347		netId: 0,
348		randomMacType: 0,
349		randomMacAddr:  "****",
350		ipType: 0,
351		staticIp: {
352			ipAddress: 0,
353			gateway: 0,
354			dnsServers: [],
355			domains: []
356		}
357	}
358	wifi.removeUntrustedConfig(config).then(result => {
359		console.info("result:" + JSON.stringify(result));
360	});
361}catch(error){
362	console.error("failed:" + JSON.stringify(error));
363}
364```
365
366
367## wifi.removeUntrustedConfig<sup>7+</sup>
368
369removeUntrustedConfig(config: WifiDeviceConfig, callback: AsyncCallback&lt;boolean&gt;): void
370
371移除不可信网络配置,使用callback异步回调。
372
373**需要权限:** ohos.permission.SET_WIFI_INFO
374
375**系统能力:** SystemCapability.Communication.WiFi.STA
376
377**参数:**
378
379  | **参数名** | **类型** | **必填** | **说明** |
380  | -------- | -------- | -------- | -------- |
381  | config | [WifiDeviceConfig](#wifideviceconfig) | 是 | WLAN配置信息。 |
382  | callback | AsyncCallback&lt;boolean&gt; | 是 | 回调函数。当操作成功时,err为0,data表示操作结果,true: 成功, false: 失败。如果error为非0,表示处理出现错误。 |
383
384**示例:**
385```ts
386import wifi from '@ohos.wifi';
387
388try {
389	let config:wifi.WifiDeviceConfig = {
390		ssid : "****",
391		bssid:  "****",
392		preSharedKey: "****",
393		isHiddenSsid: false,
394		securityType: 0,
395		creatorUid: 0,
396		disableReason: 0,
397		netId: 0,
398		randomMacType: 0,
399		randomMacAddr:  "****",
400		ipType: 0,
401		staticIp: {
402			ipAddress: 0,
403			gateway: 0,
404			dnsServers: [],
405			domains: []
406		}
407	}
408	wifi.removeUntrustedConfig(config,(error,result) => {
409	console.info("result:" + JSON.stringify(result));
410	});
411}catch(error){
412	console.error("failed:" + JSON.stringify(error));
413}
414```
415
416
417## wifi.getSignalLevel
418
419getSignalLevel(rssi: number, band: number): number
420
421查询WLAN信号强度。
422
423**需要权限:** ohos.permission.GET_WIFI_INFO
424
425**系统能力:** SystemCapability.Communication.WiFi.STA
426
427**参数:**
428
429  | **参数名** | **类型** | **必填** | **说明** |
430  | -------- | -------- | -------- | -------- |
431  | rssi | number | 是 | 热点的信号强度(dBm)。 |
432  | band | number | 是 | WLAN接入点的频段。 |
433
434**返回值:**
435
436  | **类型** | **说明** |
437  | -------- | -------- |
438  | number | 信号强度,取值范围为[0,&nbsp;4]。 |
439
440**示例:**
441```ts
442import wifi from '@ohos.wifi';
443
444try {
445	let rssi = 0;
446	let band = 0;
447	let level = wifi.getSignalLevel(rssi,band);
448	console.info("level:" + JSON.stringify(level));
449}catch(error){
450	console.error("failed:" + JSON.stringify(error));
451}
452
453```
454
455## wifi.getLinkedInfo
456
457getLinkedInfo(): Promise&lt;WifiLinkedInfo&gt;
458
459获取WLAN连接信息,使用Promise异步回调。
460
461**需要权限:** ohos.permission.GET_WIFI_INFO
462
463**系统能力:** SystemCapability.Communication.WiFi.STA
464
465**返回值:**
466
467  | 类型 | 说明 |
468  | -------- | -------- |
469  | Promise&lt;[WifiLinkedInfo](#wifilinkedinfo)&gt; | Promise对象。表示WLAN连接信息。 |
470
471
472## wifi.getLinkedInfo
473
474getLinkedInfo(callback: AsyncCallback&lt;WifiLinkedInfo&gt;): void
475
476获取WLAN连接信息,使用callback异步回调。
477
478**需要权限:** ohos.permission.GET_WIFI_INFO
479
480**系统能力:** SystemCapability.Communication.WiFi.STA
481
482**参数:**
483
484  | 参数名 | 类型 | 必填 | 说明 |
485  | -------- | -------- | -------- | -------- |
486  | callback | AsyncCallback&lt;[WifiLinkedInfo](#wifilinkedinfo)&gt; | 是 | 回调函数。当获取成功时,err为0,data表示WLAN连接信息。如果error为非0,表示处理出现错误。 |
487
488**示例:**
489```ts
490import wifi from '@ohos.wifi';
491
492wifi.getLinkedInfo((err, data:wifi.WifiLinkedInfo) => {
493    if (err) {
494        console.error("get linked info error");
495        return;
496    }
497    console.info("get wifi linked info: " + JSON.stringify(data));
498});
499
500wifi.getLinkedInfo().then(data => {
501    console.info("get wifi linked info: " + JSON.stringify(data));
502}).catch((error:number) => {
503    console.info("get linked info error");
504});
505```
506
507
508## WifiLinkedInfo
509
510提供WLAN连接的相关信息。
511
512**系统能力:** SystemCapability.Communication.WiFi.STA
513
514| 名称 | 类型 | 可读 | 可写 | 说明 |
515| -------- | -------- | -------- | -------- | -------- |
516| ssid | string | 是 | 否 | 热点的SSID,最大长度为32字节,编码格式为UTF-8。 |
517| bssid | string | 是 | 否 | 热点的BSSID,例如:00:11:22:33:44:55。 |
518| rssi | number | 是 | 否 | 热点的信号强度(dBm)。 |
519| band | number | 是 | 否 | WLAN接入点的频段。1表示2.4GHZ,2表示5GHZ。|
520| linkSpeed | number | 是 | 否 | WLAN接入点的速度,单位Mbps/s。 |
521| frequency | number | 是 | 否 | WLAN接入点的频率。 |
522| isHidden | boolean | 是 | 否 | WLAN接入点是否是隐藏网络。 true:是隐藏网络,false:不是隐藏网络。 |
523| isRestricted | boolean | 是 | 否 | WLAN接入点是否限制数据量。true: 限制,false:不限制。 |
524| macAddress | string | 是 | 否 | 设备的MAC地址。 |
525| ipAddress | number | 是 | 否 | WLAN连接的IP地址。 |
526| connState | [ConnState](#connstate) | 是 | 否 | WLAN连接状态。 |
527
528
529## ConnState
530
531表示WLAN连接状态的枚举。
532
533**系统能力:** SystemCapability.Communication.WiFi.STA
534
535| 名称 | 值 | 说明 |
536| -------- | -------- | -------- |
537| SCANNING | 0 | 设备正在搜索可用的AP。 |
538| CONNECTING | 1 | 正在建立WLAN连接。 |
539| AUTHENTICATING | 2 | WLAN连接正在认证中。 |
540| OBTAINING_IPADDR | 3 | 正在获取WLAN连接的IP地址。 |
541| CONNECTED | 4 | WLAN连接已建立。 |
542| DISCONNECTING | 5 | WLAN连接正在断开。 |
543| DISCONNECTED | 6 | WLAN连接已断开。 |
544| UNKNOWN | 7 | WLAN连接建立失败。 |
545
546
547## wifi.isConnected<sup>7+</sup>
548
549isConnected(): boolean
550
551查询WLAN是否已连接。
552
553**需要权限:** ohos.permission.GET_WIFI_INFO
554
555**系统能力:** SystemCapability.Communication.WiFi.STA
556
557**返回值:**
558
559  | **类型** | **说明** |
560  | -------- | -------- |
561  | boolean | true:已连接,&nbsp;false:未连接。 |
562
563
564
565## wifi.isFeatureSupported<sup>7+</sup>
566
567isFeatureSupported(featureId: number): boolean
568
569判断设备是否支持相关WLAN特性。
570
571**需要权限:** ohos.permission.GET_WIFI_INFO
572
573**系统能力:** SystemCapability.Communication.WiFi.Core
574
575**参数:**
576
577
578  | **参数名** | **类型** | 必填 | **说明** |
579  | -------- | -------- | -------- | -------- |
580  | featureId | number | 是 | 特性ID值。 |
581
582**返回值:**
583
584  | **类型** | **说明** |
585  | -------- | -------- |
586  | boolean | true:支持,&nbsp;false:不支持。 |
587
588**示例:**
589```ts
590import wifi from '@ohos.wifi';
591
592try {
593	let featureId = 0;
594	let ret = wifi.isFeatureSupported(featureId);
595	console.info("isFeatureSupported:" + ret);
596}catch(error){
597	console.error("failed:" + JSON.stringify(error));
598}
599
600```
601
602
603## wifi.getIpInfo<sup>7+</sup>
604
605getIpInfo(): IpInfo
606
607获取IP信息。
608
609**需要权限:** ohos.permission.GET_WIFI_INFO
610
611**系统能力:** SystemCapability.Communication.WiFi.STA
612
613**返回值:**
614
615  | **类型** | **说明** |
616  | -------- | -------- |
617  | [IpInfo](#ipinfo7) | IP信息。 |
618
619**示例:**
620```ts
621import wifi from '@ohos.wifi';
622
623try {
624	let info = wifi.getIpInfo();
625	console.info("info:" + JSON.stringify(info));
626}catch(error){
627	console.error("failed:" + JSON.stringify(error));
628}
629```
630
631## IpInfo<sup>7+</sup>
632
633IP信息。
634
635**系统能力:** SystemCapability.Communication.WiFi.AP.Core
636
637| **名称** | **类型** | **可读** | **可写** | **说明** |
638| -------- | -------- | -------- | -------- | -------- |
639| ipAddress | number | 是 | 否 | IP地址。 |
640| gateway | number | 是 | 否 | 网关。 |
641| netmask | number | 是 | 否 | 掩码。 |
642| primaryDns | number | 是 | 否 | 主DNS服务器IP地址。 |
643| secondDns | number | 是 | 否 | 备DNS服务器IP地址。 |
644| serverIp | number | 是 | 否 | DHCP服务端IP地址。 |
645| leaseDuration | number | 是 | 否 | IP地址租用时长。 |
646
647
648## wifi.getCountryCode<sup>7+</sup>
649
650getCountryCode(): string
651
652获取国家码信息。
653
654**需要权限:** ohos.permission.GET_WIFI_INFO
655
656**系统能力:** SystemCapability.Communication.WiFi.Core
657
658**返回值:**
659
660  | **类型** | **说明** |
661  | -------- | -------- |
662  | string | 国家码。 |
663
664**示例:**
665```ts
666import wifi from '@ohos.wifi';
667
668try {
669	let code = wifi.getCountryCode();
670	console.info("code:" + code);
671}catch(error){
672	console.error("failed:" + JSON.stringify(error));
673}
674```
675
676
677## wifi.getP2pLinkedInfo<sup>8+</sup>
678
679getP2pLinkedInfo(): Promise&lt;WifiP2pLinkedInfo&gt;
680
681获取P2P连接信息,使用Promise异步回调。
682
683**需要权限:** ohos.permission.GET_WIFI_INFO
684
685**系统能力:** SystemCapability.Communication.WiFi.P2P
686
687**返回值:**
688
689  | 类型 | 说明 |
690  | -------- | -------- |
691  | Promise&lt;[WifiP2pLinkedInfo](#wifip2plinkedinfo8)&gt; | Promise对象。表示P2P连接信息。 |
692
693
694
695## WifiP2pLinkedInfo<sup>8+</sup>
696
697提供WLAN连接的相关信息。
698
699**系统能力:** SystemCapability.Communication.WiFi.P2P
700
701| 名称 | 类型 | 可读 | 可写 | 说明 |
702| -------- | -------- | -------- | -------- | -------- |
703| connectState | [P2pConnectState](#p2pconnectstate8) | 是 | 否 | P2P连接状态。 |
704| isGroupOwner | boolean | 是 | 否 | 是否是群主。true:是群主,false:不是群主。 |
705| groupOwnerAddr | string | 是 | 否 | 群组MAC地址。
706
707
708## P2pConnectState<sup>8+</sup>
709
710表示P2P连接状态的枚举。
711
712**系统能力:** SystemCapability.Communication.WiFi.P2P
713
714| 名称 | 值 | 说明 |
715| -------- | -------- | -------- |
716| DISCONNECTED | 0 | 断开状态。 |
717| CONNECTED | 1 | 连接状态。 |
718
719
720## wifi.getP2pLinkedInfo<sup>8+</sup>
721
722getP2pLinkedInfo(callback: AsyncCallback&lt;WifiP2pLinkedInfo&gt;): void
723
724获取P2P连接信息,使用callback异步回调。
725
726**需要权限:** ohos.permission.GET_WIFI_INFO
727
728**系统能力:** SystemCapability.Communication.WiFi.P2P
729
730**参数:**
731
732  | 参数名 | 类型 | 必填 | 说明 |
733  | -------- | -------- | -------- | -------- |
734  | callback | AsyncCallback&lt;[WifiP2pLinkedInfo](#wifip2plinkedinfo8)&gt; | 是 | 回调函数。当操作成功时,err为0,data表示P2P连接信息。如果error为非0,表示处理出现错误。 |
735
736**示例:**
737```ts
738import wifi from '@ohos.wifi';
739
740wifi.getP2pLinkedInfo((err, data:wifi.WifiP2pLinkedInfo) => {
741   if (err) {
742       console.error("get p2p linked info error");
743       return;
744   }
745	console.info("get wifi p2p linked info: " + JSON.stringify(data));
746});
747
748wifi.getP2pLinkedInfo().then(data => {
749	console.info("get wifi p2p linked info: " + JSON.stringify(data));
750});
751```
752
753## wifi.getCurrentGroup<sup>8+</sup>
754
755getCurrentGroup(): Promise&lt;WifiP2pGroupInfo&gt;
756
757获取P2P当前组信息,使用Promise异步回调。
758
759**需要权限:** ohos.permission.GET_WIFI_INFOohos.permission.LOCATION
760
761**系统能力:** SystemCapability.Communication.WiFi.P2P
762
763**返回值:**
764
765  | 类型 | 说明 |
766  | -------- | -------- |
767  | Promise&lt;[WifiP2pGroupInfo](#wifip2pgroupinfo8)&gt; | Promise对象。表示当前组信息。 |
768
769
770## wifi.getCurrentGroup<sup>8+</sup>
771
772getCurrentGroup(callback: AsyncCallback&lt;WifiP2pGroupInfo&gt;): void
773
774获取P2P当前组信息,使用callback异步回调。
775
776**需要权限:** ohos.permission.GET_WIFI_INFOohos.permission.LOCATION
777
778**系统能力:** SystemCapability.Communication.WiFi.P2P
779
780**参数:**
781
782  | 参数名 | 类型 | 必填 | 说明 |
783  | -------- | -------- | -------- | -------- |
784  | callback | AsyncCallback&lt;[WifiP2pGroupInfo](#wifip2pgroupinfo8)&gt; | 是 | 回调函数。当操作成功时,err为0,data表示当前组信息。如果error为非0,表示处理出现错误。 |
785
786**示例:**
787```ts
788import wifi from '@ohos.wifi';
789
790wifi.getCurrentGroup((err, data:wifi.WifiP2pGroupInfo) => {
791   if (err) {
792       console.error("get current P2P group error");
793       return;
794   }
795	console.info("get current P2P group: " + JSON.stringify(data));
796});
797
798wifi.getCurrentGroup().then(data => {
799	console.info("get current P2P group: " + JSON.stringify(data));
800});
801```
802
803## wifi.getP2pPeerDevices<sup>8+</sup>
804
805getP2pPeerDevices(): Promise&lt;WifiP2pDevice[]&gt;
806
807获取P2P对端设备列表信息,使用Promise异步回调。
808
809**需要权限:** ohos.permission.GET_WIFI_INFOohos.permission.LOCATION
810
811**系统能力:** SystemCapability.Communication.WiFi.P2P
812
813**返回值:**
814
815  | 类型 | 说明 |
816  | -------- | -------- |
817  | Promise&lt;[WifiP2pDevice[]](#wifip2pdevice8)&gt; | Promise对象。表示对端设备列表信息。 |
818
819
820## wifi.getP2pPeerDevices<sup>8+</sup>
821
822getP2pPeerDevices(callback: AsyncCallback&lt;WifiP2pDevice[]&gt;): void
823
824获取P2P对端设备列表信息,使用callback异步回调。
825
826**需要权限:** ohos.permission.GET_WIFI_INFOohos.permission.LOCATION
827
828**系统能力:** SystemCapability.Communication.WiFi.P2P
829
830**参数:**
831
832  | 参数名 | 类型 | 必填 | 说明 |
833  | -------- | -------- | -------- | -------- |
834  | callback | AsyncCallback&lt;[WifiP2pDevice[]](#wifip2pdevice8)&gt; | 是 | 回调函数。当操作成功时,err为0,data表示对端设备列表信息。如果error为非0,表示处理出现错误。 |
835
836**示例:**
837```ts
838import wifi from '@ohos.wifi';
839
840wifi.getP2pPeerDevices((err, data:wifi.WifiP2pDevice) => {
841   if (err) {
842       console.error("get P2P peer devices error");
843       return;
844   }
845	console.info("get P2P peer devices: " + JSON.stringify(data));
846});
847
848wifi.getP2pPeerDevices().then(data => {
849	console.info("get P2P peer devices: " + JSON.stringify(data));
850});
851```
852
853## WifiP2pDevice<sup>8+</sup>
854
855表示P2P设备信息。
856
857**系统能力:** SystemCapability.Communication.WiFi.P2P
858
859| 名称 | 类型 | 可读 | 可写 | 说明 |
860| -------- | -------- | -------- | -------- | -------- |
861| deviceName | string | 是 | 否 | 设备名称。 |
862| deviceAddress | string | 是 | 否 | 设备MAC地址。 |
863| primaryDeviceType | string | 是 | 否 | 主设备类型。 |
864| deviceStatus | [P2pDeviceStatus](#p2pdevicestatus8) | 是 | 否 | 设备状态。 |
865| groupCapabilitys | number | 是 | 否 | 群组能力。 |
866
867
868## P2pDeviceStatus<sup>8+</sup>
869
870表示设备状态的枚举。
871
872**系统能力:** SystemCapability.Communication.WiFi.P2P
873
874| 名称 | 值 | 说明 |
875| -------- | -------- | -------- |
876| CONNECTED | 0 | 连接状态。 |
877| INVITED | 1 | 邀请状态。 |
878| FAILED | 2 | 失败状态。 |
879| AVAILABLE | 3 | 可用状态。 |
880| UNAVAILABLE | 4 | 不可用状态。 |
881
882
883## wifi.createGroup<sup>8+</sup>
884
885createGroup(config: WifiP2PConfig): boolean
886
887创建群组。
888
889**需要权限:** ohos.permission.GET_WIFI_INFO
890
891**系统能力:** SystemCapability.Communication.WiFi.P2P
892
893**参数:**
894
895  | **参数名** | **类型** | 必填 | **说明** |
896  | -------- | -------- | -------- | -------- |
897  | config | [WifiP2PConfig](#wifip2pconfig8) | 是 | 群组配置信息。 |
898
899**返回值:**
900
901  | 类型 | 说明 |
902  | -------- | -------- |
903  | boolean | true:创建群组操作执行成功,&nbsp;false:创建群组操作执行失败。 |
904
905**示例:**
906```ts
907import wifi from '@ohos.wifi';
908
909try {
910	let config:wifi.WifiP2PConfig = {
911		deviceAddress: "****",
912		netId: 0,
913		passphrase: "*****",
914		groupName: "****",
915		goBand: 0
916	}
917	wifi.createGroup(config);
918
919}catch(error){
920	console.error("failed:" + JSON.stringify(error));
921}
922```
923
924## WifiP2PConfig<sup>8+</sup>
925
926表示P2P配置信息。
927
928**系统能力:** SystemCapability.Communication.WiFi.P2P
929
930| 名称 | 类型 | 可读 | 可写 | 说明 |
931| -------- | -------- | -------- | -------- | -------- |
932| deviceAddress | string | 是 | 否 | 设备地址。 |
933| netId | number | 是 | 否 | 网络ID。创建群组时-1表示创建临时组,-2表示创建永久组。 |
934| passphrase | string | 是 | 否 | 群组密钥。 |
935| groupName | string | 是 | 否 | 群组名称。 |
936| goBand | [GroupOwnerBand](#groupownerband8) | 是 | 否 | 群组带宽。 |
937
938
939## GroupOwnerBand<sup>8+</sup>
940
941表示群组带宽的枚举。
942
943**系统能力:** SystemCapability.Communication.WiFi.P2P
944
945| 名称 | 值 | 说明 |
946| -------- | -------- | -------- |
947| GO_BAND_AUTO | 0 | 自动模式。 |
948| GO_BAND_2GHZ | 1 | 2GHZ。 |
949| GO_BAND_5GHZ | 2 | 5GHZ。 |
950
951
952## wifi.removeGroup<sup>8+</sup>
953
954removeGroup(): boolean
955
956移除群组。
957
958**需要权限:** ohos.permission.GET_WIFI_INFO
959
960**系统能力:** SystemCapability.Communication.WiFi.P2P
961
962**返回值:**
963
964  | 类型 | 说明 |
965  | -------- | -------- |
966  | boolean | true:操作执行成功,&nbsp;false:操作执行失败。 |
967
968**示例:**
969```ts
970import wifi from '@ohos.wifi';
971
972try {
973	wifi.removeGroup();
974}catch(error){
975	console.error("failed:" + JSON.stringify(error));
976}
977```
978
979## wifi.p2pConnect<sup>8+</sup>
980
981p2pConnect(config: WifiP2PConfig): boolean
982
983执行P2P连接。
984
985**需要权限:** ohos.permission.GET_WIFI_INFOohos.permission.LOCATION
986
987**系统能力:** SystemCapability.Communication.WiFi.P2P
988
989**参数:**
990
991
992  | **参数名** | **类型** | 必填 | **说明** |
993  | -------- | -------- | -------- | -------- |
994  | config | [WifiP2PConfig](#wifip2pconfig8) | 是 | 连接配置信息。 |
995
996**返回值:**
997
998  | 类型 | 说明 |
999  | -------- | -------- |
1000  | boolean | true:操作执行成功,&nbsp;false:操作执行失败。 |
1001
1002
1003**示例:**
1004```ts
1005import wifi from '@ohos.wifi';
1006
1007let recvP2pConnectionChangeFunc = (result:wifi.WifiP2pLinkedInfo) => {
1008    console.info("p2p connection change receive event: " + JSON.stringify(result));
1009    wifi.getP2pLinkedInfo((err, data:wifi.WifiP2pLinkedInfo) => {
1010        if (err) {
1011            console.error('failed to get getP2pLinkedInfo: ' + JSON.stringify(err));
1012            return;
1013        }
1014        console.info("get getP2pLinkedInfo: " + JSON.stringify(data));
1015    });
1016}
1017wifi.on("p2pConnectionChange", recvP2pConnectionChangeFunc);
1018
1019let recvP2pDeviceChangeFunc = (result:wifi.WifiP2pDevice) => {
1020    console.info("p2p device change receive event: " + JSON.stringify(result));
1021}
1022wifi.on("p2pDeviceChange", recvP2pDeviceChangeFunc);
1023
1024let recvP2pPeerDeviceChangeFunc = (result:wifi.WifiP2pDevice[]) => {
1025    console.info("p2p peer device change receive event: " + JSON.stringify(result));
1026    wifi.getP2pPeerDevices((err, data:wifi.WifiP2pDevice) => {
1027        if (err) {
1028            console.error('failed to get peer devices: ' + JSON.stringify(err));
1029            return;
1030        }
1031        console.info("get peer devices: " + JSON.stringify(data));
1032        let len = data.length;
1033        for (let i = 0; i < len; ++i) {
1034            if (data[i].deviceName === "my_test_device") {
1035                console.info("p2p connect to test device: " + data[i].deviceAddress);
1036                let config:wifi.WifiP2PConfig = {
1037                    deviceAddress:data[i].deviceAddress,
1038                    netId:-2,
1039                    passphrase:"",
1040                    groupName:"",
1041                    goBand:0,
1042                }
1043                wifi.p2pConnect(config);
1044            }
1045        }
1046    });
1047}
1048wifi.on("p2pPeerDeviceChange", recvP2pPeerDeviceChangeFunc);
1049
1050let recvP2pPersistentGroupChangeFunc = () => {
1051    console.info("p2p persistent group change receive event");
1052
1053    wifi.getCurrentGroup((err, data:wifi.WifiP2pGroupInfo) => {
1054        if (err) {
1055            console.error('failed to get current group: ' + JSON.stringify(err));
1056            return;
1057        }
1058        console.info("get current group: " + JSON.stringify(data));
1059    });
1060}
1061wifi.on("p2pPersistentGroupChange", recvP2pPersistentGroupChangeFunc);
1062
1063setTimeout(() => {wifi.off("p2pConnectionChange", recvP2pConnectionChangeFunc);}, 125 * 1000);
1064setTimeout(() => {wifi.off("p2pDeviceChange", recvP2pDeviceChangeFunc);}, 125 * 1000);
1065setTimeout(() => {wifi.off("p2pPeerDeviceChange", recvP2pPeerDeviceChangeFunc);}, 125 * 1000);
1066setTimeout(() => {wifi.off("p2pPersistentGroupChange", recvP2pPersistentGroupChangeFunc);}, 125 * 1000);
1067console.info("start discover devices -> " + wifi.startDiscoverDevices());
1068```
1069
1070## wifi.p2pCancelConnect<sup>8+</sup>
1071
1072p2pCancelConnect(): boolean
1073
1074取消P2P连接。
1075
1076**需要权限:** ohos.permission.GET_WIFI_INFO
1077
1078**系统能力:** SystemCapability.Communication.WiFi.P2P
1079
1080**返回值:**
1081
1082  | 类型 | 说明 |
1083  | -------- | -------- |
1084  | boolean | true:操作执行成功,&nbsp;false:操作执行失败。 |
1085
1086**示例:**
1087```ts
1088import wifi from '@ohos.wifi';
1089
1090try {
1091	wifi.p2pCancelConnect();
1092}catch(error){
1093	console.error("failed:" + JSON.stringify(error));
1094}
1095```
1096
1097## wifi.startDiscoverDevices<sup>8+</sup>
1098
1099startDiscoverDevices(): boolean
1100
1101开始发现设备。
1102
1103**需要权限:** ohos.permission.GET_WIFI_INFOohos.permission.LOCATION
1104
1105**系统能力:** SystemCapability.Communication.WiFi.P2P
1106
1107**返回值:**
1108
1109  | 类型 | 说明 |
1110  | -------- | -------- |
1111  | boolean | true:操作执行成功,&nbsp;false:操作执行失败。 |
1112
1113**示例:**
1114```ts
1115import wifi from '@ohos.wifi';
1116
1117try {
1118	wifi.startDiscoverDevices();
1119}catch(error){
1120	console.error("failed:" + JSON.stringify(error));
1121}
1122```
1123
1124## wifi.stopDiscoverDevices<sup>8+</sup>
1125
1126stopDiscoverDevices(): boolean
1127
1128停止发现设备。
1129
1130**需要权限:** ohos.permission.GET_WIFI_INFO
1131
1132**系统能力:** SystemCapability.Communication.WiFi.P2P
1133
1134**返回值:**
1135
1136  | 类型 | 说明 |
1137  | -------- | -------- |
1138  | boolean | true:操作执行成功 flase:操作执行失败。 |
1139
1140**示例:**
1141```ts
1142import wifi from '@ohos.wifi';
1143
1144try {
1145	wifi.stopDiscoverDevices();
1146}catch(error){
1147	console.error("failed:" + JSON.stringify(error));
1148}
1149```
1150
1151## WifiP2pGroupInfo<sup>8+</sup>
1152
1153表示P2P群组相关信息。
1154
1155**系统能力:** SystemCapability.Communication.WiFi.P2P
1156
1157| 名称 | 类型 | 可读 | 可写 | 说明 |
1158| -------- | -------- | -------- | -------- | -------- |
1159| isP2pGo | boolean | 是 | 否 | 是否是群主。 |
1160| ownerInfo | [WifiP2pDevice](#wifip2pdevice8) | 是 | 否 | 群组的设备信息。 |
1161| passphrase | string | 是 | 否 | 群组密钥。 |
1162| interface | string | 是 | 否 | 接口名称。 |
1163| groupName | string | 是 | 否 | 群组名称。 |
1164| networkId | number | 是 | 否 | 网络ID。 |
1165| frequency | number | 是 | 否 | 群组的频率。 |
1166| clientDevices | [WifiP2pDevice[]](#wifip2pdevice8) | 是 | 否 | 接入的设备列表信息。 |
1167| goIpAddress | string | 是 | 否 | 群组IP地址。 |
1168
1169
1170
1171## wifi.on('wifiStateChange')<sup>7+</sup>
1172
1173on(type: 'wifiStateChange', callback: Callback&lt;number&gt;): void
1174
1175注册WLAN状态改变事件。
1176
1177**需要权限:** ohos.permission.GET_WIFI_INFO
1178
1179**系统能力:** SystemCapability.Communication.WiFi.STA
1180
1181**参数:**
1182
1183  | **参数名** | **类型** | **必填** | **说明** |
1184  | -------- | -------- | -------- | -------- |
1185  | type | string | 是 | 固定填"wifiStateChange"字符串。 |
1186  | callback | Callback&lt;number&gt; | 是 | 状态改变回调函数。 |
1187
1188**状态改变事件的枚举:**
1189
1190| **枚举值** | **说明** |
1191| -------- | -------- |
1192| 0 | 未激活。 |
1193| 1 | 已激活。 |
1194| 2 | 激活中。 |
1195| 3 | 去激活中。 |
1196
1197
1198## wifi.off('wifiStateChange')<sup>7+</sup>
1199
1200off(type: 'wifiStateChange', callback?: Callback&lt;number&gt;): void
1201
1202取消注册WLAN状态改变事件。
1203
1204**需要权限:** ohos.permission.GET_WIFI_INFO
1205
1206**系统能力:** SystemCapability.Communication.WiFi.STA
1207
1208**参数:**
1209
1210  | **参数名** | **类型** | **必填** | **说明** |
1211  | -------- | -------- | -------- | -------- |
1212  | type | string | 是 | 固定填"wifiStateChange"字符串。 |
1213  | callback | Callback&lt;number&gt; | 否 | 状态改变回调函数。如果callback不填,将取消注册该事件关联的所有回调函数。 |
1214
1215**示例:**
1216```ts
1217import wifi from '@ohos.wifi';
1218
1219let recvPowerNotifyFunc = (result:number) => {
1220    console.info("Receive power state change event: " + result);
1221}
1222
1223// Register event
1224wifi.on("wifiStateChange", recvPowerNotifyFunc);
1225
1226// Unregister event
1227wifi.off("wifiStateChange", recvPowerNotifyFunc);
1228```
1229
1230
1231## wifi.on('wifiConnectionChange')<sup>7+</sup>
1232
1233on(type: 'wifiConnectionChange', callback: Callback&lt;number&gt;): void
1234
1235注册WLAN连接状态改变事件。
1236
1237**需要权限:** ohos.permission.GET_WIFI_INFO
1238
1239**系统能力:** SystemCapability.Communication.WiFi.STA
1240
1241**参数:**
1242
1243  | **参数名** | **类型** | **必填** | **说明** |
1244  | -------- | -------- | -------- | -------- |
1245  | type | string | 是 | 固定填"wifiConnectionChange"字符串。 |
1246  | callback | Callback&lt;number&gt; | 是 | 状态改变回调函数。 |
1247
1248**连接状态改变事件的枚举:**
1249
1250| **枚举值** | **说明** |
1251| -------- | -------- |
1252| 0 | 已断开。 |
1253| 1 | 已连接。 |
1254
1255
1256## wifi.off('wifiConnectionChange')<sup>7+</sup>
1257
1258off(type: 'wifiConnectionChange', callback?: Callback&lt;number&gt;): void
1259
1260取消注册WLAN连接状态改变事件。
1261
1262**需要权限:** ohos.permission.GET_WIFI_INFO
1263
1264**系统能力:** SystemCapability.Communication.WiFi.STA
1265
1266**参数:**
1267
1268  | **参数名** | **类型** | **必填** | **说明** |
1269  | -------- | -------- | -------- | -------- |
1270  | type | string | 是 | 固定填"wifiConnectionChange"字符串。 |
1271  | callback | Callback&lt;number&gt; | 否 | 连接状态改变回调函数。如果callback不填,将取消注册该事件关联的所有回调函数。 |
1272
1273**示例:**
1274```ts
1275import wifi from '@ohos.wifi';
1276
1277let recvWifiConnectionChangeFunc = (result:number) => {
1278    console.info("Receive wifi connection change event: " + result);
1279}
1280
1281// Register event
1282wifi.on("wifiConnectionChange", recvWifiConnectionChangeFunc);
1283
1284// Unregister event
1285wifi.off("wifiConnectionChange", recvWifiConnectionChangeFunc);
1286```
1287
1288## wifi.on('wifiScanStateChange')<sup>7+</sup>
1289
1290on(type: 'wifiScanStateChange', callback: Callback&lt;number&gt;): void
1291
1292注册扫描状态改变事件。
1293
1294**需要权限:** ohos.permission.GET_WIFI_INFO
1295
1296**系统能力:** SystemCapability.Communication.WiFi.STA
1297
1298**参数:**
1299
1300  | **参数名** | **类型** | **必填** | **说明** |
1301  | -------- | -------- | -------- | -------- |
1302  | type | string | 是 | 固定填"wifiScanStateChange"字符串。 |
1303  | callback | Callback&lt;number&gt; | 是 | 状态改变回调函数。 |
1304
1305**扫描状态改变事件的枚举:**
1306
1307| **枚举值** | **说明** |
1308| -------- | -------- |
1309| 0 | 扫描失败。 |
1310| 1 | 扫描成功。 |
1311
1312
1313## wifi.off('wifiScanStateChange')<sup>7+</sup>
1314
1315off(type: 'wifiScanStateChange', callback?: Callback&lt;number&gt;): void
1316
1317取消注册扫描状态改变事件。
1318
1319**需要权限:** ohos.permission.GET_WIFI_INFO
1320
1321**系统能力:** SystemCapability.Communication.WiFi.STA
1322
1323**参数:**
1324
1325| **参数名** | **类型** | **必填** | **说明** |
1326| -------- | -------- | -------- | -------- |
1327| type | string | 是 | 固定填"wifiScanStateChange"字符串。 |
1328| callback | Callback&lt;number&gt; | 否 | 状态改变回调函数。如果callback不填,将取消注册该事件关联的所有回调函数。 |
1329
1330**示例:**
1331```ts
1332import wifi from '@ohos.wifi';
1333
1334let recvWifiScanStateChangeFunc = (result:number) => {
1335    console.info("Receive Wifi scan state change event: " + result);
1336}
1337
1338// Register event
1339wifi.on("wifiScanStateChange", recvWifiScanStateChangeFunc);
1340
1341// Unregister event
1342wifi.off("wifiScanStateChange", recvWifiScanStateChangeFunc);
1343```
1344
1345## wifi.on('wifiRssiChange')<sup>7+</sup>
1346
1347on(type: 'wifiRssiChange', callback: Callback&lt;number&gt;): void
1348
1349注册RSSI状态改变事件。
1350
1351**需要权限:** ohos.permission.GET_WIFI_INFO
1352
1353**系统能力:** SystemCapability.Communication.WiFi.STA
1354
1355**参数:**
1356
1357  | **参数名** | **类型** | **必填** | **说明** |
1358  | -------- | -------- | -------- | -------- |
1359  | type | string | 是 | 固定填"wifiRssiChange"字符串。 |
1360  | callback | Callback&lt;number&gt; | 是 | 状态改变回调函数,返回以dBm为单位的RSSI值。 |
1361
1362
1363## wifi.off('wifiRssiChange')<sup>7+</sup>
1364
1365off(type: 'wifiRssiChange', callback?: Callback&lt;number&gt;): void
1366
1367取消注册RSSI状态改变事件。
1368
1369**需要权限:** ohos.permission.GET_WIFI_INFO
1370
1371**系统能力:** SystemCapability.Communication.WiFi.STA
1372
1373**参数:**
1374
1375  | **参数名** | **类型** | **必填** | **说明** |
1376  | -------- | -------- | -------- | -------- |
1377  | type | string | 是 | 固定填"wifiRssiChange"字符串。 |
1378  | callback | Callback&lt;number&gt; | 否 | 状态改变回调函数。如果callback不填,将取消注册该事件关联的所有回调函数。 |
1379
1380**示例:**
1381```ts
1382import wifi from '@ohos.wifi';
1383
1384let recvWifiRssiChangeFunc = (result:number) => {
1385    console.info("Receive wifi rssi change event: " + result);
1386}
1387
1388// Register event
1389wifi.on("wifiRssiChange", recvWifiRssiChangeFunc);
1390
1391// Unregister event
1392wifi.off("wifiRssiChange", recvWifiRssiChangeFunc);
1393
1394```
1395
1396
1397## wifi.on('hotspotStateChange')<sup>7+</sup>
1398
1399on(type: 'hotspotStateChange', callback: Callback&lt;number&gt;): void
1400
1401注册热点状态改变事件。
1402
1403**需要权限:** ohos.permission.GET_WIFI_INFO
1404
1405**系统能力:** SystemCapability.Communication.WiFi.AP.Core
1406
1407**参数:**
1408
1409  | **参数名** | **类型** | **必填** | **说明** |
1410  | -------- | -------- | -------- | -------- |
1411  | type | string | 是 | 固定填"hotspotStateChange"字符串。 |
1412  | callback | Callback&lt;number&gt; | 是 | 状态改变回调函数。 |
1413
1414**热点状态改变事件的枚举:**
1415
1416| **枚举值** | **说明** |
1417| -------- | -------- |
1418| 0 | 未激活。 |
1419| 1 | 已激活。 |
1420| 2 | 激活中。 |
1421| 3 | 去激活中。 |
1422
1423**示例:**
1424```ts
1425import wifi from '@ohos.wifi';
1426
1427let recvHotspotStateChangeFunc = (result:number) => {
1428    console.info("Receive hotspot state change event: " + result);
1429}
1430
1431// Register event
1432wifi.on("hotspotStateChange", recvHotspotStateChangeFunc);
1433
1434// Unregister event
1435wifi.off("hotspotStateChange", recvHotspotStateChangeFunc);
1436```
1437
1438## wifi.off('hotspotStateChange')<sup>7+</sup>
1439
1440off(type: 'hotspotStateChange', callback?: Callback&lt;number&gt;): void
1441
1442取消注册热点状态改变事件。
1443
1444**需要权限:** ohos.permission.GET_WIFI_INFO
1445
1446**系统能力:** SystemCapability.Communication.WiFi.AP.Core
1447
1448**参数:**
1449
1450  | **参数名** | **类型** | **必填** | **说明** |
1451  | -------- | -------- | -------- | -------- |
1452  | type | string | 是 | 固定填"hotspotStateChange"字符串。 |
1453  | callback | Callback&lt;number&gt; | 否 | 状态改变回调函数。如果callback不填,将取消注册该事件关联的所有回调函数。 |
1454
1455
1456
1457## wifi.on('p2pStateChange')<sup>8+</sup>
1458
1459on(type: 'p2pStateChange', callback: Callback&lt;number&gt;): void
1460
1461注册P2P开关状态改变事件。
1462
1463**需要权限:** ohos.permission.GET_WIFI_INFO
1464
1465**系统能力:** SystemCapability.Communication.WiFi.P2P
1466
1467**参数:**
1468
1469  | **参数名** | **类型** | **必填** | **说明** |
1470  | -------- | -------- | -------- | -------- |
1471  | type | string | 是 | 固定填"p2pStateChange"字符串。 |
1472  | callback | Callback&lt;number&gt; | 是 | 状态改变回调函数。 |
1473
1474**P2P状态改变事件的枚举:**
1475
1476| **枚举值** | **说明** |
1477| -------- | -------- |
1478| 1 | 空闲。 |
1479| 2 | 打开中。 |
1480| 3 | 已打开。 |
1481| 4 | 关闭中。 |
1482| 5 | 已关闭。 |
1483
1484## wifi.off('p2pStateChange')<sup>8+</sup>
1485
1486off(type: 'p2pStateChange', callback?: Callback&lt;number&gt;): void
1487
1488取消注册P2P开关状态改变事件。
1489
1490**需要权限:** ohos.permission.GET_WIFI_INFO
1491
1492**系统能力:** SystemCapability.Communication.WiFi.P2P
1493
1494**参数:**
1495
1496  | **参数名** | **类型** | **必填** | **说明** |
1497  | -------- | -------- | -------- | -------- |
1498  | type | string | 是 | 固定填"p2pStateChange"字符串。 |
1499  | callback | Callback&lt;number&gt; | 否 | 状态改变回调函数。如果callback不填,将取消注册该事件关联的所有回调函数。 |
1500
1501**示例:**
1502```ts
1503import wifi from '@ohos.wifi';
1504
1505let recvP2pStateChangeFunc = (result:number) => {
1506    console.info("Receive p2p state change event: " + result);
1507}
1508
1509// Register event
1510wifi.on("p2pStateChange", recvP2pStateChangeFunc);
1511
1512// Unregister event
1513wifi.off("p2pStateChange", recvP2pStateChangeFunc);
1514```
1515
1516## wifi.on('p2pConnectionChange')<sup>8+</sup>
1517
1518on(type: 'p2pConnectionChange', callback: Callback&lt;WifiP2pLinkedInfo&gt;): void
1519
1520注册P2P连接状态改变事件。
1521
1522**需要权限:** ohos.permission.GET_WIFI_INFO
1523
1524**系统能力:** SystemCapability.Communication.WiFi.P2P
1525
1526**参数:**
1527
1528  | **参数名** | **类型** | **必填** | **说明** |
1529  | -------- | -------- | -------- | -------- |
1530  | type | string | 是 | 固定填"p2pConnectionChange"字符串。 |
1531  | callback | Callback&lt;[WifiP2pLinkedInfo](#wifip2plinkedinfo8)&gt; | 是 | 状态改变回调函数。 |
1532
1533
1534## wifi.off('p2pConnectionChange')<sup>8+</sup>
1535
1536off(type: 'p2pConnectionChange', callback?: Callback&lt;WifiP2pLinkedInfo&gt;): void
1537
1538取消注册P2P连接状态改变事件。
1539
1540**需要权限:** ohos.permission.GET_WIFI_INFO
1541
1542**系统能力:** SystemCapability.Communication.WiFi.P2P
1543
1544**参数:**
1545
1546  | **参数名** | **类型** | **必填** | **说明** |
1547  | -------- | -------- | -------- | -------- |
1548  | type | string | 是 | 固定填"p2pConnectionChange"字符串。 |
1549  | callback | Callback&lt;[WifiP2pLinkedInfo](#wifip2plinkedinfo8)&gt; | 否 | 状态改变回调函数。如果callback不填,将取消注册该事件关联的所有回调函数。 |
1550
1551**示例:**
1552```ts
1553import wifi from '@ohos.wifi';
1554
1555let recvP2pConnectionChangeFunc = (result:wifi.WifiP2pLinkedInfo) => {
1556    console.info("Receive p2p connection change event: " + result);
1557}
1558
1559// Register event
1560wifi.on("p2pConnectionChange", recvP2pConnectionChangeFunc);
1561
1562// Unregister event
1563wifi.off("p2pConnectionChange", recvP2pConnectionChangeFunc);
1564```
1565
1566## wifi.on('p2pDeviceChange')<sup>8+</sup>
1567
1568on(type: 'p2pDeviceChange', callback: Callback&lt;WifiP2pDevice&gt;): void
1569
1570注册P2P设备状态改变事件。
1571
1572**需要权限:** ohos.permission.GET_WIFI_INFOohos.permission.LOCATION
1573
1574**系统能力:** SystemCapability.Communication.WiFi.P2P
1575
1576**参数:**
1577
1578  | **参数名** | **类型** | **必填** | **说明** |
1579  | -------- | -------- | -------- | -------- |
1580  | type | string | 是 | 固定填"p2pDeviceChange"字符串。 |
1581  | callback | Callback&lt;[WifiP2pDevice](#wifip2pdevice8)&gt; | 是 | 状态改变回调函数。 |
1582
1583
1584## wifi.off('p2pDeviceChange')<sup>8+</sup>
1585
1586off(type: 'p2pDeviceChange', callback?: Callback&lt;WifiP2pDevice&gt;): void
1587
1588取消注册P2P设备状态改变事件。
1589
1590**需要权限:** ohos.permission.LOCATION
1591
1592**系统能力:** SystemCapability.Communication.WiFi.P2P
1593
1594**参数:**
1595
1596  | **参数名** | **类型** | **必填** | **说明** |
1597  | -------- | -------- | -------- | -------- |
1598  | type | string | 是 | 固定填"p2pDeviceChange"字符串。 |
1599  | callback | Callback&lt;[WifiP2pDevice](#wifip2pdevice8)&gt; | 否 | 状态改变回调函数。如果callback不填,将取消注册该事件关联的所有回调函数。 |
1600
1601**示例:**
1602```ts
1603import wifi from '@ohos.wifi';
1604
1605let recvP2pDeviceChangeFunc = (result:wifi.WifiP2pDevice) => {
1606    console.info("Receive p2p device change event: " + result);
1607}
1608
1609// Register event
1610wifi.on("p2pDeviceChange", recvP2pDeviceChangeFunc);
1611
1612// Unregister event
1613wifi.off("p2pDeviceChange", recvP2pDeviceChangeFunc);
1614```
1615
1616## wifi.on('p2pPeerDeviceChange')<sup>8+</sup>
1617
1618on(type: 'p2pPeerDeviceChange', callback: Callback&lt;WifiP2pDevice[]&gt;): void
1619
1620注册P2P对端设备状态改变事件。
1621
1622**需要权限:** ohos.permission.GET_WIFI_INFOohos.permission.LOCATION
1623
1624**系统能力:** SystemCapability.Communication.WiFi.P2P
1625
1626**参数:**
1627
1628  | **参数名** | **类型** | **必填** | **说明** |
1629  | -------- | -------- | -------- | -------- |
1630  | type | string | 是 | 固定填"p2pPeerDeviceChange"字符串。 |
1631  | callback | Callback&lt;[WifiP2pDevice[]](#wifip2pdevice8)&gt; | 是 | 状态改变回调函数。 |
1632
1633
1634## wifi.off('p2pPeerDeviceChange')<sup>8+</sup>
1635
1636off(type: 'p2pPeerDeviceChange', callback?: Callback&lt;WifiP2pDevice[]&gt;): void
1637
1638取消注册P2P对端设备状态改变事件。
1639
1640**需要权限:** ohos.permission.LOCATION
1641
1642**系统能力:** SystemCapability.Communication.WiFi.P2P
1643
1644**参数:**
1645
1646  | **参数名** | **类型** | **必填** | **说明** |
1647  | -------- | -------- | -------- | -------- |
1648  | type | string | 是 | 固定填"p2pPeerDeviceChange"字符串。 |
1649  | callback | Callback&lt;[WifiP2pDevice[]](#wifip2pdevice8)&gt; | 否 | 状态改变回调函数。如果callback不填,将取消注册该事件关联的所有回调函数。 |
1650
1651**示例:**
1652```ts
1653import wifi from '@ohos.wifi';
1654
1655let recvP2pPeerDeviceChangeFunc = (result:wifi.WifiP2pDevice[]) => {
1656    console.info("Receive p2p peer device change event: " + result);
1657}
1658
1659// Register event
1660wifi.on("p2pPeerDeviceChange", recvP2pPeerDeviceChangeFunc);
1661
1662// Unregister event
1663wifi.off("p2pPeerDeviceChange", recvP2pPeerDeviceChangeFunc);
1664```
1665
1666## wifi.on('p2pPersistentGroupChange')<sup>8+</sup>
1667
1668on(type: 'p2pPersistentGroupChange', callback: Callback&lt;void&gt;): void
1669
1670注册P2P永久组状态改变事件。
1671
1672**需要权限:** ohos.permission.GET_WIFI_INFO
1673
1674**系统能力:** SystemCapability.Communication.WiFi.P2P
1675
1676**参数:**
1677
1678  | **参数名** | **类型** | **必填** | **说明** |
1679  | -------- | -------- | -------- | -------- |
1680  | type | string | 是 | 固定填"p2pPersistentGroupChange"字符串。 |
1681  | callback | Callback&lt;void&gt; | 是 | 状态改变回调函数。 |
1682
1683
1684## wifi.off('p2pPersistentGroupChange')<sup>8+</sup>
1685
1686off(type: 'p2pPersistentGroupChange', callback?: Callback&lt;void&gt;): void
1687
1688取消注册P2P永久组状态改变事件。
1689
1690**需要权限:** ohos.permission.GET_WIFI_INFO
1691
1692**系统能力:** SystemCapability.Communication.WiFi.P2P
1693
1694**参数:**
1695
1696  | **参数名** | **类型** | **必填** | **说明** |
1697  | -------- | -------- | -------- | -------- |
1698  | type | string | 是 | 固定填"p2pPersistentGroupChange"字符串。 |
1699  | callback | Callback&lt;void&gt; | 否 | 状态改变回调函数。如果callback不填,将取消注册该事件关联的所有回调函数。 |
1700
1701**示例:**
1702```ts
1703import wifi from '@ohos.wifi';
1704
1705let recvP2pPersistentGroupChangeFunc = (result:void) => {
1706    console.info("Receive p2p persistent group change event: " + result);
1707}
1708
1709// Register event
1710wifi.on("p2pPersistentGroupChange", recvP2pPersistentGroupChangeFunc);
1711
1712// Unregister event
1713wifi.off("p2pPersistentGroupChange", recvP2pPersistentGroupChangeFunc);
1714
1715```
1716
1717## wifi.on('p2pDiscoveryChange')<sup>8+</sup>
1718
1719on(type: 'p2pDiscoveryChange', callback: Callback&lt;number&gt;): void
1720
1721注册发现设备状态改变事件。
1722
1723**需要权限:** ohos.permission.GET_WIFI_INFO
1724
1725**系统能力:** SystemCapability.Communication.WiFi.P2P
1726
1727**参数:**
1728
1729  | **参数名** | **类型** | **必填** | **说明** |
1730  | -------- | -------- | -------- | -------- |
1731  | type | string | 是 | 固定填"p2pDiscoveryChange"字符串。 |
1732  | callback | Callback&lt;number&gt; | 是 | 状态改变回调函数。 |
1733
1734**发现设备状态改变事件的枚举:**
1735
1736| **枚举值** | **说明** |
1737| -------- | -------- |
1738| 0 | 初始状态。 |
1739| 1 | 发现成功。 |
1740
1741
1742## wifi.off('p2pDiscoveryChange')<sup>8+</sup>
1743
1744off(type: 'p2pDiscoveryChange', callback?: Callback&lt;number&gt;): void
1745
1746取消注册发现设备状态改变事件。
1747
1748**需要权限:** ohos.permission.GET_WIFI_INFO
1749
1750**系统能力:** SystemCapability.Communication.WiFi.P2P
1751
1752**参数:**
1753
1754  | **参数名** | **类型** | **必填** | **说明** |
1755  | -------- | -------- | -------- | -------- |
1756  | type | string | 是 | 固定填"p2pDiscoveryChange"字符串。 |
1757  | callback | Callback&lt;number&gt; | 否 | 状态改变回调函数。如果callback不填,将取消注册该事件关联的所有回调函数。 |
1758
1759**示例:**
1760```ts
1761import wifi from '@ohos.wifi';
1762
1763let recvP2pDiscoveryChangeFunc = (result:number) => {
1764    console.info("Receive p2p discovery change event: " + result);
1765}
1766
1767// Register event
1768wifi.on("p2pDiscoveryChange", recvP2pDiscoveryChangeFunc);
1769
1770// Unregister event
1771wifi.off("p2pDiscoveryChange", recvP2pDiscoveryChangeFunc);
1772```