往期鸿蒙全套实战文章必看:(附带鸿蒙全栈学习资料)


网络场景识别 (C/C++)

场景介绍

应用在订阅网络场景识别后,系统在网络场景实时信息或预测信息发生变化后回调给应用,回调的网络场景信息包括数据传输的链路类型、网络场景类型、数传策略建议、弱信号信息等。

接口说明

具体API说明详见接口文档

接口名

描述

int32_t HMS_NetworkBoost_RegisterNetSceneCallback(HMS_NetworkBoost_NetSceneChange callback, uint32_t* callbackId)

注册网络场景信息状态变化回调。

int32_t HMS_NetworkBoost_UnregisterNetSceneCallback(uint32_t callbackId)

取消注册网络场景信息状态变化回调。

开发步骤

  1. 导入Network Boost Kit模块。
    #include "NetworkBoostKit/network_boost_quality.h"
    #include <cstdio>
  2. CMakeLists.txt中添加以下lib。
    libnetwork_boost.so
  3. 通过注册回调的方式监听网络场景识别信息。
    uint32_t callbackId = 0;
    void onNetworkSceneChanged(NetworkBoost_NetworkScene *ns)
    {
        // 网络场景识别回调信息处理
        printf("数据路径类型: %d\n", ns->pathType);
        printf("网络场景: %d\n", ns->scene);
        switch (ns->scene) {
            case NB_SCENE_NORMAL:
                // 普通场景处理
                break;
            case NB_SCENE_CONGESTION:
                // 拥塞场景处理
                break;
            case NB_SCENE_FREQUENT_HANDOVER:
                // 信号快切场景处理
                break;
            case NB_SCENE_WEAK_SIGNAL:
                // 弱信号场景处理
                break;
        }
        printf("应用数传策略建议: %d\n", ns->recommendedAction);
        if (ns->weakSignalPrediction.duration > 0) {
            // 弱信号预测处理
        }
    }
    
    
    int32_t RegisterNetSceneCallback()
    { 
        HMS_NetworkBoost_NetSceneChange callback;
        callback = onNetworkSceneChanged;
        // 注册回调,获取回调Id
        int32_t ret = HMS_NetworkBoost_RegisterNetSceneCallback(callback, &callbackId);
        printf("注册网络场景结果: %d, Id:%d\n", ret, callbackId);
        return ret;
    }
  4. 当应用业务流程结束,通过取消注册的方式取消监听网络场景识别信息。

    int32_t UnregisterNetSceneCallback()
    {
        // 使用注册时获取的回调Id取消注册
        int32_t ret = HMS_NetworkBoost_UnregisterNetSceneCallback(callbackId);
        printf("取消注册网络场景结果: %d\n", ret);
        return ret;
    }

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐