python使用adb获取Android Phone截图(解决Windows传输编码导致png文件损坏的问题)

使用adb命令

./adb shell screencap -p

可以截取当前屏幕,并且作为stdout,传给外部。那么对于python,我们可以用如下代码获取数据流。

使用Popen创建子进程用于读取数据流。

import subprocess
out=subprocess.Popen(‘./adb shell screencap -p‘,stdout=subprocess.PIPE)

out是当前的Popen实例,考虑到Windows接收过程中,会把\n当作\r\n写入流中,进而导致png文件打不开。

所以用replace修复数据流。

out=out.stdout.read().replace(b‘\r\n‘, b‘\n‘)

这里得到的out就是正常的二进制数据了,将其以wb的模式写成.png即可。

原文地址:https://www.cnblogs.com/LukeStepByStep/p/9975727.html

时间: 2024-08-01 19:04:27

python使用adb获取Android Phone截图(解决Windows传输编码导致png文件损坏的问题)的相关文章

adb 获取Android手机信息命令

@set version=1.7.2Normal @echo ============================================================= @echo II Log抓取工具 II @echo II 1.7.2 Normal II @echo ============================================================= @adb devices @echo 1. 开始创建目录 @set /p dirName

解决Windows传入Linux中的文件乱码

需要iconv工具: yum install glibc*   (安装工具) 例如:iconv -f gb2312 ceshi.txt -o cheshinew.txt 将原文件ceshi.txt以编码gb2312输出到新文件ceshinew.txt. iconv -l  列出所有的字符集.

Eclipse下ADB报错:Android ADB server didn't ACK,解决办法

转载请注明出处:http://blog.csdn.net/xiaanming/article/details/9401981 ADB server didn't ACK 这个问题会困恼很多的新手朋友,我以前刚开始做Android的时候也遇到过这个问题,不过自己百度,google啥的,也不知道怎么就给解决了,看到群里很多新手朋友都会问这个问题,说实话我也没有一个解决这个问题的终极方法(百试百灵的那种,哈哈),自己没遇到也没有认真的去对待他,今天,就是在今天,我打开Eclipse连上手机,准备调试程

Ubuntu使用adb连接android手机失败unknown的解决办法

Ubuntu下通过USB数据线连接G11手机后,adb可能无法识别到设备.按照一下步骤可以解决此问题. 1.在terminal下面输入 lsusb [email protected]:~$ lsusb Bus 001 Device 002: ID 8087:8008 Intel Corp. Bus 002 Device 002: ID 8087:8000 Intel Corp. Bus 003 Device 048: ID 17ef:7435 Lenovo Bus 003 Device 002:

安卓模拟器Android SDK Manager 无法获取SDK列表的解决办法

1.打开运行Android SDK Manager ,Tool菜单,选择Options,打开设置菜单,勾选“Force https://...sources to be fetched using http://...”,,然后点Close关闭,如下图: 2.设置hostes文件能电脑能正常访问Google下载中心 打开C:\Windows\System32\drivers\etc文件夹,双击hosts文件,选择使用记事本打开,把以下代码加到hosts文件中. 74.125.113.121 de

获取Android设备唯一标识码

概述 有时需要对用户设备进行标识,所以希望能够得到一个稳定可靠并且唯一的识别码.虽然Android系统中提供了这样设备识别码,但是由于Android系统版本.厂商定制系统中的Bug等限制,稳定性和唯一性并不理想.而通过其他硬件信息标识也因为系统版本.手机硬件等限制存在不同程度的问题. 下面收集了一些“有能力”或“有一定能力”作为设备标识的串码. DEVICE_ID 这是Android系统为开发者提供的用于标识手机设备的串号,也是各种方法中普适性较高的,可以说几乎所有的设备都可以返回这个串号,并且

you must restart adb and eclipse的相关解决办法

you must restart adb and eclipse的相关解决办法 分类: 常见开发问题解答2012-07-12 15:52 35938人阅读 评论(18) 收藏 举报 eclipsegoogle 今天一不小心遇到个问题,问题截图如下 我试了N种google来的方法,都失效,现在把我的解决方法告诉大家,希望能帮到大家. 首先,我先罗列下我搜到的方法,大家也可以尝试. 1,关闭eclipse并在进程中杀掉adb.exe,然后重启. 2,如有真机连接,拔掉真机,重复1的步骤, 3,关掉e

Kivy a to Z -- 一个简单的通过adb同步Android系统文件的工具

来兴趣时写了些Kivy的代码,调试却总感觉不是很方便.直接打包到public.mp3的方式太繁锁,用文件共享的软件又发现没有一个好用的, 用samba filesharing本来也只是慢,但是更新的版本之后就一直提示说wifi没有tethering,意思是wifi热点没有打开,但是打开了还是提示没有tethering. 找了个叫什么卓*力的文件管理器,下载了samba插件后输入用户名和密码死活不对,被搞得实在恼火,花了点时间写了个通过adb同步安卓文件的工具,用着也挺爽的. 事件为什么总是要搞得

如何用python从文中获取文件名再用正则表达式批量修改文件名

第零步:问题的提出 我在网上购买了星火英语的六级晨读美文100篇(六级早已高分飘过,不过很喜欢这些文章,买来重新品味),但是发现其文章的命名都为01.txt或10.txt等.为了便于检索需要修改文件名称. 第一步:从文件中取出文件名. 我发现txt文件的第一行为文件名,格式为如:Passage 3. Three Passions I Have Lived for, 后面还有几个换行符.写下如下代码进行第一步修改: import os x = 1 while x < 101: if x < 10