强制屏幕开启

我如何强制屏幕保持活动,而不是关闭,而我的应用程序正在运行?

42872 次浏览

请不要使用唤醒锁

这需要你给你的应用程序一个额外的权限,很容易引入错误,你不小心保持唤醒锁,因此留在屏幕上。

使用窗口标志 FLAG_KEEP_SCREEN_ON要好得多,你可以像这样在你的 onCreate()中使用 启用你的活动窗口:

@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);


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

这将确保在窗口处于前景时屏幕保持开启状态,并且只有在窗口处于前景时屏幕才保持开启状态。它极大地简化了这种常见的用例,消除了在应用程序状态之间转换时需要做的任何杂乱无章的工作。

Another solution is to add android:keepScreenOn="true" (文件) to the views that need to keep the screen on.

允许对哪些视图停留在上面,哪些视图不停留在上面进行更细粒度的控制。您甚至可以以这种方式从资源文件引用设置。

这个问题已经有了很好的答案@hackbod!

我用两个附加的解决方案来回答这个问题!

现有解决方案:

@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}

其他解决方案:

我们可以用 keepScreenOn

使用 setKeepScreenOn() in java codeimplementation

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);


// or any View (in case generated programmatically )
View v = getLayoutInflater().inflate(R.layout.driver_home, null);


v.setKeepScreenOn(true);
setContentView(v);
}

医生 http://developer.android.com/reference/android/view/View.html#setKeepScreenOn(boolean)

2. keepScreenOn添加到 xml layout

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:keepScreenOn="true" >

医生 http://developer.android.com/reference/android/view/View.html#attr_android%3akeepScreenOn

注(有用资料) :

1.无论 keepScreenOn是否应该用在 Main/Root/Parent View上,它都可以用在任何 child view上,就像它在 Parent view上一样

唯一重要的是 View's Visibility must be visible否则它不会工作!