在应用程序运行时,如何强制屏幕保持活动状态而不关闭?
答案 0 :(得分:326)
这要求您为应用程序提供额外的权限,并且很容易在您不小心保持唤醒锁定的情况下引入错误,从而使屏幕保持打开状态。
使用窗口标记FLAG_KEEP_SCREEN_ON
远远好得多,您可以在onCreate()
的活动窗口中启用,如下所示:
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
这将确保在您的窗口位于前景时屏幕保持打开状态,并且仅在它位于前景时。它大大简化了这个常见用例,消除了您的应用在状态之间转换时需要做的任何杂耍。
答案 1 :(得分:31)
这个问题已经由@hackbod做出了很好的答案!
我正在用两个额外的解决方案回答这个问题!
现有解决方案:
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
其他解决方案:
我们可以使用keepScreenOn
implementation
1。 setKeepScreenOn() in java code
@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
2。事情唯一的问题是 {{1}} 其他方面它不起作用!
答案 2 :(得分:16)
另一种解决方案是将android:keepScreenOn="true"
(documentation)添加到需要保持屏幕的视图中。
允许在哪些视图保持不变的情况下进行更细粒度的控制。您甚至可以通过这种方式从资源文件中引用设置。