日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

【Android 电量优化】电量优化 ( 网络状态获取 | 主动获取 WIFI 状态 | 被动获取 WIFI 状态 )

發(fā)布時間:2025/6/17 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Android 电量优化】电量优化 ( 网络状态获取 | 主动获取 WIFI 状态 | 被动获取 WIFI 状态 ) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

  • 一、獲取 WIFI 狀態(tài)
  • 二、主動獲取 WIFI 狀態(tài)
  • 三、被動獲取 WIFI 狀態(tài)



參考 Google 官方文檔 : 優(yōu)化電池續(xù)航時間





一、獲取 WIFI 狀態(tài)



在應(yīng)用中執(zhí)行某些操作 , 如軟件云端備份 , 從服務(wù)器端獲取最新版本號 , 從服務(wù)器端緩存最新軟件安裝包 , 固件版本 , 等操作 , 最好都在 WIFI 狀態(tài)下執(zhí)行 , 獲取 WIFI 的狀態(tài)也是兩種情況 , 分別是主動獲取 WIFI 狀態(tài) , 被動獲取 WIFI 狀態(tài) ;

上述操作 , 也建議在手機上充電的狀態(tài)下執(zhí)行 ;





二、主動獲取 WIFI 狀態(tài)



1 . 獲取 WIFI 狀態(tài) : WIFI 狀態(tài)可以使用 ConnectivityManager 獲取 , 調(diào)用 getActiveNetworkInfo 方法獲取 NetworkInfo 后 , 先判定當(dāng)前網(wǎng)絡(luò)是否連接 , 再判斷當(dāng)前的 網(wǎng)絡(luò)類型 是否是 ConnectivityManager.TYPE_WIFI ;


① 獲取連接管理器 : 調(diào)用 Context 上下文的 getSystemService(Context.CONNECTIVITY_SERVICE) 方法 , 跨進(jìn)程獲取 ConnectivityManager 服務(wù) ;

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

② 獲取網(wǎng)絡(luò)信息 : 調(diào)用 ConnectivityManager 的 getActiveNetworkInfo 方法 , 獲取當(dāng)前網(wǎng)絡(luò)信息 , 該操作需要 android.Manifest.permission.ACCESS_NETWORK_STATE 權(quán)限 ;

NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();

③ 判斷當(dāng)前是否已經(jīng)連接 : 調(diào)用 NetworkInfo 對象的 isConnected 方法 , 可以查看該網(wǎng)絡(luò)的連接狀態(tài) , WIFI , 移動蜂窩網(wǎng)絡(luò) 等有一種連接 , 就會返回 True ;

networkInfo.isConnected()

④ 判斷連接類型 : 調(diào)用 NetworkInfo 對象的 getType() 方法 , 可以獲取當(dāng)前的連接狀態(tài) , 如果連接狀態(tài)是 ConnectivityManager.TYPE_WIFI , 就說明當(dāng)前是 WIFI 網(wǎng)絡(luò) ;

networkInfo.getType() == ConnectivityManager.TYPE_WIFI

2 . 代碼示例 :

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



三、被動獲取 WIFI 狀態(tài)



1 . 廣播接收者 : 該廣播接收者監(jiān)聽系統(tǒng)的 android.intent.action.CONNECTIVITY_CHANGE 事件 , 當(dāng)接收到系統(tǒng)發(fā)出的廣播后 , 就判定一次當(dāng)前是否是 WIFI 狀態(tài) ;

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

2 . 注冊廣播接收者與權(quán)限 : 在 AndroidManifest.xml 中 , 注冊上述廣播接收者 , 聲明使用到的網(wǎng)絡(luò)相關(guān)權(quán)限 ;

  • ACCESS_NETWORK_STATE : 獲取運營商信息權(quán)限 ;
  • ACCESS_WIFI_STATE : 獲取 WIFI 網(wǎng)絡(luò)信息權(quán)限 ;
  • CHANGE_WIFI_STATE : 獲取改變 WIFI 狀態(tài)權(quán)限 ;
  • INTERNET : 獲取訪問網(wǎng)絡(luò)權(quán)限 ;
  • READ_PHONE_STATE : 讀取手機狀態(tài)權(quán)限 ;
  • WAKE_LOCK : 后臺服務(wù)保持喚醒權(quán)限 ;
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"package="kim.hsl.bp"><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission><uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission><uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission><uses-permission android:name="android.permission.INTERNET"></uses-permission><uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission><uses-permission android:name="android.permission.WAKE_LOCK" /><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/AppTheme"><activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><receiver android:name=".BatteryReceiver" ><intent-filter><!-- 充電線插上 --><action android:name="android.intent.action.ACTION_POWER_CONNECTED" /><!-- 充電線拔出 --><action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" /></intent-filter></receiver><receiver android:name=".WifiReceiver" ><intent-filter><!-- 網(wǎng)絡(luò)狀態(tài)改變 --><action android:name="android.intent.action.CONNECTIVITY_CHANGE" /></intent-filter></receiver></application></manifest>

總結(jié)

以上是生活随笔為你收集整理的【Android 电量优化】电量优化 ( 网络状态获取 | 主动获取 WIFI 状态 | 被动获取 WIFI 状态 )的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。