• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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_INFO454. 开启设备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_INFOohos.permission.SET_WIFI_INFO915. 示例代码:
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