在使用蓝牙鼠标和手机连接时,可以传送input点击事件到手机,如同手指操作一样,
查看其MotionEvent,如下
07-11 08:58:37.529 7952 7952 D test614 : index=0,==MotionEvent { action=ACTION
_DOWN, actionButton=0, id[0]=0, x[0]=646.8264, y[0]=417.1492, toolType[0]=TOOL_T
YPE_MOUSE, buttonState=BUTTON_PRIMARY, metaState=0, flags=0x0, edgeFlags=0x0, po
interCount=1, historySize=0, eventTime=345247948, downTime=345247948, deviceId=1
0, source=0x2002 }
使用鼠标的同时,再用手指触碰屏幕,会出现断触现象,查看MotionEvent,出现了ACTION
_CANCEL,系统也许是为了避免input混淆,
07-11 08:58:47.779 7952 7952 D test614 : index=0,==MotionEvent { action=ACTION
_CANCEL, actionButton=0, id[0]=0, x[0]=646.8264, y[0]=417.1492, toolType[0]=TOOL
_TYPE_MOUSE, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=
1, historySize=0, eventTime=345258211, downTime=345247948, deviceId=10, source=0
x2002 }
07-11 08:58:47.783 7952 7952 D test614 : index=0,==MotionEvent { action=ACTION
_DOWN, actionButton=0, id[0]=0, x[0]=175.83719, y[0]=932.5143, toolType[0]=TOOL_
TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=
1, historySize=0, eventTime=345257954, downTime=345257954, deviceId=8, source=0x
1002 }
07-11 08:58:47.810 7952 7952 D test614 : index=0,==MotionEvent { action=ACTION
_UP, actionButton=0, id[0]=0, x[0]=175.83719, y[0]=932.5143, toolType[0]=TOOL_TY
PE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1,
historySize=0, eventTime=345258225, downTime=345257954, deviceId=8, source=0x10
02 }
但如果有这样的需求,就是要多个输入设备同时起效,该怎么办呢?
1. 在驱动层改动,就如同是同一个设备的input
2. 一个MotionEvent里是否可以有不同的toolType呢,是否可以改动来进行事件融合呢?
3. 辅助功能AccessService里进行InputFilter 拦截操作,再对不同的设备输入进行整合
发现也有人在问这个问题,不过没有人回答
Android如何保证“触摸事件”和“鼠标事件”共存?
https://www.zhihu.com/question/288419981
发现有一款游戏手柄,就是手柄摇杆和手同时操作,
猜测使用了第三种方案,