在dispatchKeyEvent事件中,我对event事件的action进行判断,如果为action_up的时候我打出系统当前的时间,在action_down的时候我也打出当前的系统时间,然后在action_up中用action_up得到的系统时间减去action_down得到的系统时间,发现得到的时间总是不对,后来发现键盘的按键按下去的时候,在没有action_up的时候,会一直走action_down,所以action_down中拿到的系统的时间是不对的,应该从event事件中去拿action_down的 时间,代码如下:
1 public boolean dispatchKeyEvent(KeyEvent event) {
2 int action = event.getAction();
3 int keyCode = event.getKeyCode();
4
5 if (keyCode == KeyEvent.KEYCODE_S) {
6 if (action == KeyEvent.ACTION_UP) {
7 long actionUpTime = event.getEventTime();
8 long actionDownTime = event.getDownTime();
9 System.out.println("actionUptime = " + actionUpTime);
10 long remainTime = actionUpTime - actionDownTime;
11 System.out.println("remainTime = " + remainTime);
12 if (remainTime < 3000) {
13 showDialogToast();
14 }
15 else {
16 mHandler.sendEmptyMessage(SOS_CALL);
17 }
18 }
19 }
20 return super.dispatchKeyEvent(event);
21 }