处理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 /工具类型,这将是有趣的.

相关文章

以下为个人理解,如错请评 CE: 凭据加密 (CE) 存储空间, 实际路径/data/user_ce/ DE: 设备加密 (DE) 存...
转载来源:https://blog.csdn.net/yfbdxz/article/details/114702144 用EventLog.writeEvent打的日志(或...
事件分发机制详解 一、基础知识介绍 1、经常用的事件有:MotionEvent.ACTION_DOWN,MotionEvent.ACTION...
又是好久没有写博客了,一直都比较忙,最近终于有时间沉淀和整理一下最近学到和解决的一些问题。 最近进...
Android性能优化——之控件的优化 前面讲了图像的优化,接下来分享一下控件的性能优化,这里主要是面向...
android的开源库是用来在android上显示gif图片的。我在网上查了一下,大家说这个框架写的不错,加载大的...