在TP或者Keypad的功能还没准备好时,想要系统实现Home/Back/Menu等按键的功能,可以使用Android自带的input工具,命令为input keyevent <keycode>,模拟物理按键。
使用方法: 1. adb shell进入终端 2. 输入命令input keyevent <keycode>
示例:
1. 输入input keyevent 82 可以实现Menu button的功能,也可以解除Android屏幕的锁屏 2. 输入input keyevent 4 可以实现Back button的功能 3. 输入input keyevent 3 可以实现Home button的功能
Keycode List:
keycode event
3 --> HOME
4 --> BACK
5 --> CALL(电话)
6 --> ENDCALL(挂电话)
7 --> 0
8 --> 1
9 --> 2
10 --> 3
11 --> 4
12 --> 5
13 --> 6
14 --> 7
15 --> 8
16 --> 9
17 --> STAR(*)
18 --> POUND(#)
19 --> UP
20 --> DOWN
21 --> LEFT
22 --> RIGHT
23 --> CENTER
24 --> VOLUME_UP
25 --> VOLUME_DOWN
26 --> POWER
27 --> CAMERA
28 --> CLEAR
29 --> A
30 --> B
31 --> C
32 --> D
33 --> E
34 --> F
35 --> G
36 --> H
37 --> I
38 --> J
39 --> K
40 --> L
41 --> M
42 --> N
43 --> O
44 --> P
45 --> Q
46 --> R
47 --> S
48 --> T
49 --> U
50 --> V
51 --> W
52 --> X
53 --> Y
54 --> Z
55 --> COMMA(,)
56 --> PERIOD(.)
57 --> ALT_LEFT
58 --> ALT_RIGHT
59 --> SHIFT_LEFT
60 --> SHIFT_RIGHT
61 --> TAB
62 --> SPACE
63 --> SYM(输入法)
64 --> EXPLORER
65 --> ENVELOPE
66 --> ENTER(回车)
67 --> DEL
68 --> GRAVE(')
69 --> MINUS(-)
70 --> EQUALS(=)
71 --> LEFT_BRACKET([)
72 --> RIGHT_BRACKET(])
73 --> BACKSLASH(\)
74 --> SEMICOLON(;)
75 --> APOSTROPHE
76 --> SLASH
77 --> AT(@)
78 --> NUM
79 --> HEADSETHOOK
80 --> FOCUS
81 --> PLUS(+)
82 --> MENU //可以将Android屏幕解锁
83 --> NOTIFICATION
84 --> SEARCH
主要是在使用Fragment时能够返回前一级,所以才找到了这些资料。
有两种方式可以实现,直接上代码
方法1:
public void onBack(){
new Thread(){
public void run() {
try{
Instrumentation inst = new Instrumentation();
inst.sendKeyDownUpSync(KeyEvent.KEYCODE_BACK);
}
catch (Exception e) {
Log.e("Exception when onBack", e.toString());
}
}
}.start();
}
注意该方法不能放在主线程中,否则会报错。
方法2:
try{
Runtime runtime=Runtime.getRuntime();
runtime.exec("input keyevent " + KeyEvent.KEYCODE_BACK);
}catch(IOException e){
Log.e("Exception when doBack", e.toString());
}
总结:方法1比方法2响应快些。
@Override public void onBackPressed() { // do something what you want super.onBackPressed(); }
@Override public boolean dispatchKeyEvent(KeyEvent event) { // TODO Auto-generated method stub if (event.getAction() == KeyEvent.ACTION_DOWN && event.getKeyCode() == KeyEvent.KEYCODE_BACK) { //do something what you want return true;//返回true,把事件消费掉,不会继续调用onBackPressed } return super.dispatchKeyEvent(event); }