第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 和蓝牙的共存策略
相关推荐
Georgewu4 小时前
ArkGenie 的技术原理:从一段 SSE 到一个可交互 Surface
harmonyos
Georgewu4 小时前
在 HarmonyOS 上做一套真正能接入应用的 AI 对话组件:ArkGenie 项目介绍
harmonyos
2501_944525545 小时前
开源鸿蒙平台 KMP_CMP 三方库「EitherNet」适配全流程
华为·开源·harmonyos
程序猿追6 小时前
返回 null 不一定入队成功:鸿蒙 KMP上的并发优先队列观察笔记
笔记·华为·harmonyos·kmp
2501_944525546 小时前
开源鸿蒙平台 KMP_CMP 三方库「kotlinx.immutable」适配全流程
华为·开源·harmonyos
2501_944525769 小时前
开源鸿蒙平台 KMP_CMP 三方库「Kaml」适配全流程
开源·kotlin·harmonyos
2501_944525549 小时前
开源鸿蒙平台 KMP_CMP 三方库「Clikt」适配全流程
华为·开源·harmonyos
李&@杰11 小时前
交换机PoE供电不足导致AP反复重启故障处理
网络·华为
特立独行的猫a11 小时前
用仓颉写桌面应用的“薄壳框架”cj-tauri ,以及它的 AI 对话客户端 ai-chat
人工智能·harmonyos·tauri·仓颉·鸿蒙pc·cj-tarui·ai客户端
万物智能信息科技12 小时前
Zigbee透传驱动开发—【万物智能之开源鸿蒙OpenHarmony系统实战开发系列教程】
驱动开发·华为·开源·harmonyos·鸿蒙