-
public void handleMotion(MotionEvent event, InputQueue.FinishedCallback finishedCallback) {
-
startInputEvent(finishedCallback);
-
dispatchMotion(event, true);
-
}
-
};
dispatchKey()函数内部发送一个DISPATCH_KEY消息,消息的处理函数为deliverKeyEvent():
[java] view plain copy
-
private void dispatchKey(KeyEvent event, boolean sendDone) {
-
//noinspection ConstantConditions
-
if (false && event.getAction() == KeyEvent.ACTION_DOWN) {
-
if (event.getKeyCode() == KeyEvent.KEYCODE_CAMERA) {
-
if (DBG) Log.d(“keydisp”, “===================================================”);
-
if (DBG) Log.d(“keydisp”, “Focused view Hierarchy is:”);
-
debug();
-
if (DBG) Log.d(“keydisp”, “===================================================”);
-
}
-
}
-
Message msg = obtainMessage(DISPATCH_KEY);
-
msg.obj = event;
-
msg.arg1 = sendDone ? 1 : 0;
-
if (LOCAL_LOGV) Log.v(
-
TAG, "sending key " + event + " to " + mView);
-
enqueueInputEvent(msg, event.getEventTime());
-
}
-
@Override
-
public void handleMessage(Message msg) {
-
switch (msg.what) {
-
…
-
case FINISHED_EVENT:
-
handleFinishedEvent(msg.arg1, msg.arg2 != 0);
-
break;
-
case DISPATCH_KEY:
-
deliverKeyEvent((KeyEvent)msg.obj, msg.arg1 != 0);
-
break;
-
case DISPATCH_POINTER:
-
deliverPointerEvent((MotionEvent) msg.obj, msg.arg1 !&#