Android(安卓)模拟物理按键
在TP或者Keypad的功能还没准备好时,想要系统实现Home/Back/Menu等按键的功能,可以使用Android自带的input工具,命令为input keyevent
使用方法: 1. adb shell进入终端 2. 输入命令input keyevent
示例:
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
android 中如何模拟back键
主要是在使用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响应快些。
Android中3种方法实现back键动作
博客分类: android 方法一:重写onBackPressed方法Java代码
- @Override
- public void onBackPressed() {
- // do something what you want
- super.onBackPressed();
- }
@Overridepublic void onBackPressed() {// do something what you wantsuper.onBackPressed();}
方法二:重写dispatchKeyEvent
Java代码
- @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);
- }
@Overridepublic boolean dispatchKeyEvent(KeyEvent event) {// TODO Auto-generated method stubif (event.getAction() == KeyEvent.ACTION_DOWN&& event.getKeyCode() == KeyEvent.KEYCODE_BACK) {//do something what you wantreturn true;//返回true,把事件消费掉,不会继续调用onBackPressed}return super.dispatchKeyEvent(event);}
方法三:使用测试框架Instrumentation,模拟任意键按下动作,注意的是该方法不能在主线程中使用,只能开启新线程,带来的问题就是反应速度较慢,项目中不建议使用。
调用actionKey(KeyEvent.KEYCODE_BACK);产生back键单击效果
Java代码
- /**
- * 模拟键盘事件方法
- * @param keyCode
- */
- public void actionKey(final int keyCode) {
- new Thread () {
- public void run () {
- try {
- Instrumentation inst=new Instrumentation();
- inst.sendKeyDownUpSync(keyCode);
- } catch(Exception e) {
- e.printStackTrace(); }
- }
- }.start();
- }
更多相关文章
- 浅谈Java中Collections.sort对List排序的两种方法
- Python list sort方法的具体使用
- python list.sort()根据多个关键字排序的方法实现
- Android倒计时CountDownTimer小记
- [Android]去除程序中广告的好方法:告诉广告没有网络连接
- android testing (一)
- Android菜单操作之创建并响应菜单
- android面试题总结—摘自csdn
- Android消息处理机制——AsyncTask 源码解析