欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

教你用python控制安卓手機(jī)

 更新時(shí)間:2021年05月13日 15:43:05   作者:有理想的coder  
不久前,我在思考如何通過(guò)向好友發(fā)送幾分鐘的垃圾郵件來(lái)惹惱我的朋友,而在做一些研究的過(guò)程中,我遇到了Android調(diào)試橋.在本快速指南中,我將向您展示如何使用Python與之交互以及如何創(chuàng)建2個(gè)快速腳本.需要的朋友可以參考下

一、介紹

ADB(Android調(diào)試橋)是一個(gè)命令行工具(CLI),可用于控制Android設(shè)備并與之通信。您可以執(zhí)行許多操作,例如安裝應(yīng)用程序,調(diào)試應(yīng)用程序,查找隱藏的功能并使用外殼程序直接與設(shè)備連接。要啟用ADB,您的設(shè)備必須首先解鎖開(kāi)發(fā)者選項(xiàng)并啟用USB調(diào)試。要解鎖開(kāi)發(fā)人員選項(xiàng),您可以轉(zhuǎn)到設(shè)備設(shè)置,然后向下滾動(dòng)到“關(guān)于”部分,找到設(shè)備上當(dāng)前軟件的內(nèi)部版本號(hào)。單擊內(nèi)部版本號(hào) 7次,將啟用開(kāi)發(fā)人員選項(xiàng)。然后,您可以轉(zhuǎn)到設(shè)置中的“開(kāi)發(fā)人員選項(xiàng)”面板,然后從那里啟用USB調(diào)試?,F(xiàn)在,您唯一需要做的另一件事就是將設(shè)備連接到計(jì)算機(jī)的USB電纜。

這是今天的旅程:

1.安裝要求

2.入門(mén)

3.編寫(xiě)腳本的基礎(chǔ)

4.創(chuàng)建自拍計(jì)時(shí)器創(chuàng)

5.建定義搜索器

二、安裝要求

我們需要安裝的兩件事中的第一件事是計(jì)算機(jī)上的ADB工具。它會(huì)自動(dòng)與Android Studio捆綁在一起,因此,如果您已經(jīng)擁有了,那就不用擔(dān)心了。否則,您可以轉(zhuǎn)到[官方文檔](https://developer.android.com/studio/command-line/adb),并且在頁(yè)面頂部應(yīng)有有關(guān)如何安裝它的說(shuō)明。

安裝ADB工具后,您需要獲取python庫(kù),我們將使用該庫(kù)與ADB和我們的設(shè)備進(jìn)行接口。您可以使用pip install pure-python-adb安裝pure-python-adb庫(kù)。

可選:為使我們?cè)陂_(kāi)發(fā)腳本時(shí)更輕松,我們可以安裝一個(gè)名為scrcpy的開(kāi)源程序,該程序允許我們使用鼠標(biāo)和鍵盤(pán)在我們的計(jì)算機(jī)上顯示和控制我們的android設(shè)備。要安裝它,您可以轉(zhuǎn)到[Github repo](https://github.com/Genymobile/scrcpy)并下載適用于您的操作系統(tǒng)(Windows,macOS或Linux)的正確版本。如果您使用的是Windows,則將zip文件解壓縮到一個(gè)目錄中,然后將此目錄添加到您的路徑中。這樣一來(lái),我們只需在終端窗口中鍵入scrcpy即可從系統(tǒng)上的任何位置訪問(wèn)該程序。

三、入門(mén)

現(xiàn)在已經(jīng)安裝了所有依賴項(xiàng),我們可以啟動(dòng)ADB并連接設(shè)備。首先,使用USB電纜將設(shè)備連接到PC,如果啟用了USB調(diào)試,則會(huì)彈出一條消息,詢問(wèn)PC是否可以控制設(shè)備,只需回答是。然后在您的PC上,打開(kāi)一個(gè)終端窗口,并通過(guò)鍵入adb start-server來(lái)啟動(dòng)ADB服務(wù)器。這應(yīng)該打印出以下消息:

  • daemon not running; starting now at tcp:5037
  • daemon started successfully

如果您還安裝了scrcpy,則可以通過(guò)在終端中鍵入**scrcpy來(lái)啟動(dòng)它。但是,這僅在將其添加到路徑時(shí)才有效,否則可以通過(guò)將終端目錄更改為安裝scrcpy的目錄并鍵入scrcpy.exe**來(lái)打開(kāi)可執(zhí)行文件。希望一切順利,您應(yīng)該能夠在PC上看到您的設(shè)備,并能夠使用鼠標(biāo)和鍵盤(pán)對(duì)其進(jìn)行控制。

現(xiàn)在,我們可以創(chuàng)建一個(gè)新的python文件,并檢查是否可以使用該庫(kù)找到連接的設(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)建一個(gè)客戶端對(duì)象。然后,我們可以獲得連接的設(shè)備的列表。最后,我們從列表中獲得第一臺(tái)設(shè)備(如果僅連接了一個(gè)設(shè)備,則通常是唯一的設(shè)備)。

四、編寫(xiě)腳本的基礎(chǔ)

我們要與設(shè)備連接的主要方式是使用外殼,通過(guò)這種方式,我們可以發(fā)送命令以模擬特定位置的觸摸或從A滑動(dòng)到B。要模擬屏幕觸摸(輕擊),我們首先需要工作了解屏幕坐標(biāo)的工作方式。為了幫助解決這些問(wèn)題,我們可以在開(kāi)發(fā)人員選項(xiàng)中激活指針位置設(shè)置。激活后,無(wú)論您在屏幕上的何處觸摸,都可以看到該點(diǎn)的坐標(biāo)顯示在頂部。坐標(biāo)系的工作方式如下:

在這里插入圖片描述

該圖顯示了坐標(biāo)系的工作方式

顯示屏的左上角分別具有* x y 坐標(biāo)(0,0),并且右下角的坐標(biāo)是 x y *的最大可能值。

現(xiàn)在我們知道了坐標(biāo)系的工作原理,我們需要檢查一下可以運(yùn)行的不同命令。我在下面列出了命令列表以及如何使用它們,以供快速參考:

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

如果您想找到更多,請(qǐng)?jiān)谶@里找到一長(zhǎng)串清單。https://forum.xda-developers.com/t/q-adb-input-keyevent-for-long-press-on-power- button.2063741 / post-64890206。

五、創(chuàng)建自拍計(jì)時(shí)器

現(xiàn)在我們知道我們能做什么,讓我們開(kāi)始吧。在第一個(gè)示例中,我將向您展示如何創(chuàng)建一個(gè)快速的自拍計(jì)時(shí)器。首先,我們需要導(dǎo)入我們的庫(kù)并創(chuàng)建一個(gè)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è)備和客戶端對(duì)象以供以后使用。

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ù)來(lái)檢索設(shè)備和客戶端對(duì)象。從那里我們可以打開(kāi)相機(jī)應(yīng)用程序,等待5秒鐘并拍照。真的就是這么簡(jiǎn)單!正如我之前說(shuō)過(guò)的,這只是復(fù)制您通常會(huì)做的事情,因此,如果您首先手動(dòng)進(jìn)行操作并寫(xiě)下步驟,則思考如何做事情是最好的。

六、創(chuàng)建定義搜索器

現(xiàn)在,我們可以做一些更復(fù)雜的事情,那就是要求瀏覽器找到特定單詞的定義,并截圖以將其保存在我們的計(jì)算機(jī)上。

該程序的基本流程如下:

1.打開(kāi)瀏覽器

2.單擊搜索欄

3.輸入搜索查詢

4.等待幾秒鐘

5.截圖并保存

但是,在我們開(kāi)始之前,您需要在默認(rèn)瀏覽器中找到搜索欄的坐標(biāo),您可以使用我之前建議的方法輕松地找到它們。對(duì)我來(lái)說(shuō),他們是(440,200)。

首先,我們將必須導(dǎo)入與以前相同的庫(kù),并且我們還將具有相同的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)分配一個(gè)變量。注意這是一個(gè)字符串,而不是列表或元組,這樣我們可以輕松地將坐標(biāo)合并到我們的shell命令中。我們還可以從用戶那里獲取輸入信息,以查看他們想要獲取哪個(gè)單詞的定義:

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}'

我們會(huì)將查詢添加到完整的句子中,然后對(duì)其進(jìn)行搜索,這樣我們就可以始終獲取定義。之后,我們可以打開(kāi)瀏覽器,然后將搜索查詢輸入到搜索欄中,如下所示:

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í)間。

最后,我們將在設(shè)備對(duì)象上使用screencap方法獲取屏幕截圖,然后可以將其另存為* .png *文件:

screenshot = device.screencap()

with open('result.png', 'wb') as f: # save the screenshot as result.png
    f.write(screenshot)
    print('Saved screenshot!')

在這里,我們必須以寫(xiě)字節(jié)模式打開(kāi)文件,因?yàn)閟creencap方法返回表示圖像的字節(jié)。

如果一切都按計(jì)劃進(jìn)行,則應(yīng)該有一個(gè)快速腳本來(lái)搜索特定單詞。這在我的手機(jī)上正常工作:

在這里插入圖片描述

七、最后的想法

希望您今天學(xué)到了一些新知識(shí),在我對(duì)此進(jìn)行研究之前,我個(gè)人甚至都不知道這是一回事。很酷的事情是,您可以執(zhí)行平??梢宰龅娜魏问虑?,而且還可以做更多的事,因?yàn)樗皇悄M您自己的觸摸和動(dòng)作!

希望您喜歡這篇文章,并感謝您的閱讀! 💖

到此這篇關(guān)于教你用python控制安卓手機(jī)的文章就介紹到這了,更多相關(guān)用python控制手機(jī)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python機(jī)器學(xué)習(xí)邏輯回歸隨機(jī)梯度下降法

    python機(jī)器學(xué)習(xí)邏輯回歸隨機(jī)梯度下降法

    這篇文章主要為大家介紹了python機(jī)器學(xué)習(xí)邏輯回歸隨機(jī)梯度下降法的詳細(xì)講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-11-11
  • python transpose()處理高維度數(shù)組的軸變換的實(shí)現(xiàn)

    python transpose()處理高維度數(shù)組的軸變換的實(shí)現(xiàn)

    本文主要介紹了python transpose()處理高維度數(shù)組的軸變換的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-09-09
  • Python開(kāi)發(fā)加薪利器之Docker的使用實(shí)踐

    Python開(kāi)發(fā)加薪利器之Docker的使用實(shí)踐

    docker利用容器技術(shù),獨(dú)立運(yùn)行一個(gè)或者一組應(yīng)用,docker是基于go語(yǔ)言開(kāi)發(fā),docker鏡像好比是一個(gè)模版,可以通過(guò)這個(gè)模版來(lái)創(chuàng)建容器服務(wù),今天通過(guò)本文給大家分享Docker的使用實(shí)踐,感興趣的朋友跟隨小編一起看看吧
    2021-05-05
  • python中windows鏈接linux執(zhí)行命令并獲取執(zhí)行狀態(tài)的問(wèn)題小結(jié)

    python中windows鏈接linux執(zhí)行命令并獲取執(zhí)行狀態(tài)的問(wèn)題小結(jié)

    這篇文章主要介紹了python中windows鏈接linux執(zhí)行命令并獲取執(zhí)行狀態(tài),由于工具是pyqt寫(xiě)的所以牽扯到用python鏈接linux的問(wèn)題,這里記錄一下一些碰到的問(wèn)題,需要的朋友可以參考下
    2022-11-11
  • Python3爬蟲(chóng)RedisDump的安裝步驟

    Python3爬蟲(chóng)RedisDump的安裝步驟

    在本篇文章里小編給大家整理的是一篇關(guān)于Python3爬蟲(chóng)RedisDump的安裝步驟,有興趣的朋友們可以學(xué)習(xí)參考下。
    2021-02-02
  • 用python實(shí)現(xiàn)一個(gè)讓人戒不掉的百變款消消樂(lè)

    用python實(shí)現(xiàn)一個(gè)讓人戒不掉的百變款消消樂(lè)

    消消樂(lè)的熱門(mén)程度幾乎趕上王者榮耀,你是否也有收到過(guò)好友邀請(qǐng)你幫解鎖關(guān)卡的時(shí)候,今天小編帶你用python編寫(xiě)一個(gè)自己的消消樂(lè)升級(jí)版,同學(xué)請(qǐng)往下看
    2021-09-09
  • OpenCV-Python使用cv2實(shí)現(xiàn)傅里葉變換

    OpenCV-Python使用cv2實(shí)現(xiàn)傅里葉變換

    在OpenCV中,我們通過(guò)cv2.dft()來(lái)實(shí)現(xiàn)傅里葉變換,使用cv2.idft()來(lái)實(shí)現(xiàn)逆傅里葉變換。本文就詳細(xì)的介紹一下這兩種用法,感興趣的可以了解一下
    2021-06-06
  • Python設(shè)計(jì)模式之狀態(tài)模式原理與用法詳解

    Python設(shè)計(jì)模式之狀態(tài)模式原理與用法詳解

    這篇文章主要介紹了Python設(shè)計(jì)模式之狀態(tài)模式原理與用法,簡(jiǎn)單描述了狀態(tài)模式的概念、原理并結(jié)合實(shí)例形式分析了Python實(shí)現(xiàn)與使用狀態(tài)模式的相關(guān)操作技巧,需要的朋友可以參考下
    2019-01-01
  • Python有參函數(shù)使用代碼實(shí)例

    Python有參函數(shù)使用代碼實(shí)例

    這篇文章主要介紹了Python有參函數(shù)使用代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • Pytorch 中net.train 和 net.eval的使用說(shuō)明

    Pytorch 中net.train 和 net.eval的使用說(shuō)明

    這篇文章主要介紹了Pytorch 中net.train 和 net.eval的使用說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05

最新評(píng)論