第23章_HarmonyOs开发图解之 WLAN

第23章 HarmonyOs开发图解之 WLAN

HarmonyOS 学习系统 | 阶段四:专业精通期


学习目标

序号 能力
1 掌握 WLAN 基础信息查询(状态、扫描、连接详情)
2 能够监听 WLAN 状态变化事件
3 了解 WLAN P2P 直连和不信任热点配置

核心图解

内容讲解

23.1 WLAN 概述

HarmonyOS 的 WLAN 模块提供了完整的 Wi-Fi 网络管理能力,包括基础功能(查询状态、扫描、连接信息)和高级功能(P2P 直连、热点配置)。

生活化类比:WLAN 就像"无线水管网络"

WLAN 热点就像"公共水龙头":想象一个小区的供水系统------路由器(AP)是水塔,通过无线管道(无线电波)把水(数据)送到每家每户。WLAN 的基础功能就是检查水管通不通(isWifiActive)、看看有哪些水塔(scan 获取扫描结果)、接上水管(isConnected 获取连接信息)。P2P 直连则像两户人家之间拉了一根临时水管,不需要水塔中转,直接互通。

23.2 WLAN 信息查询

java 复制代码
WifiDevice wifiDevice = WifiDevice.getInstance(context);

// 查询 WLAN 状态
HiLog.info(TAG, "WLAN开启: " + wifiDevice.isWifiActive());
HiLog.info(TAG, "已连接: " + wifiDevice.isConnected());

// 发起扫描
wifiDevice.scan();
List<WifiScanInfo> scanInfos = wifiDevice.getScanInfoList();
for (WifiScanInfo info : scanInfos) {
    HiLog.info(TAG, "SSID: " + info.getSsid()
        + ", 信号强度: " + info.getRssi()
        + ", 频段: " + info.getBand());
}

// 获取连接详情
WifiLinkedInfo linkedInfo = wifiDevice.getLinkedInfo();
if (linkedInfo != null) {
    HiLog.info(TAG, "连接SSID: " + linkedInfo.getSsid());
    HiLog.info(TAG, "BSSID: " + linkedInfo.getBssid());
}

// 获取 IP 地址
WifiIpInfo ipInfo = wifiDevice.getIpInfo();
HiLog.info(TAG, "IP地址: " + ipInfo.getIpAddress());

23.3 WLAN 事件通知

HarmonyOS 提供丰富的 WLAN 事件广播,可订阅监听网络状态变化:

事件 含义
usual.event.wifi.POWER_STATE WLAN 开关状态变化
usual.event.wifi.SCAN_FINISHED 扫描完成
usual.event.wifi.RSSI_VALUE 信号强度变化
usual.event.wifi.CONN_STATE 连接状态变化
usual.event.wifi.p2p.STATE_CHANGE P2P 状态变化

23.4 信号强度计算

java 复制代码
// 将 RSSI 值转换为信号格数
int signalLevel = WifiDevice.getSignalLevel(rssiValue, band);
// signalLevel: 0-4, 4 为满格

代码速查卡

API 功能 权限
WifiDevice.getInstance(context) 获取 WLAN 管理对象
isWifiActive() 查询 WLAN 开关状态 GET_WIFI_INFO
scan() 发起 WLAN 扫描 SET_WIFI_INFO + LOCATION
getScanInfoList() 获取扫描结果 GET_WIFI_INFO + LOCATION
getLinkedInfo() 获取连接信息(SSID/BSSID/信号) GET_WIFI_INFO
getIpInfo() 获取 IP 地址信息 GET_WIFI_INFO
addUntrustedConfig(config) 添加不信任热点 SET_WIFI_INFO
getSignalLevel(rssi, band) 计算信号格数 GET_WIFI_INFO

与 Android/iOS 对比

特性 HarmonyOS Android iOS
WLAN 管理 WifiDevice WifiManager NEHotspotNetwork
扫描 scan() startScan() NEHotspotHelper
连接信息 WifiLinkedInfo WifiInfo NEHotspotNetwork
事件监听 CommonEvent 广播 BroadcastReceiver NotificationCenter
P2P WifiP2PManager WifiP2pManager MultipeerConnectivity

⚠️ 踩坑回忆录

P2P 连不上?

我尝试同时开启 WLAN 热点和 P2P 连接,结果 P2P 一直报错。后来查文档才知道------P2P 和 AP 模式在同一时刻互斥!要使用 P2P 必须先关闭热点。

WLAN 权限也要精确区分:GET_WIFI_INFO 只是读取信息,SET_WIFI_INFO 才能修改网络状态,两者权限等级不同。申请了读取权限就去调用 scan(),结果直接抛 SecurityException。


必做实操任务

序号 任务 难度
1 实现 WLAN 状态查询和扫描列表展示
2 实现信号强度的实时监控(通过 RSSI 事件)
3 监听 WLAN 连接状态变化并更新 UI
4 实现不信任热点的添加功能
5 实现 WLAN P2P 设备发现和连接

学习检查清单

  • 能使用 WifiDevice 查询 WLAN 状态和连接信息
  • 能发起 WLAN 扫描并获取扫描结果
  • 能将 RSSI 值转换为信号格数
  • 能通过 CommonEvent 订阅 WLAN 状态变化事件
  • 知道 GET_WIFI_INFO 和 SET_WIFI_INFO 的区别
  • 知道 P2P 和 AP 模式互斥
  • 能获取当前连接的 SSID、BSSID 和 IP 地址
  • 理解不信任热点配置的使用场景

进阶方向

  • 实现一个 Wi-Fi 信号检测仪 App
  • 学习 WLAN 热点(SoftAP)模式的配置和使用
  • 探索 Wi-Fi 和蓝牙的共存策略
    能获取当前连接的 SSID、BSSID 和 IP 地址
  • 理解不信任热点配置的使用场景

进阶方向

  • 实现一个 Wi-Fi 信号检测仪 App
  • 学习 WLAN 热点(SoftAP)模式的配置和使用
  • 探索 Wi-Fi 和蓝牙的共存策略
相关推荐
HarmonyOS_SDK2 小时前
借助AR Engine人脸识别与跟踪能力,直播不露脸也生动
harmonyos
程序员黑豆4 小时前
鸿蒙应用开发 @BuilderParam 使用教程:实现灵活的 UI 插槽
前端·harmonyos
HMS Core5 小时前
基于人体骨骼点识别与跟踪,实现低时延体感游戏
游戏·华为·harmonyos
XR1234567885 小时前
政府办公楼网络搭建方案对比:信锐、华为、华三选型指南
网络·华为
程序员黑豆6 小时前
鸿蒙应用开发 @Builder 使用教程:从入门到精通
前端·harmonyos
OH_TPC6 小时前
【鸿蒙优选三方库】@ohos/dataorm:让 HarmonyOS 的数据库操作告别手写 SQL
harmonyos
北墨NoLimit6 小时前
别再到处 try-catch 了:一个生产级鸿蒙 HTTP 客户端的封装实录
harmonyos
小雨青年8 小时前
【HarmonyOS 7 沉浸光感深度实战】 01 ArkUI 与 HDS 两套接口如何选择
华为·harmonyos