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