11

たとえば4時間使用するアプリがありますが、ユーザーが入力したり画面を読んだりする必要があるのは5分ごとです。電話をスリープ状態にして画面をロックするのは少し面倒です。したがって、2つのオプションがあります。

  1. getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);画面はロックされませんが、画面は常に明るいので、アクティビティがないときに暗くしたいと思います。バッテリーの寿命のためだけですか、それともこの4時間はそれほど重要ではありませんか?

  2. SCREEN_DIM_WAKE_LOCK 私が望むことをうまく行うウェイクロックですが、上記のオプション1を使用するように言われました。

ウェイクロックなしで何とかして望みを達成できますか?

4

3 に答える 3

14

次を使用できます。

WindowManager.LayoutParams lp = getWindow().getAttributes();  
lp.dimAmount=1.0f; 
getWindow().setAttributes(lp);  

必要なときに画面を暗くしたり、暗くしたりします。

lp.dimAmount=1.0f画面を完全に暗くしますが、0(まったく暗くならない)から1.0fまでの値で自由に設定できます。

5分間操作がないとこれを呼び出すようにタイマーを設定し、タッチイベントなどで画面を「オンに戻す」ことができます。

于 2011-03-25T16:09:07.680 に答える
5

薄暗い画面でも、4時間程度の時間でかなりの量のバッテリーを消費します。あなたは本当にそのように画面を維持したくありません。FLAG_SHOW_WHEN_LOCKEDを使用して画面をオフにする方がよいと思いますが、ユーザーがアプリをオンに戻すと、最初にロック画面を通過しなくても、すぐにアプリにアクセスできます。

画面を暗くする必要がある場合は、SCREEN_DIM_WAKE_LOCKを使用できます。さらに制御が必要な場合は、WindowManager.LayoutParams.screenBrightnessを使用して画面の明るさを直接設定してみることもできます。

于 2011-01-26T15:16:07.870 に答える
3

これは、2011年1月26日15:28からの最後のQに答えますか?

 PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
 PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
  wl.acquire();
   ..screen will stay on during this section..
 wl.release();

詳細については、こちらをご覧ください: http: //developer.android.com/reference/android/os/PowerManager.html

つまり、画面ロックを防ぐために、新しいアクティビティを開始する前に、パワーマネージャーのウェイクロックを取得する必要があります。そして、終わったらリリースします。


同様に、lp.dimAmountの代わりにlp.screenBrightnessを使用できます。

また、画面がロックされないように、必ず0より大きい値を入力してください。

lp.screenBrightness = 0.01f + value / 100.0f; 
于 2014-03-17T13:44:50.450 に答える