溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Android中五大Manager詳解及使用技巧

發(fā)布時(shí)間:2020-05-23 17:29:37 來(lái)源:網(wǎng)絡(luò) 閱讀:444 作者:ljheee 欄目:移動(dòng)開發(fā)

一、PowerManager
主要是用來(lái)控制電源狀態(tài),設(shè)置屏幕狀態(tài),和電池待機(jī)狀態(tài)
      PowerManager  pm = ((PowerManager)getSystemService(POWER_SERVICE));
      這里我需要保持屏幕長(zhǎng)期喚醒,不被鎖屏,所以我調(diào)用WakeLock。
  WakeLock wake = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK |powerManager.ON_AFTER_RELEASE, **Activity.class );
       wake.acquire();//請(qǐng)求執(zhí)行
       相關(guān)的flag:
       PARTIAL_WAKE_LOCK : 保持CPU 運(yùn)轉(zhuǎn),屏幕和鍵盤燈有可能是關(guān)閉的。
       SCREEN_DIM_WAKE_LOCK:保持CPU 運(yùn)轉(zhuǎn),允許保持屏幕顯示但有可能是灰的,允許關(guān)閉鍵盤燈
       SCREEN_BRIGHT_WAKE_LOCK:保持CPU 運(yùn)轉(zhuǎn),允許保持屏幕高亮顯示,允許關(guān)閉鍵盤燈
       FULL_WAKE_LOCK  : 保持CPU 運(yùn)轉(zhuǎn),保持屏幕高亮顯示,鍵盤燈也保持亮度
權(quán)限獲得:
<uses-permission android:name="android.permission.WAKE_LOCK" /  >
二、WindowManager
調(diào)用window,設(shè)置window里面screenBrightness參數(shù)的值,但卻短暫設(shè)置屏幕亮度的亮度,在某個(gè)activity下面才可以生效。
/**
     * 設(shè)置屏幕亮度
     */
    private void setWindowScreen(){
     Window localWindow = getWindow();  
        WindowManager.LayoutParams localLayoutParams = localWindow.getAttributes();  
        float f = 5 / 255.0F;  
        localLayoutParams.screenBrightness = f;  
        localWindow.setAttributes(localLayoutParams); 
    }
獲得權(quán)限:
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />  
發(fā)現(xiàn)只有在當(dāng)前activity下生效,需要改動(dòng)系統(tǒng)文件下面的相關(guān)數(shù)值,調(diào)用Uri(類似鏈接)方法。
 /** 
  * 保存屏幕亮度最低
  * save light state
  **/
 public  void saveBrightness(ContentResolver resolver) {
    Uri uri = android.provider.Settings.System.getUriFor("screen_brightness");  
    android.provider.Settings.System.putInt(resolver, "screen_brightness", 0);
    resolver.notifyChange(uri, null);
 }
三、WifiManager
就是無(wú)限管理相關(guān)的,類似獲得wifi鏈接名字,判斷是否鏈接,開關(guān)等一些和無(wú)線相關(guān)。
WifiManager manager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);
WifiInfo info = manager.getConnectionInfo();
wifiinfo里面包含很多東西,無(wú)限的IP,名字,ISSID,物理地址等很多信息,這里我需要獲得查看是否鏈接實(shí)驗(yàn)室的無(wú)線獲得無(wú)線的名字,名字是SSID。
String ssId = info.getSSID();
manager.setWifiEnabled(true);//打開wifi
manager.setWifiEnabled(false);// 關(guān)閉wifi
相關(guān)權(quán)限:
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
四、ConnectivityManager
主要管理網(wǎng)絡(luò)連接相關(guān)操作。
ConnectivityManager connManager = (ConnectivityManager) 
context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetWorkInfo netinfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI)
NetWorkInfo里面就包括網(wǎng)絡(luò)連接的信息,包括連接狀態(tài),網(wǎng)絡(luò)是否可用等相關(guān)操作
int code = netinfo.getState();
if (wifiState == State.CONNECTED || wifiState == State.CONNECTING) 
      return 200;// 連接成功
else 
      return 500; // 連接失敗
相關(guān)權(quán)限:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
五、ActivityManager
是與系統(tǒng)中所有運(yùn)行著的Activity交互提供了接口,主要的接口圍繞著運(yùn)行中的進(jìn)程信息,任務(wù)信息,服務(wù)信息等。
ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
MemoryInfo mi = new MemoryInfo();
am.getMemoryInfo(mi);
am.getRunningAppProcesses();
am.getRunningServices();
am.getDeviceConfigurationInfo();
am.killBackgroundProcessed(PackageName);
am.restartPackage(PackageName);

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI