为了账号安全,请及时绑定邮箱和手机立即绑定

如何区分鼠标事件和触摸屏事件?

如何区分鼠标事件和触摸屏事件?

呼啦一阵风 2023-05-24 14:50:36
在我的应用程序中,我需要知道哪个输入设备产生了触摸事件:鼠标、触摸屏、触摸板或其他设备。event.getSource() 返回:for mouse: 8194for touchscreen: 4098我做了一个输出到 logcat 类型源的方法:void dumpSource(MotionEvent e) {    int s = e.getSource();    Log.e("LorieService", "Motion event is from sources: " +            ((s&InputDevice.SOURCE_KEYBOARD)!=0?"keyboard ":"") +            ((s&InputDevice.SOURCE_DPAD)!=0?"dpad ":"") +            ((s&InputDevice.SOURCE_GAMEPAD)!=0?"gamepad ":"") +            ((s&InputDevice.SOURCE_TOUCHSCREEN)!=0?"touchscreen ":"") +            ((s&InputDevice.SOURCE_MOUSE)!=0?"mouse ":"") +            ((s&InputDevice.SOURCE_STYLUS)!=0?"stylus ":"") +            ((s&InputDevice.SOURCE_BLUETOOTH_STYLUS)!=0?"bt_stylus ":"") +            ((s&InputDevice.SOURCE_TRACKBALL)!=0?"trackball ":"") +            ((s&InputDevice.SOURCE_MOUSE_RELATIVE)!=0?"mouse_relative ":"") +            ((s&InputDevice.SOURCE_TOUCHPAD)!=0?"touchpad ":"") +            ((s&InputDevice.SOURCE_TOUCH_NAVIGATION)!=0?"touch_navigation ":"") +            ((s&InputDevice.SOURCE_ROTARY_ENCODER)!=0?"rotary_encoder ":"") +            ((s&InputDevice.SOURCE_JOYSTICK)!=0?"joystick ":"") +            ((s&InputDevice.SOURCE_HDMI)!=0?"hdmi":"")    );}但它touchscreen mouse stylus bt_stylus同时为鼠标和触摸屏输出。如何正确区分鼠标事件和触摸屏事件?
查看完整描述

1 回答

?
慕雪6442864

TA贡献1812条经验 获得超5个赞

这不是检查它的方法。检查它的正确方法是type = s&InputDevice.SOURCE_MASK;检查类型的相等性匹配。如果两种设备类型的源的任何位相同,您的操作方式将返回 true。类型本身不是位掩码,它是一个整数枚举。



查看完整回答
反对 回复 2023-05-24
  • 1 回答
  • 0 关注
  • 96 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信