您的位置:首页 > 文旅 > 旅游 > 镇江seo_网络装修公司_抖音搜索seo_免费测试seo

镇江seo_网络装修公司_抖音搜索seo_免费测试seo

2025/2/24 3:39:54 来源:https://blog.csdn.net/qq_36478920/article/details/144571329  浏览:    关键词:镇江seo_网络装修公司_抖音搜索seo_免费测试seo
镇江seo_网络装修公司_抖音搜索seo_免费测试seo

在这里插入图片描述

在这里插入图片描述

文章目录

    • 摘要
    • 项目功能概述
    • 代码模块详细说明
      • 创建 Wi-Fi 状态保存对象
      • Wi-Fi 状态监听模块
      • 获取当前 Wi-Fi 信息
      • 整合主模块
    • 运行效果展示
    • 性能分析
    • 总结

摘要

本文展示了如何使用 HarmonyOS 框架开发一个 Demo,用于监听手机的 Wi-Fi 状态变化并实时获取连接的 Wi-Fi 信息。通过订阅 Wi-Fi 状态事件,我们实现了 Wi-Fi 状态的动态监听,并在状态变化时调用方法刷新 Wi-Fi 详情。

项目功能概述

本 Demo 主要实现以下功能:

  1. Wi-Fi 状态监听:实时监测 Wi-Fi 连接状态的变化(如连接中、已连接、断开连接等)。
  2. Wi-Fi 信息获取:动态获取当前连接 Wi-Fi 的 SSID 和 MAC 地址。
  3. 事件驱动回调:通过事件订阅机制,在 Wi-Fi 状态变化时触发回调并更新 UI。

代码模块详细说明

创建 Wi-Fi 状态保存对象

CommonEventBean 是一个简单的类,用于保存 Wi-Fi 的当前状态以及订阅者对象。

export class CommonEventBean {/*** Wi-Fi 当前状态的描述。*/state: string = '初始化状态';/*** 保存事件订阅者对象。*/subscriber: any = null;
}

Wi-Fi 状态监听模块

通过 CommonEventManager.createSubscriber 创建订阅者,监听 Wi-Fi 状态的变化事件。

核心功能包括:

  1. 根据状态变化更新 CommonEventBeanstate 属性。
  2. 当状态为“已连接”时,触发后续 Wi-Fi 信息获取方法。

代码实现如下:

export class WifiStatusListener {subscribe(commonEventItem: CommonEventBean, callback: Function): void {const subscribeInfo = { events: ['CommonConstants.CONN_STATE'] };let toastMsg: string;CommonEventManager.createSubscriber(subscribeInfo, (err, subscriber) => {if (err || subscriber === null) {toastMsg = '创建订阅失败';callback(commonEventItem, toastMsg);return;}commonEventItem.subscriber = subscriber;CommonEventManager.subscribe(subscriber, (err, data) => {if (err) {toastMsg = '订阅失败';callback(commonEventItem, toastMsg);return;}const connState = data?.data;if (connState) {switch (connState) {case 'connecting':commonEventItem.state = 'Wi-Fi 连接中';break;case 'connected':commonEventItem.state = 'Wi-Fi 已连接';break;case 'disconnected':commonEventItem.state = 'Wi-Fi 已断开';break;default:commonEventItem.state = '未知状态';}}callback(commonEventItem);});toastMsg = '订阅成功';callback(commonEventItem, toastMsg);});}unsubscribe(commonEventItem: CommonEventBean, callback: Function): void {if (commonEventItem.subscriber) {CommonEventManager.unsubscribe(commonEventItem.subscriber, () => {callback('已成功退订');});}}
}

获取当前 Wi-Fi 信息

该模块通过 wifiManager 获取设备当前连接的 Wi-Fi 信息。

主要功能包括:

  1. 检测 Wi-Fi 是否已激活。
  2. 获取 Wi-Fi 的 SSIDMAC 地址并进行格式化处理。

代码如下:

export class WifiInfoHandler {wifiViewUpdates(): void {try {const isWifiActive: boolean = wifiManager.isWifiActive();if (isWifiActive) {this.showLinkedInfo();} else {console.info('Wi-Fi 未激活');}} catch (error) {console.error(`Wi-Fi 状态检查失败,错误码: ${(error as BusinessError).code}`);}}showLinkedInfo(): void {wifiManager.getLinkedInfo().then((linkedInfo) => {const ssid = linkedInfo.ssid.replace(/^"|"$/g, '');const bssid = linkedInfo.macAddress;console.info(`当前连接的 Wi-Fi SSID: ${ssid}`);console.info(`Wi-Fi MAC 地址: ${bssid}`);}).catch((err) => {console.error(`获取 Wi-Fi 信息失败: ${err}`);});}
}

整合主模块

将 Wi-Fi 状态监听和信息获取功能整合到主程序中:

const commonEventBean = new CommonEventBean();
const wifiListener = new WifiStatusListener();
const wifiHandler = new WifiInfoHandler();wifiListener.subscribe(commonEventBean, (event, msg) => {console.info(`状态: ${event.state}`);if (msg) {console.info(`消息: ${msg}`);}if (event.state === 'Wi-Fi 已连接') {wifiHandler.wifiViewUpdates();}
});

运行效果展示

示例输出 1(Wi-Fi 连接中):

状态: Wi-Fi 连接中

示例输出 2(Wi-Fi 已连接):

状态: Wi-Fi 已连接  
当前连接的 Wi-Fi SSID: MyHomeWiFi  
Wi-Fi MAC 地址: 00:1A:2B:3C:4D:5E  

示例输出 3(Wi-Fi 已断开):

状态: Wi-Fi 已断开  

性能分析

  • 时间复杂度

    • Wi-Fi 状态监听:实时事件触发,复杂度为 (O(1))。
    • Wi-Fi 信息获取:getLinkedInfo 为同步操作,复杂度为 (O(1))。
  • 空间复杂度

    • 使用少量对象和事件订阅,复杂度为 (O(1))。

总结

通过本文的代码实现,开发者可以:

  1. 动态监听 Wi-Fi 的连接状态并实时更新。
  2. 获取当前连接的 Wi-Fi 信息,为应用提供更智能的网络交互功能。

此 Demo 结构清晰,模块化设计方便扩展,适用于需要实时监控网络状态的场景。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com