簡體   English   中英

編程在Android上的一個OnClick功能中關閉電源並打開電源

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM