首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >处理Android中的所有鼠标事件

处理Android中的所有鼠标事件
EN

Stack Overflow用户
提问于 2012-10-03 09:02:16
回答 3查看 22.6K关注 0票数 18

这个问题相当简单--我如何处理android 2/3/4中的左/右/中单击、轮子和(!)悬停移动。

我一直在研究这个话题,发现了以下几点

  • 在api 14中,我们几乎可以用花哨的新MotionEvent来处理任何事情。
  • 我们也有开放附件,似乎与USB鼠标,因为api 12 (仍然缺少蓝牙) (UPD OA支持2.3.4)
  • 实际上,鼠标在ICS、蜂窝和氰化物2.3.7的平板电脑上运行得很好,但在每一个按钮上都表现得像一次触摸,我想知道有什么方法可以拦截鼠标信息吗?

请帮助我理解我如何处理蓝牙和usb鼠标在每个版本的android最简单和正确的方式。或者说不可能。

UPD2:似乎只有在3.1+中才有USB主机,而USB附件对此任务毫无用处。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-10-05 10:03:56

以下是我的调查结果:

Api级别< 9:

  • 外部鼠标主按钮就像普通的手指触摸一样被处理。似乎没有办法探测到老鼠。
  • 辅助按钮通过带有KeyEventKeyEvent.KEYCODE_BACK发送。没有办法区分实际的“回”按和次级按钮按。

对于Api级别的9+:

  • 增加了一种新的MotionEvent.getSource()方法。我用这个来检测输入是否来自鼠标。
  • 辅助按钮仍然通过带有KeyEventKeyEvent.KEYCODE_BACK发送。在某些设备上,KeyEvent.getSource()返回InputDevice.SOURCE_MOUSE,因此在某些情况下辅助按钮检测工作。

对于Api级别的12+:

  • 已经添加了OnGenericMotionListener。我用它来检测鼠标在ACTION_HOVER_MOVE中的移动,用ACTION_SCROLL检测轮子的变化。

对于Api级别的14+:

  • 新方法MotionEvent.getButtonState().我跟踪这个按钮,以区分当MotionEvent.getActionMasked()ACTION_MOVEACTION_DOWNACTION_UP时,是否按下主、次、三级鼠标按钮。

我还没有研究过Api 15/16级别或工具类型,因为我能够用上面描述的方法跟踪所有鼠标事件。如果有人有更多的信息,或者我错过了15/16/工具类型,那就很有趣了。

票数 23
EN

Stack Overflow用户

发布于 2012-10-03 13:25:31

好的。我想我有线索了。我读过android的亮点 3.x/4.x并意识到.

  1. 我们可以在android 3+中使用鼠标,在旧版本中鼠标是特定于设备的。
  2. 我们可以拦截任何来源的鼠标事件(BT或USB).

2.1。..。滚动或hover_move在3.1+中的onGenericMotionEvent

2.2。..。主、次和三级按钮并在android 4.0+中悬停输入/离开(最后是TOOL_TYPE_MOUSE常量)

另一种选择是在主机模式下解析来自蓝牙套接字或usb的非常低级别的数据。

我说的对吗?还在想有没有人有更好的解决方案。

票数 1
EN

Stack Overflow用户

发布于 2022-08-21 01:08:39

请参阅Android文档,就在您自己的SDK目录中:android-sdk/docs/reference/android/view/MotionEvent.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12705117

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档