Android ADB シェル sendevent が動作しない

Android ADB シェル sendevent が動作しない

Samsung Galaxy Tab 2 GT-P5100ADB シェルを使用して、ルート化された 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

関連情報