文档管理中心
指南系统网络Connectivity Kit(短距通信服务)WLANSTA模式开发指南

STA模式开发指南

简介

Wi-Fi STA模式(Station Mode,站点模式)是无线设备作为客户端接入无线局域网(WLAN)的工作模式。在该模式下,设备(如手机、电脑、平板等)通过连接到接入点(AP,Access Point)或无线路由器,实现对网络的访问。

接口说明

完整的JS API说明以及示例代码请参考:STA接口

接口具体说明如下表所示。

展开
接口名 功能描述
isWifiActive() 查询WLAN开关是否已使能。
addCandidateConfig() 添加候选网络配置,使用前先使能WLAN。
connectToCandidateConfig() 应用使用该接口连接到自己添加的候选网络。
isConnected() 查询WLAN是否已连接。
removeCandidateConfig() 移除候选网络配置。
getCandidateConfigs() 获取候选网络配置。
on(type: 'wifiStateChange') 注册WLAN状态改变事件。
off(type: 'wifiStateChange') 取消注册WLAN状态改变事件。
on(type: 'wifiConnectionChange') 注册WLAN连接状态改变事件。
off(type: 'wifiConnectionChange') 取消注册WLAN连接状态改变事件。

主要场景开发步骤

判断Wi-Fi状态

  1. 导入需要的Wi-Fi模块。

  2. 需要SystemCapability.Communication.WiFi.STA系统能力。

  3. 需要申请权限ohos.permission.GET_WIFI_INFO。

  4. 开启设备Wi-Fi。

  5. 示例代码:

    import { wifiManager } from '@kit.ConnectivityKit';
    
    let recvPowerNotifyFunc: (result: number) => void = (result: number) => {
      let wifiState = "";
      switch (result) {
        case 0:
          wifiState += 'DISABLED';
          break;
        case 1:
          wifiState += 'ENABLED';
          break;
        case 2:
          wifiState += 'ENABLING';
          break;
        case 3:
          wifiState += 'DISABLING';
          break;
        default:
          wifiState += 'UNKNOWN STATUS';
          break;
      }
      console.info(`Wi-Fi state changed: ${wifiState}`);
    };
    try {
      wifiManager.on("wifiStateChange", recvPowerNotifyFunc);
      let isWifiActive = wifiManager.isWifiActive();
      if (!isWifiActive) {
        console.info("Wi-Fi not enabled. Skipping monitor.");
      } else {
        console.info("Wi-Fi is enabled. Starting monitor...");
      }
    } catch (error) {
      console.error(`WiFi state monitor failed: ${error.message}`);
    } finally {
      try {
        wifiManager.off("wifiStateChange", recvPowerNotifyFunc);
        console.info("Wi-Fi monitor off: listener removed.");
      } catch (e) {
         console.error(`WiFi state monitor failed. ${e.message}`);
      }
    }

建立Wi-Fi连接

  1. 导入需要的Wi-Fi模块。

  2. 开启设备的Wi-Fi。

  3. 需要SystemCapability.Communication.WiFi.STA系统能力。

  4. 需要申请权限ohos.permission.GET_WIFI_INFO,ohos.permission.SET_WIFI_INFO。

  5. 示例代码:

    import { wifiManager } from '@kit.ConnectivityKit';
    
    try {
      let recvWifiConnectionChangeFunc = (result: number) => {
        console.info("Receive wifi connection change event: " + result);
      }
    
      let config: wifiManager.WifiDeviceConfig = {
        ssid: "****",
        bssid: "****",
        preSharedKey: "****",
        securityType: 0
      }
    
      // 更新当前Wi-Fi连接状态
      wifiManager.on("wifiConnectionChange", recvWifiConnectionChangeFunc);
      // 添加候选网络配置
      wifiManager.addCandidateConfig(config).then(result => {
        // 连接指定网络
        wifiManager.connectToCandidateConfig(result);
      });
    
      if (!wifiManager.isConnected()) {
        console.info("Wi-Fi not connected");
      }
      // 获取连接信息
      wifiManager.getLinkedInfo().then(data => {
        console.info("get Wi-Fi linked info: " + JSON.stringify(data));
      })
      // 查询信号强度
      let rssi = -88;
      let band = 1;
      let level = wifiManager.getSignalLevel(rssi, band);
      console.info("level:" + JSON.stringify(level));
    
      // 取消注册,停止更新当前Wi-Fi连接状态
      wifiManager.off("wifiConnectionChange", recvWifiConnectionChangeFunc);
    } catch (error) {
      console.error(`WiFi Connection failed. ${error.message}`);
    }
  6. Wi-Fi连接状态值,详情请参考ConnState

  7. 错误码详情请参见WIFI错误码

搜索
请输入您想要搜索的关键词