Android 是安卓';运动事件处理是否准确?

Android 是安卓';运动事件处理是否准确?,android,touch,motion-detection,Android,Touch,Motion Detection,臭虫 我的钢琴应用程序中有一个奇怪的错误。有时钥匙(以及音符)会挂起。我做了大量的调试,并将其缩小到像机器人一样的运动事件处理不准确: DEBUG/(2091): ACTION_DOWN A4 DEBUG/(2091): KeyDown: A4 DEBUG/(2091): ACTION_MOVE A4 => A4 DEBUG/(2091): ACTION_MOVE ignoring DEBUG/(2091): ACTION_MOVE A4 => A4 DEBUG/(209

臭虫

我的钢琴应用程序中有一个奇怪的错误。有时钥匙(以及音符)会挂起。我做了大量的调试,并将其缩小到像机器人一样的运动事件处理不准确:

 DEBUG/(2091): ACTION_DOWN A4
 DEBUG/(2091): KeyDown: A4
 DEBUG/(2091): ACTION_MOVE A4 => A4
 DEBUG/(2091): ACTION_MOVE ignoring
 DEBUG/(2091): ACTION_MOVE A4 => A4
 DEBUG/(2091): ACTION_MOVE ignoring
 DEBUG/(2091): ACTION_MOVE A4 => A4
 DEBUG/(2091): ACTION_MOVE ignoring
 DEBUG/(2091): ACTION_UP B4 //HOW CAN THIS BE????
 DEBUG/(2091): KeyUp: B4
 DEBUG/(2091): Stream is null, can't stop
 DEBUG/(2091): Hanging Note: A4 X=240-287 EventX=292 Y=117-200 EventY=164
 DEBUG/(2091): KeyUp Note:   B4 X=288-335 EventX=292 Y=117-200 EventY=164
很明显,在这里可以看到,不知从哪里我突然有了一个
ACTION\u UP
作为另一个音符。我不应该先采取行动吗

如日志末尾所示,这肯定不是区域检测中的错误,因为
ACTION\u UP
事件显然位于B4区域

日志记录实现详细信息

每个
onTouchEvent()
调用都会被记录,因此日志是准确的

操作移动日志记录的相关伪代码为:

 Key oldKey = Key.get(event.getHistoricalX(), event.getHistoricalY());
 Key newKey = Key.get(event.getX(), event.getY());
问题:

这是Android的正常行为(坐标跳跃)


一个
ACTION\u UP
是否可以在没有任何之前的
ACTION\u移动
到它的坐标的情况下发生?

当我试图在Android上开发一个简单的射击游戏时,我遇到了类似的问题。如果问题是由硬件引起的,我用来解决这个问题的技巧可能不起作用,但无论如何值得一试

一般的想法是拥有一个“TouchEvents”数组,并在循环中随时间遍历该数组。这样,当设备注册多个和/或同时触摸环境时,它们以线性方式存储在一个阵列中,但不在现场处理。请确保逐个处理这些事件,删除将要发生的任何未同步事件

List<TouchEvent> touchEvents = game.getInput().getTouchEvents();
    int len = touchEvents.size();
    for(int i = 0; i < len; i++) {
        TouchEvent event = touchEvents.get(i);

        if(event.type == TouchEvent.TOUCH_DRAGGED || event.type == TouchEvent.TOUCH_DOWN) ...    
List touchEvents=game.getInput().getTouchEvents();
int len=touchEvents.size();
对于(int i=0;i
其中:“game.getInput().getTouchEvents()”仅指TouchEvent对象及其方法,如getTouchEvent


这对我来说是个好办法,我希望这能有所帮助,祝你好运!

这是什么设备,你在跟踪多个手指吗?这些日志输出的细分情况是什么?EventX在这两行中都是292,如果我读对了,不应该同时放“挂起的便笺”和“按键的便笺”吗B4范围内的坐标?我一点也没有,但也很好奇。它在模拟器和/或其他设备中正常工作吗?@adamp。回过头看,确实日志输出看起来有点可疑,因为它显示了相同的坐标和不同的注释。然而,我继续记录当前按下的带有指针id的键当指针被提起时,松开并释放正确的指针。