1. 程式人生 > >golang與手機如何實現一些自動化操作?

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 則讓系統休眠