婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > python編寫adb截圖工具的實現源碼

python編寫adb截圖工具的實現源碼

熱門標簽:湛江智能外呼系統廠家 西藏房產智能外呼系統要多少錢 ai電銷機器人源碼 百度地圖標注沒有了 地圖標注審核表 長沙高頻外呼系統原理是什么 ai電話機器人哪里好 宿遷星美防封電銷卡 外呼并發線路

一、 功能

Android端或者Android終端的遠程截圖至本地電腦中

二、使用說明

1.adb截圖工具可用于Android手機及Android終端
2.使用數據線連接前提:電腦與Android終端/手機已連接
Android終端/手機已打開開發者模式
3.生成的圖片格式為png

三、實現

1.初始源碼

import time
import os,sys

#截圖
def screencap_cmd(filePath,devices=None):
    if filePath==None:
        filePath='D:/png/'
    if not os.path.exists(filePath):
        os.makedirs(filePath)
    filename=time.strftime("%Y%m%d%H%M%S",time.localtime())+".png"
    if devices==None:
        cmd_screencap='adb shell screencap -p sdcard/'+filename
        cmd_pull='adb pull sdcard/'+filename+' '+filePath+filename
        cmd_delete='adb shell rm sdcard/'+filename
    else:
        cmd_screencap='adb -s '+devices+' shell screencap -p sdcard/'+filename
        cmd_pull='adb -s '+devices+' pull sdcard/'+filename+' '+filePath+filename
        cmd_delete='adb -s '+devices+' shell rm sdcard/'+filename
    os.system(cmd_screencap)
    os.system(cmd_pull)
    os.system(cmd_delete)
#保存地址判斷及設備信息分類調用
def screencap_info(devices=None,filePath=None):
    if filePath==None:
        filePath='D:/png/'
    if not os.path.exists(filePath):
        os.makedirs(filePath)
    if devices==None:
        screencap_cmd(filePath)
        adb_device_none(filePath)
    else:
        screencap_cmd(filePath,devices)
        adb_info(devices,filePath)
#更換設備
def change_devices():
    r=os.popen("adb devices")
    lines=r.readlines()
    lines=lines[1:-1]
    n=len(lines)
    for i in lines:
        print(i.split("\t")[0])
    devices=input("請輸入指定設備:\n")
    for i in lines:
        if devices in i:
            return devices
    print("未找到改設備請重新輸入!")
    change_devices()
#截圖命令判斷,電腦連接多個設備或使用IP截圖時
def adb_info(lines,filePath=None):    
    s=input("是否截圖(T/F/N)?\n")
    if s=='t' or s=='T':
        if filePath==None:
            screencap_info(lines)
        else:
            screencap_info(lines,filePath)
    elif s=='N' or s=='n' or s=='exit':
        sys.exit()
    elif s=='F' or s=='f':
        devices=change_devices()
        if filePath==None:
            adb_info(devices)
        else:
            adb_info(devices,filePath)    
 #截圖命令判斷,電腦連接僅連接一個設備時  
def adb_device_none(filePath=None):
    s=input("是否截圖(T/F/N)?\n")
    if s=='t' or s=='T':
        if filePath==None:
            screencap_info()
        else:
            screencap_info(None,filePath)
    elif s=='N' or s=='n' or s=='exit':
        sys.exit()
    elif s=='F' or s=='f':
        devices=change_devices()
        if filePath==None:
            adb_info(devices)
        else:
            adb_info(devices,filePath)
#使用設備判斷
def adb_devices(n,lines,filePath=None):
    if n==0:
        print("請檢查是否已接連或啟動調試模式或安裝adb環境")
        s=input("再次啟動(T/F)?\n")
        if s=='t' or s=='T':
            r=os.popen("adb devices")
            lines=r.readlines()
            lines=lines[1:-1]
            n=len(lines)
            adb_devices(n,r.readlines())
        else:
            sys.exit()
    elif ":5555" in lines:
        print("T:截圖  F:更換設備 exit|N:退出 ")
        if filePath==None:
            adb_info(lines)
        else:
            adb_info(lines,filePath)   
    elif n==1:
        print("T:截圖  F:更換設備  exit|N:退出")
        if filePath==None:
            adb_device_none()
        else:
            adb_device_none(filePath)    
    elif n>1:
        for i in lines:
            print(i.split("\t")[0])
        devices=input("請輸入指定設備:\n")
        for i in lines:
            if devices in i:
                print("T:截圖  F:更換設備  exit|N:退出")
                if filePath==None:
                    adb_info(devices)
                else:
                    adb_info(devices,filePath)  
        print("未找到改設備請重新輸入!")
        if filePath==None:
            adb_devices(n,lines)
        else:  
            adb_devices(n,lines,filePath)

#輸入IP
def ip_info():
    ipPath=input("請輸入IP:(不輸入enter跳過默認使用數據線連接)\n")
    if len(ipPath)>0:
        try:
            cnd='adb connect '+ipPath
            os.system(cnd)
            return ipPath
        except:
            print("ADB調試模式為USB,需要切換到無線調試模式\n")
            print("切換方法:\n第一步:Android設備開啟USB調試,并且通過USB線連接到電腦\n第二步:在終端執行以下命令”adb tcpip 5555“\n第三步:在終端執行以下命令”adb connect ip“。此時拔出USB線,應該就可以adb通過wifi調試設備\n")
            return ip_info()
if  __name__ == '__main__':
    ipPath=ip_info()
    filePath=input("請輸入保存地址:(不輸入enter跳過,默認保存至D:\png\)\n")
    #查詢當前連接的設備
    r=os.popen("adb devices")
    lines=r.readlines()
    lines=lines[1:-1]
    n=len(lines)
    ip_add=0
    if ipPath!=None:
        for i in lines:
            if ipPath in i:
                ip_add=i.split("\t")[0]
    if len(filePath)>0:
        if ":\\" in filePath:
            if ip_add!=0:
                adb_devices(n,ip_add,filePath)
            else:
                adb_devices(n,lines,filePath)
        else:
            print("地址輸入非法,使用默認地址\n")
            if ip_add!=0:
                adb_devices(n,ip_add)
            else:
                adb_devices(n,lines)
    else:
        if ip_add!=0:
            adb_devices(n,ip_add) 
        else:
            adb_devices(n,lines) 

2.優化:增加ip連接斷開重連處理

在輸入ip函數ip_info()增加ip連接判斷,將os.system替換成os.popen函數執行cmd命令:

r=os.popen(cnd)
#讀取執行結果
lines=r.readlines()[0]
if 'unable' in lines:
    print("連接失敗\n")
    return ip_info()
else:
    return ipPath
  1. os.system函數無法獲取執行結果,只能獲取執行成功或失敗的結果,成功返回0,失敗返回1,且會執行的結果打印在終端上,相當于調起dos執行命令
  2. os.popen函數可獲取執行的結果內容,但獲取的結果要進行readlines讀取,執行的結果不會打印在終端上

在輸入ip函數ip_info()增加ip連接判斷,將os.system替換成os.popen函數執行cmd命令:

a=os.system(cmd_screencap)
if a==0:
   os.system(cmd_pull)
   os.system(cmd_delete)
else:
   if ":5555" in devices:
            print("連接斷開,請重新連接\n")
            ipPath=ip_info()
            if ipPath==None:
                ipPath=ip_info()
            else:
                device=ipPath+":5555"
                adb_info(device,filePath)
        else:
            print("設備連接斷開,請更換設備\n")
            device=change_devices()
            adb_info(device,filePath)

3.最終源碼

import time
import os,sys

#輸入IP
def ip_info():
    ipPath=input("請輸入IP:(不輸入enter跳過默認使用數據線連接)\n")
    if len(ipPath)>0:
        try:
            cnd='adb connect '+ipPath
            r=os.popen(cnd)
            lines=r.readlines()[0]
            if 'unable' in lines:
                print("連接失敗\n")
                return ip_info()
            else:
                return ipPath

        except:
            print("ADB調試模式為USB,需要切換到無線調試模式\n")
            print("切換方法:\n第一步:Android設備開啟USB調試,并且通過USB線連接到電腦\n第二步:在終端執行以下命令”adb tcpip 5555“\n第三步:在終端執行以下命令”adb connect ip“。此時拔出USB線,應該就可以adb通過wifi調試設備\n")
            return ip_info()
#保存地址判斷及設備信息分類調用
def screencap_info(devices=None,filePath=None):
    if filePath==None:
        filePath='D:/png/'
    if not os.path.exists(filePath):
        os.makedirs(filePath)
    if devices==None:
        screencap_cmd(filePath)
        adb_device_none(filePath)
    else:
        screencap_cmd(filePath,devices)
        adb_info(devices,filePath)
#更換設備
def change_devices():
    r=os.popen("adb devices")
    lines=r.readlines()
    lines=lines[1:-1]
    n=len(lines)
    for i in lines:
        print(i.split("\t")[0])
    devices=input("請輸入指定設備:\n")
    for i in lines:
        if devices in i:
            return devices
    print("未找到改設備請重新輸入!\n")
    change_devices()
#截圖命令判斷,電腦連接多個設備或使用IP截圖時
def adb_info(lines,filePath=None):    
    s=input("是否截圖(T/F/N)?\n")
    if s=='t' or s=='T':
        if filePath==None:
            screencap_info(lines)
        else:
            screencap_info(lines,filePath)
    elif s=='N' or s=='n' or s=='exit':
        sys.exit()
    elif s=='F' or s=='f':
        devices=change_devices()
        if filePath==None:
            adb_info(devices)
        else:
            adb_info(devices,filePath)    
#截圖命令判斷,電腦連接僅連接一個設備時  
def adb_device_none(filePath=None):
    s=input("是否截圖(T/F/N)?\n")
    if s=='t' or s=='T':
        if filePath==None:
            screencap_info()
        else:
            screencap_info(None,filePath)
    elif s=='N' or s=='n' or s=='exit':
        sys.exit()
    elif s=='F' or s=='f':
        devices=change_devices()
        if filePath==None:
            adb_info(devices)
        else:
            adb_info(devices,filePath)
#使用設備判斷
def adb_devices(n,lines,filePath=None):
    if n==0:
        print("請檢查是否已接連或啟動調試模式或安裝adb環境\n")
        s=input("再次啟動(T/F)?\n")
        if s=='t' or s=='T':
            r=os.popen("adb devices")
            lines=r.readlines()
            lines=lines[1:-1]
            n=len(lines)
            adb_devices(n,r.readlines())
        else:
            sys.exit()
    elif ":5555" in lines:
        print("T:截圖  F:更換設備 exit|N:退出\n")
        if filePath==None:
            adb_info(lines)
        else:
            adb_info(lines,filePath)   
    elif n==1:
        print("T:截圖  F:更換設備  exit|N:退出\n")
        if filePath==None:
            adb_device_none()
        else:
            adb_device_none(filePath)    
    elif n>1:
        for i in lines:
            print(i.split("\t")[0])
        devices=input("請輸入指定設備:\n")
        for i in lines:
            if devices in i:
                print("T:截圖  F:更換設備  exit|N:退出")
                if filePath==None:
                    adb_info(devices)
                else:
                    adb_info(devices,filePath)  
        print("未找到改設備請重新輸入!")
        if filePath==None:
            adb_devices(n,lines)
        else:  
            adb_devices(n,lines,filePath)
#截圖
def screencap_cmd(filePath,devices=None):
    if filePath==None:
        filePath='D:/png/'
    if not os.path.exists(filePath):
        os.makedirs(filePath)
    filename=time.strftime("%Y%m%d%H%M%S",time.localtime())+".png"
    if devices==None:
        cmd_screencap='adb shell screencap -p sdcard/'+filename
        cmd_pull='adb pull sdcard/'+filename+' '+filePath+filename
        cmd_delete='adb shell rm sdcard/'+filename
    else:
        cmd_screencap='adb -s '+devices+' shell screencap -p sdcard/'+filename
        cmd_pull='adb -s '+devices+' pull sdcard/'+filename+' '+filePath+filename
        cmd_delete='adb -s '+devices+' shell rm sdcard/'+filename
    a=os.system(cmd_screencap)
    if a==0:
        os.system(cmd_pull)
        os.system(cmd_delete)
    else:
        if ":5555" in devices:
            print("連接斷開,請重新連接\n")
            ipPath=ip_info()
            if ipPath==None:
                ipPath=ip_info()
            else:
                device=ipPath+":5555"
                adb_info(device,filePath)
        else:
            print("設備連接斷開,請更換設備\n")
            device=change_devices()
            adb_info(device,filePath)
if  __name__ == '__main__': 
    ipPath=ip_info()
    filePath=input("請輸入保存地址:(不輸入enter跳過,默認保存至D:\png\)\n")
    #查詢當前連接的設備
    r=os.popen("adb devices")
    lines=r.readlines()
    lines=lines[1:-1]
    n=len(lines)
    ip_add=0
    if ipPath!=None:
        for i in lines:
            if ipPath in i:
                ip_add=i.split("\t")[0]
    if len(filePath)>0:
        if ":\\" in filePath:
            if ip_add!=0:
                adb_devices(n,ip_add,filePath)
            else:
                adb_devices(n,lines,filePath)
        else:
            print("地址輸入非法,使用默認地址\n")
            if ip_add!=0:
                adb_devices(n,ip_add)
            else:
                adb_devices(n,lines)
    else:
        if ip_add!=0:
            adb_devices(n,ip_add) 
        else:
            adb_devices(n,lines) 

到此這篇關于python編寫adb截圖工具的文章就介紹到這了,更多相關python adb截圖工具內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Python腳本利用adb進行手機控制的方法
  • python3 adb 獲取設備序列號的實現
  • python+adb命令實現自動刷視頻腳本案例
  • 通過python調用adb命令對App進行性能測試方式
  • 通過Python實現控制手機詳解

標簽:漯河 南平 林芝 寧夏 普洱 大同 盤錦 海南

巨人網絡通訊聲明:本文標題《python編寫adb截圖工具的實現源碼》,本文關鍵詞  python,編寫,adb,截圖,工具,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《python編寫adb截圖工具的實現源碼》相關的同類信息!
  • 本頁收集關于python編寫adb截圖工具的實現源碼的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲一区二区三区四区在线观看| 成人一区二区三区视频在线观看| 中文字幕乱码亚洲精品一区| 亚洲第一激情av| 伊人开心综合网| hitomi一区二区三区精品| 欧美精品久久天天躁| 午夜精品福利一区二区蜜股av| 不卡视频一二三四| 久久亚洲一区二区三区明星换脸| 国产一区二区三区蝌蚪| 日韩一级完整毛片| 国产一区二区精品久久91| 欧美一卡2卡三卡4卡5免费| 337p粉嫩大胆噜噜噜噜噜91av| 国产精品小仙女| 日韩久久精品一区| 免费观看成人鲁鲁鲁鲁鲁视频| 精品一区二区三区的国产在线播放| 91福利国产成人精品照片| 国产免费成人在线视频| 色综合久久天天| 成人欧美一区二区三区在线播放| 精品视频全国免费看| 亚洲精品中文字幕在线观看| 日本vs亚洲vs韩国一区三区二区| 欧美日本在线播放| 日本不卡高清视频| 成人免费视频在线观看| 精品综合久久久久久8888| 久久久久久麻豆| 国内精品视频一区二区三区八戒| 国产精品私人影院| 一本到不卡免费一区二区| 日韩影院精彩在线| 日韩视频一区二区三区 | 亚洲一区二区三区国产| 99r国产精品| 亚洲愉拍自拍另类高清精品| 欧美变态tickle挠乳网站| 蜜臀va亚洲va欧美va天堂| 精东粉嫩av免费一区二区三区| 精品人在线二区三区| 久久99久久久欧美国产| 亚洲黄网站在线观看| 欧美午夜精品久久久久久超碰| 日韩在线观看一区二区| 2023国产精品| 91成人在线观看喷潮| 亚洲国产视频在线| 在线精品视频一区二区| 激情文学综合网| 国产精品国产三级国产三级人妇| 欧美日韩国产经典色站一区二区三区 | 激情久久五月天| 尤物在线观看一区| 日韩欧美自拍偷拍| 欧美无人高清视频在线观看| 日韩精品1区2区3区| 亚洲人成在线播放网站岛国| 欧美性受极品xxxx喷水| 首页国产丝袜综合| 亚洲一区二区视频在线观看| 日韩精品一区二区三区在线播放 | 欧美色国产精品| 粉嫩av亚洲一区二区图片| 亚洲夂夂婷婷色拍ww47| 欧美亚州韩日在线看免费版国语版| 99精品视频在线免费观看| 美女性感视频久久| 久久99久久99| 一区二区三区.www| 一区二区久久久| 国产清纯白嫩初高生在线观看91 | 国产91精品精华液一区二区三区 | 波多野结衣视频一区| 国产不卡视频在线观看| 全国精品久久少妇| 韩国视频一区二区| 中文字幕在线不卡一区| 欧美二区乱c少妇| 国产大陆a不卡| 亚洲免费观看在线视频| 欧美精品久久久久久久多人混战| 日韩欧美不卡在线观看视频| 91免费观看国产| 韩国v欧美v亚洲v日本v| 国产成人av电影免费在线观看| 日韩av二区在线播放| 久久久久久久久久久久久女国产乱| 欧洲激情一区二区| 亚洲一区二区三区四区中文字幕| 色屁屁一区二区| 亚洲国产日日夜夜| 欧洲国产伦久久久久久久| 免费视频最近日韩| 精品国产免费人成电影在线观看四季| 成人精品国产福利| 国产精品嫩草影院av蜜臀| 亚洲国产欧美在线| 日韩精品一区国产麻豆| 成人永久aaa| 亚洲成va人在线观看| 午夜欧美在线一二页| 亚洲免费在线观看| **欧美大码日韩| 久久老女人爱爱| 久久99深爱久久99精品| 欧美女孩性生活视频| 国产精品久久久久永久免费观看| 亚洲视频免费在线| 美女诱惑一区二区| 欧美日韩激情一区二区三区| 亚洲精品视频一区| 蜜臀av性久久久久蜜臀aⅴ流畅| 欧美激情一区二区三区全黄| 美女mm1313爽爽久久久蜜臀| 国产精品18久久久久久久久久久久 | 亚洲免费观看高清完整版在线| 一区二区不卡在线视频 午夜欧美不卡在 | 成人午夜视频免费看| 亚洲国产视频一区二区| 亚洲午夜免费视频| 国产一区久久久| 91视频观看视频| 国内成人自拍视频| 欧美欧美午夜aⅴ在线观看| 丝瓜av网站精品一区二区| 91麻豆文化传媒在线观看| 欧美日韩国产另类一区| 亚洲国产电影在线观看| 国产高清在线观看免费不卡| 欧美乱妇15p| 麻豆精品新av中文字幕| 中文字幕国产一区| 天天av天天翘天天综合网色鬼国产 | 日韩午夜av一区| 久久奇米777| 日本一区二区三区免费乱视频| 日韩二区三区在线观看| 高清不卡一二三区| 精品日韩欧美一区二区| 北条麻妃国产九九精品视频| 欧美丰满美乳xxx高潮www| 亚洲自拍偷拍网站| 国产精品主播直播| 在线91免费看| 亚洲另类中文字| 国产成人在线电影| 91精品婷婷国产综合久久竹菊| 色噜噜狠狠色综合中国| 久久这里只有精品首页| 亚洲国产精品久久久久婷婷884 | 欧美一区二区三区系列电影| 午夜激情综合网| 久久国产福利国产秒拍| 欧美另类高清zo欧美| 国产日韩欧美综合在线| 精品一区二区三区在线观看国产| 色综合夜色一区| 欧美狂野另类xxxxoooo| 天堂在线一区二区| 国产99精品视频| 国产欧美一区二区精品性色| 精品999在线播放| 99综合影院在线| 亚洲国产精品久久不卡毛片| 成人18视频日本| 国产精品久久久久久久久动漫| 激情综合色播五月| 久久精品人人爽人人爽| 国产在线视频一区二区三区| 成人天堂资源www在线| 综合激情网...| 国产一区激情在线| 国产日韩欧美精品一区| 国内精品久久久久影院薰衣草| 久久精品男人天堂av| 狠狠色丁香久久婷婷综合_中| 欧美xxxx老人做受| 99久久精品国产毛片| 亚洲视频一区二区在线观看| av男人天堂一区| 亚洲男人都懂的| 92精品国产成人观看免费| 亚洲日本成人在线观看| 亚洲综合激情另类小说区| 日韩欧美在线不卡| 国产一区二区三区美女| 欧美国产精品久久| 91在线观看视频| 韩国一区二区三区| 欧美一区二区人人喊爽| 久久97超碰国产精品超碰| 亚洲精品一区二区三区精华液| 欧美性受xxxx黑人xyx性爽| 亚洲国产成人高清精品| 一本久道中文字幕精品亚洲嫩| 亚洲电影一级黄| 久久精品人人做人人爽97 |