導航:首頁 > 操作系統 > androidgotosleep

androidgotosleep

發布時間:2023-03-18 08:18:48

『壹』 java代碼怎麼控制android休眠和喚醒

喚醒:android.intent.action.SCREEN_ON (代碼)

休眠:android.intent.action.SCREEN_OFF (代碼)

android系統一段時間沒有操作,

屏幕(screen)將從高亮(bright)變為暗淡(dim),如果再過段時間還是沒有操作,屏幕(screen)從暗淡(dim)變為關閉(off).這時,系統將進入休眠.

而對於某些需要保持系統喚醒甚至屏幕喚醒的應用(比如視頻播放器和音樂播放器)來說,就必須要有一個機制,使得系統不進入休眠狀態,設置保持屏幕亮屏狀態.

wakelock即用來實現以上目的

接下來對每一個模塊具體分析:


powermanager

對應文件是android/frameworks/base/core/java/android/os/PowerManager.java


在Android中應用程序並不是直接同PowerManagerService交互的,而是通過PowerManager間接地與PowerManagerService打交道。

此文件定義了一個powermanager類.

主要實現了

1,wakelock的申請與釋放

public WakeLock newWakeLock(int flags, String tag)

2,系統延時進入休眠

public void userActivity(long when, boolean noChangeLights)

3,系統強制休眠

public void goToSleep(long time)

4,屏幕亮度設置

public void setBacklightBrightness(int brightness)

5,屏幕狀態查詢

public boolean isScreenOn()

6,系統重啟

public void reboot(String reason)


細節

wakelock的申請與釋放

{@samplecode

*PowerManager pm = (PowerManager)mContext.getSystemService(

* Context.POWER_SERVICE);

*PowerManager.WakeLock wl = pm.newWakeLock(

* PowerManager.SCREEN_DIM_WAKE_LOCK

* | PowerManager.ON_AFTER_RELEASE,

* TAG);

*wl.acquire();

* // ...

*wl.release();

一共有如下幾個flag來進行不一樣的喚醒方式.可以根據需要設置

Flag Value CPU Screen Keyboard

PARTIAL_WAKE_LOCK On* can-off Off

SCREEN_DIM_WAKE_LOCK On Dim Off

PROXIMITY_SCREEN_OFF_WAKE_LOCK on 距離感測器時關閉 off

SCREEN_BRIGHT_WAKE_LOCK On Bright Off

FULL_WAKE_LOCK On Bright Bright


ACQUIRE_CAUSES_WAKEUP 確保wakelock,主要用於視頻播放器

ON_AFTER_RELEASE = 0x20000000 release後倒計時,關閉屏幕

...


userActivity的作用:

使系統從其他狀態進入全部打開狀態,比如從暗屏(dim)切換到亮屏,並重置倒計時計數器

『貳』 android 程序如何實現熄滅屏幕

一. 前言
我們的Android應用程序很多需要和亮屏和熄屏打交道,比如鬧鍾的時候,需要保持亮屏,之後又需要熄屏。那麼今天,我們來分析下這方面的功能。

二. 系統服務 --- PowerManager.java
顧名思義,PowerManager.java就是管理我們電源方面的功能的,當然也包括我們屏幕的亮和熄滅。沒錯,我們的應用程序就是通過這個系統服務來實現亮屏和熄屏的功能的。
1. 應用程序獲取PowerManager服務, 我們可以這樣書寫:
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
因為PowerManager是系統服務,所以它的生命周期不是應用程序所能控制的;應用程序只能通過系統,向系統請求獲取PowerManager服務,然後系統把這個服務的應用給我們。
2. goToSleep()方法, 這個方法可以強制我們的屏幕熄屏。我們可以這樣調用:
在上面拿到pm對象之後,這樣調用 pm.goToSleep(SystemClock.uptimeMillis());
3. setBacklightBrightness()方法,這個方法可以設置背光的亮度,從0-255

三. 定時熄滅屏幕
那麼這里,還可以介紹一個控制屏幕的方法就是PowerManager.WakeLock
顧名思義,WakeLock這個東西就是亮屏控制,這里說的亮屏,它定義了幾種類型的亮屏。如下:

類型 cpu 屏幕 鍵盤
PARTIAL_WAKE_LOCK on off off
SCREEN_DIM_WAKE_LOCK on dim off
SCREEN_BRIGHT_WAKE_LOCK on Bright off
FULL_WAKE_LOCK on Bright Bright

由於它定義了這么多類型,每種類型可以指定相對應的部件工作和不工作。那麼我們就可以利用這些類型,從最細粒度來控制我們的屏幕,控制我們的電源,從而讓我們的電源工作時間盡可能的延長(大家都知道,智能手機的電池問題是一個硬傷, 每天一充電,有木有? 別人說用安卓手機的男人都是顧家好男人,因為他每天晚上都要回家充電。。^^).
好的,好的,閑話不扯,繼續。。。
怎麼使用這個WakeLock呢?我們可以這樣寫:
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "TAG");
wakeLock.acquire();
//做我們的工作,在這個階段,我們的屏幕會持續點亮
//釋放鎖,屏幕熄滅。
wl.release();

那麼這里我們也可以這樣使用,就是多少時間後熄滅屏幕
首先點亮屏幕
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "TAG");
wakeLock.acquire();
然後
mTimeHandler.postDelayed(new Runnable(){
public void run(){
wakeLock.release();
}
}, 10*1000);
嗯,延遲10s後熄滅屏幕。。。。
那麼,這里要注意的是acquire()和release()要成對調用哦!也就是說,你申請了亮屏,過段時間,你要是釋放它。

『叄』 android5.0怎樣實現強制熄屏

獲取電源管理器PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
設置相關api
pm.goToSleep(SystemClock.uptimeMillis());
PowerManager.WakeLock wakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "TAG"); wakeLock.acquire();
wakeLock.release();

閱讀全文

與androidgotosleep相關的資料

熱點內容
抖音直播雲伺服器 瀏覽:627
一加7pro文件夾data 瀏覽:424
程序員淋雨 瀏覽:947
python輸出數字序列中的空格 瀏覽:78
怎麼將pdf文件大小 瀏覽:734
氧原子相對分子量演算法 瀏覽:988
加密機為什麼是安全的 瀏覽:451
單片機拼音輸入法 瀏覽:789
蘋果筆記本t2加密晶元怎麼打開 瀏覽:796
安卓如何把手機投屏至電視 瀏覽:739
方舟編譯器現在可提速哪些軟體 瀏覽:60
微信加密為什麼是黑屏 瀏覽:473
android去電狀態 瀏覽:604
蘋果13如何加密視頻 瀏覽:815
linuxweblogic緩存 瀏覽:69
雲伺服器不同地域 瀏覽:946
python鬧鍾怎麼打 瀏覽:686
虛擬主機伺服器有什麼區別 瀏覽:833
演算法與程序的奧秘章節檢測 瀏覽:379
找pdf 瀏覽:531