作為一枚程式猿,我決心也自己搞一下,不為別的,一來為了磨練一下自己的解決問題的能力,而來也為了娛樂一下。像這種任務,最適合的當然是Python,豐富的第三方庫,而且具有膠水語言的特點。 ...
1. 前言
微信的跳一跳相信大家都很熟悉了,而且現在各種外掛、輔助也是滿天飛,反正本人的好友排行榜中已經是八九百都不足為奇了。某寶上一搜一堆結果,最低的居然只要3塊多,想刷多少分就刷多少分,真是離譜。
作為一枚程式猿,我決心也自己搞一下,不為別的,一來為了磨練一下自己的解決問題的能力,而來也為了娛樂一下。像這種任務,最適合的當然是Python,豐富的第三方庫,而且具有膠水語言的特點。
本程式的主要設計思路就是,PC端adb連接手機→截屏→在PC端展示→用戶滑鼠選取起點和終點→計算距離、時長→adb發送指令模擬按壓→截屏迴圈。
2. ADB
adb,Android Debug Bridge,即安卓調試橋,包含如下幾個部分:
- Client端, 運行在開發機器中,即你的開發PC機,用來發送adb命令
- Deamon守護進程,運行在調試設備中,即的調試手機或模擬器
- Server端,作為一個後臺進程運行在開發機器中,即你的開發PC機,用來管理PC中的Client端和手機的Deamon之間的通信
我們通常用的adb命令指的就是Client端程式。Server端實際上在本機偵聽埠5037,將指令通過usb線/wifi轉發給移動設備的Deamon進程。
adb命令讀者可以去官方網站查看文檔(http://adbshell.com/commands),這裡只介紹用到的幾個命令。
(1) adb devices列出所有連接的模擬器/設備
Prints a list of all attached emulator/device
adb devices
In response, return serial number and state
e4b25377 device
emulator-5554 device
(2) adb shell screencap截屏
taking a screenshot of a device display.
adb shell screencap <filename>
adb shell screencap /sdcard/screen.png
download the file from the device將文件從設備下載到本機。
adb pull /sdcard/screen.png
(3) adb shell input swipe模擬滑動操作(長按)
adb shell input swipe 100 100 100 100 500模擬長按坐標(100, 100)時長500ms
C:\Documents and Settings\Administrator>adb shell root@NX403A:/ # input input Usage: input [<source>] <command> [<arg>...] The sources are: trackball joystick touchnavigation mouse keyboard gamepad touchpad dpad stylus touchscreen 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的知識點。
3. Python
(1) 調用命令行
Python調用命令行有多種方式,比較常用的是os.system(cmd)和os.popen(cmd),以及commands.getoutput(cmd),這三者主要區別在返回值的獲取方面,第一個無法獲得返回值,第二、三個則可以獲取。這裡用哪個都可以,因為不需要獲得返回值。
(2) OpenCV
主要用OpenCV做一些圖片縮放等操作,用PIL也是可以的。
(3) Tkinter
主要用到了Button、PhotoImage這兩個Widget。不多說了。
程式的實現是很簡單的,這裡處於某些原因就不公開代碼了,主要就是一個細調參數的過程。
程式截圖:
下一步的目標是,結合OpenCV和神經網路實現自動識別、計算距離。
鄭重聲明,本文僅供學習、娛樂只用,請勿隨意傳播。