繁体   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