这是为 Galaxy Note 准备的。
在ACTION_HOVER_EXIT
事件操作中,我尝试了几种不同的方法,但均未成功:
- 事件坐标 (getX, getY) - 有时,将触控笔从屏幕上移开时的坐标类似于 0、-146,而当触控笔开始触摸屏幕时,坐标都大于 0。
- 与屏幕的距离。触控笔笔尖到屏幕的距离有一个轴。通过检查它是否接近 0,手写笔尖端应该接触到屏幕。不幸的是,Galaxy note 上的触控笔设备没有此功能。
- 检查尖端的压力。
ACTION_HOVER_EXIT
当调度带有动作的悬停事件时,这仍然为 0 。
查看存储在设备中的信息,device.toString()
我没有看到这两种情况有什么不同。但是,通过使用handler.postDelayed()
电话,我设法解决了这个问题。基本上我会在 10 毫秒后执行退出悬停动作,并且只有在此期间没有发送触摸事件。
这是我的手写笔的输出device.toString()
:
Input Device 5: sec_e-pen
Keyboard Type: non-alphabetic
Key Character Map: /system/usr/keychars/Generic.kcm
Sources: 0x2103 ( keyboard mouse )
AXIS_X: source=0x2002 min=0.0 max=799.8877 flat=0.0 fuzz=0.11234377
AXIS_Y: source=0x2002 min=0.0 max=1279.8877 flat=0.0 fuzz=0.11234969
AXIS_PRESSURE: source=0x2002 min=0.0 max=1.0 flat=0.0 fuzz=0.0