一个手咪按键,检测抬起和按下的思考

最近有一个功能,检测一个手持对讲设备按下和抬起事件。

直接在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_DOWN , scanCode=164, metaState=0, flags=0x8, repeatCount=0, eventTime=261998135, downTime=261998135 }->>onKeyDown

{ 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事件代表抬起。


考虑到这里就要考虑事件顺序了,需要明确事件是按下->抬起->按下->抬起进行触发的,不能直接抬起->抬起触发。

考虑到第二次会触发两次,也就是说,抬起触发第一次的时候,可以认定此时抬起事件启动,第二次触发抬起事件的时候,抬起事件完成。若规定时间内内没有连续触发两次,则认定抬起按下事件混乱,重置。

代码如下:



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值