codecamp

鸿蒙OS 观察蜂窝网络状态变化

场景介绍

应用可以通过观察蜂窝网络状态变化,来接收最新蜂窝网络服务状态信息、信号信息等。

接口说明

RadioStateObserver 类中提供了观察蜂窝网络状态变化的方法,为了能够实时观察蜂窝网络状态变化,应用必须包含以下权限。

观察状态名称 权限名称
网络状态信息(NETWORK_STATE) ohos.permission.GET_NETWORK_INFO
信号信息(SIGNAL_INFO) NA

需要使用 RadioInfoManager 的如下接口将继承 RadioStateObserver 类的对象注册到系统服务:

接口名 观察事件的掩码 描述
addObserver OBSERVE_MASK_NETWORK_STATE 观察蜂窝网络驻网状态信息。
OBSERVE_MASK_SIGNAL_INFO 观察蜂窝网络信号信息。
removeObserver N/A 停止观察所有状态的变化。

开发步骤

添加观察事件

  1. 调用 RadioInfoManager 的 getInstance 接口,获取到 RadioInfoManager 实例。

  1. 创建继承 RadioStateObserver 的类 MyRadioStateObserver,并覆写状态变化回调方法。

  1. 创建 MyRadioStateObserver 的对象 observer。

  1. 调用 RadioInfoManager 的 addObserver 方法,传入已创建的 MyRadioStateObserver 对象 observer 和需要观察的 mask。

   // 获取RadioInfoManager对象。
   RadioInfoManager radioInfoManager = RadioInfoManager.getInstance(context);
   // 创建继承RadioStateObserver的类MyRadioStateObserver
   class MyRadioStateObserver extends RadioStateObserver {
       // 构造方法,在当前线程的runner中执行回调,slotId需要传入要观察的卡槽ID(0或1)。
       MyRadioStateObserver(int slotId) {
           super(slotId);
       }

    
       // 构造方法,在执行runner中执行回调。
       MyRadioStateObserver(int slotId, EventRunner runner) {
           super(slotId, runner);
       }

    
       // 网络注册状态变化的回调方法。
       @Override
       public void onNetworkStateUpdated(NetworkState state) {
           ...
       }

    
       // 信号信息变化的回调方法。
       @Override
       public void onSignalInfoUpdated(List<SignalInformation> signalInfos) {
           ...
       }
   }

    
   // 执行回调的runner。
   EventRunner runner = EventRunner.create();

    
   // 创建MyRadioStateObserver的对象。
   MyRadioStateObserver observer = new MyRadioStateObserver(slotId, runner);

    
   // 添加回调,以NETWORK_STATE和SIGNAL_INFO为例。
   radioInfoManager.addObserver(observer, RadioStateObserver.OBSERVE_MASK_NETWORK_STATE | RadioStateObserver.OBSERVE_MASK_SIGNAL_INFO);

停止观察

  1. 调用 RadioInfoManager 的 getInstance 接口,获取到 RadioInfoManager 实例。

  1. 调用 RadioInfoManager 的 removeObserver 方法,传入添加观察事件时创建的 MyRadioStateObserver 对象 observer。

   // 获取RadioInfoManager对象。
   RadioInfoManager radioInfoManager = RadioInfoManager.getInstance(context);
   // 停止观察
   radioInfoManager.removeObserver(observer);
鸿蒙OS 获取当前蜂窝网络信号信息
鸿蒙OS 传感器
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

鸿蒙OS 开发

鸿蒙OS 术语

鸿蒙OS Java API参考

鸿蒙OS ohos.aafwk.ability

鸿蒙OS ohos.aafwk.abilityjet.activedata

鸿蒙OS ohos.aafwk.content

鸿蒙OS java.lang

鸿蒙OS java.Util

鸿蒙OS java.Util class

鸿蒙OS ohos.data.dataability

鸿蒙OS ohos.data.dataability class

鸿蒙OS ohos.agp.components

鸿蒙OS ohos.agp.components interface

鸿蒙OS ohos.agp.components class

鸿蒙OS ohos.global.configuration

鸿蒙OS java.io

鸿蒙OS ohos.data.resultset

鸿蒙OS ohos.data.resultset interface

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }