聊一聊鸿蒙系统的WLAN组件

风在云颠
发布于 2021-9-8 18:00
浏览
0收藏

简介

无线局域网(Wireless Local Area Networks,WLAN),是通过无线电、红外光信号或者其他技术发送和接收数据的局域网,用户可以通过WLAN实现结点之间无物理连接的网络通讯。常用于用户携带可移动终端的办公、公众环境中。

WLAN组件子系统为用户提供WLAN基础功能、P2P(peer-to-peer)功能和WLAN消息通知的相应服务,让应用可以通过WLAN和其他设备互联互通。

系统架构

图 1 WLAN组件架构图

聊一聊鸿蒙系统的WLAN组件-鸿蒙开发者社区

目录

/foundation/communication/wifi
├── figures             # 图片资源目录
├── interfaces          # 接口适配目录
│   ├── innerkits       # Java接口适配目录
│   └── kits            # WLAN组件接口的适配代码存放目录
└── services            # service适配目录
    └── wifi_standard   # service实现目录

说明

接口说明

WLAN基础功能由@ohos.wifi_native_js类提供,其接口(JS接口)说明如下。

表 1 WLAN基础功能的主要接口(JS接口)

接口名 描述 所需权限
function enableWifi(): boolean 打开WLAN。 NA
function disableWifi(): boolean 关闭WLAN。 NA
function isWifiActive(): boolean 查询WLAN是否处于打开状态。 NA
function scan(): boolean 发起WLAN扫描。 NA
function getScanInfos(): Promise<Array<WifiScanInfo>>function getScanInfos(callback: AsyncCallback<Array<WifiScanInfo>>): void 获取WLAN扫描结果,接口可采用promise或callback方式调用。 NA
function addDeviceConfig(config: WifiDeviceConfig): Promise<number>function addDeviceConfig(config: WifiDeviceConfig, callback: AsyncCallback<number>): void 添加WLAN热点的配置信息,接口可采用promise或callback方式调用。 NA
function connectToNetwork(networkId: number): boolean 连接到WLAN网络。 NA
function connectToDevice(config: WifiDeviceConfig): boolean 连接到WLAN网络。 NA
function disconnect(): boolean 断开WLAN连接。 NA
function getSignalLevel(rssi: number, band: number): number 获取WLAN信号强度。 NA

使用说明

在调用WLAN JS接口前需要导入接口类。

import wifi_native_js from '@ohos.wifi_native_js'; // 导入js接口类

(一)获取WLAN状态

  1. 调用isWifiActive()接口查询WLAN是否打开。

    var isWifiActive = wifi_native_js.isWifiActive(); // 若WLAN打开,则返回true,否则返回false
    

(二)发起扫描并获取结果

  1. 调用scan()接口发起扫描。

  2. 调用getScanInfoList()接口获取扫描结果。

    // 调用WLAN扫描接口
    var isScanSuccess = wifi_native_js.scan(); // true
    
    // 延迟一定时间
    
    // 获取扫描结果
    wifi_native_js.getScanInfos(result => {
        var num = Object.keys(result).length;
        console.info("wifi scan result mum: " + num);
        for (var i = 0; i < num; ++i) {
            console.info("ssid: " + result[i].ssid);
            console.info("bssid: " + result[i].bssid);
            console.info("securityType: " + result[i].securityType);
            console.info("rssi: " + result[i].rssi);
            console.info("band: " + result[i].band);
            console.info("frequency: " + result[i].frequency);
            console.info("timestamp: " + result[i].timestamp);
        }
    })
    

(三)连接WLAN

  1. 调用addDeviceConfig添加配置,然后通过返回的配置id连接WLAN或调用connectToDevice通过配置直接连接WLAN。

    // WLAN配置信息
    var config = {
        "ssid":"test_wifi",
        "bssid":"",
        "preSharedKey":"12345678",
        "isHiddenSsid":false,
        "securityType":3,
    }
    方式一:
    // 添加配置
    wifi_native_js.addDeviceConfig(config, (result) => {
        console.info("config id: " + result);
        // 通过配置id连接WLAN
        wifi_native_js.connectToNetwork(result);
    });
    方式二:
    // 通过配置信息直接连接WLAN
    wifi_native_js.connectToDevice(config);
    

相关仓

分布式软总线子系统

communication_wifi

communication_wifi-master.zip 614.59K 38次下载
已于2021-9-8 18:00:32修改
收藏
回复
举报
回复
    相关推荐