Android10 系统截屏功能异常的处理

客户反馈的问题,设备上使用状态栏中“长截屏”功能,截屏失败且出现系统卡死问题。

在此记录该问题的处理

一现象:

设备A10上使用系统“长截屏”功能,出现截屏失败,系统死机。

二复现问题并分析

使用设备操作该功能,该问题必现。导出ylog 

A10 日志导出指令:

adb pull /storage/emulated/0/ylog  curscreenanr2/              //后面的路径是存放ylog日志的文件夹名称

三分析ylog

ylog目录如图,crash中有崩溃log 详细如下:

C017E3F  03-05 15:48:17.472  4405  4456 E AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
C017E3F  03-05 15:48:17.472  4405  4456 E AndroidRuntime: Process: com.android.systemui:screenshot, PID: 4405
C017E3F  03-05 15:48:17.472  4405  4456 E AndroidRuntime: java.lang.RuntimeException: An error occurred while executing doInBackground()
C017E3F  03-05 15:48:17.472  4405  4456 E AndroidRuntime: 	at android.os.AsyncTask$4.done(AsyncTask.java:399)
C017E3F  03-05 15:48:17.472  4405  4456 E AndroidRuntime: 	at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:383)
C017E3F  03-05 15:48:17.472  4405  4456 E AndroidRuntime: 	at java.util.concurrent.FutureTask.setException(FutureTask.java:252)
C017E3F  03-05 15:48:17.472  4405  4456 E AndroidRuntime: 	at java.util.concurrent.FutureTask.run(FutureTask.java:271)
C017E3F  03-05 15:48:17.472  4405  4456 E AndroidRuntime: 	at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:289)
C017E3F  03-05 15:48:17.472  4405  4456 E AndroidRuntime: 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
C017E3F  03-05 15:48:17.472  4405  4456 E AndroidRuntime: 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
C017E3F  03-05 15:48:17.472  4405  4456 E AndroidRuntime: 	at java.lang.Thread.run(Thread.java:919)
C017E3F  03-05 15:48:17.472  4405  4456 E AndroidRuntime: Caused by: java.lang.IllegalArgumentException: width must be > 0
C017E3F  03-05 15:48:17.472  4405  4456 E AndroidRuntime: 	at android.graphics.Bitmap.checkWidthHeight(Bitmap.java:450)
C017E3F  03-05 15:48:17.472  4405  4456 E AndroidRuntime: 	at android.graphics.Bitmap.createBitmap(Bitmap.java:874)
C017E3F  03-05 15:48:17.472  4405  4456 E AndroidRuntime: 	at android.graphics.Bitmap.createBitmap(Bitmap.java:836)
C017E3F  03-05 15:48:17.472  4405  4456 E AndroidRuntime: 	at com.android.systemui.screenshot.CompareUtils.CompareCropedBitmap(CompareUtils.java:39)
C017E3F  03-05 15:48:17.472  4405  4456 E AndroidRuntime: 	at com.android.systemui.screenshot.GlobalScreenshot$CompareTask.doInBackground(GlobalScreenshot.java:843)
C017E3F  03-05 15:48:17.472  4405  4456 E AndroidRuntime: 	at com.android.systemui.screenshot.GlobalScreenshot$CompareTask.doInBackground(GlobalScreenshot.java:817)
C017E3F  03-05 15:48:17.472  4405  4456 E AndroidRuntime: 	at android.os.AsyncTask$3.call(AsyncTask.java:378)
C017E3F  03-05 15:48:17.472  4405  4456 E AndroidRuntime: 	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
C017E3F  03-05 15:48:17.472  4405  4456 E AndroidRuntime: 	... 4 more
C01ACAB  03-05 15:48:48.029  4543  4630 E AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
C01ACAB  03-05 15:48:48.029  4543  4630 E AndroidRuntime: Process: com.android.systemui:screenshot, PID: 4543
C01ACAB  03-05 15:48:48.029  4543  4630 E AndroidRuntime: java.lang.RuntimeException: An error occurred while executing doInBackground()
C01ACAB  03-05 15:48:48.029  4543  4630 E AndroidRuntime: 	at android.os.AsyncTask$4.done(AsyncTask.java:399)
C01ACAB  03-05 15:48:48.029  4543  4630 E AndroidRuntime: 	at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:383)
C01ACAB  03-05 15:48:48.029  4543  4630 E AndroidRuntime: 	at java.util.concurrent.FutureTask.setException(FutureTask.java:252)
C01ACAB  03-05 15:48:48.029  4543  4630 E AndroidRuntime: 	at java.util.concurrent.FutureTask.run(FutureTask.java:271)
C01ACAB  03-05 15:48:48.029  4543  4630 E AndroidRuntime: 	at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:289)
C01ACAB  03-05 15:48:48.029  4543  4630 E AndroidRuntime: 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
C01ACAB  03-05 15:48:48.029  4543  4630 E AndroidRuntime: 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
C01ACAB  03-05 15:48:48.029  4543  4630 E AndroidRuntime: 	at java.lang.Thread.run(Thread.java:919)
C01ACAB  03-05 15:48:48.029  4543  4630 E AndroidRuntime: Caused by: java.lang.IllegalArgumentException: width must be > 0
C01ACAB  03-05 15:48:48.029  4543  4630 E AndroidRuntime: 	at android.graphics.Bitmap.checkWidthHeight(Bitmap.java:450)
C01ACAB  03-05 15:48:48.029  4543  4630 E AndroidRuntime: 	at android.graphics.Bitmap.createBitmap(Bitmap.java:874)
C01ACAB  03-05 15:48:48.029  4543  4630 E AndroidRuntime: 	at android.graphics.Bitmap.createBitmap(Bitmap.java:836)
C01ACAB  03-05 15:48:48.029  4543  4630 E AndroidRuntime: 	at com.android.systemui.screenshot.CompareUtils.CompareCropedBitmap(CompareUtils.java:39)
C01ACAB  03-05 15:48:48.029  4543  4630 E AndroidRuntime: 	at com.android.systemui.screenshot.GlobalScreenshot$CompareTask.doInBackground(GlobalScreenshot.java:843)
C01ACAB  03-05 15:48:48.029  4543  4630 E AndroidRuntime: 	at com.android.systemui.screenshot.GlobalScreenshot$CompareTask.doInBackground(GlobalScreenshot.java:817)
C01ACAB  03-05 15:48:48.029  4543  4630 E AndroidRuntime: 	at android.os.AsyncTask$3.call(AsyncTask.java:378)
C01ACAB  03-05 15:48:48.029  4543  4630 E AndroidRuntime: 	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
C01ACAB  03-05 15:48:48.029  4543  4630 E AndroidRuntime: 	... 4 more

可以看到关键日志

查看packages/SystemUI/src/com/android/systemui/screenshot/CompareUtils.java中,

设备分辨率w*h=240x320. 图上部分值为0,所以异常,

四解决方案:

将以上的margin数据修改为10,使其计算结果值>0即可

OVER~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/73081.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

openvela新时代的国产开源RTOS系统

openvela 简介 openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家…

ENSP学习day9

ACL访问控制列表实验 ACL(Access Control List,访问控制列表)是一种用于控制用户或系统对资源(如文件、文件夹、网络等)访问权限的机制。通过ACL,系统管理员可以定义哪些用户或系统可以访问特定资源&#x…

JVM的组成--运行时数据区

JVM的组成 1、类加载器(ClassLoader) 类加载器负责将字节码文件从文件系统中加载到JVM中,分为:加载、链接(验证、准备、解析)、和初始化三个阶段 2、运行时数据区 运行时数据区包括:程序计数…

RAG(Retrieval-Augmented Generation)基建之PDF解析的“魔法”与“陷阱”

嘿,亲爱的算法工程师们!今天咱们聊一聊PDF解析的那些事儿,简直就像是在玩一场“信息捉迷藏”游戏!PDF文档就像是个调皮的小精灵,表面上看起来规规矩矩,但当你想要从它那里提取信息时,它就开始跟…

Python网络编程入门

一.Socket 简称套接字,是进程之间通信的一个工具,好比现实生活中的插座,所有的家用电器要想工作都是基于插座进行,进程之间要想进行网络通信需要Socket,Socket好比数据的搬运工~ 2个进程之间通过Socket进行相互通讯&a…

人工智能(AI)系统化学习路线

一、为什么需要系统化学习AI? 人工智能技术正在重塑各行各业,但许多初学者容易陷入误区: ❌ 盲目跟风:直接学习TensorFlow/PyTorch,忽视数学与算法基础。 ❌ 纸上谈兵:只看理论不写代码,无法解…

mac calDAV 日历交互

安装Bakal docker https://sabre.io/dav/building-a-caldav-client/ 在Bakal服务器上注册账户 http://localhost:8080/admin/?/users/calendars/user/1/ 在日历端登录账户: Server: http://127.0.0.1:8080/dav.php Server Path: /dav.php/principals/lion No e…

手机号登录与高并发思考

基础逻辑 一般来说这个验证码登录分为手机号、以及邮箱登录 手机号短信验证,以腾讯云SMS 服务为例: 这个操作无非对后端来说就是两个接口: 一个是获取验证码,这块后端生成6位数字expire_time 去推送到腾讯云sdk ,腾…

Python设计模式 - 适配器模式

定义 适配器模式(Adapter Pattern)是一种结构型设计模式,它用于将一个类的接口转换为客户端所期待的另一个接口。 注:在适配器模式定义中所提及的接口是指广义的接口,它可以表示一个方法或者一组方法的集合。 结构 …

【前端工程化】

目录 前端工程户核心技术之模块化前端模块化的进化过程commonjs规范介绍commonjs规范示例commonjs模块打包 amd规范、cmd规范前端工程化关键技术之npmwebpack原理 前端工程户核心技术之模块化 前端模块化是一种标准,不是实现。commonjs是前端模块化的标准&#xff…

关于CNN,RNN,GAN,GNN,DQN,Transformer,LSTM,DBN你了解多少

以下是神经网络中常见的几种模型的简要介绍: 1. ​CNN (Convolutional Neural Network, 卷积神经网络) ​用途: 主要用于图像处理和计算机视觉任务。​特点: 通过卷积核提取局部特征,具有平移不变性,能够有效处理高维数据(如图像…

T113-i开发板的休眠与RTC定时唤醒指南

​​在嵌入式系统设计中,休眠与唤醒技术是优化电源管理、延长设备续航的关键。飞凌嵌入式基于全志T113-i处理器开发设计的OK113i-S开发板提供了两种休眠模式:freeze和mem,以满足不同应用场景下的功耗与恢复速度需求。本文将详细介绍如何让OK1…

SpringBoot项目实战(初级)

目录 一、数据库搭建 二、代码开发 1.pom.xml 2.thymeleaf模块处理的配置类 3.application配置文件 4.配置(在启动类中) 5.编写数据层 ②编写dao层 ③编写service层 接口 实现类 注意 补充(注入的3个注解) 1.AutoWir…

高性能网络SIG双月动态:加速 SMC eBPF 透明替换特性上游化进程,并与上游深度研讨新特性

01、整体进展 本次双月报总结了 SIG 在 1 月和 2 月的工作进展,工作聚焦在 ANCK CVE 和稳定性问题修复,以及上游 SMC eBPF 透明替换特性推进和多个话题讨论上。 本月关键进展: 1. 推进 SMC eBPF 透明替换特性上游化,更新至 V7&…

某视频的解密下载

下面讲一下怎么爬取视频,这个还是比小白的稍微有一点绕的 首先打开网址:aHR0cDovL3d3dy5wZWFydmlkZW8uY29tL3BvcHVsYXJfNA 首页 看一下: 有一个标题和一个href,href只是一个片段,待会肯定要拼接, 先找一…

C++继承机制:从基础到避坑详细解说

目录 1.继承的概念及定义 1.1继承的概念 1.2 继承定义 1.2.1定义格式 1.2.2继承关系和访问限定符 1.2.3继承基类成员访问方式的变化 总结: 2.基类和派生类对象赋值转换 3.继承中的作用域 4.派生类的默认成员函数 ​编辑 默认构造与传参构造 拷贝构造&am…

测试基础入门

文章目录 软件测试基础1.1软件测试概述什么是软件测试什么是软件需求说明书软件测试的原则测试用例的设计测试用例设计的基本原则软件测试分类软件缺陷的定义 2.1软件开发模型软件开发模型概述大爆炸模型(边写边改)软件开发生命周期模型--螺旋模型软件开…

022-spdlog

spdlog 以下是从原理到代码实现的全方位spdlog技术调研结果,结合核心架构、优化策略和完整代码示例: 一、核心架构设计原理 spdlog三级架构 (图示说明:spdlog采用三级结构实现日志系统解耦) Registry管理中枢 全局…

STM32时钟树

时钟树 时钟树就是STM32中用来产生和配置时钟,并且把配置好的时钟发送到各个外设的系统,时钟是所有外设运行的基础,所以时钟也是最先需要配置的东西,在程序中主函数之前还会执行一个SystemClock_Config()函数,这个函数…

【第22节】windows网络编程模型(WSAAsyncSelect模型)

目录 引言 一、WSAAsyncSelect模型概述 二、WSAAsyncSelect模型流程 2.1 自定义消息 2.2 创建窗口例程 2.3 初始化套接字 2.4 注册网络事件 2.5 绑定和监听 2.6 消息循环 三、完整示例代码 引言 在网络编程的广袤天地中,高效处理网络事件是构建稳定应用的…