アプリには3つのアクティビティがあります。 2番目のアクティビティ中は、画面を起動したままにします。 「ロック」キーを手動で押さない限り、2番目のアクティビティで画面が消えないはずです。私は多くのリンクをたどりましたが、それらは私にはわかりにくいようです。
Android tutorial Keep the Screen On )で説明したように、これをいくつかの方法で実行できます。アクティビティのウィンドウでFLAG_KEEP_SCREEN_ONを設定できます。
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
それに相当するXMLは、アクティビティのレイアウトのルートビューに属性Android:keepScreenOn="true"
を追加することです。フラグをプログラムで設定する利点は、使用できることです
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
アクティビティの実行中に画面を強制的にオンにする必要がなくなったとき。
画面(および特定の他のリソース)を制御する別の方法は、ウェイクロックを使用することです。
mWakeLock = ((PowerManager) getContext().getSystemService(Context.POWER_SERVICE))
.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, getClass().getName());
mWakeLock.acquire();
// screen stays on in this section
mWakeLock.release();
マニフェストには、次のアクセス許可を含める必要があります。
<uses-permission Android:name="Android.permission.WAKE_LOCK"/>
ただし、チュートリアルで説明したように、ウェイクロックは他のユースケース(画面がオフの間もCPUを実行し続ける必要があるサービスやバックグラウンドタスクなど)に適しています。
私はこの解決策をはるかに簡単に見つけます:
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android" // Whatever your layout is
...
Android:keepScreenOn="true"> // Add this line
これをアクティビティレイアウトXMLに追加するだけです。
私はあなたの質問を理解しているように、あなたはWAKE_LOCK
アプリケーションで使用します。
何かのようなもの、
final PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
mWakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE,"");
mWakeLock.acquire();
そして、アプリケーションのmanifest.xmlファイルにこれを追加し、
<uses-permission Android:name="Android.permission.WAKE_LOCK" />
これを使用してみてください
getWindow().addFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN
| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
このコードは非推奨です。代わりにこれを使用してください。
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
wl.acquire();
使用が終了したら、呼び出します(最善の解決策は、アクティビティのonDestroyメソッドでこのメソッドを呼び出すことです)。
wl.release();
これについての詳細 link