第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 和蓝牙的共存策略
相关推荐
梦想不只是梦与想5 小时前
鸿蒙AGC设备管理:设备注册(一)
harmonyos·设备管理·appgallery
熊猫钓鱼>_>6 小时前
鸿蒙ArkUI全手势操作实战指南:6大基础手势从原理到落地避坑
人工智能·深度学习·华为·架构·harmonyos·arkui·tapgesture
2501_919749038 小时前
华为鸿蒙记录怀孕APP—小羊怀孕
华为·harmonyos·鸿蒙
YM52e10 小时前
鸿蒙 ArkTS 实战|网络常用漫剧主角名称分类表:26 位主角 8 大分类 + 搜索筛选
学习·华为·harmonyos
小雨青年10 小时前
【HarmonyOS 7 悬浮页签深度实战】02 从普通底栏到第一个悬浮页签
华为·harmonyos
whyutianict_vv11 小时前
从零到上架6款APP:AI鸿蒙全栈智能体开发5个月实战复盘(ArkTS/DevEco/AGC全流程)
人工智能·个人开发·harmonyos
OH_TPC12 小时前
HarmonyOS APP开发---"启动秀"应用引导页App,需要用到这个库
harmonyos
见山是山-见水是水13 小时前
围绕HTTP 网络请求实战构建原生体验:设计取舍、实现与排错
网络·网络协议·http·华为·harmonyos
见山是山-见水是水14 小时前
拆解网络缓存策略设计:原生鸿蒙页面的实现路径与调试方法
http·缓存·华为·harmonyos
蓝速科技14 小时前
蓝速鸿蒙信创终端长效流畅性深度评测
arm开发·华为·harmonyos