当前位置: 首页 > news >正文

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~

相关文章:

  • DeepSeek算力服务器的选型--青岛佰优联创新科技有限公司
  • OpenGL ES ->乒乓缓冲,计算只用两个帧缓冲对象(Frame Buffer Object)+叠加多个滤镜作用后的Bitmap
  • SpringBoot3实战(SpringBoot3+Vue3基本增删改查、前后端通信交互、配置后端跨域请求、数据批量删除(超详细))(3)
  • Linux系统中关闭Docker服务并禁止其开机自启 、docker 安装目录结构分析 | 【du -sh *】
  • 2025年- G24-Lc98-217.包含重复(使用hashSet解决)-java版
  • 数据库相关(AI回答)
  • 自动驾驶背后的数学:ReLU,Sigmoid, Leaky ReLU, PReLU,Swish等激活函数解析
  • 在ASP.NET Core中使用NLog:配置与性能优化指南
  • Matplotlib完全指南:数据可视化从入门到实战
  • Python在图像处理领域的核心能力及典型应用场景(二)
  • 2014年计算机真题
  • LeetCode 2680.最大或值:位运算
  • 人工智能之数学基础:矩阵条件数在线性方程组求解中的应用
  • Visual Studio(VS)的 Release 配置中生成程序数据库(PDB)文件
  • 算法、数据结构、计算机网络,编译原理,操作系统常考题
  • 头歌 数据采集概述答案
  • 时序数据库QuestDB在Winform窗体应用
  • 记录一次truncate导致MySQL夯住的故障
  • 【DETR】训练自己的数据集以及YOLO数据集格式(txt)转化成COCO格式(json)
  • 计算机视觉总结
  • 深圳市政协原副主席王幼鹏被“双开”
  • 中国证监会印发2025年度立法工作计划
  • 看展览|2025影像上海艺博会:市场与当代媒介中的摄影
  • 吉林市马拉松5月18日开赛,奖牌、参赛服公布
  • 夜读丨古代有没有近视眼?
  • A股低开高走全线上涨:军工股再度领涨,两市成交12934亿元