【关键字】
@ohos.net.connection (网络连接管理)模块 / on('netCapabilitiesChange') / 网络类型映射 / getNetCapabilities / @ohos.telephony.radio (网络搜索)模块
【问题描述】
需要构造一个网络状态管理模块,查阅和测试了多个鸿蒙相关的接口,遇到一些问题,请提供下获取以下信息的比较有效的API接口各是什么?
-
监听/取消监听网络状态变化的接口(比如 wifi ->5G,5G->4G)
-
网络状态的映射方式,期望将当前网络状态映射成(未知/无连接/WIfi/5G/4G/3G/2G/Gprs)这样的枚举
【解决方案】
-
监听/取消监听网络状态变化的接口
@ohos.net.connection网络连接管理模块中的on(“netCapabilitiesChange”)接口可以订阅网络能力变化事件,即可监听网络状态变化,获取网络类型,监听变化可以使用如下接口:
-
设备从无网络到有网络会触发netAvailable事件、netCapabilitiesChange事件和netConnectionPropertiesChange事件。
-
设备从有网络到无网络状态会触发netLost事件。
-
设备从WiFi到蜂窝会触发netLost事件,(WiFi丢失)之后触发 netAvaliable事件(蜂窝可用)。
-
-
网络状态的映射方法接口
@ohos.net.connection网络连接管理模块中的getNetCapabilities方法可获取网络类型,getNetCapabilities方法返回的bearerType参数为当前连接的网络类型,只连接WiFi或者移动网络时返回为当前网络,若WiFi与蜂窝数据同时连接时会优先返回WiFi信息,需要获取移动网络类型时,可先通过connection.getNetCapabilities方法的bearerTypes获取网络类型,判断为蜂窝网络时,再使用radio.getSignalInformation获取网络信号强度,通过其返回的signalType参数对应出NetworkType网络类型:GSM(2G)CDMA(电信2G)WCDMA(3G)TDSCDMA(3G)LTE(4G)NR(5G)。
@ohos.net.connection模块接口文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-net-connection-0000001774281662
@ohos.telephony.radio (网络搜索)接口文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-radio-0000001774122098#ZH-CN_TOPIC_0000001774122098__radiogetsignalinformation7