1# STA模式开发指南 2 3<!--Kit: Connectivity Kit--> 4<!--Subsystem: Communication--> 5<!--Owner: @qq_43802146--> 6<!--Designer: @qq_43802146--> 7<!--Tester: @furryfurry123--> 8<!--Adviser: @zhang_yixin13--> 9 10## 简介 11Wi-Fi STA模式(Station Mode,站点模式)是无线设备作为客户端接入无线局域网(WLAN)的工作模式。在该模式下,设备(如手机、电脑、平板等)通过连接到接入点(AP,Access Point)或无线路由器,实现对网络的访问。 12 13 14## 场景介绍 15 16- [判断Wi-Fi状态](#判断wi-fi状态) 17- [建立Wi-Fi连接](#建立wi-fi连接) 18 19## 接口说明 20 21完整的JS API说明以及示例代码请参考:[STA接口](../../reference/apis-connectivity-kit/js-apis-wifiManager.md)。 22 23接口具体说明如下表所示。 24 25| 接口名 | 功能描述 | 26| -------- | -------- | 27| isWifiActive() | 查询WLAN开关是否已使能。| 28| addCandidateConfig() | 添加候选网络配置,使用前先使能WLAN。| 29| connectToCandidateConfig() | 应用使用该接口连接到自己添加的候选网络。| 30| isConnected() | 查询WLAN是否已连接。| 31| removeCandidateConfig() | 移除候选网络配置。| 32| getCandidateConfigs() | 获取候选网络配置。| 33| on(type: 'wifiStateChange') | 注册WLAN状态改变事件。 | 34| off(type: 'wifiStateChange') | 取消注册WLAN状态改变事件。| 35| on(type: 'wifiConnectionChange') | 注册WLAN连接状态改变事件。| 36| off(type: 'wifiConnectionChange') | 取消注册WLAN连接状态改变事件。| 37 38 39## 主要场景开发步骤 40 41### 判断Wi-Fi状态 421. 导入需要的Wi-Fi模块。 432. 需要SystemCapability.Communication.WiFi.STA系统能力。 443. 需要申请权限ohos.permission.GET_WIFI_INFO。 454. 开启设备Wi-Fi。 465. 示例代码: 47 48```ts 49 import { wifiManager } from '@kit.ConnectivityKit'; 50 try { 51 let recvPowerNotifyFunc = (result:number) => { 52 let wifiState = ""; 53 switch (result) { 54 case 0: 55 wifiState += 'DISABLING'; 56 break; 57 case 1: 58 wifiState += 'DISABLED'; 59 break; 60 case 2: 61 wifiState += 'ENABLING'; 62 break; 63 case 3: 64 wifiState += 'ENABLED'; 65 break; 66 default: 67 wifiState += 'UNKNOWN STATUS'; 68 break; 69 } 70 } 71 // 监听Wi-Fi当前状态 72 wifiManager.on("wifiStateChange", recvPowerNotifyFunc); 73 // 判断Wi-Fi是否打开 74 let isWifiActive = wifiManager.isWifiActive(); 75 if (!isWifiActive) { 76 console.info("Wi-Fi not enabled"); // 请先手动打开Wi-Fi 77 return; 78 } 79 80 wifiManager.off("wifiStateChange", recvPowerNotifyFunc); 81 } catch (error) { 82 console.error(`WiFi state monitor failed. ${error.message}`); 83 } 84``` 85 86### 建立Wi-Fi连接 871. 导入需要的Wi-Fi模块。 882. 开启设备的Wi-Fi。 893. 需要SystemCapability.Communication.WiFi.STA系统能力。 904. 需要申请权限ohos.permission.GET_WIFI_INFO,ohos.permission.SET_WIFI_INFO。 915. 示例代码: 92 93 ```ts 94 import { wifiManager } from '@kit.ConnectivityKit'; 95 96 try { 97 let recvWifiConnectionChangeFunc = (result:number) => { 98 console.info("Receive wifi connection change event: " + result); 99 } 100 101 let config:wifiManager.WifiDeviceConfig = { 102 ssid : "****", 103 bssid : "****", 104 preSharedKey : "****", 105 securityType : 0 106 } 107 108 // 更新当前Wi-Fi连接状态 109 wifiManager.on("wifiConnectionChange", recvWifiConnectionChangeFunc); 110 // 添加候选网络配置 111 wifiManager.addCandidateConfig(config).then(result => { 112 // 连接指定网络 113 wifiManager.connectToCandidateConfig(result); 114 }); 115 116 if (!wifiManager.isConnected()) { 117 console.info("Wi-Fi not connected"); 118 } 119 // 获取连接信息 120 wifiManager.getLinkedInfo().then(data => { 121 console.info("get Wi-Fi linked info: " + JSON.stringify(data)); 122 }) 123 // 查询信号强度 124 let rssi = -88; 125 let band = 1; 126 let level = wifiManager.getSignalLevel(rssi,band); 127 console.info("level:" + JSON.stringify(level)); 128 129 // 取消注册,停止更新当前Wi-Fi连接状态 130 wifiManager.off("wifiConnectionChange", recvWifiConnectionChangeFunc); 131 } catch (error) { 132 console.error(`WiFi Connection failed. ${error.message}`); 133 } 134 ``` 1356. Wi-Fi连接状态值,详情请参考[ConnState](../../reference/apis-connectivity-kit/js-apis-wifiManager.md#connstate9)。 1367. 错误码详情请参见[WIFI错误码](../../reference/apis-connectivity-kit/errorcode-wifi.md)。 137