最近有一个功能,检测一个手持对讲设备按下和抬起事件。
直接在Activity的onKeyDown和onKeyUp中处理,得到下面的事件
按下事件触发:
{ action=ACTION_DOWN , scanCode=164, metaState=0, flags=0x8, repeatCount=0, eventTime=261976791, downTime=261976791 }->>onKeyDown
{ action=ACTION_UP , scanCode=164, metaState=0, flags=0x8, repeatCount=0, eventTime=261976967, downTime=261976791 }->>onKeyUp{ action=ACTION_UP , scanCode=164, metaState=0, flags=0x8, repeatCount=0, eventTime=261998313, downTime=261998135 }->>onKeyUp
{ action=ACTION_DOWN , scanCode=164, metaState=0, flags=0x8, repeatCount=0, eventTime=261998745, downTime=261998745 }->>onKeyDown{ action=ACTION_UP , scanCode=164, metaState=0, flags=0x8, repeatCount=0, eventTime=261998918, downTime=261998745 }->>onKeyUp
也就是说,按下时候直接触发两个事件,down和up,抬起时候就更过分了,触发了两次down和up。
考虑到事件都是成对出现,只需要监听一个事件就可以,也就是说一次ACTION_DOWN事件代表按下,连续两次ACTION_DOWN事件代表抬起。
考虑到这里就要考虑事件顺序了,需要明确事件是按下->抬起->按下->抬起进行触发的,不能直接抬起->抬起触发。
考虑到第二次会触发两次,也就是说,抬起触发第一次的时候,可以认定此时抬起事件启动,第二次触发抬起事件的时候,抬起事件完成。若规定时间内内没有连续触发两次,则认定抬起按下事件混乱,重置。
代码如下:
本文发布于:2024-02-03 07:45:57,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170691755349628.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |