【发布时间】: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