我想Samsung Galaxy Tab 2 GT-P5100
使用 ADB shell 模拟在运行 Android 4.0.4 的 root 设备上按下电源按钮。
为此,我使用以下命令更改了相关权限:
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