我的应用中有三项活动。我希望屏幕在第二次活动时保持清醒状态。除非手动按下“锁定”键,否则屏幕不应在我的第二个活动中熄灭。我经历了许多链接,但我们似乎不清楚。
答案 0 :(得分:143)
正如Android教程Keep the Screen On中所述,您可以通过几种方式实现此目的。您可以在活动窗口中设置FLAG_KEEP_SCREEN_ON:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
与此等效的XML是将属性android:keepScreenOn="true"
添加到活动布局的根视图中。以编程方式设置标志的优点是您可以使用
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
当您的活动正在运行时,您不再需要强制屏幕保持开启状态。
控制屏幕(以及某些其他资源)的另一种方法是使用唤醒锁:
mWakeLock = ((PowerManager) getContext().getSystemService(Context.POWER_SERVICE))
.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, getClass().getName());
mWakeLock.acquire();
// screen stays on in this section
mWakeLock.release();
清单必须包含此权限:
<uses-permission android:name="android.permission.WAKE_LOCK"/>
但是,正如本教程中所讨论的,唤醒锁更适合其他用例(例如需要CPU在屏幕关闭时继续运行的服务或后台任务)。
答案 1 :(得分:46)
我发现这个解决方案更容易:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" // Whatever your layout is
...
android:keepScreenOn="true"> // Add this line
只需将其添加到您的活动布局XML。
答案 2 :(得分:7)
据我了解您的问题,我认为您必须在申请中使用WAKE_LOCK
。
类似的东西,
final PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
mWakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE,"");
mWakeLock.acquire();
在应用程序的manifest.xml文件文件中添加此内容,
<uses-permission android:name="android.permission.WAKE_LOCK" />
答案 3 :(得分:1)
尝试使用此
getWindow().addFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN
| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
答案 4 :(得分:1)
不推荐使用此代码,请改为使用此代码:
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
wl.acquire();
完成使用后,调用(最佳解决方案是在某些活动的onDestroy方法中调用此方法):
wl.release();
有关此link
的详情