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

2020-09-18 15:46 更新

場(chǎng)景介紹

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

接口說(shuō)明

RadioStateObserver 類中提供了觀察蜂窩網(wǎng)絡(luò)狀態(tài)變化的方法,為了能夠?qū)崟r(shí)觀察蜂窩網(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
信號(hào)信息(SIGNAL_INFO) NA

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

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

開(kāi)發(fā)步驟

添加觀察事件

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

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

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

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

   // 獲取RadioInfoManager對(duì)象。
   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ò)注冊(cè)狀態(tài)變化的回調(diào)方法。
       @Override
       public void onNetworkStateUpdated(NetworkState state) {
           ...
       }

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

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

    
   // 創(chuàng)建MyRadioStateObserver的對(duì)象。
   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 方法,傳入添加觀察事件時(shí)創(chuàng)建的 MyRadioStateObserver 對(duì)象 observer。

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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)