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_INFO 和 ohos.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_MAC 或 ohos.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_MAC 或 ohos.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 Equivalent Privacy (WEP)加密类型。 | 186| WIFI_SEC_TYPE_PSK | 3 | Pre-shared key (PSK)加密类型。 | 187| WIFI_SEC_TYPE_SAE | 4 | Simultaneous Authentication of Equals (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<boolean> 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<boolean> | 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<boolean>): 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<boolean> | 是 | 回调函数。当操作成功时,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<boolean> 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<boolean> | 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<boolean>): 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<boolean> | 是 | 回调函数。当操作成功时,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, 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<WifiLinkedInfo> 458 459获取WLAN连接信息,使用Promise异步回调。 460 461**需要权限:** ohos.permission.GET_WIFI_INFO 462 463**系统能力:** SystemCapability.Communication.WiFi.STA 464 465**返回值:** 466 467 | 类型 | 说明 | 468 | -------- | -------- | 469 | Promise<[WifiLinkedInfo](#wifilinkedinfo)> | Promise对象。表示WLAN连接信息。 | 470 471 472## wifi.getLinkedInfo 473 474getLinkedInfo(callback: AsyncCallback<WifiLinkedInfo>): 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<[WifiLinkedInfo](#wifilinkedinfo)> | 是 | 回调函数。当获取成功时,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:已连接, 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:支持, 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<WifiP2pLinkedInfo> 680 681获取P2P连接信息,使用Promise异步回调。 682 683**需要权限:** ohos.permission.GET_WIFI_INFO 684 685**系统能力:** SystemCapability.Communication.WiFi.P2P 686 687**返回值:** 688 689 | 类型 | 说明 | 690 | -------- | -------- | 691 | Promise<[WifiP2pLinkedInfo](#wifip2plinkedinfo8)> | 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<WifiP2pLinkedInfo>): 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<[WifiP2pLinkedInfo](#wifip2plinkedinfo8)> | 是 | 回调函数。当操作成功时,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<WifiP2pGroupInfo> 756 757获取P2P当前组信息,使用Promise异步回调。 758 759**需要权限:** ohos.permission.GET_WIFI_INFO 和 ohos.permission.LOCATION 760 761**系统能力:** SystemCapability.Communication.WiFi.P2P 762 763**返回值:** 764 765 | 类型 | 说明 | 766 | -------- | -------- | 767 | Promise<[WifiP2pGroupInfo](#wifip2pgroupinfo8)> | Promise对象。表示当前组信息。 | 768 769 770## wifi.getCurrentGroup<sup>8+</sup> 771 772getCurrentGroup(callback: AsyncCallback<WifiP2pGroupInfo>): void 773 774获取P2P当前组信息,使用callback异步回调。 775 776**需要权限:** ohos.permission.GET_WIFI_INFO 和 ohos.permission.LOCATION 777 778**系统能力:** SystemCapability.Communication.WiFi.P2P 779 780**参数:** 781 782 | 参数名 | 类型 | 必填 | 说明 | 783 | -------- | -------- | -------- | -------- | 784 | callback | AsyncCallback<[WifiP2pGroupInfo](#wifip2pgroupinfo8)> | 是 | 回调函数。当操作成功时,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<WifiP2pDevice[]> 806 807获取P2P对端设备列表信息,使用Promise异步回调。 808 809**需要权限:** ohos.permission.GET_WIFI_INFO 和 ohos.permission.LOCATION 810 811**系统能力:** SystemCapability.Communication.WiFi.P2P 812 813**返回值:** 814 815 | 类型 | 说明 | 816 | -------- | -------- | 817 | Promise<[WifiP2pDevice[]](#wifip2pdevice8)> | Promise对象。表示对端设备列表信息。 | 818 819 820## wifi.getP2pPeerDevices<sup>8+</sup> 821 822getP2pPeerDevices(callback: AsyncCallback<WifiP2pDevice[]>): void 823 824获取P2P对端设备列表信息,使用callback异步回调。 825 826**需要权限:** ohos.permission.GET_WIFI_INFO 和 ohos.permission.LOCATION 827 828**系统能力:** SystemCapability.Communication.WiFi.P2P 829 830**参数:** 831 832 | 参数名 | 类型 | 必填 | 说明 | 833 | -------- | -------- | -------- | -------- | 834 | callback | AsyncCallback<[WifiP2pDevice[]](#wifip2pdevice8)> | 是 | 回调函数。当操作成功时,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:创建群组操作执行成功, 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:操作执行成功, 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_INFO 和 ohos.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:操作执行成功, 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:操作执行成功, 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_INFO 和 ohos.permission.LOCATION 1104 1105**系统能力:** SystemCapability.Communication.WiFi.P2P 1106 1107**返回值:** 1108 1109 | 类型 | 说明 | 1110 | -------- | -------- | 1111 | boolean | true:操作执行成功, 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<number>): 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<number> | 是 | 状态改变回调函数。 | 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<number>): 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<number> | 否 | 状态改变回调函数。如果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<number>): 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<number> | 是 | 状态改变回调函数。 | 1247 1248**连接状态改变事件的枚举:** 1249 1250| **枚举值** | **说明** | 1251| -------- | -------- | 1252| 0 | 已断开。 | 1253| 1 | 已连接。 | 1254 1255 1256## wifi.off('wifiConnectionChange')<sup>7+</sup> 1257 1258off(type: 'wifiConnectionChange', callback?: Callback<number>): 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<number> | 否 | 连接状态改变回调函数。如果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<number>): 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<number> | 是 | 状态改变回调函数。 | 1304 1305**扫描状态改变事件的枚举:** 1306 1307| **枚举值** | **说明** | 1308| -------- | -------- | 1309| 0 | 扫描失败。 | 1310| 1 | 扫描成功。 | 1311 1312 1313## wifi.off('wifiScanStateChange')<sup>7+</sup> 1314 1315off(type: 'wifiScanStateChange', callback?: Callback<number>): 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<number> | 否 | 状态改变回调函数。如果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<number>): 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<number> | 是 | 状态改变回调函数,返回以dBm为单位的RSSI值。 | 1361 1362 1363## wifi.off('wifiRssiChange')<sup>7+</sup> 1364 1365off(type: 'wifiRssiChange', callback?: Callback<number>): 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<number> | 否 | 状态改变回调函数。如果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<number>): 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<number> | 是 | 状态改变回调函数。 | 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<number>): 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<number> | 否 | 状态改变回调函数。如果callback不填,将取消注册该事件关联的所有回调函数。 | 1454 1455 1456 1457## wifi.on('p2pStateChange')<sup>8+</sup> 1458 1459on(type: 'p2pStateChange', callback: Callback<number>): 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<number> | 是 | 状态改变回调函数。 | 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<number>): 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<number> | 否 | 状态改变回调函数。如果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<WifiP2pLinkedInfo>): 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<[WifiP2pLinkedInfo](#wifip2plinkedinfo8)> | 是 | 状态改变回调函数。 | 1532 1533 1534## wifi.off('p2pConnectionChange')<sup>8+</sup> 1535 1536off(type: 'p2pConnectionChange', callback?: Callback<WifiP2pLinkedInfo>): 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<[WifiP2pLinkedInfo](#wifip2plinkedinfo8)> | 否 | 状态改变回调函数。如果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<WifiP2pDevice>): void 1569 1570注册P2P设备状态改变事件。 1571 1572**需要权限:** ohos.permission.GET_WIFI_INFO 和 ohos.permission.LOCATION 1573 1574**系统能力:** SystemCapability.Communication.WiFi.P2P 1575 1576**参数:** 1577 1578 | **参数名** | **类型** | **必填** | **说明** | 1579 | -------- | -------- | -------- | -------- | 1580 | type | string | 是 | 固定填"p2pDeviceChange"字符串。 | 1581 | callback | Callback<[WifiP2pDevice](#wifip2pdevice8)> | 是 | 状态改变回调函数。 | 1582 1583 1584## wifi.off('p2pDeviceChange')<sup>8+</sup> 1585 1586off(type: 'p2pDeviceChange', callback?: Callback<WifiP2pDevice>): 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<[WifiP2pDevice](#wifip2pdevice8)> | 否 | 状态改变回调函数。如果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<WifiP2pDevice[]>): void 1619 1620注册P2P对端设备状态改变事件。 1621 1622**需要权限:** ohos.permission.GET_WIFI_INFO 和 ohos.permission.LOCATION 1623 1624**系统能力:** SystemCapability.Communication.WiFi.P2P 1625 1626**参数:** 1627 1628 | **参数名** | **类型** | **必填** | **说明** | 1629 | -------- | -------- | -------- | -------- | 1630 | type | string | 是 | 固定填"p2pPeerDeviceChange"字符串。 | 1631 | callback | Callback<[WifiP2pDevice[]](#wifip2pdevice8)> | 是 | 状态改变回调函数。 | 1632 1633 1634## wifi.off('p2pPeerDeviceChange')<sup>8+</sup> 1635 1636off(type: 'p2pPeerDeviceChange', callback?: Callback<WifiP2pDevice[]>): 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<[WifiP2pDevice[]](#wifip2pdevice8)> | 否 | 状态改变回调函数。如果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<void>): 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<void> | 是 | 状态改变回调函数。 | 1682 1683 1684## wifi.off('p2pPersistentGroupChange')<sup>8+</sup> 1685 1686off(type: 'p2pPersistentGroupChange', callback?: Callback<void>): 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<void> | 否 | 状态改变回调函数。如果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<number>): 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<number> | 是 | 状态改变回调函数。 | 1733 1734**发现设备状态改变事件的枚举:** 1735 1736| **枚举值** | **说明** | 1737| -------- | -------- | 1738| 0 | 初始状态。 | 1739| 1 | 发现成功。 | 1740 1741 1742## wifi.off('p2pDiscoveryChange')<sup>8+</sup> 1743 1744off(type: 'p2pDiscoveryChange', callback?: Callback<number>): 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<number> | 否 | 状态改变回调函数。如果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```