【问题标题】:Keep screen on in Activity - does not work with FLAG_KEEP_SCREEN_ON在活动中保持屏幕开启 - 不适用于 FLAG_KEEP_SCREEN_ON
【发布时间】:2013-03-03 19:22:56
【问题描述】:

很长一段时间我都认为我知道如何阻止屏幕进入睡眠模式,我只是在我的 Activity 中使用了这段代码:

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

但是,我意识到这仅在我的手机处于“开发人员模式”时才有效,即启用/检查 USB 调试(设置 --> 开发人员选项 --> USB 调试)时。那么上面的代码确实会停止屏幕/设备进入睡眠状态。

如果不检查该调试,那么我的屏幕就会进入睡眠状态,就像没有明天一样。我在我的设备上运行 Android 4.04,并且

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

编辑

我已经用 Commonsware 的建议进行了测试,并在代码中添加了 setKeepScreenOn(),所以它看起来像这样:

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

我还检查了这段代码是否真的被执行了,确实如此。但这并没有改变任何事情。

【问题讨论】:

  • 我会试一试,但如果应用程序是通过 Eclipse “部署”的,那么 FLAG_KEEP_SCREEN_ON 似乎甚至可以工作,但如果我从 Google Play 下载完全相同的代码,不会 .然而,网上“外面”的每个人都说 FLAG_KEEP_SCREEN_ON 有效……我不能是唯一一个遇到这个问题的人吗?
  • 由于我从未使用过FLAG_KEEP_SCREEN_ON,并且只使用过setKeepScreenOn()(因为它更简单),因此我无法评论您的FLAG_KEEP_SCREEN_ON 代码的功效。
  • 好的,setKeepScreenOn() 也不起作用。
  • 由于这些东西适用于许多其他应用程序上的许多其他开发人员,我会说问题出在您的设备上。
  • github.com/commonsguy/cw-omnibus/tree/master/MiscUI/… 该示例项目演示了 setKeepScreenOn() 用于“延迟超时”,您希望在此期间保持屏幕点亮一段时间,但如果用户没有积极使用,则不是无限​​期地你的应用程序。此示例已在我尝试过的所有硬件上成功运行。

标签: android android-activity screen usb-debugging


【解决方案1】:

我遇到了同样的问题,我在我的项目中使用了一个活动,而所有其他屏幕都是片段,然后我在主要活动中使用了 android:keepScreenOn="true"

请尝试使用它,如果您没有得到想要的结果,请告诉我。

谢谢。

【讨论】:

    【解决方案2】:

    真正适用于我的应用程序的唯一解决方案是主应用程序类中的 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();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-06
      • 1970-01-01
      • 1970-01-01
      • 2015-07-07
      • 1970-01-01
      • 2021-09-01
      • 1970-01-01
      相关资源
      最近更新 更多