golang与手机如何实现一些自动化操作?

所有指令控制: 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 则让系统休眠

相关文章