一、PowerManager
主要是用來控制電源狀態,設置屏幕狀態,和電池待機狀態
PowerManager pm = ((PowerManager)getSystemService(POWER_SERVICE));
這裏我需要保持屏幕長期喚醒,不被鎖屏,所以我調用WakeLock。
WakeLock wake = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK |powerManager.ON_AFTER_RELEASE, **Activity.class );
wake.acquire();//請求執行
相關的flag:
PARTIAL_WAKE_LOCK : 保持CPU 運轉,屏幕和鍵盤燈有可能是關閉的。
SCREEN_DIM_WAKE_LOCK:保持CPU 運轉,允許保持屏幕顯示但有可能是灰的,允許關閉鍵盤燈
SCREEN_BRIGHT_WAKE_LOCK:保持CPU 運轉,允許保持屏幕高亮顯示,允許關閉鍵盤燈
FULL_WAKE_LOCK : 保持CPU 運轉,保持屏幕高亮顯示,鍵盤燈也保持亮度
權限獲得:
<uses-permission android:name="android.permission.WAKE_LOCK" / >
二、WindowManager
調用window,設置window裏面screenBrightness參數的值,但卻短暫設置屏幕亮度的亮度,在某個activity下面纔可以生效。
/**
* 設置屏幕亮度
*/
private void setWindowScreen(){
Window localWindow = getWindow();
WindowManager.LayoutParams localLayoutParams = localWindow.getAttributes();
float f = 5 / 255.0F;
localLayoutParams.screenBrightness = f;
localWindow.setAttributes(localLayoutParams);
}
獲得權限:
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
發現只有在當前activity下生效,需要改動系統文件下面的相關數值,調用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
就是無限管理相關的,類似獲得wifi鏈接名字,判斷是否鏈接,開關等一些和無線相關。
WifiManager manager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);
WifiInfo info = manager.getConnectionInfo();
wifiinfo裏面包含很多東西,無限的IP,名字,ISSID,物理地址等很多信息,這裏我需要獲得查看是否鏈接實驗室的無線獲得無線的名字,名字是SSID。
String ssId = info.getSSID();
manager.setWifiEnabled(true);//打開wifi
manager.setWifiEnabled(false);// 關閉wifi
相關權限:
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
四、ConnectivityManager
主要管理網絡連接相關操作。
ConnectivityManager connManager = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetWorkInfo netinfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI)
NetWorkInfo裏面就包括網絡連接的信息,包括連接狀態,網絡是否可用等相關操作
int code = netinfo.getState();
if (wifiState == State.CONNECTED || wifiState == State.CONNECTING)
return 200;// 連接成功
else
return 500; // 連接失敗
相關權限:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
五、ActivityManager
是與系統中所有運行着的Activity交互提供了接口,主要的接口圍繞着運行中的進程信息,任務信息,服務信息等。
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);
Android中五大Manager詳解及使用技巧
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
MySQL性能優化的21個最佳實踐
fdb2b
2019-02-23 14:01:03
剖析Framework面试 冲击Android高级职位
wy53780
2020-04-23 14:16:23
Top团队大牛带你玩转Android性能分析与优化
wy53780
2020-04-23 14:16:15
从零开发Android视频点播APP
wy53780
2020-04-23 14:09:49
企业级Android应用架构设计与开发
wy53780
2020-04-23 14:04:20
大厂资深面试官 带你破解Android高级面试
wy53780
2020-04-23 13:57:54
繼續讀書 —— 《人性的弱點》
ThinkinLiu
2019-02-24 14:09:53
Android(IPC)進程間通訊1:詳解Binder由來?
TryEnough
2019-02-24 13:56:52
[乾貨]Android入門完整項目:一個有定時提醒功能的備忘錄
jsbintask
2019-02-24 13:47:51
Android ImageView的ScaleType屬性
Kandy_JS
2019-02-24 13:44:52
章魚抓娃娃添加Bugly-Tinker熱更新支持
DreamWinter
2019-02-24 13:44:51
安卓開發-ListView學習(一)
英語不打烊
2019-02-24 13:11:53
Github+Hexo搭建博客(2019版)
二氣乖張
2019-02-24 13:01:26
Android 如何將定製的Launcher成爲系統中唯一的Launcher
亂碼luanne
2019-02-23 13:49:16
ListView與Button的共存問題解決——ListView中的Button Click事件
亂碼luanne
2019-02-23 13:49:16