在整个活动中保持屏幕清醒
我有三个在我的应用程序的活动。 我想在第二个活动中保持屏幕清醒。 除非手动按下“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();
关于这个链接的更多信息