文档管理中心
指南系统网络Connectivity Kit(短距通信服务)WLANWi-Fi扫描开发指南

Wi-Fi扫描开发指南

简介

Wi-Fi扫描是指设备(如手机、电脑、路由器等)搜索周围可用Wi-Fi网络的过程。通过扫描,设备可以获取附近网络的基本信息(如网络名称、信号强度、加密方式等),从而实现连接、管理或分析周围网络。

接口说明

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

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

展开
接口名 功能描述
getScanInfoList() 获取扫描结果。
on(type: 'wifiScanStateChange') 注册扫描状态改变事件。
off(type: 'wifiScanStateChange') 取消注册扫描状态改变事件。

开发步骤

Wi-Fi扫描

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

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

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

  4. 开启设备的Wi-Fi。

  5. 示例代码:

    说明

    主动扫描接口,从API version 10开始废弃。替代接口仅向系统应用开放。

    收起
    自动换行
    深色代码主题
    复制
    1. import { wifiManager } from '@kit.ConnectivityKit';
    2. try {
    3. let recvWifiScanStateChangeFunc = (result:number) => {
    4. console.info("Receive Wifi scan state change event: " + result);
    5. }
    6. // 获取扫描状态 0:扫描失败;1:扫描成功。
    7. wifiManager.on("wifiScanStateChange", recvWifiScanStateChangeFunc);
    8. let isWifiActive = wifiManager.isWifiActive();
    9. if (!isWifiActive) {
    10. console.error("wifi not enable"); // 请先手动打开WiFi
    11. return;
    12. }
    13. let scanInfoList = wifiManager.getScanInfoList();
    14. let len = scanInfoList.length;
    15. console.info("wifi received scan info: " + len);
    16. if(len > 0){
    17. for (let i = 0; i < len; ++i) {
    18. console.info("ssid: " + scanInfoList[i].ssid);
    19. console.info("bssid: " + scanInfoList[i].bssid);
    20. console.info("capabilities: " + scanInfoList[i].capabilities);
    21. console.info("securityType: " + scanInfoList[i].securityType);
    22. console.info("rssi: " + scanInfoList[i].rssi);
    23. console.info("band: " + scanInfoList[i].band);
    24. console.info("frequency: " + scanInfoList[i].frequency);
    25. console.info("channelWidth: " + scanInfoList[i].channelWidth);
    26. console.info("timestamp: " + scanInfoList[i].timestamp);
    27. console.info("supportedWifiCategory: " + scanInfoList[i].supportedWifiCategory);
    28. console.info("isHiLinkNetwork: " + scanInfoList[i].isHiLinkNetwork);
    29. }
    30. }
    31. // 取消注册,停止获取扫描状态。
    32. wifiManager.off("wifiScanStateChange", recvWifiScanStateChangeFunc);
    33. } catch (error) {
    34. console.error(`WiFi scan fail. ${error.message}`);
    35. }
  6. 错误码详情请参见WIFI错误码

PNO扫描

PNO扫描即首选分流网络扫描(Preferred Network Offload scanning),是一种用于降低移动设备功耗的Wi-Fi扫描技术。

触发PNO扫描条件:当设备未连接Wi-Fi且屏幕关闭后,会触发PNO扫描,支持设备在后台寻找并连接首选的Wi-Fi网络。

周期扫描

WiFi周期扫描是指无线设备(如智能手机、平板电脑、笔记本电脑等)按照一定的时间间隔,自动搜索周围可用的WiFi网络的过程。

触发场景描述:

  1. 设备亮屏且与Wi-Fi已连接:判断当前链路是否支持上网。支持上网,扫描间隔1h;不支持上网,判断是否静止,静止场景下扫描周期从20s开始倍增,最大300s;非静止场景扫描周期从20s开始,最大160s。

  2. 设备亮屏且与Wi-Fi未连接:静止场景扫描周期从20s开始倍增,最大300s;非静止场景扫描周期从20s开始,最大160s。

扫描管控

WiFi扫描管控是指对无线设备扫描WiFi网络的行为进行管理和控制。

以下是一些常见的管控方式和应用场景:

  1. WiFi在关闭的情况下不触发周期扫描和PNO扫描。

  2. WiFi连接过程中不允许触发扫描。

  3. 前台应用2分钟内最多发起4次扫描。

  4. 设备温度达到阈值,设备扫描会被管控。

  5. 扫描接口从API version 9开始支持,从API version 10开始废弃,替代接口仅向系统应用开放。

  6. 扫描结果获取真实bssid,需要申请ohos.permission.GET_WIFI_PEERS_MAC权限。
在 指南 中进行搜索
请输入您想要搜索的关键词