依据 Android input 系统初始化和启动流程中的背景:
做Android touch 驱动时,设备在开机的时加载动画(kernel 层已load OK),若用手连续点击屏幕,待完全设备开机后UI 没有反应,但是touch依然正常报点,多点触摸时会临时恢复,但finger release 后依然恢复原样(UI没反应)。但getevent实际发现此时touch可以正常报点。
1.结合:Android input 系统之一:InputReader线程 和Android input 系统之二:InputDispatcher线程:
得知:在开机的时加载动画(kernel 层已load OK),若用手连续点击屏幕,待完全设备开机后UI 没有反应的原因在此段代码发现的问题:
void MultiTouchInputMapper::process
bool TouchButtonAccumulator::isHovering()
void MultiTouchInputMapper::process
void MultiTouchInputMapper::syncTouch(nsecs_t when, RawState* outState)
2.对比NG和OK的logs
NG logs
12-07 09:27:17.185 505 620 V EventHub: /dev/input/event2 got: time=71.191970, type=3, code=53, value=203
12-07 09:27:17.185 505 620 V EventHub: event time 71191970000, now 71192036233
12-07 09:27:17.185 505 620 V EventHub: /dev/input/event2 got: time=71.191970, type=0, code=0, value=0
12-07 09:27:17.186 505 620 V EventHub: event time 71191970000, now 71192036233
12-07 09:27:17.186 505 620 E InputReader: BatchSize: 2 Count: 2
12-07 09:27:17.186 505 620 E InputReader: Input event: device=4 type=0x0003 code=0x0035 value=0x000000cb when=71191970000
12-07 09:27:17.186 505 620 E InputReader: Input event: device=4 type=0x0000 code=0x0000 value=0x00000000 when=71191970000
12-07 09:27:17.186 505 620 E InputReader: Reader 6734 Line jeet add track touch outPointer.pressure= 0
12-07 09:27:17.186 505 620 E InputReader: jeet add log mHaveBtnTouch=1,mBtnTouch=1
12-07 09:27:17.186 505 620 E InputReader: Reader 6756 Line jeet add track touch isHovering= 1
12-07 09:27:17.186 505 620 E InputReader: Reader 6734 Line jeet add track touch outPointer.isHovering= 1
12-07 09:27:17.186 505 620 E InputReader: syncTouch: pointerCount 1 -> 1, touching ids 0x00000000 -> 0x00000000, hovering ids 0x80000000 -> 0x80000000
12-07 09:27:17.186 505 620 E InputReader: Reader 4821 LINE jeet liu track touch pressure switch=2
12-07 09:27:17.186 505 620 E InputReader: Reader 4824 LINE jeet liu track touch pressure case PHYSICAL
12-07 09:27:17.186 505 620 E InputReader: Reader 4827 LINE jeet liu track touch pressure calibration mPressureScale=0.003922
12-07 09:27:17.186 505 620 E InputReader: Reader 4828 LINE jeet liu track touch pressure calibration pressure=0.000000
12-07 09:27:17.186 505 620 E InputReader: Reader 4829 LINE jeet liu track touch pressure calibration in.pressure= 0
12-07 09:27:17.187 505 620 E InputReader: Reader 4835 LINE jeet liu track touch pressure calibration in.isHovering= 1
OK logs
12-07 09:47:41.214 496 615 V EventHub: /dev/input/event2 got: time=732.217009, type=3, code=57, value=0
12-07 09:47:41.214 496 615 V EventHub: event time 732217009000, now 732217094658
12-07 09:47:41.214 496 615 V EventHub: /dev/input/event2 got: time=732.217009, type=3, code=58, value=50
12-07 09:47:41.214 496 615 V EventHub: event time 732217009000, now 732217094658
12-07 09:47:41.214 496 615 V EventHub: /dev/input/event2 got: time=732.217009, type=3, code=48, value=6
12-07 09:47:41.214 496 615 V EventHub: event time 732217009000, now 732217094658
12-07 09:47:41.214 496 615 V EventHub: /dev/input/event2 got: time=732.217009, type=3, code=53, value=346
12-07 09:47:41.214 496 615 V EventHub: event time 732217009000, now 732217094658
12-07 09:47:41.215 496 615 V EventHub: /dev/input/event2 got: time=732.217009, type=3, code=54, value=770
12-07 09:47:41.215 496 615 V EventHub: event time 732217009000, now 732217094658
12-07 09:47:41.215 496 615 V EventHub: /dev/input/event2 got: time=732.217009, type=1, code=330, value=1
12-07 09:47:41.215 496 615 V EventHub: event time 732217009000, now 732217094658
12-07 09:47:41.215 496 615 V EventHub: /dev/input/event2 got: time=732.217009, type=0, code=0, value=0
12-07 09:47:41.215 496 615 V EventHub: event time 732217009000, now 732217094658
12-07 09:47:41.215 496 615 E InputReader: BatchSize: 7 Count: 7
12-07 09:47:41.215 496 615 E InputReader: Input event: device=4 type=0x0003 code=0x0039 value=0x00000000 when=732217009000
12-07 09:47:41.215 496 615 E InputReader: Input event: device=4 type=0x0003 code=0x003a value=0x00000032 when=732217009000
12-07 09:47:41.215 496 615 E InputReader: Reader 1818 LINE jeet liu track touch MultiTouchMotionAccumulator rawEvent->value=50
12-07 09:47:41.215 496 615 E InputReader: Input event: device=4 type=0x0003 code=0x0030 value=0x00000006 when=732217009000
12-07 09:47:41.215 496 615 E InputReader: Input event: device=4 type=0x0003 code=0x0035 value=0x0000015a when=732217009000
12-07 09:47:41.215 496 615 E InputReader: Input event: device=4 type=0x0003 code=0x0036 value=0x00000302 when=732217009000
12-07 09:47:41.215 496 615 E InputReader: Input event: device=4 type=0x0001 code=0x014a value=0x00000001 when=732217009000
12-07 09:47:41.215 496 615 E InputReader: Input event: device=4 type=0x0000 code=0x0000 value=0x00000000 when=732217009000
12-07 09:47:41.216 496 615 E InputReader: Reader 6734 Line jeet add track touch outPointer.pressure= 50
12-07 09:47:41.216 496 615 E InputReader: jeet add log mHaveBtnTouch=1,mBtnTouch=1
12-07 09:47:41.216 496 615 E InputReader: Reader 6756 Line jeet add track touch isHovering= 0
12-07 09:47:41.216 496 615 E InputReader: Reader 6734 Line jeet add track touch outPointer.isHovering= 0
3.对比OK NG logs发现,如果底层有上报压力pressure type=0x0003 code=0x003a value=0x00000032,outPointer.isHovering = 0 ,非悬停状态,反之若没有上报压力则为1,悬停状态。真实原因是touch firmware 的问题导致native 层eventhub 中未读取到pressure 参数值送给framwork层
4.判断压力的影响最终从ViewRootImpl证实结果:
OK logs
ViewRootImpl[Sys2023:dream]: Done with EarlyPostImeInputStage. QueuedInputEvent{flags=0, hasNextQueuedEvent=true, hasInputEventReceiver=true, mEvent=MotionEvent { action=ACTION_DOWN, actionButton=0, id[0]=0, x[0]=769.3989, y[0]=453.43323, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=732217, downTime=732217, deviceId=4, source=0x1002 }}
NG logs
ViewRootImpl[glorialist]: Done with ViewPostImeInputStage. QueuedInputEvent{flags=0, hasNextQueuedEvent=true, hasInputEventReceiver=true, mEvent=MotionEvent { action=ACTION_HOVER_MOVE, actionButton=0, id[0]=0, x[0]=895.0757, y[0]=288.24347, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=1, eventTime=71203, downTime=0, deviceId=4, source=0x1002 }}
有压力上报:
mEvent=MotionEvent action=ACTION_DOWN 说明手指按下或移动,
而没压力上报:
mEvent=MotionEvent action=ACTION_HOVER_MOVE说明悬停
具体action说明Touch event report normal logs 有说明
mEvent=MotionEvent
action=XXX
action 简介
ACTION_HOVER_ENTER 指针移入到窗口或者View区域,但没有按下。
ACTION_HOVER_MOVE 指针在窗口或者View区域移动,但没有按下。
ACTION_HOVER_EXIT 指针移出到窗口或者View区域,但没有按下。
ACTION_SCROLL 滚轮滚动,可以触发水平滚动(AXIS_HSCROLL)或者垂直滚动(AXIS_VSCROLL)
设备类型 简介
TOOL_TYPE_ERASER 橡皮擦
TOOL_TYPE_FINGER 手指
TOOL_TYPE_MOUSE 鼠标
TOOL_TYPE_STYLUS 手写笔
TOOL_TYPE_UNKNOWN 未知类型
事件 简介
ACTION_DOWN 第一个 手指 初次接触到屏幕 时触发。
ACTION_MOVE 手指 在屏幕上滑动 时触发,会多次触发。
ACTION_UP 最后一个 手指 离开屏幕 时触发。
ACTION_POINTER_DOWN 有非主要的手指按下(即按下之前已经有手指在屏幕上)。
ACTION_POINTER_UP 有非主要的手指抬起(即抬起之后仍然有手指在屏幕上)。
5.问题思考:为什么在开机的时候连续触摸屏幕待正常开机后UI没反应,而在开机不做触摸,完全开机后连续触摸没有问题?还有特殊情况是为什么多点触摸时有时UI又恢复正常?
因为换了一版正常的touch firmware 后,问题已经解决,和供应商沟通后发现touch firmware 中有对touch pressure 的特殊限定,包括压力的阈值,多点触摸的情况的限定,至此问题完全解决。
6.结合:Android input 系统之一:InputReader线程 和Android input 系统之二:InputDispatcher线程分析整个touch event 上报normal logs
Touch event report normal logs:
12-07 09:47:41.214 496 615 V EventHub: /dev/input/event2 got: time=732.217009, type=3, code=57, value=0
12-07 09:47:41.214 496 615 V EventHub: event time 732217009000, now 732217094658
12-07 09:47:41.214 496 615 V EventHub: /dev/input/event2 got: time=732.217009, type=3, code=58, value=50
12-07 09:47:41.214 496 615 V EventHub: event time 732217009000, now 732217094658 void InputReader::loopOnce()
12-07 09:47:41.214 496 615 V EventHub: /dev/input/event2 got: time=732.217009, type=3, code=48, value=6 size_t count = mEventHub->getEvents(timeoutMillis, mEventBuffer, EVENT_BUFFER_SIZE);
12-07 09:47:41.214 496 615 V EventHub: event time 732217009000, now 732217094658 //从EventHub读取事件,其中EVENT_BUFFER_SIZE = 256
12-07 09:47:41.214 496 615 V EventHub: /dev/input/event2 got: time=732.217009, type=3, code=53, value=346 X坐标 size_t EventHub::getEvents(int timeoutMillis, RawEvent* buffer, size_t bufferSize)
12-07 09:47:41.214 496 615 V EventHub: event time 732217009000, now 732217094658 frameworks/native/services/inputflinger/EventHub.cpp
12-07 09:47:41.215 496 615 V EventHub: /dev/input/event2 got: time=732.217009, type=3, code=54, value=770 Y坐标
12-07 09:47:41.215 496 615 V EventHub: /dev/input/event2 got: time=732.217009, type=3, code=54, value=771
12-07 09:47:41.215 496 615 V EventHub: /dev/input/event2 got: time=732.217009, type=3, code=54, value=772
12-07 09:47:41.215 496 615 V EventHub: /dev/input/event2 got: time=732.217009, type=3, code=54, value=773
12-07 09:47:41.215 496 615 V EventHub: /dev/input/event2 got: time=732.217009, type=3, code=54, value=774
12-07 09:47:41.215 496 615 V EventHub: /dev/input/event2 got: time=732.217009, type=3, code=54, value=775
12-07 09:47:41.215 496 615 V EventHub: /dev/input/event2 got: time=732.217009, type=3, code=54, value=776
12-07 09:47:41.215 496 615 E InputReader: Input event: device=4 type=0x0003 code=0x0039 value=0x00000000 when=732217009000 void InputDevice::process(const RawEvent* rawEvents, size_t count)
12-07 09:47:41.215 496 615 E InputReader: Input event: device=4 type=0x0003 code=0x003a value=0x00000032 when=732217009000
12-07 09:47:41.215 496 615 E InputReader: Reader 1818 LINE jeet liu track touch MultiTouchMotionAccumulator rawEvent->value=50 mTouchButtonAccumulator.process(rawEvent);
12-07 09:47:41.215 496 615 E InputReader: Input event: device=4 type=0x0003 code=0x0030 value=0x00000006 when=732217009000
12-07 09:47:41.215 496 615 E InputReader: Input event: device=4 type=0x0003 code=0x0035 value=0x0000015a when=732217009000 X坐标
12-07 09:47:41.215 496 615 E InputReader: Input event: device=4 type=0x0003 code=0x0036 value=0x00000302 when=732217009000 Y坐标
12-07 09:47:41.215 496 615 E InputReader: Input event: device=4 type=0x0001 code=0x014a value=0x00000001 when=732217009000
12-07 09:47:41.215 496 615 E InputReader: Input event: device=4 type=0x0000 code=0x0000 value=0x00000000 when=732217009000 void InputDevice::process(const RawEvent* rawEvents, size_t count)
12-07 09:47:41.216 496 615 E InputReader: Reader 6734 Line jeet add track touch outPointer.pressure= 50 pressure void MultiTouchInputMapper::process
12-07 09:47:41.216 496 615 E InputReader: jeet add log mHaveBtnTouch=1,mBtnTouch=1 bool TouchButtonAccumulator::isHovering()
12-07 09:47:41.216 496 615 E InputReader: Reader 6759 Line jeet add track touch isHovering= 0 pressure非悬停 void MultiTouchInputMapper::process
12-07 09:47:41.216 496 615 E InputReader: Reader 6760Line jeet add track touch outPointer.isHovering= 0 void MultiTouchInputMapper::syncTouch(nsecs_t when, RawState* outState)
12-07 09:47:41.216 496 615 E InputReader: syncTouch: pointerCount 0 -> 1, touching ids 0x00000000 -> 0x80000000, hovering ids 0x00000000 -> 0x00000000
12-07 09:47:41.216 496 615 E InputReader: Reader 4821 LINE jeet liu track touch pressure switch=2
12-07 09:47:41.216 496 615 E InputReader: Reader 4824 LINE jeet liu track touch pressure case PHYSICAL
12-07 09:47:41.216 496 615 E InputReader: Reader 4827 LINE jeet liu track touch pressure calibration mPressureScale=0.003922 1/255
12-07 09:47:41.216 496 615 E InputReader: Reader 4828 LINE jeet liu track touch pressure calibration pressure=0.196078 50*1/255 TouchInputMapper::cookPointerData()
12-07 09:47:41.216 496 615 E InputReader: Reader 4829 LINE jeet liu track touch pressure calibration in.pressure= 50
12-07 09:47:41.216 496 615 E InputReader: Reader 4835 LINE jeet liu track touch pressure calibration in.isHovering= 0
void InputDispatcher::notifyKey(const NotifyKeyArgs* args)
bool InputDispatcher::dispatchMotionLocked
logOutboundMotionDetailsLocked("dispatchMotion - ", entry);
12-07 09:47:41.216 496 615 E InputDispatcher: notifyMotion - eventTime=732217009000, deviceId=4, source=0x1002, policyFlags=0x0, action=0x0, actionButton=0x0, flags=0x0, metaState=0x0, buttonState=0x0,edgeFlags=0x0, xPrecision=1.000781, yPrecision=1.001250, downTime=732217009000
12-07 09:47:41.216 496 615 E InputDispatcher: Pointer 0: id=0, toolType=1, x=769.398926, y=453.433228, pressure=0.196078, size=0.023529, touchMajor=5.993913, touchMinor=5.993913, toolMajor=5.993913, toolMinor=5.993913, orientation=-1.570796
12-07 09:47:41.216 496 615 E InputManager-JNI: jeet add touch track log interceptBefore 953L policyFlags=570425344
12-07 09:47:41.217 496 615 E InputManager-JNI: jeet add touch track log interceptBefore 958L policyFlags=1644167168 void NativeInputManager::interceptMotionBeforeQueueing(native)
12-07 09:47:41.217 496 614 E InputDispatcher: jeet add touch track log inputDisacher 315L Inbound queue has at least one entry dispatchOnceInnerLocked(&nextWakeupTime);
12-07 09:47:41.217 496 614 E InputDispatcher: jeet add touch track log inputDisacher 321L Poke user activity for this even void InputDispatcher::dispatchOnceInnerLocked
12-07 09:47:41.217 496 614 E InputDispatcher: Resetting ANR timeouts. void InputDispatcher::resetANRTimeoutsLocked()
12-07 09:47:41.217 496 614 E InputDispatcher: jeet add log track inputDisacher 343L mPendingEvent->type=3 void InputDispatcher::dispatchOnceInnerLocked
InputDispatcher::dispatchMotionLocked
logOutboundMotionDetailsLocked("dispatchMotion - ", entry);
entry->pointerCoords[i].getAxisValue(AMOTION_EVENT_AXIS_X),
static jfloat android_view_MotionEvent_nativeGetAxisValue (frameworks/base/core/jni/android_view_MotionEvent.cpp)
12-07 09:47:41.217 496 614 E InputDispatcher: dispatchMotion - eventTime=732217009000, deviceId=4, source=0x1002, policyFlags=0x62000000, action=0x0, actionButton=0x0, flags=0x0, metaState=0x0, buttonState=0x0,edgeFlags=0x0, xPrecision=1.000781, yPrecision=1.001250, downTime=732217009000
12-07 09:47:41.217 496 614 E InputDispatcher: Pointer 0: id=0, toolType=1, x=769.398926, y=453.433228, pressure=0.196078, size=0.023529, touchMajor=5.993913, touchMinor=5.993913, toolMajor=5.993913, toolMinor=5.993913, orientation=-1.570796, relativeX=0.000000, relativeY=0.000000
12-07 09:47:41.217 496 614 E InputDispatcher: findTouchedWindow finished: injectionResult=0, injectionPermission=1, timeSpentWaitingForApplication=0.0ms injectionResult = findTouchedWindowTargetsLocked
12-07 09:47:41.217 496 614 E InputDispatcher: dispatchEventToCurrentInputTargets void InputDispatcher::dispatchEventLocked
12-07 09:47:41.217 496 614 E InputDispatcher: channel '46aa94a StatusBar (server)' ~ prepareDispatchCycle - flags=0x00000208, xOffset=0.000000, yOffset=0.000000, scaleFactor=1.000000, pointerIds=0x0
12-07 09:47:41.217 496 614 E InputDispatcher: channel '46aa94a StatusBar (server)' ~ startDispatchCycle
12-07 09:47:41.217 496 614 E InputDispatcher: channel 'ff11def Sys2023:dream (server)' ~ prepareDispatchCycle - flags=0x00000105, xOffset=0.000000, yOffset=0.000000, scaleFactor=1.000000, pointerIds=0x80000000
12-07 09:47:41.218 496 614 E InputDispatcher: channel 'ff11def Sys2023:dream (server)' ~ startDispatchCycle
12-07 09:47:41.218 496 614 E InputDispatcher: channel 'WindowManager (server)' ~ prepareDispatchCycle - flags=0x00000100, xOffset=0.000000, yOffset=0.000000, scaleFactor=1.000000, pointerIds=0x0
12-07 09:47:41.218 707 707 D ViewRootImpl: jeet deliverInputEvent: false stage = android.view.ViewRootImpl$EarlyPostImeInputStage@622eb07 q.shouldskipime : true
12-07 09:47:41.218 496 614 E InputDispatcher: channel 'WindowManager (server)' ~ startDispatchCycle prepareDispatchCycleLocked void InputDispatcher::startDispatchCycleLocked
12-07 09:47:41.218 496 614 E InputDispatcher: Resetting ANR timeouts.
InputDispatcher::dispatchMotionLocked
logOutboundMotionDetailsLocked("dispatchMotion - ", entry);
entry->pointerCoords[i].getAxisValue(AMOTION_EVENT_AXIS_X),
static jfloat android_view_MotionEvent_nativeGetAxisValue (642) (frameworks/base/core/jni/android_view_MotionEvent.cpp)
float MotionEvent::getAxisValue(int32_t axis, size_t pointerIndex)
frameworks/native/libs/input/Input.cpp
12-07 09:47:41.218 707 707 E MotionEvent-JNI: jeet add log track android_view_MotionEvent.cpp 642
12-07 09:47:41.218 707 707 E Input : jeet add log track input.cpp 298 Line getAxisValue switch axis=0 X坐标
12-07 09:47:41.218 496 614 D PowerManagerService: userActivityNoUpdateLocked: eventTime=732217, event=2, flags=0x0, uid=1000
12-07 09:47:41.218 707 707 E Input : jeet add log track input.cpp 299 Line getAxisValue switch value=0.000000
12-07 09:47:41.218 707 707 E Input : jeet add log track input.cpp 300 Line getAxisValue switch offset=3,0
12-07 09:47:41.218 707 707 E MotionEvent-JNI: jeet add log track android_view_MotionEvent.cpp 642
12-07 09:47:41.219 890 890 D ViewRootImpl: jeet deliverInputEvent: false stage = android.view.ViewRootImpl$EarlyPostImeInputStage@c53bc83 q.shouldskipime : true
12-07 09:47:41.219 890 890 E MotionEvent-JNI: jeet add log track android_view_MotionEvent.cpp 642
12-07 09:47:41.219 496 520 E MotionEvent-JNI: jeet add log track android_view_MotionEvent.cpp 642
12-07 09:47:41.219 890 890 E Input : jeet add log track input.cpp 298 Line getAxisValue switch axis=0
12-07 09:47:41.219 496 520 E Input : jeet add log track input.cpp 298 Line getAxisValue switch axis=0
12-07 09:47:41.219 890 890 E Input : jeet add log track input.cpp 299 Line getAxisValue switch value=769.398926
12-07 09:47:41.219 496 520 E Input : jeet add log track input.cpp 299 Line getAxisValue switch value=769.398926
12-07 09:47:41.219 890 890 E Input : jeet add log track input.cpp 300 Line getAxisValue switch offset=3,0
12-07 09:47:41.219 496 520 E Input : jeet add log track input.cpp 300 Line getAxisValue switch offset=3,0
12-07 09:47:41.219 496 520 E MotionEvent-JNI: jeet add log track android_view_MotionEvent.cpp 642
12-07 09:47:41.219 890 890 E MotionEvent-JNI: jeet add log track android_view_MotionEvent.cpp 642
12-07 09:47:41.219 496 520 E Input : jeet add log track input.cpp 298 Line getAxisValue switch axis=1 Y坐标
12-07 09:47:41.219 890 890 E Input : jeet add log track input.cpp 298 Line getAxisValue switch axis=1
12-07 09:47:41.219 496 520 E Input : jeet add log track input.cpp 299 Line getAxisValue switch value=453.433228
12-07 09:47:41.219 890 890 E Input : jeet add log track input.cpp 299 Line getAxisValue switch value=453.433228
12-07 09:47:41.219 496 520 E Input : jeet add log track input.cpp 300 Line getAxisValue switch offset=3,0
12-07 09:47:41.219 890 890 E Input : jeet add log track input.cpp 300 Line getAxisValue switch offset=3,0
12-07 09:47:41.219 496 520 E Input : jeet add log track input.cpp 298 Line getAxisValue switch axis=0
12-07 09:47:41.220 496 520 E Input : jeet add log track input.cpp 299 Line getAxisValue switch value=769.398926
frameworks/base/core/java/android/view/ViewRootImpl.java
mEvent=MotionEvent
action=XXX
action 简介
ACTION_HOVER_ENTER 指针移入到窗口或者View区域,但没有按下。
ACTION_HOVER_MOVE 指针在窗口或者View区域移动,但没有按下。
ACTION_HOVER_EXIT 指针移出到窗口或者View区域,但没有按下。
ACTION_SCROLL 滚轮滚动,可以触发水平滚动(AXIS_HSCROLL)或者垂直滚动(AXIS_VSCROLL)
设备类型 简介
TOOL_TYPE_ERASER 橡皮擦
TOOL_TYPE_FINGER 手指
TOOL_TYPE_MOUSE 鼠标
TOOL_TYPE_STYLUS 手写笔
TOOL_TYPE_UNKNOWN 未知类型
事件 简介
ACTION_DOWN 第一个 手指 初次接触到屏幕 时触发。
ACTION_MOVE 手指 在屏幕上滑动 时触发,会多次触发。
ACTION_UP 最后一个 手指 离开屏幕 时触发。
ACTION_POINTER_DOWN 有非主要的手指按下(即按下之前已经有手指在屏幕上)。
ACTION_POINTER_UP 有非主要的手指抬起(即抬起之后仍然有手指在屏幕上)。
12-07 09:47:41.220 890 890 V ViewRootImpl[Sys2023:dream]: Done with EarlyPostImeInputStage. QueuedInputEvent{flags=0, hasNextQueuedEvent=true, hasInputEventReceiver=true, mEvent=MotionEvent { action=ACTION_DOWN, actionButton=0, id[0]=0, x[0]=769.3989, y[0]=453.43323, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=732217, downTime=732217, deviceId=4, source=0x1002 }}
12-07 09:47:41.220 496 520 E Input : jeet add log track input.cpp 300 Line getAxisValue switch offset=3,0
12-07 09:47:41.220 496 520 E Input : jeet add log track input.cpp 298 Line getAxisValue switch axis=1
12-07 09:47:41.220 496 520 E Input : jeet add log track input.cpp 299 Line getAxisValue switch value=453.433228
12-07 09:47:41.220 890 890 E MotionEvent-JNI: jeet add log track android_view_MotionEvent.cpp 642
12-07 09:47:41.220 496 520 E Input : jeet add log track input.cpp 300 Line getAxisValue switch offset=3,0
12-07 09:47:41.220 890 890 E Input : jeet add log track input.cpp 298 Line getAxisValue switch axis=0
12-07 09:47:41.220 496 520 E MotionEvent-JNI: jeet add log track android_view_MotionEvent.cpp 642
12-07 09:47:41.220 890 890 E Input : jeet add log track input.cpp 299 Line getAxisValue switch value=769.398926
12-07 09:47:41.220 496 520 E Input : jeet add log track input.cpp 298 Line getAxisValue switch axis=0
12-07 09:47:41.220 890 890 E Input : jeet add log track input.cpp 300 Line getAxisValue switch offset=3,0
12-07 09:47:41.220 496 520 E Input : jeet add log track input.cpp 299 Line getAxisValue switch value=769.398926
12-07 09:47:41.220 890 890 E MotionEvent-JNI: jeet add log track android_view_MotionEvent.cpp 642
12-07 09:47:41.220 496 520 E Input : jeet add log track input.cpp 300 Line getAxisValue switch offset=3,0
12-07 09:47:41.220 890 890 E Input : jeet add log track input.cpp 298 Line getAxisValue switch axis=1
12-07 09:47:41.220 496 520 E MotionEvent-JNI: jeet add log track android_view_MotionEvent.cpp 642
12-07 09:47:41.220 890 890 E Input : jeet add log track input.cpp 299 Line getAxisValue switch value=453.433228
12-07 09:47:41.220 496 520 E Input : jeet add log track input.cpp 298 Line getAxisValue switch axis=1
12-07 09:47:41.220 890 890 E Input : jeet add log track input.cpp 300 Line getAxisValue switch offset=3,0
12-07 09:47:41.220 496 520 E Input : jeet add log track input.cpp 299 Line getAxisValue switch value=453.433228
12-07 09:47:41.220 496 520 E Input : jeet add log track input.cpp 300 Line getAxisValue switch offset=3,0
12-07 09:47:41.220 890 890 V ViewRootImpl[Sys2023:dream]: Done with NativePostImeInputStage. QueuedInputEvent{flags=0, hasNextQueuedEvent=true, hasInputEventReceiver=true, mEvent=MotionEvent { action=ACTION_DOWN, actionButton=0, id[0]=0, x[0]=769.3989, y[0]=453.43323, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=732217, downTime=732217, deviceId=4, source=0x1002 }}