可以通过如下ADB命令实现PC对Android手机的模拟输入,点击,滑动等事件,进而对Android手机的操作与控制。
1:adb input keyevent <event_code>
这条命令模拟Android手机按下了event_code对应的按键。
event_code表如下:
0 --> "KEYCODE_UNKNOWN"
1 --> "KEYCODE_MENU"
2 --> "KEYCODE_SOFT_RIGHT"
3 --> "KEYCODE_HOME"
4 --> "KEYCODE_BACK"
5 --> "KEYCODE_CALL"
6 --> "KEYCODE_ENDCALL"
7 --> "KEYCODE_0"
8 --> "KEYCODE_1"
9 --> "KEYCODE_2"
10 --> "KEYCODE_3"
11 --> "KEYCODE_4"
12 --> "KEYCODE_5"
13 --> "KEYCODE_6"
14 --> "KEYCODE_7"
15 --> "KEYCODE_8"
16 --> "KEYCODE_9"
17 --> "KEYCODE_STAR"
18 --> "KEYCODE_POUND"
19 --> "KEYCODE_DPAD_UP"
20 --> "KEYCODE_DPAD_DOWN"
21 --> "KEYCODE_DPAD_LEFT"
22 --> "KEYCODE_DPAD_RIGHT"
23 --> "KEYCODE_DPAD_CENTER"
24 --> "KEYCODE_VOLUME_UP"
25 --> "KEYCODE_VOLUME_DOWN"
26 --> "KEYCODE_POWER"
27 --> "KEYCODE_CAMERA"
28 --> "KEYCODE_CLEAR"
29 --> "KEYCODE_A"
30 --> "KEYCODE_B"
31 --> "KEYCODE_C"
32 --> "KEYCODE_D"
33 --> "KEYCODE_E"
34 --> "KEYCODE_F"
35 --> "KEYCODE_G"
36 --> "KEYCODE_H"
37 --> "KEYCODE_I"
38 --> "KEYCODE_J"
39 --> "KEYCODE_K"
40 --> "KEYCODE_L"
41 --> "KEYCODE_M"
42 --> "KEYCODE_N"
43 --> "KEYCODE_O"
44 --> "KEYCODE_P"
45 --> "KEYCODE_Q"
46 --> "KEYCODE_R"
47 --> "KEYCODE_S"
48 --> "KEYCODE_T"
49 --> "KEYCODE_U"
50 --> "KEYCODE_V"
51 --> "KEYCODE_W"
52 --> "KEYCODE_X"
53 --> "KEYCODE_Y"
54 --> "KEYCODE_Z"
55 --> "KEYCODE_COMMA"
56 --> "KEYCODE_PERIOD"
57 --> "KEYCODE_ALT_LEFT"
58 --> "KEYCODE_ALT_RIGHT"
59 --> "KEYCODE_SHIFT_LEFT"
60 --> "KEYCODE_SHIFT_RIGHT"
61 --> "KEYCODE_TAB"
62 --> "KEYCODE_SPACE"
63 --> "KEYCODE_SYM"
64 --> "KEYCODE_EXPLORER"
65 --> "KEYCODE_ENVELOPE"
66 --> "KEYCODE_ENTER"
67 --> "KEYCODE_DEL"
68 --> "KEYCODE_GRAVE"
69 --> "KEYCODE_MINUS"
70 --> "KEYCODE_EQUALS"
71 --> "KEYCODE_LEFT_BRACKET"
72 --> "KEYCODE_RIGHT_BRACKET"
73 --> "KEYCODE_BACKSLASH"
74 --> "KEYCODE_SEMICOLON"
75 --> "KEYCODE_APOSTROPHE"
76 --> "KEYCODE_SLASH"
77 --> "KEYCODE_AT"
78 --> "KEYCODE_NUM"
79 --> "KEYCODE_HEADSETHOOK"
80 --> "KEYCODE_FOCUS"
81 --> "KEYCODE_PLUS"
82 --> "KEYCODE_MENU"
83 --> "KEYCODE_NOTIFICATION"
84 --> "KEYCODE_SEARCH"
85 --> "TAG_LAST_KEYCODE"
2:adb shell input tap <X> <Y>
这条命令模拟Android手机在屏幕坐标(X,Y)处进行了点击操作。
3:adb shell input swipe <X1> <Y1> <X2> <Y2>
这条命令模拟Android手机从屏幕坐标(X1,Y1)滑动到坐标(X2,Y2)的操作。
例如:adb -s 13b6e4c4 shell input tap 400 400
表示对13b6e4c4这台Android手机进行在屏幕上(400,400)坐标位置进行模拟的点击事件。
获取Android手机的设备序列号如下图所示
示例代码:
package com.hdzb.adb;
import java.io.IOException;
public class TestControlAndroid {
public static void main(String[] args) throws InterruptedException {
try {
Thread.sleep(1000);
//testInputStr();
//testSwipe();
//testTap();
testTapForTwoAndroid();
} catch (Exception e3) {
e3.printStackTrace();
}
}
/**
* 两台手机点击一下
*/
private static void testTapForTwoAndroid() {
try {
Runtime.getRuntime()
.exec("D:\\android\\adt-bundle-windows-x86\\sdk\\platform-tools\\adb -s 13b6e4c4 shell input tap 400 400 ");
Runtime.getRuntime()
.exec("D:\\android\\adt-bundle-windows-x86\\sdk\\platform-tools\\adb -s 296ec3e2 shell input tap 400 400 ");
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 控制手机点击一下
*/
private static void testTap() {
try {
Runtime.getRuntime()
.exec("D:\\android\\adt-bundle-windows-x86\\sdk\\platform-tools\\adb shell input tap 400 400 ");
Thread.sleep(1000);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 控制手机滑动
*/
private static void testSwipe() {
try {
Runtime.getRuntime()
.exec("D:\\android\\adt-bundle-windows-x86\\sdk\\platform-tools\\adb shell input swipe 800 800 100 100");
Thread.sleep(1000);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 控制手机输入0-9
*/
private static void testInputStr() {
try {
Runtime.getRuntime()
.exec("D:\\android\\adt-bundle-windows-x86\\sdk\\platform-tools\\adb shell input keyevent 7");
Thread.sleep(1000);
Runtime.getRuntime()
.exec("D:\\android\\adt-bundle-windows-x86\\sdk\\platform-tools\\adb shell input keyevent 8");
Thread.sleep(1000);
Runtime.getRuntime()
.exec("D:\\android\\adt-bundle-windows-x86\\sdk\\platform-tools\\adb shell input keyevent 9");
Thread.sleep(1000);
Runtime.getRuntime()
.exec("D:\\android\\adt-bundle-windows-x86\\sdk\\platform-tools\\adb shell input keyevent 10");
Thread.sleep(1000);
Runtime.getRuntime()
.exec("D:\\android\\adt-bundle-windows-x86\\sdk\\platform-tools\\adb shell input keyevent 11");
Thread.sleep(1000);
Runtime.getRuntime()
.exec("D:\\android\\adt-bundle-windows-x86\\sdk\\platform-tools\\adb shell input keyevent 12");
Thread.sleep(1000);
Runtime.getRuntime()
.exec("D:\\android\\adt-bundle-windows-x86\\sdk\\platform-tools\\adb shell input keyevent 13");
Thread.sleep(1000);
Runtime.getRuntime()
.exec("D:\\android\\adt-bundle-windows-x86\\sdk\\platform-tools\\adb shell input keyevent 14");
Thread.sleep(1000);
Runtime.getRuntime()
.exec("D:\\android\\adt-bundle-windows-x86\\sdk\\platform-tools\\adb shell input keyevent 15");
Thread.sleep(1000);
Runtime.getRuntime()
.exec("D:\\android\\adt-bundle-windows-x86\\sdk\\platform-tools\\adb shell input keyevent 16");
} catch (Exception e) {
e.printStackTrace();
}
}
}