簡體   English   中英

在Android 4.2.2中將screenBrightness屬性設置為0.0f不再關閉屏幕?

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

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