回答:
これには、アプリに追加の権限を与える必要があり、誤ってwake lockを保持したままにして、画面をオンのままにしておくバグが非常に簡単に発生します。
次のFLAG_KEEP_SCREEN_ONように、アクティビティのウィンドウで有効にできるwindowフラグを使用する方がはるかに優れていますonCreate()。
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
これにより、ウィンドウがフォアグラウンドにある間、およびウィンドウがフォアグラウンドにある間だけ、画面がオンのままになります。これは、この一般的な使用例を大幅に簡素化し、アプリが状態間を遷移するときに行う必要があるジャグリングを排除します。
この質問には@hackbodによるすでにすばらしい回答があります!
私はこの質問に2つの追加のソリューションで答えています!
既存のソリューション:
@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 viewParent view
2.唯一の問題は、View's Visibility must be visibleそれ以外の場合は機能しないことです。
v.setKeepScreenOn(true);フルスクリーンdialogfragmentのためにそれを行うための唯一の方法であると思われる
別の解決策は、画面をオンに保つ必要があるビューにandroid:keepScreenOn="true"(ドキュメント)を追加することです。
どのビューを維持し、どのビューを維持しないかに関して、もう少し詳細な制御が可能になります。この方法で、リソースファイルの設定を参照することもできます。