本文介绍: HarmonyOS 监听Wifi状态
监听Wifi状态变化
前言
本篇博文通过动态订阅公共事件来说明怎么使用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_STATE
const subscribeInfo = {
events: [CommonConstants.CONN_STATE]
};
//创建订阅者
CommonEventManager.createSubscriber(subscribeInfo, (err, subscriber) => {
if (err) {
toastMsg = $r('app.string.subscribe_fail');
//创建订阅失败:执行回调,刷新相关UI
callback(commonEvent, toastMsg);
return;
}
// 创建订阅者失败:执行回调,刷新相关UI
if (subscriber === null) {
toastMsg = $r('app.string.need_subscriber');
callback(commonEvent, toastMsg);
return;
}
//保存订阅者,用来后面的注销操作
commonEvent.subscriber = subscriber;
//通过订阅者subscriber 执行订阅
//订阅回调函数返回的data内包含了公共事件的名称、发布者携带的数据等信息
CommonEventManager.subscribe(subscriber, (err, data) => {
if (err) {
//订阅失败:执行回调,刷新相关UI
toastMsg = $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;
}
//执行回调,刷新相关UI
callback(commonEvent);
})
toastMsg = $r('app.string.subscribe_success');
//执行回调,刷新相关UI
callback(commonEvent, toastMsg);
})
}
参考资料:
原文地址:https://blog.csdn.net/chunqiuwei/article/details/135836831
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_62707.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。