[英]Programming powering off and powering on in one single OnClick function on android
我想編寫一個活動,單擊一個按鈕后關閉屏幕,然后在2秒鍾后將其重新打開。 我嘗試使用以下代碼來關閉屏幕電源:
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.screenBrightness = 0/(float)255;
getWindow().setAttributes(lp);
但這只有在onClick函數返回時才生效。 我嘗試將其運行到處理程序中,但沒有成功。 我需要找到一種方法在函數返回之前強制應用設置,以便稍后可以在同一onClick調用上2秒鍾調用開機功能。
我還發現之后很難喚醒設備。 如果使用物理按鈕關閉屏幕電源,此代碼有效,但使用上述方法關閉電話電源時,似乎無法正常工作。
PowerManager pm = (PowerManager)this.getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK|PowerManager.ACQUIRE_CAUSES_WAKEUP |
PowerManager.ON_AFTER_RELEASE ,"Dev Tag");
try
{
wl.acquire();
wl.release();
}
catch (Exception e)
{
Toast.makeText(this, e.getMessage(),20).show();
}
預先感謝您的幫助!
我嘗試使用以下代碼來關閉屏幕電源
這不會關閉屏幕電源。 將背光設置為0亮度。 我上次檢查過,您無法以編程方式關閉屏幕電源。
但這只有在onClick函數返回時才生效。
正確。 這就是Android運作的方式。 UI是單線程的。 您更改屏幕亮度的請求已放入隊列中,直到您通過從onClick()
返回將控制權返回給Android之前,該消息才會得到處理。
我需要找到一種方法在函數返回之前強制應用設置,以便稍后可以在同一onClick調用上2秒鍾調用開機功能。
這是不可能的。 也沒有必要。 兩秒鍾后,有很多方法可以控制。 可能最有效的方法是在您的一個小部件上調用postDelayed()
。
我還發現之后很難喚醒設備
該設備最初沒有處於睡眠狀態。
如果使用物理按鈕關閉屏幕電源,此代碼有效,但使用上述方法關閉電話電源時,似乎無法正常工作。
WakeLock
是您在后台服務中使用的東西,可以在您完成某些工作時使設備保持一會兒的喚醒狀態。 它也是內部用於處理android:keepScreenOn
這樣的android:keepScreenOn
(用於電子書閱讀器,視頻播放器以及用戶可能會暫時不點擊屏幕的其他活動)。 它與screenBrightness
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.