web-dev-qa-db-ja.com

adbコマンドで画面をオンまたはオフにする方法は?

私はKEYCODE_POWERを使用して、ルート化された電話の電源をオン/オフしています。以下のコマンドは、画面のオンとオフの両方で使用されます。

adb Shell input keyevent KEYCODE_POWER

ただし、オンとオフを分けて使用したい。私には2つの機能があります。機能のオンとオフです。画面がオフになっているときに電源オン機能を呼び出すと、画面がオンになります。画面がすでにオンになっている場合、オン機能は何もしません。それ以外の場合、画面がオンの場合、オフ機能を呼び出してオフになります。

画面の状態を確認してみましたがうまくいきません。実際には、画面の状態の更新は、電話の処理と比較して非常に遅いです。私は他の方法も使用していますが、これらの方法により、スリープなしで画面がウェイクアップします。

final Window win = getWindow();
    win.addFlags( WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
            WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
            WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON |
            WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON |
            WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON ); 

2番目の方法:

PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "tag");
wl.acquire();
8
John

adbシェルの入力キーイベント26

26-デバイスのキーイベントコードの電源ボタンです。

あなたはリンクでより多くのコマンドを見つけることができます: http://adbshel​​l.com/commands

14

画面のON/OFFを制御するスクリプトを書くことができます。以下はサンプルスクリプトコードです。

result="$(adb Shell dumpsys input_method | grep -c "mScreenOn=true")"

if [ "$result" == 1 ]; then
    echo "Screen is already on."

else
    echo "Turning screen on."
    adb Shell input keyevent 26
fi
3
0xAliHn