Answers:
这要求您为您的应用授予额外的权限,并且很容易在不小心保持唤醒锁并导致屏幕保持打开的状态下引入错误。
最好使用window标志FLAG_KEEP_SCREEN_ON,您可以onCreate()像这样在活动的窗口上启用它:
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
这样可以确保在窗口位于前景中时(且仅在其处于前景中时)屏幕保持打开状态。它极大地简化了这种常见用例,消除了在应用程序在状态之间转换时您需要做的任何事情。
该问题已经由@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.这不要紧,keepScreenOn就应该使用Main/Root/Parent View 它可以与任何使用child view将作为相同的,因为它在工作Parent view
2.唯一的问题是,View's Visibility must be visible其他方法将不起作用!
v.setKeepScreenOn(true);似乎是全屏对话框片段的唯一方法
另一种解决方案是增加android:keepScreenOn="true"(文档需要保持屏幕打开的视图中)。
允许对哪些视图保持打开和哪些不保持进行更细化的控制。您甚至可以通过这种方式从资源文件中引用设置。