【发布时间】:2010-01-25 11:42:02
【问题描述】:
如何在我的应用运行时强制屏幕保持活动状态而不是关闭?
【问题讨论】:
-
在这里查看详细答案.. stackoverflow.com/questions/5712849/…
标签: android
如何在我的应用运行时强制屏幕保持活动状态而不是关闭?
【问题讨论】:
标签: android
这需要您为您的应用授予额外的权限,并且很容易引入错误,导致您不小心保持唤醒锁定并因此保持屏幕开启。
使用窗口标志FLAG_KEEP_SCREEN_ON 要好得多,您可以在onCreate() 中的活动窗口上启用它,如下所示:
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
这将确保当您的窗口位于前台时屏幕保持打开状态,并且仅当它位于前台时。它极大地简化了这个常见用例,消除了您在应用在状态之间转换时需要做的任何杂耍。
【讨论】:
import android.view.WindowManager; import android.view.Window; 默认情况下它们不在其中。希望它可以帮助某人。
@hackbod 的这个问题已经有了很好的答案!
我用两个额外的解决方案来回答这个问题!
现有解决方案:
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
其他解决方案:
我们可以使用keepScreenOn
1. implementation 使用 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. 在Main/Root/Parent View 上使用keepScreenOn 没关系它可以与任何child view 一起使用将与@987654334 一样工作@
2. 唯一重要的是 View's Visibility must be visible 否则它将无法正常工作!
【讨论】:
v.setKeepScreenOn(true); 似乎是全屏对话框片段的唯一方法
另一种解决方案是将android:keepScreenOn="true" (documentation) 添加到需要保持屏幕开启的视图中。
允许对哪些视图保持打开和哪些视图不进行更精细的控制。您甚至可以通过这种方式从资源文件中引用设置。
【讨论】: