web-dev-qa-db-ja.com

アクティビティ中は常に画面を起動してください

アプリには3つのアクティビティがあります。 2番目のアクティビティ中は、画面を起動したままにします。 「ロック」キーを手動で押さない限り、2番目のアクティビティで画面が消えないはずです。私は多くのリンクをたどりましたが、それらは私にはわかりにくいようです。

54
user838522

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を実行し続ける必要があるサービスやバックグラウンドタスクなど)に適しています。

148
Ted Hopp

私はこの解決策をはるかに簡単に見つけます:

<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android" // Whatever your layout is
    ...
    Android:keepScreenOn="true"> // Add this line

これをアクティビティレイアウトXMLに追加するだけです。

48

私はあなたの質問を理解しているように、あなたは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" />
7
user370305

これを使用してみてください

getWindow().addFlags(
                        WindowManager.LayoutParams.FLAG_FULLSCREEN
                                | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
1
bindal

このコードは非推奨です。代わりにこれを使用してください。

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
wl.acquire();

使用が終了したら、呼び出します(最善の解決策は、アクティビティのonDestroyメソッドでこのメソッドを呼び出すことです)。

wl.release();

これについての詳細 link

1
PetarT