处理Android中的所有鼠标事件

那么问题很简单 – 我如何处理左/右/中间点击,轮和(!)悬停移动在 Android 2/3/4.

我一直在挖掘这个主题,并找到以下内容

>在api 14中,我们可以处理几乎任何有新的MotionEvent的任何东西
>我们还有Open Accessory,似乎与USB鼠标一样,因为api 12(仍然缺少蓝牙)(UPD OA后端到2.3.4)
>鼠标实际上在使用ICS和Honeycomb和cyanogen 2.3.7的平板电脑上运行良好,但是在每个按钮上只是单一触摸.我想知道是否有一种方法拦截鼠标消息.

帮助我了解如何在每个版本的Android中以最简单和正确的方式处理蓝牙和usb鼠标.或说不可能.

UPD2:似乎像3.1.1的USB Host一样,而USB配件对于这个任务是无用的

解决方法

这些是我的发现:

对于Api级别9:

>外部鼠标主按钮的处理方式与普通手指触摸一样.似乎没有办法检测鼠标.
>通过KeyEvent.KEYCODE_BACK通过KeyEvent发送次级按钮.没有办法区分实际的“后退”按钮和次按钮按压.

对于Api级别9:

>添加一个新的方法MotionEvent.getSource().我用这个来检测输入是否来自鼠标.
>辅助按钮仍然通过KeyEvent与KeyEvent.KEYCODE_BACK调度.在某些设备上,KeyEvent.getSource()返回InputDevice.soURCE_MOUSE,因此在某些情况下,辅助按钮检测工作起作用.

对于Api级别12:

> OnGenericMotionListener已添加.我用这个来检测鼠标移动ACTION_HOVER_MOVE和车轮更改与ACTION_SCROLL.

对于Api级别14:

>新方法MotionEvent.getButtonState().我跟踪这一个,以区分MotionEvent.getActionMasked()是ACTION_MOVE,ACTION_DOWN还是ACTION_UP时是否按下主,辅助,三次鼠标按钮.

我没有看过Api Level 15/16或者工具类型,因为我可以用上面描述的方式跟踪所有的鼠标事件.如果有人有其他信息或者我错过了15/16 /工具类型,这将是有趣的.

相关文章

这篇“android轻量级无侵入式管理数据库自动升级组件怎么实现...
今天小编给大家分享一下Android实现自定义圆形进度条的常用方...
这篇文章主要讲解了“Android如何解决字符对齐问题”,文中的...
这篇文章主要介绍“Android岛屿数量算法怎么使用”的相关知识...
本篇内容主要讲解“Android如何开发MQTT协议的模型及通信”,...
本文小编为大家详细介绍“Android数据压缩的方法是什么”,内...