亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python編程控制Android手機操作技巧示例

 更新時間:2021年10月08日 09:00:23   作者:初遇我ㄖ寸の熱情呢?  
這篇文章主要為大家介紹了如何利用python編程來實現(xiàn)控制手機的操作技巧,文中含有各種操作的示例,有需要的朋友可以借鑒參考下

在這里插入圖片描述

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

你應(yīng)該擁有的東西

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

安裝

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

在這里插入圖片描述

在您的手機中啟用 USB 調(diào)試,并使用 USB 電纜將您的手機與 PC 連接。

通過打開 cmd 并鍵入,檢查連接是否正確adb devices。您將在連接的設(shè)備列表中看到一個設(shè)備。

如果您可以看到您的設(shè)備,那么您可以打開任何代碼編輯器。我正在使用 Visual Studio 代碼。

開始

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

import cv2
import subprocess

我們將需要子進程通過命令行調(diào)用 adb 并獲取輸出,我們需要 cv2 進行一些圖像處理,以便 python 能夠點擊屏幕或任何其他任務(wù)。
現(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ù)基本上是通過子進程調(diào)用 adb 并檢索我們將需要的輸出。

輕敲

現(xiàn)在讓我們編寫代碼,其中 python 將單擊移動設(shè)備的屏幕。所以我們將創(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)在您一定在想,為每個命令硬編碼坐標是非常困難的,并且當(dāng)設(shè)備改變時它不會工作,這就是為什么在本博客的下一節(jié)中我們將使用圖像處理來檢測坐標自動地。

截圖

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

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

高級點擊

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

在這里插入圖片描述

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 做更多的事情。讓我們談?wù)勂渲械囊恍?/p>

滑動

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 的關(guān)鍵事件。如果您想知道,請訪問此鏈接。

打開網(wǎng)址

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 消息

好的,所以我覺得這很酷。在獲得了所有這些基本的理解之后,我們已經(jīng)解決了我的主要問題,即發(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編程控制Android手機操作技巧示例的詳細內(nèi)容,更多關(guān)于Python控制Android手機的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python+selenium 定位到元素,無法點擊的解決方法

    python+selenium 定位到元素,無法點擊的解決方法

    今天小編就為大家分享一篇python+selenium 定位到元素,無法點擊的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • python——全排列數(shù)的生成方式

    python——全排列數(shù)的生成方式

    今天小編就為大家分享一篇python——全排列數(shù)的生成方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • 2023年最新版Python?3.12.0安裝使用指南(推薦!)

    2023年最新版Python?3.12.0安裝使用指南(推薦!)

    這篇文章主要給大家介紹了關(guān)于2023年最新版Python?3.12.0安裝使用的相關(guān)資料,Python?現(xiàn)在是非常流行的編程語言,當(dāng)然并不是說Python語言性能多么強大,而是Python使用非常方便,特別是現(xiàn)在AI和大數(shù)據(jù)非常流行,用?Python?實現(xiàn)是非常容易的,需要的朋友可以參考下
    2023-10-10
  • Python編程中對super函數(shù)的正確理解和用法解析

    Python編程中對super函數(shù)的正確理解和用法解析

    可能有人會想到,Python中既然可以直接通過父類名調(diào)用父類方法為什么還會存在super函數(shù)?其實,很多人對Python中的super函數(shù)的認識存在誤區(qū),本文我們就帶來在Python編程中對super函數(shù)的正確理解和用法解析
    2016-07-07
  • 關(guān)于Python中的main方法教程

    關(guān)于Python中的main方法教程

    估計很多人跟我一樣初學(xué)python看代碼的時候先找一下main()方法,從main往下看。但事實上python中是沒有你理解中的“main()”方法的,一起來看看吧
    2023-03-03
  • Python和Anaconda和Pycharm安裝教程圖文詳解

    Python和Anaconda和Pycharm安裝教程圖文詳解

    PyCharm是一種PythonIDE,帶有一整套可以幫助用戶在使用Python語言開發(fā)時提高其效率的工具,這篇文章主要介紹了Python和Anaconda和Pycharm安裝教程,需要的朋友可以參考下
    2020-02-02
  • python教程網(wǎng)絡(luò)爬蟲及數(shù)據(jù)可視化原理解析

    python教程網(wǎng)絡(luò)爬蟲及數(shù)據(jù)可視化原理解析

    這篇文章主要為大家介紹了python教程中網(wǎng)絡(luò)爬蟲及數(shù)據(jù)可視化原理的示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪
    2021-10-10
  • 以Flask為例講解Python的框架的使用方法

    以Flask為例講解Python的框架的使用方法

    這篇文章主要介紹了Python的框架的使用方法,文中以Flask框架的安裝為例進行講解,代碼基于Python2.x版本,需要的朋友可以參考下
    2015-04-04
  • python 名稱空間與作用域詳情

    python 名稱空間與作用域詳情

    這篇文章主要介紹了python 名稱空間與作用域詳情,函數(shù)內(nèi)部的函數(shù)只能在函數(shù)內(nèi)部調(diào)用,不能在函數(shù)外部調(diào)用,通過接下來的學(xué)習(xí)你將會知道為什么會出現(xiàn)這種情況。

    2021-10-10
  • Pandas繪圖函數(shù)超詳細講解

    Pandas繪圖函數(shù)超詳細講解

    matplotlib要組裝一張圖表,需要的各個基礎(chǔ)組件對象。相對工作量較大,但在pandas中我們有行標簽和列標簽以及分組信息。原本制作一張圖表需要一大堆matplotlib代碼。在pandas中只需要一兩條代碼就可以了,今天記錄一下,pandas中常見的幾個繪制圖表的方法
    2022-12-12

最新評論