应用可以通过观察蜂窝网络状态变化,来接收最新蜂窝网络服务状态信息、信号信息等。在harmonyOS中,RadioStateObserver类中提供了观察蜂窝网络状态变化的方法。
代码如下所示:
- public class MainAbility extends AceAbility {
- private static final HiLogLabel TAG = new HiLogLabel(HiLog.LOG_APP,0x0,"网络");
- @Override
- public void onStart(Intent intent) {
- super.onStart(intent);
- // 获取RadioInfoManager对象。
- RadioInfoManager radioInfoManager = RadioInfoManager.getInstance(getContext());
- // 执行回调的runner。
- EventRunner runner = EventRunner.create();
- // 创建***StateObserver的对象。
- ***StateObserver observer = new ***StateObserver(1, runner);
- // 添加回调,以NETWORK_STATE和SIGNAL_INFO为例。
- radioInfoManager.addObserver(observer, RadioStateObserver.OBSERVE_MASK_NETWORK_STATE | RadioStateObserver.OBSERVE_MASK_SIGNAL_INFO);
- }
- // 创建继承RadioStateObserver的类***StateObserver
- class ***StateObserver extends RadioStateObserver {
- // 构造方法,在当前线程的runner中执行回调,slotId需要传入要观察的卡槽ID(0或1)。
- ***StateObserver(int slotId) {
- super(slotId);
- }
- // 构造方法,在执行runner中执行回调。
- ***StateObserver(int slotId, EventRunner runner) {
- super(slotId, runner);
- }
- // 网络注册状态变化的回调方法。
- @Override
- public void onNetworkStateUpdated(NetworkState state) {
- HiLog.info(TAG,"网络注册状态变化:"+state.toString());
- }
- // 信号信息变化的回调方法。
- @Override
- public void onSignalInfoUpdated(List<SignalInformation> signalInfos) {
- HiLog.info(TAG,"信号信息变化:"+signalInfos.toString());
- }
- }
- @Override
- public void onStop() {
- super.onStop();
- }
- }
复制代码