最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

通過Python實現(xiàn)控制手機詳解

 更新時間:2021年10月08日 10:41:38   作者:初遇我ㄖ寸の熱情呢?  
如今python是非常多人學習的,而手機也幾乎人手一部。對于很多Python學習者,想用python來完成android手機中各種炫酷的的控制,adb是必不可缺少的工具之一

在這里插入圖片描述

幾天前我在考慮使用 python 從 whatsapp 發(fā)送消息。和你們一樣,我開始潛伏在互聯(lián)網上尋找一些解決方案并找到了關于twilio. 一開始,是一個不錯的解決方案,但它不是免費的,我必須購買一個 twilio 電話號碼。此外,我無法在互聯(lián)網上找到任何可用的 whatsapp API。所以我放棄了使用 twilio 和任何其他 whatsapp API 的想法。在想了很多之,打開 android studio,我連接了我的手機,然后開始了這個過程。當應用程序構建時,我想到了使用手機本身自動發(fā)送 whatsapp 消息的想法。我搜索了一些差不多的東西,發(fā)現(xiàn)了一些很有可能解決我的問題的東西。我找到了一個命令行工具,adb它可以幫助人們在不接觸手機的情況下控制手機。

你應該擁有的東西

  • 對 Python 的基本理解
  • 一些空閑時間閱讀此博客

安裝

首先,轉到此鏈接并在您的系統(tǒng)中下載 adb。
解壓文件夾并將 adb 放入環(huán)境變量中。下面是在環(huán)境變量中添加 adb 的完整過程,

在這里插入圖片描述

  • 在您的手機中啟用 USB 調試,并使用 USB 電纜將您的手機與 PC 連接。
  • 通過打開 cmd 并鍵入,檢查連接是否正確adb devices。您將在連接的設備列表中看到一個設備。
  • 如果您可以看到您的設備,那么您可以打開任何代碼編輯器。我正在使用 Visual Studio 代碼。

開始

讓我們首先導入一些我們需要的依賴項。您可以使用pip.

import cv2
import subprocess

我們將需要子進程通過命令行調用 adb 并獲取輸出,我們需要 cv2 進行一些圖像處理,以便 python 能夠點擊屏幕或任何其他任務。
現(xiàn)在讓我們在下面創(chuàng)建一個名為 adb 的基本函數(shù),

def adb(command):
    proc = subprocess.Popen(command.split(' '), stdout=subprocess.PIPE, shell=True)
    (out, _) = proc.communicate()
    return out.decode('utf-8')

上面的函數(shù)基本上是通過子進程調用 adb 并檢索我們將需要的輸出。

輕敲

現(xiàn)在讓我們編寫代碼,其中 python 將單擊移動設備的屏幕。所以我們將創(chuàng)建一個名為 tap 的函數(shù),它會點擊屏幕上的特定位置。

def tap(tap_x, tap_y):
    adb("adb shell input tap {} {}".format(tap_x, tap_y))
tap(100,100)

這將單擊距 x 100 像素和距 y 100 像素?,F(xiàn)在您一定在想,為每個命令硬編碼坐標是非常困難的,并且當設備改變時它不會工作,這就是為什么在本博客的下一節(jié)中我們將使用圖像處理來檢測坐標自動地。

截圖

def take_screenshot(final):
    adb(f"adb exec-out screencap -p > ./images/{final}.png")

代碼很簡單。我們制作了一個功能,可以保存手機內部圖像目錄的屏幕截圖。在函數(shù)中,我們可以傳遞圖像文件的名稱。

高級點擊

現(xiàn)在,我們將使用目標圖像來自動檢測坐標,而不是傳遞坐標。為了更好地理解這一點,讓我們舉個例子,我有這個屏幕 ,我想打開我們中間的應用程序,然后將使用一個稱為. 通過這個過程,我們將截取屏幕截圖 > 使用模板匹配計算我們中間圖標的坐標 > 點擊那里

在這里插入圖片描述

TemplateMatching

ef image_position(small_image, big_image):
    img_rgb = cv2.imread(big_image)
    img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)
    template = cv2.imread(small_image, 0)
    height, width = template.shape[::]
    res = cv2.matchTemplate(img_gray, template, cv2.TM_SQDIFF)
    _, _, top_left, _ = cv2.minMaxLoc(res)
    bottom_right = (top_left[0] + width, top_left[1] + height)
    return (top_left[0]+bottom_right[0])//2, (top_left[1]+bottom_right[1])//2

screen="screen"
take_screenshot(screen)
x, y  = image_position("images/among_us_icon.png", f"images/{screen}")
click(x,y)
# WOWWW Python successfully opened among us app.

有了上面的代碼,即使你在手機屏幕上改變了我們游戲的位置,python仍然可以打開游戲。

在這里插入圖片描述

我們還能做什么?

你可以用 adb 和 python 做更多的事情。讓我們談談其中的一些。

滑動

def swipe(start_x, start_y, end_x, end_y, duration_ms):
    adb("adb shell input swipe {} {} {} {} {}".format(start_x, start_y, end_x, end_y, duration_ms))

打電話給某人

def call(number):
    adb(f"adb shell am start -a android.intent.action.CALL -d tel:{number}")
call('+91xxxxxxxxxx') # +[CODE][NUMBER]

從手機下載文件到電腦

在這里插入圖片描述

def download(path, output_path):
    adb(f"adb pull {path} {output_path}")
從手機中刪除文件
def remove(path):
    adb(f"adb shell rm {path}") #/sdcard/...

手機錄屏

# name is the video_file name and time is the seconds you want to record
def screen_record(name, time):
    adb(f"adb shell screenrecord /sdcard/{name} --time-limit {time}")
    download(f"/sdcard/{name}",f"./mobile/{name}")
    remove(f"/sdcard/{name}")

打開手機

def switch_phone_on_off():
    adb("adb shell input keyevent 26")

還有更多類似 26 的關鍵事件。如果您想知道,請訪問此鏈接。

打開網址

def open_url(url):
    adb(f'adb shell am start -a android.intent.action.VIEW -d {url}')
open_url("https://www.google.co.in/")

發(fā)送 Whatsapp 消息

好的,所以我覺得這很酷。在獲得了所有這些基本的理解之后,我們已經解決了我的主要問題,即發(fā)送沒有二維碼的 whatsapp 消息,沒有像 twilio 這樣的付費方法。這有點棘手,但它在我的手機上工作。我希望它也適用于你的。

def send_whatsapp_message(phone, message):
    adb(f'adb shell am start -a android.intent.action.VIEW -d "https://api.whatsapp.com/send?phone={phone}"') # Opening whatsapp url
    adb('ping 127.0.0.1 -n 2 > nul') # delay
    adb(f'adb shell input text "{message}"')  # entering message
    adb('adb shell keyevent 22') # Right arrow
    adb('adb shell keyevent 22') # Right arrow
    adb('adb shell input keyevent 22') # Right arrow 
    adb('adb shell input keyevent 22') # Right arrow
    adb('adb shell input keyevent 66') # Enter Key

send_whatsapp_message('+91xxxxxxxxxx', 'blah blah blah')

消息已發(fā)送!

在這里插入圖片描述

到此這篇關于通過Python實現(xiàn)控制手機詳解的文章就介紹到這了,更多相關Python 控制手機內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python?Flask框架實現(xiàn)Proteus仿真Arduino與網頁數(shù)據(jù)交互

    Python?Flask框架實現(xiàn)Proteus仿真Arduino與網頁數(shù)據(jù)交互

    這篇文章主要介紹了Python?Flask框架實現(xiàn)Proteus仿真Arduino與網頁數(shù)據(jù)交互,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2022-11-11
  • Python實現(xiàn)的金山快盤的簽到程序

    Python實現(xiàn)的金山快盤的簽到程序

    正在學習python而且自己一直在用金山快盤,所以就寫來個簽到的功能,每天定時跑
    2013-01-01
  • python中torch.nn.identity()方法詳解

    python中torch.nn.identity()方法詳解

    今天看源碼時遇到的這個恒等函數(shù),就如同名字那樣占位符,并沒有實際操作,下面這篇文章主要給大家介紹了關于python中torch.nn.identity()方法的相關資料,需要的朋友可以參考下
    2022-03-03
  • Python實現(xiàn)全自動輸入文本的示例詳解

    Python實現(xiàn)全自動輸入文本的示例詳解

    這篇文章主要和大家分享一個Python全自動輸入文本的腳本,可以實現(xiàn)自動用Notepad++打開文本文件,然后自動輸入文本,最后保存并關閉文件,從而實現(xiàn)全面自動化處理文本,希望對大家有所幫助
    2022-11-11
  • Python enumerate內置庫用法解析

    Python enumerate內置庫用法解析

    這篇文章主要介紹了Python enumerate內置庫用法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-02-02
  • 78行Python代碼實現(xiàn)現(xiàn)微信撤回消息功能

    78行Python代碼實現(xiàn)現(xiàn)微信撤回消息功能

    這篇文章主要介紹了78行Python代碼實現(xiàn)現(xiàn)微信撤回消息功能,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-07-07
  • 深入理解python協(xié)程

    深入理解python協(xié)程

    協(xié)程又稱為微線程,協(xié)程是一種用戶態(tài)的輕量級線程,它是實現(xiàn)多任務的另一種方式,只不過是比線程更小的執(zhí)行單元。因為它自帶CPU的上下文,這樣只要在合適的時機,我們可以把一個協(xié)程切換到另一個協(xié)程
    2021-06-06
  • python開發(fā)之函數(shù)定義實例分析

    python開發(fā)之函數(shù)定義實例分析

    這篇文章主要介紹了python開發(fā)之函數(shù)定義方法,以實例形式較為詳細的分析了Python中函數(shù)的定義與使用技巧,需要的朋友可以參考下
    2015-11-11
  • 簡單實現(xiàn)python數(shù)獨游戲

    簡單實現(xiàn)python數(shù)獨游戲

    這篇文章主要為大家詳細介紹了如何簡單實現(xiàn)python數(shù)獨游戲,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • 深入講解Python函數(shù)中參數(shù)的使用及默認參數(shù)的陷阱

    深入講解Python函數(shù)中參數(shù)的使用及默認參數(shù)的陷阱

    這篇文章主要介紹了Python函數(shù)中參數(shù)的使用及默認參數(shù)的陷阱,文中將函數(shù)的參數(shù)分為必選參數(shù)、默認參數(shù)、可變參數(shù)和關鍵字參數(shù)來講,要的朋友可以參考下
    2016-03-03

最新評論

长治市| 高邑县| 玉环县| 玉门市| 中西区| 黄山市| 曲阳县| 长垣县| 监利县| 攀枝花市| 京山县| 兰溪市| 乐业县| 无棣县| 巩义市| 易门县| 徐水县| 新巴尔虎左旗| 宜都市| 龙川县| 陇南市| 宜兴市| 沙洋县| 秭归县| 华池县| 乌兰县| 南漳县| 金乡县| 宝兴县| 沙坪坝区| 遂宁市| 富民县| 西充县| 嘉祥县| 台江县| 浮山县| 乃东县| 康定县| 当涂县| 山东省| 集贤县|