鴻蒙OS 觀察蜂窩網(wǎng)絡(luò)狀態(tài)變化

2020-09-18 15:46 更新

場景介紹

應(yīng)用可以通過觀察蜂窩網(wǎng)絡(luò)狀態(tài)變化,來接收最新蜂窩網(wǎng)絡(luò)服務(wù)狀態(tài)信息、信號信息等。

接口說明

RadioStateObserver 類中提供了觀察蜂窩網(wǎng)絡(luò)狀態(tài)變化的方法,為了能夠?qū)崟r觀察蜂窩網(wǎng)絡(luò)狀態(tài)變化,應(yīng)用必須包含以下權(quán)限。

觀察狀態(tài)名稱 權(quán)限名稱
網(wǎng)絡(luò)狀態(tài)信息(NETWORK_STATE) ohos.permission.GET_NETWORK_INFO
信號信息(SIGNAL_INFO) NA

需要使用 RadioInfoManager 的如下接口將繼承 RadioStateObserver 類的對象注冊到系統(tǒng)服務(wù):

接口名 觀察事件的掩碼 描述
addObserver OBSERVE_MASK_NETWORK_STATE 觀察蜂窩網(wǎng)絡(luò)駐網(wǎng)狀態(tài)信息。
OBSERVE_MASK_SIGNAL_INFO 觀察蜂窩網(wǎng)絡(luò)信號信息。
removeObserver N/A 停止觀察所有狀態(tài)的變化。

開發(fā)步驟

添加觀察事件

  1. 調(diào)用 RadioInfoManager 的 getInstance 接口,獲取到 RadioInfoManager 實(shí)例。

  1. 創(chuàng)建繼承 RadioStateObserver 的類 MyRadioStateObserver,并覆寫狀態(tài)變化回調(diào)方法。

  1. 創(chuàng)建 MyRadioStateObserver 的對象 observer。

  1. 調(diào)用 RadioInfoManager 的 addObserver 方法,傳入已創(chuàng)建的 MyRadioStateObserver 對象 observer 和需要觀察的 mask。

   // 獲取RadioInfoManager對象。
   RadioInfoManager radioInfoManager = RadioInfoManager.getInstance(context);
   // 創(chuàng)建繼承RadioStateObserver的類MyRadioStateObserver
   class MyRadioStateObserver extends RadioStateObserver {
       // 構(gòu)造方法,在當(dāng)前線程的runner中執(zhí)行回調(diào),slotId需要傳入要觀察的卡槽ID(0或1)。
       MyRadioStateObserver(int slotId) {
           super(slotId);
       }

    
       // 構(gòu)造方法,在執(zhí)行runner中執(zhí)行回調(diào)。
       MyRadioStateObserver(int slotId, EventRunner runner) {
           super(slotId, runner);
       }

    
       // 網(wǎng)絡(luò)注冊狀態(tài)變化的回調(diào)方法。
       @Override
       public void onNetworkStateUpdated(NetworkState state) {
           ...
       }

    
       // 信號信息變化的回調(diào)方法。
       @Override
       public void onSignalInfoUpdated(List<SignalInformation> signalInfos) {
           ...
       }
   }

    
   // 執(zhí)行回調(diào)的runner。
   EventRunner runner = EventRunner.create();

    
   // 創(chuàng)建MyRadioStateObserver的對象。
   MyRadioStateObserver observer = new MyRadioStateObserver(slotId, runner);

    
   // 添加回調(diào),以NETWORK_STATE和SIGNAL_INFO為例。
   radioInfoManager.addObserver(observer, RadioStateObserver.OBSERVE_MASK_NETWORK_STATE | RadioStateObserver.OBSERVE_MASK_SIGNAL_INFO);

停止觀察

  1. 調(diào)用 RadioInfoManager 的 getInstance 接口,獲取到 RadioInfoManager 實(shí)例。

  1. 調(diào)用 RadioInfoManager 的 removeObserver 方法,傳入添加觀察事件時創(chuàng)建的 MyRadioStateObserver 對象 observer。

   // 獲取RadioInfoManager對象。
   RadioInfoManager radioInfoManager = RadioInfoManager.getInstance(context);
   // 停止觀察
   radioInfoManager.removeObserver(observer);
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號