所有指令控制: http://adbshell.com/
golang与手机如何实现一些自动化操作?虽然不太会把电脑开起来操作手机,不过pi也应该可以与手机互动吧。
比如说来个无人值守功能啥的,语音信箱啥的....任凭想像。
第一步是实现手机与linux的连接,这里使用华为安卓手机,并没有root,反正试过几次都没成功。
ubuntu安装adb
sudo add-apt-repository ppa:nilarimogard/webupd8
sudo apt-get update
sudo apt-get install android-tools-adb
没试过,我是用:https://www.xda-developers.com/install-adb-windows-macos-linux/ 这里介绍的方法
下载即用https://dl.google.com/android/repository/platform-tools-latest-linux.zip
查找设备:adb devices
换了根线就成功了
传数据到手机需要adb shell进入手机系统中,然后上传到手机 adb push 本机 手机
adb pull 获取手机中的文件。
之前的自动跳一跳利用截屏,分析颜色,按住等操作就构成了。
收集一下adb指令,看看有些什么可以利用的,据说这里有更详细的整理https://github.com/mzlogin/awesome-adb
adb root 获取root权限
adb shell input keyevent 82 点亮屏幕 (这里是模拟按了一个键)
adb reboot [bootloader|recovery] 重启设备,可选参数进入bootloader(刷机模式)或recovery(恢复模式)
adb install test.apk -r adb uninstall -k
adb shell wm size 获取屏幕分辨率
adb shell getprop 获取手机相关信息
adb -s 1b71651 shell 进入某机shell
adb shell service list 后台服务列表
adb shell cat /proc/meminfo 系统内存情况
adb shell input keyevent {key_code} 发送按键
adb shell input text {text} 发送文本
adb shell am start -a android.media.action.STILL_IMAGE_CAMERA 打开照相
https://blog.csdn.net/xiezechang/article/details/8528446 这里讲了启动一些其它的
https://blog.csdn.net/soslinken/article/details/50245865 还有这里也介绍了一些
adb shell am start -a android.intent.action.VIEW geo:0,0?q=beijing 直接启动了地图软件,搜索北京
adb shell am start -a "android.intent.action.VIEW" -t "audio/mp3" -d "file:///mnt/sdcard/music/Honor.mp3" 播放音乐
adb shell input keyevent 85(86暂停,87下一首,88上一首 126暂停)
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”
比如:按Home键:adb shell input keyevent KEYCODE_HOME
滑动屏幕 adb shell input touchscreen swipe {x1} {y1} {x2} {y2}
点击屏幕 adb shell input touchscreen tap {x} {y}
录制屏幕 adb shell screenrecord /sdcard/test.mp4
adb shell screenrecord --size 848*480 /sdcard/test.mp4
打电话:adb shell am start -a android.intent.action.CALL -d tel:10086
MAC: adb shell cat /sys/class/net/wlan0/address
屏幕密度 adb shell wm density
划动解锁 adb shell input swipe 300 1000 300 500
输入文本 adb shell input text hello
把微信调到前台 adb shell am start -n com.tencent.mm/.ui.LauncherUI
设备型号 adb shell getprop ro.product.model
电池情况 adb shell dumpsys battery
IP地址 adb shell ifconfig | grep Mask
CPU信息 adb shell cat /proc/cpuinfo
屏幕截图 adb exec-out screencap -p > sc.png
另一种截屏,没试过 adb shell screencap -p | sed "s/\r$//" > sc.png
----------------------------------------------------------------------------------------------------
在 adb shell
里有个很实用的命令叫 input
,通过它可以做一些有趣的事情。
input
命令的完整 help 信息如下:
Usage: input [
比如使用 adb shell input keyevent
命令,不同的 keycode 能实现不同的功能,完整的 keycode 列表详见 KeyEvent,摘引部分我觉得有意思的如下:
keycode | 含义 |
---|---|
3 | HOME 键 |
4 | 返回键 |
5 | 打开拨号应用 |
6 | 挂断电话 |
24 | 增加音量 |
25 | 降低音量 |
26 | 电源键 |
27 | 拍照(需要在相机应用里) |
64 | 打开浏览器 |
82 | 菜单键 |
85 | 播放/暂停 |
86 | 停止播放 |
87 | 播放下一首 |
88 | 播放上一首 |
122 | 移动光标到行首或列表顶部 |
123 | 移动光标到行末或列表底部 |
126 | 恢复播放 |
127 | 暂停播放 |
164 | 静音 |
176 | 打开系统设置 |
187 | 切换应用 |
207 | 打开联系人 |
208 | 打开日历 |
209 | 打开音乐 |
210 | 打开计算器 |
220 | 降低屏幕亮度 |
221 | 提高屏幕亮度 |
223 | 系统休眠 |
224 | 点亮屏幕 |
231 | 打开语音助手 |
276 | 如果没有 wakelock 则让系统休眠 |