HarmonyOS鸿蒙Next中期望获取「网络状态变化」「监听」&「判断」相关的可靠接口的确认

HarmonyOS鸿蒙Next中期望获取「网络状态变化」「监听」&「判断」相关的可靠接口的确认 期望获取的接口支持包括:

  • 监听/取消监听网络状态变化的接口(比如 wifi ->5G,5G->4G)

  • 网络状态的映射方式,我们期望将当前网络状态映射成(未知/无连接/WIfi/5G/4G/3G/2G/Gprs这样的枚举)

  • 我们需要构造一个网络状态管理模块

  • 我查阅和测试了不少鸿蒙相关的接口,对相关的信息反馈有点懵,所以想请教下比较靠谱的接口支持。

  • 我遇到的一些具体问题参考:

1)import connection from ‘@ohos.net.connection’;

链接: https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-net-connection-V5

问题1.1):针对 wifi还是运营商网络,通过 connection.getNetCapabilities 获取信息进行判断是合适的么?

问题1.2):针对 NetBearType, 3 对应的「以太网」环境在什么场景下会出现?

问题1.3):针对网络状态监听,使用 connection.createNetConnection + conn.register 是可靠的么?createNetConnection 的参数 netSpecifier,是指定监听的网络类型么,有没有更具体的应用描述?以及为什么要还要指定 networkCap?附指南: https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/net-connection-manager-V5

2)import observer from ‘@ohos.telephony.observer’;

链接: https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-observer-V5

感觉好像可以又可以监听网络,又可以获取 4G/5G相关信息的样子

问题2.1)这边的监听是不是不能监听wifi/运营商的变化?

问题2.2)NetworkType 和 NetworkState.cfgTech 如何理解差异?我想获取类似4G/5G这样的信息,是去这两个值中的其中一个么?另外针对 RadioTechnology中的 type11 - IWLAN 单独问一下:其他的枚举看起来都是3G/4G/5G等技术的细节,这个IWLAN也是属于 xG 之一么,网上没有找到比较理想的资料描述?


更多关于HarmonyOS鸿蒙Next中期望获取「网络状态变化」「监听」&「判断」相关的可靠接口的确认的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

1、监听/取消监听网络状态变化的接口(比如 wifi ->5G,5G->4G)

在网络连接管理模块中@ohos.net.connection中通过on(“netCapabilitiesChange”)订阅网络能力变化事件,即可监听网络变化,获取网络类型,监听变化可以使用如下接口:设备从无网络到有网络会触发netAvailable事件、netCapabilitiesChange事件和netConnectionPropertiesChange事件; 设备从有网络到无网络状态会触发netLost事件; 设备从WiFi到蜂窝会触发netLost事件(WiFi丢失)之后触发 netAvaliable事件(蜂窝可用)

2、网络状态的映射方式,我们期望将当前网络状态映射成(未知/无连接/WIfi/5G/4G/3G/2G/Gprs这样的枚举)

网络类型获取在网络连接管理模块中@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)。

更多关于HarmonyOS鸿蒙Next中期望获取「网络状态变化」「监听」&「判断」相关的可靠接口的确认的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,获取和监听网络状态变化可以通过@ohos.net.connection模块实现。该模块提供了netConnection类,用于监控网络连接状态的变化。具体接口如下:

  1. 获取当前网络状态:使用getNetCapabilities()方法获取当前网络的详细信息,如网络类型、带宽等。

  2. 监听网络状态变化:通过on('netAvailable')on('netCapabilitiesChange')on('netConnectionPropertiesChange')等事件监听网络状态的变化。例如,on('netAvailable')事件在网络可用时触发,on('netCapabilitiesChange')事件在网络能力发生变化时触发。

  3. 判断网络状态:使用hasNetCapability(capability: NetCapability)方法判断当前网络是否具备特定能力,如是否支持蜂窝网络、Wi-Fi等。

示例代码:

import netConnection from '@ohos.net.connection';

let netCapabilities = netConnection.getNetCapabilities();
netConnection.on('netCapabilitiesChange', (data) => {
    // 处理网络能力变化
});
let hasWifi = netConnection.hasNetCapability(netConnection.NetCapability.NET_CAPABILITY_WIFI);

这些接口为开发者提供了可靠的网络状态监听和判断能力。

在HarmonyOS(鸿蒙OS)Next中,获取网络状态变化并进行监听和判断,可以使用[@ohos](/user/ohos).net.connection模块中的onoff方法来监听网络状态变化。具体接口如下:

  1. 监听网络状态变化:

    import connection from '[@ohos](/user/ohos).net.connection';
    
    connection.on('netAvailable', (data) => {
        console.log('Network available:', data);
    });
    
    connection.on('netCapabilitiesChange', (data) => {
        console.log('Network capabilities changed:', data);
    });
    
  2. 判断当前网络状态:

    connection.getDefaultNet().then((netHandle) => {
        if (netHandle) {
            console.log('Network is available');
        } else {
            console.log('Network is unavailable');
        }
    });
    

通过这些接口,您可以可靠地监听和判断网络状态的变化。

回到顶部