Android 電量優化】電量優化 ( 網絡狀態獲取 | 主動獲取 WIFI 狀態 | 被動獲取 WIFI 狀態 )

      網友投稿 1026 2022-05-30

      文章目錄

      一、獲取 WIFI 狀態

      二、主動獲取 WIFI 狀態

      三、被動獲取 WIFI 狀態

      參考 Google 官方文檔 : 優化電池續航時間

      一、獲取 WIFI 狀態

      在應用中執行某些操作 , 如軟件云端備份 , 從服務器端獲取最新版本號 , 從服務器端緩存最新軟件安裝包 , 固件版本 , 等操作 ,

      最好都在 WIFI 狀態下執行

      , 獲取 WIFI 的狀態也是兩種情況 , 分別是

      主動獲取 WIFI 狀態 ,

      被動獲取 WIFI 狀態 ;

      上述操作 ,

      也建議在手機上充電的狀態下執行 ;

      二、主動獲取 WIFI 狀態

      1 . 獲取 WIFI 狀態 : WIFI 狀態可以使用

      ConnectivityManager

      獲取 , 調用 getActiveNetworkInfo 方法獲取 NetworkInfo 后 , 先判定當前網絡是否連接 , 再判斷當前的 網絡類型 是否是

      ConnectivityManager.TYPE_WIFI

      ;

      ① 獲取連接管理器 : 調用 Context 上下文的

      getSystemService(Context.CONNECTIVITY_SERVICE)

      方法 , 跨進程獲取 ConnectivityManager 服務 ;

      // 獲取連接管理器 ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);

      1

      2

      3

      ② 獲取網絡信息 :

      調用 ConnectivityManager 的 getActiveNetworkInfo 方法

      , 獲取當前網絡信息 , 該操作需要

      android.Manifest.permission.ACCESS_NETWORK_STATE

      權限 ;

      NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();

      1

      ③ 判斷當前是否已經連接 :

      調用 NetworkInfo 對象的 isConnected 方法

      , 可以查看該網絡的連接狀態 , WIFI , 移動蜂窩網絡 等有一種連接 , 就會返回 True ;

      networkInfo.isConnected()

      1

      ④ 判斷連接類型 :

      調用 NetworkInfo 對象的 getType() 方法

      , 可以獲取當前的連接狀態 ,

      如果連接狀態是 ConnectivityManager.TYPE_WIFI , 就說明當前是 WIFI 網絡 ;

      networkInfo.getType() == ConnectivityManager.TYPE_WIFI

      1

      2 . 代碼示例 :

      package kim.hsl.bp; import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo; public class WiflUtils { /** * 主動獲取當前是否正在使用 WIFI * @return */ public static boolean isWifi(Context context){ boolean isWifi = false; // 獲取連接管理器 ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); // 獲取網絡信息 NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo(); // 判定是否是 WIFI if(networkInfo != null && networkInfo.isConnected() && networkInfo.getType() == ConnectivityManager.TYPE_WIFI){ isWifi = true; } return isWifi; } }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      29

      30

      31

      三、被動獲取 WIFI 狀態

      1 . 廣播接收者 : 該廣播接收者監聽系統的

      android.intent.action.CONNECTIVITY_CHANGE

      事件 , 當接收到系統發出的廣播后 , 就判定一次當前是否是 WIFI 狀態 ;

      package kim.hsl.bp; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.text.TextUtils; import android.util.Log; /** * 被動獲取網絡狀態 * 網絡狀態發生變化時 , 系統發出的廣播 , 使用廣播接受者接收這些廣播 */ public class WifiReceiver extends BroadcastReceiver { public static final String TAG = "WifiReceiver"; @Override public void onReceive(Context context, Intent intent) { boolean isWifi = WiflUtils.isWifi(context); if(isWifi){ Log.i(TAG, "WIFI 啟用"); }else{ Log.i(TAG, "WIFI 停用"); } } }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      2 . 注冊廣播接收者與權限 : 在 AndroidManifest.xml 中 , 注冊上述廣播接收者 , 聲明使用到的網絡相關權限 ;

      ACCESS_NETWORK_STATE : 獲取運營商信息權限 ;

      ACCESS_WIFI_STATE : 獲取 WIFI 網絡信息權限 ;

      CHANGE_WIFI_STATE : 獲取改變 WIFI 狀態權限 ;

      INTERNET : 獲取訪問網絡權限 ;

      READ_PHONE_STATE : 讀取手機狀態權限 ;

      WAKE_LOCK : 后臺服務保持喚醒權限 ;

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      29

      30

      31

      32

      33

      34

      【Android 電量優化】電量優化 ( 網絡狀態獲取 | 主動獲取 WIFI 狀態 | 被動獲取 WIFI 狀態 )

      35

      36

      37

      38

      39

      40

      41

      42

      43

      44

      45

      Android 網絡

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:React中級面試題
      下一篇:Visual C++文件后綴名釋義
      相關文章
      亚洲另类春色国产精品| 亚洲熟妇av一区二区三区下载| 亚洲国产日韩综合久久精品| 亚洲第一AAAAA片| 中文字幕亚洲一区| 中文字幕精品亚洲无线码一区应用| 无码天堂va亚洲va在线va| 亚洲av成人片在线观看| 亚洲精品国产suv一区88| 亚洲色无码专区一区| 亚洲AV综合永久无码精品天堂| 亚洲无人区码一二三码区别图片| 亚洲人成网站色7799| 亚洲av永久中文无码精品| 亚洲国产成人精品无码区花野真一 | 91嫩草亚洲精品| 亚洲日本国产乱码va在线观看| 亚洲成无码人在线观看| 亚洲av日韩av综合| 在线亚洲高清揄拍自拍一品区| 亚洲午夜无码久久久久小说| 亚洲爆乳少妇无码激情| 理论亚洲区美一区二区三区| 亚洲AV无码乱码在线观看性色扶| 亚洲国产成人精品91久久久| 国产成人亚洲精品影院| 精品亚洲一区二区| 亚洲视频.com| 亚洲美女一区二区三区| 亚洲欧洲日产专区| 亚洲激情视频图片| 亚洲heyzo专区无码综合| 亚洲精品视频免费观看| 欧洲亚洲国产清在高| 激情内射亚洲一区二区三区| 亚洲免费观看在线视频| 亚洲中文字幕乱码AV波多JI| 日韩在线视精品在亚洲| 久久99亚洲综合精品首页| 婷婷精品国产亚洲AV麻豆不片 | 国产亚洲日韩在线a不卡|