OSDN Git Service

input: simulate long press properly
authorChih-Wei Huang <cwhuang@linux.org.tw>
Tue, 21 Nov 2017 08:36:30 +0000 (16:36 +0800)
committerChih-Wei Huang <cwhuang@linux.org.tw>
Tue, 14 Apr 2020 14:46:49 +0000 (22:46 +0800)
commit08ff78b9769f79e228864281cebac4826916d0aa
treef69e9a6161054af6b24ff4e0fdb5bd957fec8c6f
parent116bbc34b611e2cd33980d92d3ec4756b481fa42
input: simulate long press properly

The original implementation of long press sends two ACTION_DOWN events
which would be interpreted as a double tap. For example, sending
a long press POWER key will launch the camera:

11-21 16:27:37.320  2223  2223 I Input   : injectKeyEvent: KeyEvent { action=ACTION_DOWN, keyCode=KEYCODE_POWER, scanCode=0, metaState=0, flags=0x0, repeatCount=0, eventTime=39641, downTime=39641, deviceId=-1, source=0x101 }
11-21 16:27:37.321  2223  2223 I Input   : injectKeyEvent: KeyEvent { action=ACTION_DOWN, keyCode=KEYCODE_POWER, scanCode=0, metaState=0, flags=0x80, repeatCount=1, eventTime=39641, downTime=39641, deviceId=-1, source=0x101 }
11-21 16:27:37.322  1411  1565 I GestureLauncherService: Power button double tap gesture detected, launching camera. Interval=0ms
11-21 16:27:37.322  2223  2223 I Input   : injectKeyEvent: KeyEvent { action=ACTION_UP, keyCode=KEYCODE_POWER, scanCode=0, metaState=0, flags=0x0, repeatCount=0, eventTime=39641, downTime=39641, deviceId=-1, source=0x101 }

This is unexpected and incorrect.

Just simulate the long press by delaying ACTION_UP one second.
cmds/input/src/com/android/commands/input/Input.java