以下のコードを使用して、画面のオンとオフを切り替えます。どちらのコードもほとんどのデバイス (Galaxy Note、Galaxy S2 などでテスト済み) で動作しますが、いくつかのデバイス (ほとんどがタブレットですが、一部の携帯電話も同様) では動作しません。一部のデバイスでは、画面オンは機能しますが、画面オフは機能しません。また、他の一部のデバイスでは逆のことが当てはまります。それはかなり標準的なコードであるため、原因がわかりません(また、一部のデバイスで動作するため、これらの関数、つまり関数呼び出しをトリガーすることは問題ではありません)。画面のオン/オフを切り替える別の方法はありますか? どんな助けでも大歓迎です。
画面オン:-
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
final WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK
|PowerManager.ACQUIRE_CAUSES_WAKEUP
|PowerManager.ON_AFTER_RELEASE, "");
wl.acquire();
画面オフ (これは、単にデバイス管理者権限を使用して画面をロックしてオフにするアクティビティを呼び出します。一部のデバイスでは、これは画面をロックするだけです。他のデバイスでは何もしません。一部のデバイスでは、完全に機能します): -
devicePolicyManager.lockNow();
これは私が試している別の方法ですが、うまく機能しません。基本的に、明るさを0に設定すると画面がオフになり、これらのアクションを実行するアクティビティがfinish()を呼び出しますが、何らかの理由で、どのボタンに関係なく、この後5〜10秒まで画面をオンに戻すことができません(ホーム、電源)を押し続けます。
WindowManager.LayoutParams params = getWindow().getAttributes();
params.flags |= LayoutParams.FLAG_KEEP_SCREEN_ON;
params.screenBrightness = 0;
getWindow().setAttributes(params);