HarmonyOS-鸿蒙app开发 —基于java网络与连接_WLAN消息通知

HarmonyOS-鸿蒙app开发 —基于java网络与连接_WLAN消息通知

场景介绍

WLAN消息通知(Notification)是HarmonyOS内部或者与应用之间跨进程通讯的机制,注册者在注册消息通知后,一旦符合条件的消息被发出,注册者即可接收到该消息并获取消息中附带的信息。

接口说明

表1 WLAN消息通知的相关广播介绍

描述

通知名

附加参数

WLAN状态

usual.event.wifi.POWER_STATE

active_state

WLAN扫描

usual.event.wifi.SCAN_FINISHED

scan_state

WLAN RSSI变化

usual.event.wifi.RSSI_VALUE

rssi_value

WLAN连接状态

usual.event.wifi.CONN_STATE

conn_state

Hotspot状态

usual.event.wifi.HOTSPOT_STATE

hotspot_active_state

Hotspot连接状态

usual.event.wifi.WIFI_HS_STA_JOIN usual.event.wifi.WIFI_HS_STA_LEAVE

P2P状态

usual.event.wifi.p2p.STATE_CHANGE

p2p_state

P2P连接状态

usual.event.wifi.p2p.CONN_STATE_CHANGE

linked_info

net_info

group_info

P2P设备列表变化

usual.event.wifi.p2p.DEVICES_CHANGE

P2P搜索状态变化

usual.event.wifi.p2p.PEER_DISCOVERY_STATE_CHANGE

peers_discovery

P2P当前设备变化

usual.event.wifi.p2p.CURRENT_DEVICE_CHANGE

p2p_device

开发步骤

  1. 构建消息通知接收者WifiEventSubscriber。
  2. 注册WLAN变化消息。

WifiEventSubscriber接收并处理WLAN广播消息。

// 构建消息接收者/注册者

class WifiEventSubscriber extends CommonEventSubscriber {

WifiEventSubscriber(CommonEventSubscribeInfo info) {

super(info);

}

 

@Override

public void onReceiveEvent(CommonEventData commonEventData) {

if (commonEventData == null || commonEventData.getIntent() == null) {

return;

}

if (WifiEvents.EVENT_ACTIVE_STATE.equals(commonEventData.getIntent().getAction())) {

// 获取附带参数

IntentParams params = commonEventData.getIntent().getParams();

if (params == null) {

return;

}

int wifiState= (int) params.getParam(WifiEvents.PARAM_ACTIVE_STATE);

 

if (wifiState== WifiEvents.STATE_ACTIVE) { // 处理WLAN被打开消息

HiLog.info(LABEL, “Receive WifiEvents.STATE_ACTIVE %{public}d”, wifiState);

} else if (wifiState == WifiEvents.STATE_INACTIVE) { // 处理WLAN被关闭消息

HiLog.info(LABEL, “Receive WifiEvents.STATE_INACTIVE %{public}d”, wifiState);

} else { // 处理WLAN异常状态

HiLog.warn(LABEL,“Unknown wifi state”);

}

}

}

}

 

// 注册消息

MatchingSkills match = new MatchingSkills();

// 增加获取WLAN状态变化消息

match.addEvent(WifiEvents.EVENT_ACTIVE_STATE);

CommonEventSubscribeInfo subscribeInfo = new CommonEventSubscribeInfo(match);

subscribeInfo.setPriority(100);

WifiEventSubscriber subscriber = new WifiEventSubscriber(subscribeInfo);

 

try {

CommonEventManager.subscribeCommonEvent(subscriber);

} catch (RemoteException e) {

HiLog.warn(LABEL, “subscribe in wifi events failed!”);

}

🚀 如未找到文章请搜索栏搜素 | Ctrl+D收藏本站 | 联系邮箱:15810050733@qq.com