簡體   English   中英

在活動中保持屏幕開啟 - 不適用於FLAG_KEEP_SCREEN_ON

[英]Keep screen on in Activity - does not work with FLAG_KEEP_SCREEN_ON

所以,很長一段時間我都認為我知道如何阻止屏幕進入睡眠模式,我只是在我的Activity中使用了這段代碼:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

但是,我意識到這只適用於我的手機處於“開發人員模式”時,即啟用/檢查USB調試(設置 - >開發人員選項 - > USB調試)時。 然后,上述代碼確實阻止屏幕/設備進入睡眠狀態。

當沒有檢查那個調試時,我的屏幕就像沒有明天一樣進入睡眠狀態。 我在我的設備上運行Android 4.04,並且

 android:minSdkVersion="12"
 android:targetSdkVersion="16"

有誰聽說過這個問題?

編輯

我已經使用Commonswares建議進行了測試,並將setKeepScreenOn()添加到代碼中,所以它看起來像這樣:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 
View root = findViewById(android.R.id.content); 
if (root != null)
    root.setKeepScreenOn(true);

我也檢查了這個代碼實際執行,它是。 但它並沒有改變一件事......

我面臨同樣的問題,我正在為我的項目使用一個活動而所有其他屏幕都是片段然后我在主要活動中使用了android:keepScreenOn="true"

請嘗試使用此功能,如果您沒有得到您想要的結果,請告訴我。

謝謝。

只有在我的應用程序中真正起作用的解決方案才是主應用程序類中的WakeLock。 不幸的是,SCREEN_BRIGHT_WAKE_LOCK標志已被棄用!

public class MyApp extends Application {
    PowerManager.WakeLock screenOnWakeLock;
    @Override
    public void onCreate() {
        super.onCreate();
        PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
        wakeLock =  powerManager.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK,"ScreenlockTag");
        wakeLock.acquire();
    }

    @Override
    public void onTerminate()
    {
        if (screenOnWakeLock != null && screenOnWakeLock.isHeld())
            screenOnWakeLock.release();
        super.onTerminate();
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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