我正在尝试使用adb shell的sendevent命令以编程方式确定我需要使用哪个输入设备来发送触摸事件(即,轻击,滑动等)。 adb shell的sendevent期望将输入事件的输入设备。示例:“ adb shell sendevent / dev / input / event4:0003 0035 000003b4”。我遇到的问题是“ event4”部分取决于所使用的设备(电话,平板电脑等)(可能是“ event0”,“ event1”等),因此,我想要的是一种确定我需要使用哪个输入设备来发送触摸事件。
我尝试过的事情: Android: Programmatically detect if device has hardware touchscreen connected 建议的答案并非在所有情况下都有效,因为它们使用的“名称”字段也取决于设备,并且可能并不总是包含“触摸”,并且该答案中使用的其他任何属性似乎都与触摸设备无关。 / p>
使用dumpsys input
。此命令提供了android设备可能具有的不同输入设备,但是,似乎没有任何字段与触摸设备相关。
使用getevent
并使用input tap <x> <y>
模拟点击。 getevent
命令还会列出不同的输入设备,并且在检测到事件(例如轻击)时,它会输出与我想要的东西非常相似的东西。例子
add device 1: /dev/input/event4
name: "Genymotion Virtual Input"
could not get driver version for /dev/input/mouse0, Not a typewriter
add device 2: /dev/input/event3
name: "VirtualBox mouse integration"
add device 3: /dev/input/event1
name: "Sleep Button"
add device 4: /dev/input/event0
name: "Power Button"
add device 5: /dev/input/event2
name: "AT Translated Set 2 keyboard"
could not get driver version for /dev/input/mice, Not a typewriter
[ 6670.964258] /dev/input/event4: 0001 014a 00000001
[ 6670.964258] /dev/input/event4: 0003 003a 00000001
[ 6670.964258] /dev/input/event4: 0003 0035 000003b4
[ 6670.964258] /dev/input/event4: 0003 0036 000004e2
[ 6670.964258] /dev/input/event4: 0000 0002 00000000
[ 6670.964258] /dev/input/event4: 0000 0000 00000000
[ 6671.027772] /dev/input/event4: 0003 0035 000003b3
[ 6671.027772] /dev/input/event4: 0003 0036 000004df
[ 6671.027772] /dev/input/event4: 0000 0002 00000000
[ 6671.027772] /dev/input/event4: 0000 0000 00000000
[ 6671.041099] /dev/input/event4: 0001 014a 00000000
[ 6671.041099] /dev/input/event4: 0000 0002 00000000
[ 6671.041099] /dev/input/event4: 0000 0000 00000000
但是,由于某种原因,input tap <x> <y>
命令不会触发getevent
命令的任何输出(我假设这是预期的,尽管我找不到任何支持此功能的引用)。对于我来说,触发getevent
命令上的任何输出的唯一方法似乎是要求我使用sendevent
命令,但要这样做,我已经需要知道输入设备了。 / p>
此外,这应该不需要用户部分的任何干预,因此,他们不需要执行水龙头或自己提供输入设备。它需要完全自主。
任何对此的帮助将不胜感激。谢谢。
答案 0 :(得分:0)
感谢@AlexP。有关命令getevent -pl
的相关链接。他链接的SO答案对我来说并不完全有效,因此,我不得不对其进行一些修改。这似乎对我有用。
getevent -pl | awk 'BEGIN { RS="add device "; } /^[0-9]/ { print RS $0; }' | grep -B 100 ABS_MT_POSITION_X | awk '/add device/ {print $NF}'