书接上文:
Android 手机蓝牙遥控器解决方案
本以为要从底层去修改很多的东西,但是后来发现并没有那么困难:
adb shell 命令可以去模拟人的操作,并且Android 中可以用
Runtime.getRuntime().exec("命令")
这些命令分为四大类:
1、adb shell input text + 需要输入的文字
例子:选中文本框,当前是输入状态,执行这条命令,文字就自动到文本框中了;
2、adb shell input keyevent + 键值对应的码
例子:键盘的一些操作,还有界面中的返回,home,音量增减等都是以这种方式来体现,后边会贴出不同的按键对应的键值,以便参考;
3、adb shell input tap + 以像素为单位的横纵坐标 // 表示单击该坐标位置
4、adb shell input swipe + 起始位置横纵坐标 + 空格+ 结束位置横纵坐标 // 模拟手指从 起始位置滑动到 结束位置
下边贴出一些常用的键值:(因为板子上一些功能不存在,无法验证是否可用,我会在后边注明)
3 --> "KEYCODE_HOME" // 回到桌面
4 --> "KEYCODE_BACK" // 手机返回键
5 --> "KEYCODE_CALL" // 接电话/打电话(未验证)
6 --> "KEYCODE_ENDCALL" // 结束通话
7 --> "KEYCODE_0" // 数字 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" //键盘上的 ok 键
24 --> "KEYCODE_VOLUME_UP" // 音量增
25 --> "KEYCODE_VOLUME_DOWN" //音量减
26 --> "KEYCODE_POWER" // 在 Rk3288 上代表切断 hdmi 信号,即显示器会显示无信号输入,但其实并没有关机
27 --> "KEYCODE_CAMERA" // 调出 相机(未验证)
28 --> "KEYCODE_CLEAR" // 期望可以清空输入框中的内容,但是没有作用
29 --> "KEYCODE_A" // 输入 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" // 按下左边的 alt
58 --> "KEYCODE_ALT_RIGHT" // 按下右边的 alt
59 --> "KEYCODE_SHIFT_LEFT" // 按下左边的 shift
60 --> "KEYCODE_SHIFT_RIGHT" // 按下右边的 shift
61 --> "KEYCODE_TAB" // 按下 tab 键
62 --> "KEYCODE_SPACE" // 按下空格键
66 --> "KEYCODE_ENTER" // 按下回车键
67 --> "KEYCODE_DEL" // 按下 delete 键(可以删除输入框中的光标前的一位)
71 --> "KEYCODE_LEFT_BRACKET" // 左边中括号
72 --> "KEYCODE_RIGHT_BRACKET" // 右边中括号
73 --> "KEYCODE_BACKSLASH" // 反斜杠
74 --> "KEYCODE_SEMICOLON" // 分号 ;
75 --> "KEYCODE_APOSTROPHE" // 单引号 '
76 --> "KEYCODE_SLASH" // 斜杠 /
77 --> "KEYCODE_AT" // @
81 --> "KEYCODE_PLUS" // 加号 +
82 --> "KEYCODE_MENU" // 打开menu菜单,在桌面调出最近任务
遥控器上按键需求:
1、基本需求:
上下左右按键,ok,菜单,返回,关机,home
2、特殊需求:
音量的加减;
3、文字输入:
文字输入,因为adb 方法无法实现模拟同时多个按键,并且尝试多次,无法实现大写字母输入,所以打算采用 input text 的方法来实现,需要添加一个删除文字的功能;