Android之監測手機網路狀態的廣播
今天具體說下Android檢測網路狀態的廣播,我們在做一些手機應用的時候如果網路發生改變可能會給使用者造成一些損失,在中國2G,3G網路都沒有普及的情況下,基本都是包流量的,所以在做一些視訊應用軟體的時候,如果使用者在使用WIFI的時候如果無線網路中斷,手機網路會自動換手機網路,從而給使用者造成不必要的損失。
Android手機在對於一些系統廣播,如簡訊的接收,電話的接收,電池電量過低,網路狀態改變都會發一個廣播,既然系統會傳送一條廣播,那麼就需要一個接收器來處理這個廣播。首先定義一個類繼承NetworkChangeReceiver,重寫onReceive()就行了。然後在OnReceive()這個方法進行相應廣播的處理。
網路狀態切換的廣播類:
- package com.test;
- import android.content.BroadcastReceiver;
- import android.content.Context;
- import android.content.Intent;
- import android.net.ConnectivityManager;
- import android.net.NetworkInfo.State;
- public class extends BroadcastReceiver {
- @Override
- public void onReceive(Context context, Intent intent) {
- State wifiState = null;
- State mobileState = null;
- ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
- wifiState = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();
- mobileState = cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();
- if (wifiState != null && mobileState != null
- && State.CONNECTED != wifiState
- && State.CONNECTED == mobileState) {
- // 手機網路連線成功
- } else if (wifiState != null && mobileState != null
- && State.CONNECTED != wifiState
- && State.CONNECTED != mobileState) {
- // 手機沒有任何的網路
- } else if (wifiState != null && State.CONNECTED == wifiState) {
- // 無線網路連線成功
- }
- }
- }
在上面這個接收類中OnReceive()方法,你可以在上面三個網路狀態(只有手機網路,只有無線網路,沒有任何網路)中進行相應的處理,然後在應用中註冊廣播,註冊廣播有2種方式,一種在androidmanifest.xml中註冊,一種在java程式碼中註冊。
第一種:
- <receiver
- android:name="com.test.NetworkBroadcast"
- android:label="NetworkConnection" >
- <intent-filter>
- <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
- </intent-filter>
- </receiver>
第二種:
可以在Activity的onCreate()方法中註冊廣播,在Activity的onDestory()方法中解除安裝廣播。
- private BroadcastReceiver networkBroadcast=new BroadcastReceiver();
- private void registerNetworkReceiver() {
- IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
- this.registerReceiver(networkBroadcast, filter);
- }
- private void unRegisterNetworkReceiver() {
- this.unregisterReceiver(networkBroadcast);
- }
注意:在接收類中的onReceive()方法中不要處理太多複雜邏輯問題,尤其耗時的操作。
相關文章
- Android廣播之靜態註冊Android
- 檢測網路狀態 - flutterFlutter
- 手機網路連線效能API介面:查詢手機網路連線效能狀態API
- 網路狀態檢測的利器 - ss命令
- openwrt,狀態監測netdata
- 用狀態機寫輪播
- 一步步帶你實現Android網路狀態監聽Android
- SpringStateMachine狀態機之八-整合測試SpringMac
- Android - BroadcastReceiver 廣播AndroidAST
- Android BroadcastReceiver(廣播)AndroidAST
- Android中的廣播使用Android
- Android開發之監聽軟鍵盤狀態(彈出收回)Android
- 廣播電視網路運維安全態勢感知方案運維
- 用張量廣播機制實現神經網路反向傳播神經網路反向傳播
- Android入門教程 | 廣播機制 BroadcastAndroidAST
- android BLE Peripheral 手機模擬裝置發出BLE廣播 BluetoothLeAdvertiserAndroid
- 網路通訊4:TCP廣播TCP
- [20200304]測試網路狀態TIME_WAIT.txtAI
- Docker 之 執行狀態監控Docker
- Java應用異常狀態監測Java
- [20200310]測試網路狀態TIME_WAIT(windows).txtAIWindows
- [Android] 狀態機 StateMachine 原始碼剖析AndroidMac原始碼
- 模擬網路狀態的利器TC
- Android網路效能監控方案Android
- 校園IP網路廣播系統方案
- 小區廣播背景音樂IP網路廣播系統方案設計概要
- NumPy之:理解廣播
- android藍芽BLE(三) —— 廣播Android藍芽
- Elastic 使用Heartbeat監測服務執行狀態AST
- BLE鏈路層狀態機初探
- 如何透過手機APP線上監控西門子PLC的執行狀態APP
- 旅遊景區IP網路廣播系統方案-旅遊風景區景點IP網路廣播建設指南
- 發電機過速診斷研究 - 基於LSTM進行狀態監測
- iNeuOS工業網際網路作業系統,裝置振動狀態監測、預警和分析應用案例作業系統
- 2019年主要央媒及廣電機構網路傳播效果評估
- Android面試之網路Android面試
- Android 狀態列透明Android
- Android Activity 重建之狀態儲存與恢復Android
- Android APP如何獲取裝置網線插拔的狀態AndroidAPP