您好,登錄后才能下訂單哦!
這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)使用python怎么控制安卓手機,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
ADB(Android調(diào)試橋)是一個命令行工具(CLI),可用于控制Android設(shè)備并與之通信。您可以執(zhí)行許多操作,例如安裝應(yīng)用程序,調(diào)試應(yīng)用程序,查找隱藏的功能并使用外殼程序直接與設(shè)備連接。要啟用ADB,您的設(shè)備必須首先解鎖開發(fā)者選項并啟用USB調(diào)試。要解鎖開發(fā)人員選項,您可以轉(zhuǎn)到設(shè)備設(shè)置,然后向下滾動到“關(guān)于”部分,找到設(shè)備上當(dāng)前軟件的內(nèi)部版本號。單擊內(nèi)部版本號 7次,將啟用開發(fā)人員選項。然后,您可以轉(zhuǎn)到設(shè)置中的“開發(fā)人員選項”面板,然后從那里啟用USB調(diào)試。現(xiàn)在,您唯一需要做的另一件事就是將設(shè)備連接到計算機的USB電纜。
這是今天的旅程:
1.安裝要求
2.入門
3.編寫腳本的基礎(chǔ)
4.創(chuàng)建自拍計時器創(chuàng)
5.建定義搜索器
我們需要安裝的兩件事中的第一件事是計算機上的ADB工具。它會自動與Android Studio捆綁在一起,因此,如果您已經(jīng)擁有了,那就不用擔(dān)心了。否則,您可以轉(zhuǎn)到[官方文檔](https://developer.android.com/studio/command-line/adb),并且在頁面頂部應(yīng)有有關(guān)如何安裝它的說明。
安裝ADB工具后,您需要獲取python庫,我們將使用該庫與ADB和我們的設(shè)備進行接口。您可以使用pip install pure-python-adb安裝pure-python-adb庫。
可選:為使我們在開發(fā)腳本時更輕松,我們可以安裝一個名為scrcpy的開源程序,該程序允許我們使用鼠標(biāo)和鍵盤在我們的計算機上顯示和控制我們的android設(shè)備。要安裝它,您可以轉(zhuǎn)到[Github repo](https://github.com/Genymobile/scrcpy)并下載適用于您的操作系統(tǒng)(Windows,macOS或Linux)的正確版本。如果您使用的是Windows,則將zip文件解壓縮到一個目錄中,然后將此目錄添加到您的路徑中。這樣一來,我們只需在終端窗口中鍵入scrcpy即可從系統(tǒng)上的任何位置訪問該程序。
現(xiàn)在已經(jīng)安裝了所有依賴項,我們可以啟動ADB并連接設(shè)備。首先,使用USB電纜將設(shè)備連接到PC,如果啟用了USB調(diào)試,則會彈出一條消息,詢問PC是否可以控制設(shè)備,只需回答是。然后在您的PC上,打開一個終端窗口,并通過鍵入adb start-server來啟動ADB服務(wù)器。這應(yīng)該打印出以下消息:
daemon not running; starting now at tcp:5037
daemon started successfully
如果您還安裝了scrcpy,則可以通過在終端中鍵入**scrcpy
來啟動它。但是,這僅在將其添加到路徑時才有效,否則可以通過將終端目錄更改為安裝scrcpy的目錄并鍵入scrcpy.exe**來打開可執(zhí)行文件。希望一切順利,您應(yīng)該能夠在PC上看到您的設(shè)備,并能夠使用鼠標(biāo)和鍵盤對其進行控制。
現(xiàn)在,我們可以創(chuàng)建一個新的python文件,并檢查是否可以使用該庫找到連接的設(shè)備:
rom ppadb.client import Client as AdbClient if __name__ == '__main__': client = AdbClient(host="127.0.0.1", port=5037) # Default is "127.0.0.1" and 5037 devices = client.devices() if len(devices) == 0: print('No devices') quit() device = devices[0] print(f'Connected to {device}')
在這里,我們導(dǎo)入AdbClient類并使用它創(chuàng)建一個客戶端對象。然后,我們可以獲得連接的設(shè)備的列表。最后,我們從列表中獲得第一臺設(shè)備(如果僅連接了一個設(shè)備,則通常是唯一的設(shè)備)。
我們要與設(shè)備連接的主要方式是使用外殼,通過這種方式,我們可以發(fā)送命令以模擬特定位置的觸摸或從A滑動到B。要模擬屏幕觸摸(輕擊),我們首先需要工作了解屏幕坐標(biāo)的工作方式。為了幫助解決這些問題,我們可以在開發(fā)人員選項中激活指針位置設(shè)置。激活后,無論您在屏幕上的何處觸摸,都可以看到該點的坐標(biāo)顯示在頂部。坐標(biāo)系的工作方式如下:
該圖顯示了坐標(biāo)系的工作方式
顯示屏的左上角分別具有* x 和 y 坐標(biāo)(0,0),并且右下角的坐標(biāo)是 x 和 y *的最大可能值。
現(xiàn)在我們知道了坐標(biāo)系的工作原理,我們需要檢查一下可以運行的不同命令。我在下面列出了命令列表以及如何使用它們,以供快速參考:
Input tap x y Input text “hello world!” Input keyevent eventID Here is a list of some common eventID's: 3: home button 4: back button 5: call 6: end call 24: volume up 25: volume down 26: turn device on or off 27: open camera 64: open browser 66: enter 67: backspace 207: contacts 220: brightness down 221: brightness up 277: cut 278: copy 279: paste
如果您想找到更多,請在這里找到一長串清單。https://forum.xda-developers.com/t/q-adb-input-keyevent-for-long-press-on-power- button.2063741 / post-64890206。
現(xiàn)在我們知道我們能做什么,讓我們開始吧。在第一個示例中,我將向您展示如何創(chuàng)建一個快速的自拍計時器。首先,我們需要導(dǎo)入我們的庫并創(chuàng)建一個connect函數(shù)以連接到我們的設(shè)備:
import time from ppadb.client import Client as AdbClient def connect(): client = AdbClient(host="127.0.0.1", port=5037) # Default is "127.0.0.1" and 5037 devices = client.devices() if len(devices) == 0: print('No devices') quit() device = devices[0] print(f'Connected to {device}') return device, client
您可以看到connect函數(shù)與前面的如何連接到設(shè)備的示例相同,除了這里我們返回設(shè)備和客戶端對象以供以后使用。
if __name__ == '__main__': device, client = connect() # open up camera app device.shell('input keyevent 27') # wait 5 seconds time.sleep(5) # take a photo with volume up device.shell('input keyevent 24') print('Taken a photo!')
在我們的主代碼中,我們可以調(diào)用connect函數(shù)來檢索設(shè)備和客戶端對象。從那里我們可以打開相機應(yīng)用程序,等待5秒鐘并拍照。真的就是這么簡單!正如我之前說過的,這只是復(fù)制您通常會做的事情,因此,如果您首先手動進行操作并寫下步驟,則思考如何做事情是最好的。
現(xiàn)在,我們可以做一些更復(fù)雜的事情,那就是要求瀏覽器找到特定單詞的定義,并截圖以將其保存在我們的計算機上。
該程序的基本流程如下:
1.打開瀏覽器
2.單擊搜索欄
3.輸入搜索查詢
4.等待幾秒鐘
5.截圖并保存
但是,在我們開始之前,您需要在默認(rèn)瀏覽器中找到搜索欄的坐標(biāo),您可以使用我之前建議的方法輕松地找到它們。對我來說,他們是(440,200)。
首先,我們將必須導(dǎo)入與以前相同的庫,并且我們還將具有相同的connect方法。
import time from ppadb.client import Client as AdbClient def connect(): client = AdbClient(host="127.0.0.1", port=5037) # Default is "127.0.0.1" and 5037 devices = client.devices() if len(devices) == 0: print('No devices') quit() device = devices[0] print(f'Connected to {device}') return device, client
在我們的主要函數(shù)中,我們可以調(diào)用connect函數(shù),并為我們的搜索欄的* x 和 y *坐標(biāo)分配一個變量。注意這是一個字符串,而不是列表或元組,這樣我們可以輕松地將坐標(biāo)合并到我們的shell命令中。我們還可以從用戶那里獲取輸入信息,以查看他們想要獲取哪個單詞的定義:
if __name__ == '__main__': device, client = connect() search_bar = '440 200' # x y query = input('What word do you want to find the definition of: ') search_query = f'what is the definition of {query}'
我們會將查詢添加到完整的句子中,然后對其進行搜索,這樣我們就可以始終獲取定義。之后,我們可以打開瀏覽器,然后將搜索查詢輸入到搜索欄中,如下所示:
device.shell('input keyevent 64') time.sleep(0.25) # wait for browser to load device.shell(f'input tap {search_bar}') device.shell(f'input text "{search_query}"') # make sure you have the quotation marks around your text device.shell('input keyevent 66') time.sleep(3) # wait for results to load
在這里,我們使用eventID 66模擬輸入鍵的按下以執(zhí)行搜索。如果需要,可以根據(jù)需要更改等待時間。
最后,我們將在設(shè)備對象上使用screencap方法獲取屏幕截圖,然后可以將其另存為* .png *文件:
screenshot = device.screencap() with open('result.png', 'wb') as f: # save the screenshot as result.png f.write(screenshot) print('Saved screenshot!')
在這里,我們必須以寫字節(jié)模式打開文件,因為screencap方法返回表示圖像的字節(jié)。
如果一切都按計劃進行,則應(yīng)該有一個快速腳本來搜索特定單詞。這在我的手機上正常工作:
Python主要應(yīng)用于:1、Web開發(fā);2、數(shù)據(jù)科學(xué)研究;3、網(wǎng)絡(luò)爬蟲;4、嵌入式應(yīng)用開發(fā);5、游戲開發(fā);6、桌面應(yīng)用開發(fā)。
上述就是小編為大家分享的使用python怎么控制安卓手機了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。