这个问题相当简单--我如何处理android 2/3/4中的左/右/中单击、轮子和(!)悬停移动。
我一直在研究这个话题,发现了以下几点
请帮助我理解我如何处理蓝牙和usb鼠标在每个版本的android最简单和正确的方式。或者说不可能。
UPD2:似乎只有在3.1+中才有USB主机,而USB附件对此任务毫无用处。
发布于 2012-10-05 10:03:56
以下是我的调查结果:
Api级别< 9:
KeyEvent的KeyEvent.KEYCODE_BACK发送。没有办法区分实际的“回”按和次级按钮按。对于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 15/16级别或工具类型,因为我能够用上面描述的方法跟踪所有鼠标事件。如果有人有更多的信息,或者我错过了15/16/工具类型,那就很有趣了。
发布于 2012-10-03 13:25:31
好的。我想我有线索了。我读过android的亮点 3.x/4.x并意识到.
2.1。..。滚动或hover_move在3.1+中的onGenericMotionEvent
2.2。..。主、次和三级按钮并在android 4.0+中悬停输入/离开(最后是TOOL_TYPE_MOUSE常量)
另一种选择是在主机模式下解析来自蓝牙套接字或usb的非常低级别的数据。
我说的对吗?还在想有没有人有更好的解决方案。
发布于 2022-08-21 01:08:39
请参阅Android文档,就在您自己的SDK目录中:android-sdk/docs/reference/android/view/MotionEvent.html。
https://stackoverflow.com/questions/12705117
复制相似问题