gpt4 book ai didi

android - 为什么在请求 getevent 时我没有在某些 root 的 Android 设备上收到 "EV_KEY"事件?

转载 作者:太空狗 更新时间:2023-10-29 14:03:50 26 4
gpt4 key购买 nike

我在我的大学里使用 root 的 android 设备进行研究。因此,我需要在独立于应用程序的设备上记录触摸事件。

我已经在我发送的输出流中实现了这个:

getevent -lt /dev/input/event3 \n

(事件对应触摸屏)

这对我的设备 Samsung S4 Android 4.3 非常有用。不幸的是,我在其他一些具有不同 Android 版本(高于 4.3)的设备上对其进行了测试,但我错过了一个重要的事件 EV_KEY ,该事件用于按下按钮。向下表示手指开始触摸屏幕并松开。

这是我在我的 Samsung S4 上获得的按钮触摸响应:

[   12972.567843] EV_KEY       BTN_TOUCH            DOWN                
[ 12972.567873] EV_ABS ABS_MT_POSITION_X 000002ae
[ 12972.567873] EV_ABS ABS_MT_POSITION_Y 0000052f
[ 12972.567904] EV_ABS ABS_MT_TOUCH_MAJOR 00000012
[ 12972.567934] EV_ABS ABS_MT_TOUCH_MINOR 00000009
[ 12972.567934] EV_ABS ABS_MT_WIDTH_MAJOR 00000002
[ 12972.567965] EV_ABS 003c 00000000
[ 12972.568087] EV_SYN SYN_REPORT 00000000
[ 12972.584658] EV_ABS ABS_MT_TOUCH_MAJOR 0000001b
[ 12972.584688] EV_ABS ABS_MT_TOUCH_MINOR 0000001b
[ 12972.584688] EV_ABS ABS_MT_WIDTH_MAJOR 00000008
[ 12972.584688] EV_ABS 003c fffffffe
[ 12972.584719] EV_SYN SYN_REPORT 00000000
[ 12972.606325] EV_ABS 003c fffffff9
[ 12972.606356] EV_SYN SYN_REPORT 00000000
[ 12972.627444] EV_ABS ABS_MT_TRACKING_ID ffffffff
[ 12972.627505] EV_KEY BTN_TOUCH UP

这是我在其他设备上得到的响应:

[    3078.948355] EV_SYN       SYN_REPORT           00000000            
[ 3079.162730] EV_ABS ABS_MT_TRACKING_ID 000003a3
[ 3079.162821] EV_ABS ABS_MT_POSITION_X 00000404
[ 3079.162882] EV_ABS ABS_MT_POSITION_Y 0000043d
[ 3079.162913] EV_ABS ABS_MT_PRESSURE 0000003b

有谁知道为什么我没有收到 EV_KEY 事件?是安卓版的吗?我该如何解决这个问题,以获得这个事件?有没有其他方法可以独立于应用程序接收触摸事件?

最佳答案

在 android 中,getevent api 用于列出由注册到输入子系统 /dev/input/* 的设备生成的事件。

为了将事件发送到用户空间,首先设备驱动程序需要注册到输入 susbsystem,其中包含它需要发送到用户空间的事件类型。例如。 EV_ABS、EV_REL、EV_KEY 等。然后使用硬件事件的输入子系统将事件从驱动程序发送到/dev/input/eventN。

因此它的驱动程序可以自行决定发送任何类型的事件,条件是它应该将事件类型设置到输入层以避免事件过滤。

在你的情况下,EV_KEY 事件不会出现在下一个 android 版本中。它是由于驱动程序更改而发生的。

因为当任何设备升级到更新的 android 版本时。从 OEM 的角度来看,他们倾向于使用最新的触摸、传感器等驱动程序,因为 OEM 通常从不同的供应商(如 Synaptics、博世)购买触摸 ic、传感器 ic,这些供应商不断更新他们的驱动程序/软件层以确保更好的性能。

当设备获得新的操作系统时,这种方式。有时界面、事件类型会发生变化。对于应用程序开发,您可以使用可以从系统属性中读取的 android 版本的代码来处理这个问题。

希望这能回答您的问题。

关于android - 为什么在请求 getevent 时我没有在某些 root 的 Android 设备上收到 "EV_KEY"事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33974570/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com