Android 强制屏幕打开
在我的应用程序运行时,如何强制屏幕保持活动状态而不关闭?请不要使用唤醒锁 这需要你给你的应用一个额外的权限,并且很容易在你不小心保持唤醒锁的地方引入bug,从而使屏幕保持打开状态 使用窗口标志Android 强制屏幕打开,android,Android,在我的应用程序运行时,如何强制屏幕保持活动状态而不关闭?请不要使用唤醒锁 这需要你给你的应用一个额外的权限,并且很容易在你不小心保持唤醒锁的地方引入bug,从而使屏幕保持打开状态 使用窗口标志flag\u KEEP\u SCREEN\u ON要好得多,您可以在onCreate()的活动窗口中启用该标志,如下所示: @Override protected void onCreate(Bundle icicle) { super.onCreate(icicle); getWindo
flag\u KEEP\u SCREEN\u ON
要好得多,您可以在onCreate()
的活动窗口中启用该标志,如下所示:
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
这将确保当您的窗口位于前景时屏幕保持打开状态,并且仅当窗口位于前景时屏幕保持打开状态。它极大地简化了这个常见用例,消除了应用程序在状态之间转换时需要做的任何杂耍。另一个解决方案是将
android:keepScreenOn=“true”
()添加到需要保持屏幕打开的视图中
允许更精细地控制哪些视图保持打开,哪些视图不保持打开。您甚至可以通过这种方式引用资源文件中的设置。这个问题@hackbod已经给出了很好的答案 我用另外两个解决方案来回答这个问题 现有解决方案:
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
其他解决方案:
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
我们可以使用keepScreenOn
1.在java代码中使用setKeepScreenOn()实现
@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);
}
文件
2.将keepScreenOn
添加到xml布局中
<?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" >
文件
注意(一些有用的要点):
1.在主/根/父视图上使用keepScreenOn
并不重要它可以与任何子视图一起使用
的工作原理与在父视图中的工作原理相同
2.唯一重要的是视图的可见性必须是可见的
否则它将不起作用 这会阻止设备睡眠吗?如果是这样的话,唤醒锁的共性给我的印象是一个令人震惊的错误!是的,它保持屏幕打开并防止设备睡眠。是的,您可以使用适当的窗口API删除该标志。您不必担心会导致绘制任何内容,如果需要,框架会这样做。@hakbod:这可以使屏幕保持活动状态,但对于处于休眠状态的屏幕又如何呢,它会唤醒它并使其保持活动状态吗???@KC202您可以使用WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON在显示窗口时使屏幕打开。当锁定时,也经常与FLAG_Disclose_KEYGUARD和/或FLAG_SHOW_一起使用。请参阅此处的详细答案。。注v.setKeepScreenOn(真)
似乎是全屏对话片段的唯一方法