解决 android手机ADB命令截图后图片显示为黑屏的方法-2020-01-07

在项目开发中遇到appium驱动截图溢出错误,发现是APP限制截图导致。尝试通过ADB命令截图,但图片显示为黑屏。采用手机自带的截图功能,包括组合按键和下拉通知栏截图,成功解决问题。详细步骤包括清除手机截图、下拉通知栏、点击截图按钮、传送图片到PC等。
部署运行你感兴趣的模型镜像

title: adb命令截图图片显示为黑屏问题总结
date: 2020-01-07
tags: adb android
author: YeXiaoXin

发现问题

在我实际的项目开发过程中,发现appium 驱动在调截图的方法时 溢出错误如下:

执行代码语法出错Message: An unknown server-side error occurred while processing the command. 
Original error: io.appium.uiautomator2.common.exceptions.
TakeScreenshotException: Failed to capture a screenshot. Does the current view have 'secure' flag set?

经过查询相关资料得知,这种错误 是由于APP 在该页面限制截图导致的,(截图的这个界面为账户和密码输入界面)。

尝试解决

使用android adb命令截图

当在调用appium 驱动溢出错误时,调用adb命令截图,命令如下:

adb shell screencap -p /sdcard/screen.png

使用pull命令将截图传至电脑C:盘

adb pull /sdcard/Pictures/Screenshots C:\ 

打开图片后显示为黑色空白,图如下:截图后的图片
以上方法无法解决截图的问题。

使用手机自带截图功能截图

手机自带截图实现有两种方案:
1: 使用组合按键的方式,如我所使用的魅族手机可使用 音量加 + 电源键实现截图的功能
2:或者使用下拉通知栏 中的 截图按钮截图
由于未找到 android 如何手机组合 按键的命令,所以我选择了第2方案,方案实现步骤如下:
1、使用 rm /sdcard/Pictures/Screenshots/*.jpg 清除 手机截图文件夹的全部截图

rm /sdcard/Pictures/Screenshots/*.jpg 

2、使用 adn shell input swipe 360 0 360 640 200 下拉手机通知栏

adb shell input swipe 360 0 360 640 200

3、点击截图按钮

input tap 250 250

如下图(非真实场景,可以将该按钮替换为备忘录):
在这里插入图片描述
4、读取图片名称后,将手机图片传送至pc地址 文件夹:

jpg_name=os.popen('adb shell ls /sdcard/Pictures/Screenshots/').read().strip()
os.popen('adb pull /sdcard/Pictures/Screenshots/%s %s'%(jpg_name,tmpdir))

其中tmpdir 为PC文件夹名称
5、清除手机截图
手机截图清除分为两个步骤:
1):使用rm命令删除,如下:

rm /sdcard/Pictures/Screenshots/*.jpg

2):使用广播命令更新 手机文件的缓存(如不执行此命令则会导致手机依然显示之前删除的图片)

am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN_FILE -d file:///sdcard/Pictures/Screenshots/

6、在PC端应用图片(略)
7、删除PC端图片,命令如下:

os.remove(filename)

filename 为PC端 图片的位置。

您可能感兴趣的与本文相关的镜像

ComfyUI

ComfyUI

AI应用
ComfyUI

ComfyUI是一款易于上手的工作流设计工具,具有以下特点:基于工作流节点设计,可视化工作流搭建,快速切换工作流,对显存占用小,速度快,支持多种插件,如ADetailer、Controlnet和AnimateDIFF等

评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值