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.pswp.cn/web/73081.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/73081.shtml
英文地址,請注明出處:http://en.pswp.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 消息循環 三、完整示例代碼 引言 在網絡編程的廣袤天地中,高效處理網絡事件是構建穩定應用的…