ADB 経由で Android 画面をロックする方法はありますか?
apk でディスプレイをロックする方法を見つけましたが、ADB を介して PC から画面をロックし、タイムアウトを待たずにディスプレイのタイムアウトをシミュレートしたいと考えています。
これを行うことは可能ですか?
ありがとう、ダイアン
ADB 経由で Android 画面をロックする方法はありますか?
apk でディスプレイをロックする方法を見つけましたが、ADB を介して PC から画面をロックし、タイムアウトを待たずにディスプレイのタイムアウトをシミュレートしたいと考えています。
これを行うことは可能ですか?
ありがとう、ダイアン
KEYCODE_POWER
かっこいい、 26であることがわかりました。
したがって、次を送信することで機能します。
adb shell input keyevent 26
画面のロックが解除されている場合、画面がロックされます。画面がすでにロックされている場合は、デバイスをウェイクアップします。
私の推測では、画面がロック(オフ)されていることを確認する唯一の方法は、ロックを解除することです(keyevent 82(メニュー)を使用してから、電源ボタンのkeyeventでロックします。これが本当かどうか誰かが知っていますか?
Michael R. Hines は、間違いなく最も簡単な解決策を示しました。ただし、次の行は Android の以降のバージョンでは役に立ちません。
adb shell input keyevent 82 # unlock
ウェイクしたい個々のデバイス (タブレット) の座標を使用して、シェル スクリプトを更新しました。私のタブレットはロック画面イベントの向きの変更をサポートしていないため、ロック画面が常に横向きであるため、値は常に機能します。向きの変化の検出が必要な場合は、単純な if/then/else で、向きに使用する正しい座標を選択するだけで十分です。
#!/bin/bash
if [ "$(adb shell dumpsys power | grep mScreenOn= | grep -oE '(true|false)')" == false ] ; then
echo "Screen is off. Turning on."
adb shell input keyevent 26 # wakeup
adb shell input touchscreen swipe 930 380 1080 380 # unlock
echo "OK, should be on now."
else
echo "Screen is already on."
echo "Turning off."
adb shell input keyevent 26 # sleep
fi
あなたはすでに解決策を見つけていますが、参考のためにこのコードをここに置いておきます。
あなたができることは、イベントを挿入して電源ボタンを2回「押す」ことです。デバイスの状態 (ディスプレイのオン/オフ) がわからない場合は、画面が現在オンかオフかを確認し、それに応じて電源ボタンを押します。
これは簡単なmonkeyrunnerスクリプトです:
import re
from java.util import *
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice
device = MonkeyRunner.waitForConnection() # connect to a device
device.shell("input keyevent KEYCODE_POWER") # turn screen off (or on?)
res = device.shell("dumpsys power") # fetch power state
m = re.search(r'.*mPowerState=([0-9]+).*', res) # parse the string
if m and int(m.group(1)) == 0: # screen is off
device.shell("input keyevent KEYCODE_POWER") # turn the screen on
前の回答に加えて、adbを使用して画面をロック/ロック解除するために私が行うことは次のとおりです。
adb shell input keyevent 26
画面をロックします。
そのため、再度そのコマンドを実行すると、画面がオフ/ロックされているときに、オン/ロック解除されます。
adb shell input keyevent 26
また、画面のロックを解除します (画面がロックされている場合)。
さらに、 などのすべてのコマンドもテストしたところ、デバイスのロックも解除adb shell input keyevent number
されることがわかりました。adb shell input keyevent 3
キー 3 がホーム ボタンであることも (テストによって) わかりました。そのため、物理的なホーム ボタン (画面上のソフト ホーム ボタンではない) がある場合は、これを使用してデバイスのロックを解除することもできます。
以前のバージョンの Android (少なくとも 4.2+)を使用しdumpsys power
ている場合は、出力が異なります。@Jakub Czaplickiからの回答として
使用する代わりに、を使用しました。mPowerState=
mScreenOn=
p = Runtime.getRuntime().exec("su", null, null);
OutputStream o = p.getOutputStream();
o.write(("dumpsys power").getBytes("ASCII"));
o.flush();
o.close();
p.waitFor();
boolean screenState;
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((res = in.readLine()) != null) dump += res;
screenState = dump.charAt( dump.indexOf("mScreenOn=") + 10 ) == 't';
screenState
はtrue
(画面オン)またはfalse
(画面オフ)です。
You can use following command to trigger display ON. adb shell input keyevent POWER
I tried and am using in my project, Hope it will work for you.
And here is the ruby code I used:
def ScreenCheck()
system("adb shell dumpsys power > c:/interact.log")
File.open("C:\\interact.log").each do |line|
if line[/mScreenOn/]
if line.strip == "mScreenOn=true"
p "Screen is On, Starting execution.."
else
p "Screen is Off, starting screen.."
system("adb shell input keyevent = POWER")
p "Starting execution.."
end
end
end
end