所有指令控制: 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 <package_name> 安装与卸载
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 [<source>] <command> [<arg>...]
The sources are:
mouse
keyboard
joystick
touchnavigation
touchpad
trackball
stylus
dpad
gesture
touchscreen
gamepad
The commands and default sources are:
text <string> (Default: touchscreen)
keyevent [--longpress] <key code number or name> ... (Default: keyboard)
tap <x> <y> (Default: touchscreen)
swipe <x1> <y1> <x2> <y2> [duration(ms)] (Default: touchscreen)
press (Default: trackball)
roll <dx> <dy> (Default: trackball)
比如使用 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 则让系统休眠