golang與手機如何實現一些自動化操作?
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 能實現不同的功能,完整的 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 則讓系統休眠 |