在整个活动中保持屏幕清醒

我有三个在我的应用程序的活动。 我想在第二个活动中保持屏幕清醒。 除非手动按下“locking”键,否则屏幕不能在我的第二个活动中closures。 我经历了很多链接,但对我来说似乎不清楚。

正如Android教程保持屏幕一样 ,您可以通过几种方法来实现。 您可以在活动窗口上设置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在屏幕closures时继续运行的服务或后台任务)。

我觉得这个解决scheme更容易:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" // Whatever your layout is ... android:keepScreenOn="true"> // Add this line 

只需将其添加到您的活动布局XML。

按照我理解你的问题,我想你必须在你的应用程序中使用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" /> 

尝试使用这个

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

此代码已弃用,请改用此代码:

 PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag"); wl.acquire(); 

使用完毕后,调用(最好的解决方法是在某个activity的onDestroy方法中调用这个方法):

 wl.release(); 

关于这个链接的更多信息