场景介绍
WLAN消息通知(Notification)是HarmonyOS内部或者与应用之间跨进程通讯的机制,注册者在注册消息通知后,一旦符合条件的消息被发出,注册者即可接收到该消息并获取消息中附带的信息。
接口说明
描述 |
通知名 |
附加参数 |
---|---|---|
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 |
开发步骤
- 构建消息通知接收者WifiEventSubscriber。
- 注册WLAN变化消息。
WifiEventSubscriber接收并处理WLAN广播消息。
// 构建消息接收者/注册者
class WifiEventSubscriber extends CommonEventSubscriber {
WifiEventSubscriber(CommonEventSubscribeInfo info) {
super(info);
}
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!”);
}