HarmonyOS鸿蒙学习笔记(23)监听Wifi状态变化

监听Wifi状态变化

  • 前言
  • 创建接收状态变化的Bean对象
  • 创建订阅者和订阅事件
  • 参考资料:

前言

本篇博文通过动态订阅公共事件来说明怎么使用HarmonyOS监听Wifi状态的变化。关于动态订阅公共事件的概念,官网有详细说明,再次就不在赘述。博文相关项目源码地址传送门。公共事件的监听需要通过订阅和注销两步。
在这里插入图片描述

创建接收状态变化的Bean对象

该对象主要用来存储Wifi当前的状态,比如是否已经链接、是否断开等。同时该Bean对象还定义了一个subscriber用来保持订阅者,用来执行订阅和注销


export class CommonEventBean {//省略部分代码/*** The state of common events.*/state: Resource = $r('app.string.event_init_state');//保存订阅者对象subscriber: any = null;
}

创建订阅者和订阅事件

监听Wifi变化,需要先调用CommonEventManager.createSubscriber创建订阅者,保存返回的订阅者对象subscriber,用于执行后续的订阅、退订等操作。下面看看就看具体怎么来监听Wifi变化的:

 /**@param commonEventItem 保存状态的Bean对象@*/subscribe(commonEventItem: CommonEventBean, callback: Function): void {let toastMsg: Resource;let commonEvent = commonEventItem;//创建需要订阅的事件,此处为CONN_STATEconst subscribeInfo = {events: [CommonConstants.CONN_STATE]};//创建订阅者CommonEventManager.createSubscriber(subscribeInfo, (err, subscriber) => {if (err) {toastMsg = $r('app.string.subscribe_fail');//创建订阅失败:执行回调,刷新相关UIcallback(commonEvent, toastMsg);return;}// 创建订阅者失败:执行回调,刷新相关UIif (subscriber === null) {toastMsg = $r('app.string.need_subscriber');callback(commonEvent, toastMsg);return;}//保存订阅者,用来后面的注销操作commonEvent.subscriber = subscriber;//通过订阅者subscriber 执行订阅 //订阅回调函数返回的data内包含了公共事件的名称、发布者携带的数据等信息CommonEventManager.subscribe(subscriber, (err, data) => {if (err) {//订阅失败:执行回调,刷新相关UItoastMsg = $r('app.string.subscribe_fail');callback(commonEvent, toastMsg);return;}let connState: string | undefined = data?.data;if (connState === undefined) {return;}//变量当前Wifi状态switch (connState) {case WifiState.CONNECTING:commonEvent.state = '连接中';break;case WifiState.DISCONNECTED:commonEvent.state = '已断开';break;case WifiState.DISCONNECTING:commonEvent.state = '正在断开';break;case WifiState.UNKNOWN_STATE:commonEvent.state = '未知状态';break;case WifiState.AP_CONNECTED:commonEvent.state = '已连接';break;default:break;}//执行回调,刷新相关UIcallback(commonEvent);})toastMsg = $r('app.string.subscribe_success');//执行回调,刷新相关UIcallback(commonEvent, toastMsg);})}

参考资料:

系统公共事件(ArkTS)
动态订阅公共事件
源码地址

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/245652.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

应急响应-Windows-进程排查

进程(process)是计算机中的程序关于某数据集合上的一次运动活动,是系统进行资源分配和调度的基本单位,是操作系统结果的基础。在早期面向进程结构中,进程是线程的容器。无论是在Windows系统还是Linux系统中&#xff0c…

计算机软件知识,务必进来了解一下

ps:本文章的图片内容来源都是来自于湖科大教书匠高老师的视频,声明:仅供自己复习 这里附上视频链接地址:1-4 计算机软件_哔哩哔哩_bilibili 程序是软件的重要组成部分,一台计算机中的全部程序和数据就构成了这台计算机…

万字图解 | 深入揭秘IP层工作原理

大家好,我是「云舒编程」,今天我们来聊聊计算机网络面试之-(网络层ip)工作原理。 文章首发于微信公众号:云舒编程 关注公众号获取: 1、大厂项目分享 2、各种技术原理分享 3、部门内推 前言 想必不少同学在面试过程中,…

yolov5 opencv dnn部署 github代码

yolov5 opencv dnn部署 github代码 源码地址实现推理源码中作者的yolov5s.onnx推理条件python部署(因为python比较简单就直接介绍了)c部署 参考链接 源码地址 yolov5官网还提供的dnn、tensorrt推理链接本人使用的opencv c github代码,代码作者非本人,也是上面作者推…

一、防御保护---信息安全概述

一、网络安全防御---信息安全概述 1.信息安全现状及挑战1.1 网络空间安全市场在中国,潜力无穷1.2 数字化时代威胁升级1.3 传统安全防护逐步失效1.4 安全风险能见度不足1.5 缺乏自动化防御手段1.6 网络安全监管标准愈发严苛 2.信息安全概述2.1 简介2.2 常见的网络安全…

C语言每日一题(48)回文链表

力扣 234 回文链表 题目描述 给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。 示例 1: 输入:head [1,2,2,1] 输出:true示例 2&#xff1…

HTML 炫酷进度条

下面是代码 <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>Light Loader - CodePen</title><style> html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr…

企业能源消耗监测管理系统是否可以做好能源计量与能耗分析?

能源消耗与分析是能源科学管理的基础&#xff0c;也可促进能源管理工作的改善&#xff0c;在企业中能源管理系统的作用也愈加重要。 首先&#xff0c;能源计量是能源管理的基础&#xff0c;通过能源精准计老化&#xff0c;容易出现测量设备不准确以及其他一些人为因素原因导致…

Linux 驱动开发基础知识——编写LED驱动程序(三)

个人名片&#xff1a; &#x1f981;作者简介&#xff1a;一名喜欢分享和记录学习的在校大学生 &#x1f42f;个人主页&#xff1a;妄北y &#x1f427;个人QQ&#xff1a;2061314755 &#x1f43b;个人邮箱&#xff1a;2061314755qq.com &#x1f989;个人WeChat&#xff1a;V…

ICSpector:一款功能强大的微软开源工业PLC安全取证框架

关于ICSpector ICSpector是一款功能强大的开源工业PLC安全取证框架&#xff0c;该工具由微软的研究人员负责开发和维护&#xff0c;可以帮助广大研究人员轻松分析工业PLC元数据和项目文件。 ICSpector提供了方便的方式来扫描PLC并识别ICS环境中的可疑痕迹&#xff0c;可以用于…

微信小程序(十五)自定义导航栏

注释很详细&#xff0c;直接上代码 上一篇 新增内容&#xff1a; 1.组件文件夹创建方法 2.自定义组件的配置方法 3.外部修改组件样式&#xff08;关闭样式隔离或传参&#xff09; 创建组件文件夹 如果是手动创建建议注意在json文件声明&#xff1a; mynav.json {//声明为组件可…

【Kafka】开发实战和Springboot集成kafka

目录 消息的发送与接收生产者消费者 SpringBoot 集成kafka服务端参数配置 消息的发送与接收 生产者 生产者主要的对象有&#xff1a; KafkaProducer &#xff0c; ProducerRecord 。 其中 KafkaProducer 是用于发送消息的类&#xff0c; ProducerRecord 类用于封装Kafka的消息…

数据结构(绪论+算法的基本概念)

文章目录 一、绪论1.1、数据结构的基本概念1.2、数据结构三要素1.2.1、逻辑结构1.2.2、数据的运算1.2.3、物理结构&#xff08;存储结构&#xff09;1.2.4、数据类型和抽象数据类型 二、算法的基本概念2.1、算法的特性2.2、“好”算法的特质2.2.1、算法时间复杂度2.2.2、算法空…

【医学图像隐私保护】联邦学习:密码学 + 机器学习 + 分布式 实现隐私计算,破解医学界数据孤岛的长期难题

联邦学习&#xff1a;密码学 机器学习 分布式 提出背景&#xff1a;数据不出本地&#xff0c;又能合力干大事联邦学习的问题 分布式机器学习&#xff1a;解决大数据量处理的问题横向联邦学习&#xff1a;解决跨多个数据源学习的问题纵向联邦学习&#xff1a;解决数据分散在多…

SQL查询数据库环境(dm8达梦数据库)

SQL查询数据库环境dm8达梦数据库 环境介绍 环境介绍 某些环境没有图形化界面,可以使用sql语句查询达梦数据库环境情况 SELECT 实例名称 数据库选项,INSTANCE_NAME 数据库选项相关参数值 FROM V$INSTANCE UNION ALL SELECT 授权用户,(SELECT AUTHORIZED_CUSTOMER FROM V$LICE…

【Linux】从新认识Linux 服务(Service)

文章目录 Linux中service的概念Linux中常见的service常见的服务管理方式Linux中列出serviceLinux中service的特点推荐阅读 Linux中service的概念 在Linux操作系统中&#xff0c;服务&#xff08;Service&#xff09;是一个基本概念&#xff0c;它通常指的是运行在后台的、持续…

(大众金融)SQL server面试题(3)-客户已用额度总和

今天&#xff0c;面试了一家公司&#xff0c;什么也不说先来三道面试题做做&#xff0c;第三题。 那么&#xff0c;我们就开始做题吧&#xff0c;谁叫我们是打工人呢。 题目是这样的&#xff1a; DEALER_INFO经销商授信协议号码经销商名称经销商证件号注册地址员工人数信息维…

Scratch与信息学奥赛的交汇点—C++编程在蓝桥杯青少组题库中的应用

随着信息技术的不断发展&#xff0c;编程教育已经成为了青少年科学素养的重要组成部分。在这个数字化的时代&#xff0c;掌握一门编程语言不仅仅是为了解决实际问题&#xff0c;更是打开智能世界大门的钥匙。今天&#xff0c;6547网就来探讨一下如何通过Scratch入门编程&#x…

基于卡尔曼滤波的平面轨迹优化

文章目录 概要卡尔曼滤波代码主函数代码CMakeLists.txt概要 在进行目标跟踪时,算法实时测量得到的目标平面位置,是具有误差的,连续观测,所形成的轨迹如下图所示,需要对其进行噪声滤除。这篇博客将使用卡尔曼滤波,对轨迹进行优化。 优化的结果为黄色线。 卡尔曼滤波代码…

解决Windows系统本地端口被占用

目录 一、被程序占用端口 1.通过终端杀掉占用端口的进程 2.任务管理器 二、被系统列为保留端口 前言&#xff1a; 首先了解为什么会出现端口被占用的情况 端口被占用的情况可能出现的原因有很多&#xff0c;主要有以下几点&#xff1a; 1.多个应用程序同时启动&…