
Samsung Galaxy Tab 2 GT-P5100
ADB シェルを使用して、ルート化された Android 4.0.4 で電源ボタンを押す操作をシミュレートしたいと思います。
これを実行するには、次を使用して関連する権限を変更しました。
adb shell
su
chmod 666 /dev/input/event1
これが成功したかどうかはどうすればわかりますか?
次のコマンドでロック画面が表示されると思いました:
input keyevent 116
エラーは発生しませんが、何も起こりません...
あるいは、次のようなキーコードのテキスト形式を使用しました。
input keyevent KEY_POWER
この場合、出力は次のようになりますKilled
。これはどういう意味ですか?
最後に、私は次のことを試しました:
sendevent dev/input/event1 1 116 1 ; sendevent dev/input/event1 1 116 0
運がなかった:(
何が間違っているのでしょうか?
getevent -i /dev/input/event1
出力は次のようになります。
add device 1: /dev/input/event1
bus: 0000
vendor: 0000
product: 0000
version: 0000
name: "sec_key"
location: ""
id: ""
version: 1.0.1
events:
KEY (0001): 0072 0073 0074
input props:
<none>
キーには0074
テキスト ラベルがありますKEY_POWER
。
答え1
電源ボタンの押下はいくつかのイベントで構成されます。次のコマンドを入力して確認できます。
adb shell getevent -l
次に電源ボタンを押します。Nexus 5 エミュレーターでは結果は次のようになります。
/dev/input/event0: EV_KEY KEY_POWER DOWN
/dev/input/event0: EV_SYN SYN_REPORT 00000000
/dev/input/event0: EV_KEY KEY_POWER UP
/dev/input/event0: EV_SYN SYN_REPORT 00000000
タッチ イベント入力ファイル /dev/input/event はデバイスごとに異なる場合があります。この場合は event0 です。
デバイスにイベントを書き込む前に、タッチ イベント ファイルのモードを変更する必要があります。
adb shell
chmod 666 /dev/input/event0
キーの定義はすべて以下にあります。 android.io/android-9/arch-arm/usr/include/linux/input.h を参照してください。
sendeventキーの値は小数点
電源ボタンの押下をエミュレートするには、次のすべてのイベントを記述する必要があります。
adb shell sendevent /dev/input/event0 1 116 108
adb shell sendevent /dev/input/event0 0 0 0
adb shell sendevent /dev/input/event0 1 116 103
adb shell sendevent /dev/input/event0 0 0 0
Nexus 5 エミュレータでテストしましたが、動作しました。
答え2
正しい方法で送信していないからです。送信するだけでは不十分です
sendevent dev/input/event1 1 116 1 ; sendevent dev/input/event1 1 116 0
ぜひ以下のものを試してみてください ;)
sendevent dev/input/event1 1 116 1 ; sendevent dev/input/event1 0 0 0 ;sendevent dev/input/event1 1 116 0 ;sendevent dev/input/event1 0 0 0