Android input 系统InputReader,InputDispatcher线程实例--UI死掉

Android input 系统InputReader,InputDispatcher线程实例–UI死掉但touch 正常报点

依据 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 }}	

你可能感兴趣的:(Android)