
我想Samsung Galaxy Tab 2 GT-P5100
使用 ADB shell 模擬在已 root 運行的 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
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