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接入点的频段。 | 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接入点的频段。 | 520| linkSpeed | number | 是 | 否 | WLAN接入点的速度。 | 521| frequency | number | 是 | 否 | WLAN接入点的频率。 | 522| isHidden | boolean | 是 | 否 | WLAN接入点是否是隐藏网络。 | 523| isRestricted | boolean | 是 | 否 | WLAN接入点是否限制数据量。 | 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 | 是 | 否 | 是否是群主。 | 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:操作执行成功,操作执行失败。 | 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 1152 1153## WifiP2pGroupInfo<sup>8+</sup> 1154 1155表示P2P群组相关信息。 1156 1157**系统能力:** SystemCapability.Communication.WiFi.P2P 1158 1159| 名称 | 类型 | 可读 | 可写 | 说明 | 1160| -------- | -------- | -------- | -------- | -------- | 1161| isP2pGo | boolean | 是 | 否 | 是否是群主。 | 1162| ownerInfo | [WifiP2pDevice](#wifip2pdevice8) | 是 | 否 | 群组的设备信息。 | 1163| passphrase | string | 是 | 否 | 群组密钥。 | 1164| interface | string | 是 | 否 | 接口名称。 | 1165| groupName | string | 是 | 否 | 群组名称。 | 1166| networkId | number | 是 | 否 | 网络ID。 | 1167| frequency | number | 是 | 否 | 群组的频率。 | 1168| clientDevices | [WifiP2pDevice[]](#wifip2pdevice8) | 是 | 否 | 接入的设备列表信息。 | 1169| goIpAddress | string | 是 | 否 | 群组IP地址。 | 1170 1171 1172 1173## wifi.on('wifiStateChange')<sup>7+</sup> 1174 1175on(type: 'wifiStateChange', callback: Callback<number>): void 1176 1177注册WLAN状态改变事件。 1178 1179**需要权限:** ohos.permission.GET_WIFI_INFO 1180 1181**系统能力:** SystemCapability.Communication.WiFi.STA 1182 1183**参数:** 1184 1185 | **参数名** | **类型** | **必填** | **说明** | 1186 | -------- | -------- | -------- | -------- | 1187 | type | string | 是 | 固定填"wifiStateChange"字符串。 | 1188 | callback | Callback<number> | 是 | 状态改变回调函数。 | 1189 1190**状态改变事件的枚举:** 1191 1192| **枚举值** | **说明** | 1193| -------- | -------- | 1194| 0 | 未激活。 | 1195| 1 | 已激活。 | 1196| 2 | 激活中。 | 1197| 3 | 去激活中。 | 1198 1199 1200## wifi.off('wifiStateChange')<sup>7+</sup> 1201 1202off(type: 'wifiStateChange', callback?: Callback<number>): void 1203 1204取消注册WLAN状态改变事件。 1205 1206**需要权限:** ohos.permission.GET_WIFI_INFO 1207 1208**系统能力:** SystemCapability.Communication.WiFi.STA 1209 1210**参数:** 1211 1212 | **参数名** | **类型** | **必填** | **说明** | 1213 | -------- | -------- | -------- | -------- | 1214 | type | string | 是 | 固定填"wifiStateChange"字符串。 | 1215 | callback | Callback<number> | 否 | 状态改变回调函数。如果callback不填,将取消注册该事件关联的所有回调函数。 | 1216 1217**示例:** 1218```ts 1219import wifi from '@ohos.wifi'; 1220 1221let recvPowerNotifyFunc = (result:number) => { 1222 console.info("Receive power state change event: " + result); 1223} 1224 1225// Register event 1226wifi.on("wifiStateChange", recvPowerNotifyFunc); 1227 1228// Unregister event 1229wifi.off("wifiStateChange", recvPowerNotifyFunc); 1230``` 1231 1232 1233## wifi.on('wifiConnectionChange')<sup>7+</sup> 1234 1235on(type: 'wifiConnectionChange', callback: Callback<number>): void 1236 1237注册WLAN连接状态改变事件。 1238 1239**需要权限:** ohos.permission.GET_WIFI_INFO 1240 1241**系统能力:** SystemCapability.Communication.WiFi.STA 1242 1243**参数:** 1244 1245 | **参数名** | **类型** | **必填** | **说明** | 1246 | -------- | -------- | -------- | -------- | 1247 | type | string | 是 | 固定填"wifiConnectionChange"字符串。 | 1248 | callback | Callback<number> | 是 | 状态改变回调函数。 | 1249 1250**连接状态改变事件的枚举:** 1251 1252| **枚举值** | **说明** | 1253| -------- | -------- | 1254| 0 | 已断开。 | 1255| 1 | 已连接。 | 1256 1257 1258## wifi.off('wifiConnectionChange')<sup>7+</sup> 1259 1260off(type: 'wifiConnectionChange', callback?: Callback<number>): void 1261 1262取消注册WLAN连接状态改变事件。 1263 1264**需要权限:** ohos.permission.GET_WIFI_INFO 1265 1266**系统能力:** SystemCapability.Communication.WiFi.STA 1267 1268**参数:** 1269 1270 | **参数名** | **类型** | **必填** | **说明** | 1271 | -------- | -------- | -------- | -------- | 1272 | type | string | 是 | 固定填"wifiConnectionChange"字符串。 | 1273 | callback | Callback<number> | 否 | 连接状态改变回调函数。如果callback不填,将取消注册该事件关联的所有回调函数。 | 1274 1275**示例:** 1276```ts 1277import wifi from '@ohos.wifi'; 1278 1279let recvWifiConnectionChangeFunc = (result:number) => { 1280 console.info("Receive wifi connection change event: " + result); 1281} 1282 1283// Register event 1284wifi.on("wifiConnectionChange", recvWifiConnectionChangeFunc); 1285 1286// Unregister event 1287wifi.off("wifiConnectionChange", recvWifiConnectionChangeFunc); 1288``` 1289 1290## wifi.on('wifiScanStateChange')<sup>7+</sup> 1291 1292on(type: 'wifiScanStateChange', callback: Callback<number>): void 1293 1294注册扫描状态改变事件。 1295 1296**需要权限:** ohos.permission.GET_WIFI_INFO 1297 1298**系统能力:** SystemCapability.Communication.WiFi.STA 1299 1300**参数:** 1301 1302 | **参数名** | **类型** | **必填** | **说明** | 1303 | -------- | -------- | -------- | -------- | 1304 | type | string | 是 | 固定填"wifiScanStateChange"字符串。 | 1305 | callback | Callback<number> | 是 | 状态改变回调函数。 | 1306 1307**扫描状态改变事件的枚举:** 1308 1309| **枚举值** | **说明** | 1310| -------- | -------- | 1311| 0 | 扫描失败。 | 1312| 1 | 扫描成功。 | 1313 1314 1315## wifi.off('wifiScanStateChange')<sup>7+</sup> 1316 1317off(type: 'wifiScanStateChange', callback?: Callback<number>): void 1318 1319取消注册扫描状态改变事件。 1320 1321**需要权限:** ohos.permission.GET_WIFI_INFO 1322 1323**系统能力:** SystemCapability.Communication.WiFi.STA 1324 1325**参数:** 1326 1327| **参数名** | **类型** | **必填** | **说明** | 1328| -------- | -------- | -------- | -------- | 1329| type | string | 是 | 固定填"wifiScanStateChange"字符串。 | 1330| callback | Callback<number> | 否 | 状态改变回调函数。如果callback不填,将取消注册该事件关联的所有回调函数。 | 1331 1332**示例:** 1333```ts 1334import wifi from '@ohos.wifi'; 1335 1336let recvWifiScanStateChangeFunc = (result:number) => { 1337 console.info("Receive Wifi scan state change event: " + result); 1338} 1339 1340// Register event 1341wifi.on("wifiScanStateChange", recvWifiScanStateChangeFunc); 1342 1343// Unregister event 1344wifi.off("wifiScanStateChange", recvWifiScanStateChangeFunc); 1345``` 1346 1347## wifi.on('wifiRssiChange')<sup>7+</sup> 1348 1349on(type: 'wifiRssiChange', callback: Callback<number>): void 1350 1351注册RSSI状态改变事件。 1352 1353**需要权限:** ohos.permission.GET_WIFI_INFO 1354 1355**系统能力:** SystemCapability.Communication.WiFi.STA 1356 1357**参数:** 1358 1359 | **参数名** | **类型** | **必填** | **说明** | 1360 | -------- | -------- | -------- | -------- | 1361 | type | string | 是 | 固定填"wifiRssiChange"字符串。 | 1362 | callback | Callback<number> | 是 | 状态改变回调函数,返回以dBm为单位的RSSI值。 | 1363 1364 1365## wifi.off('wifiRssiChange')<sup>7+</sup> 1366 1367off(type: 'wifiRssiChange', callback?: Callback<number>): void 1368 1369取消注册RSSI状态改变事件。 1370 1371**需要权限:** ohos.permission.GET_WIFI_INFO 1372 1373**系统能力:** SystemCapability.Communication.WiFi.STA 1374 1375**参数:** 1376 1377 | **参数名** | **类型** | **必填** | **说明** | 1378 | -------- | -------- | -------- | -------- | 1379 | type | string | 是 | 固定填"wifiRssiChange"字符串。 | 1380 | callback | Callback<number> | 否 | 状态改变回调函数。如果callback不填,将取消注册该事件关联的所有回调函数。 | 1381 1382**示例:** 1383```ts 1384import wifi from '@ohos.wifi'; 1385 1386let recvWifiRssiChangeFunc = (result:number) => { 1387 console.info("Receive wifi rssi change event: " + result); 1388} 1389 1390// Register event 1391wifi.on("wifiRssiChange", recvWifiRssiChangeFunc); 1392 1393// Unregister event 1394wifi.off("wifiRssiChange", recvWifiRssiChangeFunc); 1395 1396``` 1397 1398 1399## wifi.on('hotspotStateChange')<sup>7+</sup> 1400 1401on(type: 'hotspotStateChange', callback: Callback<number>): void 1402 1403注册热点状态改变事件。 1404 1405**需要权限:** ohos.permission.GET_WIFI_INFO 1406 1407**系统能力:** SystemCapability.Communication.WiFi.AP.Core 1408 1409**参数:** 1410 1411 | **参数名** | **类型** | **必填** | **说明** | 1412 | -------- | -------- | -------- | -------- | 1413 | type | string | 是 | 固定填"hotspotStateChange"字符串。 | 1414 | callback | Callback<number> | 是 | 状态改变回调函数。 | 1415 1416**热点状态改变事件的枚举:** 1417 1418| **枚举值** | **说明** | 1419| -------- | -------- | 1420| 0 | 未激活。 | 1421| 1 | 已激活。 | 1422| 2 | 激活中。 | 1423| 3 | 去激活中。 | 1424 1425**示例:** 1426```ts 1427import wifi from '@ohos.wifi'; 1428 1429let recvHotspotStateChangeFunc = (result:number) => { 1430 console.info("Receive hotspot state change event: " + result); 1431} 1432 1433// Register event 1434wifi.on("hotspotStateChange", recvHotspotStateChangeFunc); 1435 1436// Unregister event 1437wifi.off("hotspotStateChange", recvHotspotStateChangeFunc); 1438``` 1439 1440## wifi.off('hotspotStateChange')<sup>7+</sup> 1441 1442off(type: 'hotspotStateChange', callback?: Callback<number>): void 1443 1444取消注册热点状态改变事件。 1445 1446**需要权限:** ohos.permission.GET_WIFI_INFO 1447 1448**系统能力:** SystemCapability.Communication.WiFi.AP.Core 1449 1450**参数:** 1451 1452 | **参数名** | **类型** | **必填** | **说明** | 1453 | -------- | -------- | -------- | -------- | 1454 | type | string | 是 | 固定填"hotspotStateChange"字符串。 | 1455 | callback | Callback<number> | 否 | 状态改变回调函数。如果callback不填,将取消注册该事件关联的所有回调函数。 | 1456 1457 1458 1459## wifi.on('p2pStateChange')<sup>8+</sup> 1460 1461on(type: 'p2pStateChange', callback: Callback<number>): void 1462 1463注册P2P开关状态改变事件。 1464 1465**需要权限:** ohos.permission.GET_WIFI_INFO 1466 1467**系统能力:** SystemCapability.Communication.WiFi.P2P 1468 1469**参数:** 1470 1471 | **参数名** | **类型** | **必填** | **说明** | 1472 | -------- | -------- | -------- | -------- | 1473 | type | string | 是 | 固定填"p2pStateChange"字符串。 | 1474 | callback | Callback<number> | 是 | 状态改变回调函数。 | 1475 1476**P2P状态改变事件的枚举:** 1477 1478| **枚举值** | **说明** | 1479| -------- | -------- | 1480| 1 | 空闲。 | 1481| 2 | 打开中。 | 1482| 3 | 已打开。 | 1483| 4 | 关闭中。 | 1484| 5 | 已关闭。 | 1485 1486## wifi.off('p2pStateChange')<sup>8+</sup> 1487 1488off(type: 'p2pStateChange', callback?: Callback<number>): void 1489 1490取消注册P2P开关状态改变事件。 1491 1492**需要权限:** ohos.permission.GET_WIFI_INFO 1493 1494**系统能力:** SystemCapability.Communication.WiFi.P2P 1495 1496**参数:** 1497 1498 | **参数名** | **类型** | **必填** | **说明** | 1499 | -------- | -------- | -------- | -------- | 1500 | type | string | 是 | 固定填"p2pStateChange"字符串。 | 1501 | callback | Callback<number> | 否 | 状态改变回调函数。如果callback不填,将取消注册该事件关联的所有回调函数。 | 1502 1503**示例:** 1504```ts 1505import wifi from '@ohos.wifi'; 1506 1507let recvP2pStateChangeFunc = (result:number) => { 1508 console.info("Receive p2p state change event: " + result); 1509} 1510 1511// Register event 1512wifi.on("p2pStateChange", recvP2pStateChangeFunc); 1513 1514// Unregister event 1515wifi.off("p2pStateChange", recvP2pStateChangeFunc); 1516``` 1517 1518## wifi.on('p2pConnectionChange')<sup>8+</sup> 1519 1520on(type: 'p2pConnectionChange', callback: Callback<WifiP2pLinkedInfo>): void 1521 1522注册P2P连接状态改变事件。 1523 1524**需要权限:** ohos.permission.GET_WIFI_INFO 1525 1526**系统能力:** SystemCapability.Communication.WiFi.P2P 1527 1528**参数:** 1529 1530 | **参数名** | **类型** | **必填** | **说明** | 1531 | -------- | -------- | -------- | -------- | 1532 | type | string | 是 | 固定填"p2pConnectionChange"字符串。 | 1533 | callback | Callback<[WifiP2pLinkedInfo](#wifip2plinkedinfo8)> | 是 | 状态改变回调函数。 | 1534 1535 1536## wifi.off('p2pConnectionChange')<sup>8+</sup> 1537 1538off(type: 'p2pConnectionChange', callback?: Callback<WifiP2pLinkedInfo>): void 1539 1540取消注册P2P连接状态改变事件。 1541 1542**需要权限:** ohos.permission.GET_WIFI_INFO 1543 1544**系统能力:** SystemCapability.Communication.WiFi.P2P 1545 1546**参数:** 1547 1548 | **参数名** | **类型** | **必填** | **说明** | 1549 | -------- | -------- | -------- | -------- | 1550 | type | string | 是 | 固定填"p2pConnectionChange"字符串。 | 1551 | callback | Callback<[WifiP2pLinkedInfo](#wifip2plinkedinfo8)> | 否 | 状态改变回调函数。如果callback不填,将取消注册该事件关联的所有回调函数。 | 1552 1553**示例:** 1554```ts 1555import wifi from '@ohos.wifi'; 1556 1557let recvP2pConnectionChangeFunc = (result:wifi.WifiP2pLinkedInfo) => { 1558 console.info("Receive p2p connection change event: " + result); 1559} 1560 1561// Register event 1562wifi.on("p2pConnectionChange", recvP2pConnectionChangeFunc); 1563 1564// Unregister event 1565wifi.off("p2pConnectionChange", recvP2pConnectionChangeFunc); 1566``` 1567 1568## wifi.on('p2pDeviceChange')<sup>8+</sup> 1569 1570on(type: 'p2pDeviceChange', callback: Callback<WifiP2pDevice>): void 1571 1572注册P2P设备状态改变事件。 1573 1574**需要权限:** ohos.permission.GET_WIFI_INFO 和 ohos.permission.LOCATION 1575 1576**系统能力:** SystemCapability.Communication.WiFi.P2P 1577 1578**参数:** 1579 1580 | **参数名** | **类型** | **必填** | **说明** | 1581 | -------- | -------- | -------- | -------- | 1582 | type | string | 是 | 固定填"p2pDeviceChange"字符串。 | 1583 | callback | Callback<[WifiP2pDevice](#wifip2pdevice8)> | 是 | 状态改变回调函数。 | 1584 1585 1586## wifi.off('p2pDeviceChange')<sup>8+</sup> 1587 1588off(type: 'p2pDeviceChange', callback?: Callback<WifiP2pDevice>): void 1589 1590取消注册P2P设备状态改变事件。 1591 1592**需要权限:** ohos.permission.LOCATION 1593 1594**系统能力:** SystemCapability.Communication.WiFi.P2P 1595 1596**参数:** 1597 1598 | **参数名** | **类型** | **必填** | **说明** | 1599 | -------- | -------- | -------- | -------- | 1600 | type | string | 是 | 固定填"p2pDeviceChange"字符串。 | 1601 | callback | Callback<[WifiP2pDevice](#wifip2pdevice8)> | 否 | 状态改变回调函数。如果callback不填,将取消注册该事件关联的所有回调函数。 | 1602 1603**示例:** 1604```ts 1605import wifi from '@ohos.wifi'; 1606 1607let recvP2pDeviceChangeFunc = (result:wifi.WifiP2pDevice) => { 1608 console.info("Receive p2p device change event: " + result); 1609} 1610 1611// Register event 1612wifi.on("p2pDeviceChange", recvP2pDeviceChangeFunc); 1613 1614// Unregister event 1615wifi.off("p2pDeviceChange", recvP2pDeviceChangeFunc); 1616``` 1617 1618## wifi.on('p2pPeerDeviceChange')<sup>8+</sup> 1619 1620on(type: 'p2pPeerDeviceChange', callback: Callback<WifiP2pDevice[]>): void 1621 1622注册P2P对端设备状态改变事件。 1623 1624**需要权限:** ohos.permission.GET_WIFI_INFO 和 ohos.permission.LOCATION 1625 1626**系统能力:** SystemCapability.Communication.WiFi.P2P 1627 1628**参数:** 1629 1630 | **参数名** | **类型** | **必填** | **说明** | 1631 | -------- | -------- | -------- | -------- | 1632 | type | string | 是 | 固定填"p2pPeerDeviceChange"字符串。 | 1633 | callback | Callback<[WifiP2pDevice[]](#wifip2pdevice8)> | 是 | 状态改变回调函数。 | 1634 1635 1636## wifi.off('p2pPeerDeviceChange')<sup>8+</sup> 1637 1638off(type: 'p2pPeerDeviceChange', callback?: Callback<WifiP2pDevice[]>): void 1639 1640取消注册P2P对端设备状态改变事件。 1641 1642**需要权限:** ohos.permission.LOCATION 1643 1644**系统能力:** SystemCapability.Communication.WiFi.P2P 1645 1646**参数:** 1647 1648 | **参数名** | **类型** | **必填** | **说明** | 1649 | -------- | -------- | -------- | -------- | 1650 | type | string | 是 | 固定填"p2pPeerDeviceChange"字符串。 | 1651 | callback | Callback<[WifiP2pDevice[]](#wifip2pdevice8)> | 否 | 状态改变回调函数。如果callback不填,将取消注册该事件关联的所有回调函数。 | 1652 1653**示例:** 1654```ts 1655import wifi from '@ohos.wifi'; 1656 1657let recvP2pPeerDeviceChangeFunc = (result:wifi.WifiP2pDevice[]) => { 1658 console.info("Receive p2p peer device change event: " + result); 1659} 1660 1661// Register event 1662wifi.on("p2pPeerDeviceChange", recvP2pPeerDeviceChangeFunc); 1663 1664// Unregister event 1665wifi.off("p2pPeerDeviceChange", recvP2pPeerDeviceChangeFunc); 1666``` 1667 1668## wifi.on('p2pPersistentGroupChange')<sup>8+</sup> 1669 1670on(type: 'p2pPersistentGroupChange', callback: Callback<void>): void 1671 1672注册P2P永久组状态改变事件。 1673 1674**需要权限:** ohos.permission.GET_WIFI_INFO 1675 1676**系统能力:** SystemCapability.Communication.WiFi.P2P 1677 1678**参数:** 1679 1680 | **参数名** | **类型** | **必填** | **说明** | 1681 | -------- | -------- | -------- | -------- | 1682 | type | string | 是 | 固定填"p2pPersistentGroupChange"字符串。 | 1683 | callback | Callback<void> | 是 | 状态改变回调函数。 | 1684 1685 1686## wifi.off('p2pPersistentGroupChange')<sup>8+</sup> 1687 1688off(type: 'p2pPersistentGroupChange', callback?: Callback<void>): void 1689 1690取消注册P2P永久组状态改变事件。 1691 1692**需要权限:** ohos.permission.GET_WIFI_INFO 1693 1694**系统能力:** SystemCapability.Communication.WiFi.P2P 1695 1696**参数:** 1697 1698 | **参数名** | **类型** | **必填** | **说明** | 1699 | -------- | -------- | -------- | -------- | 1700 | type | string | 是 | 固定填"p2pPersistentGroupChange"字符串。 | 1701 | callback | Callback<void> | 否 | 状态改变回调函数。如果callback不填,将取消注册该事件关联的所有回调函数。 | 1702 1703**示例:** 1704```ts 1705import wifi from '@ohos.wifi'; 1706 1707let recvP2pPersistentGroupChangeFunc = (result:void) => { 1708 console.info("Receive p2p persistent group change event: " + result); 1709} 1710 1711// Register event 1712wifi.on("p2pPersistentGroupChange", recvP2pPersistentGroupChangeFunc); 1713 1714// Unregister event 1715wifi.off("p2pPersistentGroupChange", recvP2pPersistentGroupChangeFunc); 1716 1717``` 1718 1719## wifi.on('p2pDiscoveryChange')<sup>8+</sup> 1720 1721on(type: 'p2pDiscoveryChange', callback: Callback<number>): void 1722 1723注册发现设备状态改变事件。 1724 1725**需要权限:** ohos.permission.GET_WIFI_INFO 1726 1727**系统能力:** SystemCapability.Communication.WiFi.P2P 1728 1729**参数:** 1730 1731 | **参数名** | **类型** | **必填** | **说明** | 1732 | -------- | -------- | -------- | -------- | 1733 | type | string | 是 | 固定填"p2pDiscoveryChange"字符串。 | 1734 | callback | Callback<number> | 是 | 状态改变回调函数。 | 1735 1736**发现设备状态改变事件的枚举:** 1737 1738| **枚举值** | **说明** | 1739| -------- | -------- | 1740| 0 | 初始状态。 | 1741| 1 | 发现成功。 | 1742 1743 1744## wifi.off('p2pDiscoveryChange')<sup>8+</sup> 1745 1746off(type: 'p2pDiscoveryChange', callback?: Callback<number>): void 1747 1748取消注册发现设备状态改变事件。 1749 1750**需要权限:** ohos.permission.GET_WIFI_INFO 1751 1752**系统能力:** SystemCapability.Communication.WiFi.P2P 1753 1754**参数:** 1755 1756 | **参数名** | **类型** | **必填** | **说明** | 1757 | -------- | -------- | -------- | -------- | 1758 | type | string | 是 | 固定填"p2pDiscoveryChange"字符串。 | 1759 | callback | Callback<number> | 否 | 状态改变回调函数。如果callback不填,将取消注册该事件关联的所有回调函数。 | 1760 1761**示例:** 1762```ts 1763import wifi from '@ohos.wifi'; 1764 1765let recvP2pDiscoveryChangeFunc = (result:number) => { 1766 console.info("Receive p2p discovery change event: " + result); 1767} 1768 1769// Register event 1770wifi.on("p2pDiscoveryChange", recvP2pDiscoveryChangeFunc); 1771 1772// Unregister event 1773wifi.off("p2pDiscoveryChange", recvP2pDiscoveryChangeFunc); 1774```