[英]Setting screenBrightness attribute to 0.0f in Android 4.2.2 no longer turns screen off?
這是相關的代碼:
WindowManager.LayoutParams windowParams = getWindow().getAttributes();
windowParams.flags |= LayoutParams.FLAG_KEEP_SCREEN_ON;
windowParams.screenBrightness = 0.0f;
getWindow().setAttributes(windowParams);
我也嘗試將screenBrightness設置為0(整數而不是浮點數),以及我在Stack Overflow答案中找到的以下行:
this.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
沒有骰子。 屏幕變暗,但不會關閉。 以上代碼適用於以前的Android版本。 我只是在模擬器中測試它以確保。 是否實施了一種控制屏幕的新方法?
由於代碼不一致,請調用以下兩個功能關閉屏幕。
來自Docs:
public void goToSleep (long time)
在API級別1中添加強制設備進入睡眠狀態。
覆蓋所有保持的喚醒鎖定。 這是按下電源鍵關閉屏幕時發生的情況。 需要DEVICE_POWER權限。
public void wakeUp (long time)
在API級別17中添加強制設備從睡眠狀態喚醒。
如果設備當前處於睡眠狀態,則將其喚醒,否則不執行任何操作。 這是按下電源鍵打開屏幕時發生的情況。
需要DEVICE_POWER權限。
我不確定你為什么做的不行。 這是一個骯臟的黑客,但也許你可以將屏幕超時更改為一個非常低的時間。
android.provider.Settings.System.putInt(getContentResolver(),
Settings.System.SCREEN_OFF_TIMEOUT, time);
假設time=300
,即300毫秒。
我不確切地知道你要在這里完成什么,但是對於像喚醒/睡眠一樣的屏幕控制,你應該看看PowerManager類,簡單易用: http : //developer.android.com /reference/android/os/PowerManager.html
這是如何使用它的示例:
protected void setScreenLock(boolean on){
if(mWakeLock == null){
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
mWakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK |
PowerManager.ON_AFTER_RELEASE, TAG);
}
if(on){
mWakeLock.acquire();
}else{
if(mWakeLock.isHeld()){
mWakeLock.release();
}
mWakeLock = null;
}
}
問候!
根據我的發現,不再可能在較新版本的Android中可靠地關閉屏幕。 唯一可行的解決方案是需要DEVICE_POWER權限的解決方案,這是一種受限制的權限 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.