网站建设模板南充网站建设

北京淞争子青科技有限公司 2026/09/09 17:44:51

在我们做客制化android系统中经常会碰到这样的需求,屏的实际尺寸是12.2英寸,但在安兔兔或者其他设备信息检测类app中显示的却不是这个数,而是比他小的数,如5.66英寸,或者6.56英寸,就像下面这样

那么我们有没有什么方法实现不修改TextView来实现这个需求呢,答案是有的。

本篇文章也是借鉴两位大佬的思路来的,在这里要先感谢两位大佬:
Android 14 修改安兔兔等三方工具显示的屏幕尺寸
RK3588S Android12修改安兔兔等读到的屏幕尺寸大小

framework修改patch:

diff--git a/sys/frameworks/base/core/java/android/view/DisplayInfo.java b/sys/frameworks/base/core/java/android/view/DisplayInfo.java index bf000d5fa39..f25b00f5aad100644---a/sys/frameworks/base/core/java/android/view/DisplayInfo.java+++b/sys/frameworks/base/core/java/android/view/DisplayInfo.java @@-923,6+923,18@@publicfinalclassDisplayInfoimplementsParcelable{outMetrics.xdpi=outMetrics.noncompatXdpi=physicalXDpi;outMetrics.ydpi=outMetrics.noncompatYdpi=physicalYDpi;+//三方检测app屏幕尺寸数据修正 add by lyw+if(width<height){//竖屏 width == 1600 && height == 2400+outMetrics.xdpi=597.65f;+outMetrics.ydpi=201.63f;+}elseif(width>height){//横屏 width == 2400 && height == 1600+outMetrics.xdpi=597.65f;+outMetrics.ydpi=138.89f;+}else{+outMetrics.xdpi=outMetrics.noncompatXdpi=physicalXDpi;+outMetrics.ydpi=outMetrics.noncompatYdpi=physicalYDpi;+}+finalRectappBounds=configuration!=null?configuration.windowConfiguration.getAppBounds():null;width=appBounds!=null?appBounds.width():width;

xdpi来源:
安兔兔(整数,不精确),或者通过在上述类DisplayInfo中用日志的方式打印出来(带5位小数,更精确,推荐)

ydpi来源:
使用如下java代码生成。将如下代码复制到 IntelliJ IDEA 2024.3.5 (Community Edition) 中并修改main方法中的尺寸、分辨率、xdpi,然后Run就能生成ydpi了

packagecn.incartech;importjava.math.BigDecimal;importjava.math.RoundingMode;publicclassMain{publicstaticclassPoint{publicintx;publicinty;publicPoint(intx,inty){this.x=x;this.y=y;}}privatestaticdoublecalculateSize(PointscreenSize,doublexdpi,doubleydpi){doublesqrt=Math.sqrt(Math.pow(screenSize.x/xdpi,2)+Math.pow(screenSize.y/ydpi,2));returnnewBigDecimal(Double.toString(sqrt)).setScale(3,RoundingMode.HALF_UP).doubleValue();}publicstaticfloatgetYdpi(PointscreenSize,doubletargetSize,floatxdpi){doubley=0.01;doublecalculatedSize;do{y+=0.01;calculatedSize=calculateSize(screenSize,xdpi,y);}while(Math.abs(calculatedSize-targetSize)>=0.001);return(float)y;}privatestaticvoidcalculateYdpi(doubletargetSize,intwidth,intheight,floatxdpi){System.out.println("----------------- start calculate -----------------");System.out.println("要在安兔兔中显示的尺寸为:"+targetSize);System.out.println("屏实际分辨率为:"+width+" x "+height);try{intscreenWidth;intscreenHeight;screenWidth=width;screenHeight=height;if(screenWidth<screenHeight){System.out.println("开始计算竖屏参数...");}else{System.out.println("开始计算横屏参数...");}PointscreenSize=newPoint(screenWidth,screenHeight);floatydpi=getYdpi(screenSize,targetSize,xdpi);Stringresult=String.format("xdpi: %.2f, ydpi: %.2f",xdpi,ydpi);System.out.println((screenWidth<screenHeight?"竖屏参数":"横屏参数")+" result = "+result);}catch(NumberFormatExceptione){System.out.println(e);}}/** * xdpi参数来源(打印出来就行了,或者直接用安兔兔的): * 类-->frameworksasecorejavaandroidviewDisplayInfo.java * 方法-->private void getMetricsWithSize(DisplayMetrics outMetrics, CompatibilityInfo compatInfo, Configuration configuration, int width, int height) * * @param args */publicstaticvoidmain(String[]args){/** * 结果示例: * ----------------- start calculate ----------------- * 要在安兔兔中显示的尺寸为:12.2 * 屏实际分辨率为:1600 x 2400 * 开始计算竖屏参数... * 竖屏参数 result = xdpi: 597.65, ydpi: 201.63 */calculateYdpi(12.2,1600,2400,597.64703f);/** * 结果示例: * ----------------- start calculate ----------------- * 要在安兔兔中显示的尺寸为:12.2 * 屏实际分辨率为:2400 x 1600 * 开始计算横屏参数... * 横屏参数 result = xdpi: 597.65, ydpi: 138.89 */calculateYdpi(12.2,2400,1600,597.64703f);}}

将xdpi、ydpi填入到前述patch中就能实现三方检测apk检测的屏幕尺寸与预期一致

----------------- 验证结果 修改前 -----------------
竖屏:

横屏

----------------- 验证结果 修改后 -----------------
竖屏:

横屏:

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

网站建设与维护齐齐哈尔网站建设

获取地址:Wise Disk Cleaner 专业版专业的系统垃圾清理与磁盘优化工具。采用深度扫描引擎,可精准识别并清除系统缓存、无效注册表、程序残留文件、浏览器历史记录等

2026/06/30 12:34:32

网站建设报价如何建设网站

开源机器人智能体openpi完整使用指南:从入门到实战【免费下载链接】openpi项目地址: https://gitcode.com/GitHub_Trending/op/openpio

2026/06/30 10:16:49

团购网站建设青岛外贸网站建设

Sonic 数字人口型同步模型安全部署指南:警惕“PyCharm激活码永久免费”陷阱在生成式AI席卷内容创作领域的今天,数字人技术正以前所未有的速度从实验室走向千行百业。虚

2026/06/30 12:37:32

六安网站建设长春网站建设公司

你是否曾经为下载大文件而烦恼?网速慢、下载中断、管理混乱,这些问题在 Ghost Downloader 3 中都将得到完美解决。这款基于 PyQt/PySide 框架开发的

2026/06/30 10:09:48

都江堰网站建设深圳 网站建设

摘要随着互联网技术的快速发展和人们生活水平的不断提高,美食文化逐渐成为人们日常生活中不可或缺的一部分。美食推荐系统应运而生,旨在为用户提供个性化的美食信息推荐,

2026/06/30 12:31:01

万州网站建设东莞手机网站建设

目录8.1图像色彩调整基础8.1.1 色彩模式的转换1. 色彩模式转换注意问题2. 各种色彩模式之间的转换8.1.2 图像的色调调整1. 色阶与自动色阶2. 曲线调整3. 亮度与对比度命令4. 色彩平

2026/06/30 10:12:49

牡丹江网站建设网站建设的书

嘿,大家好!这里是一个专注于前沿AI和智能体的频道~上周是智谱的多模态开源周,从GLM 4.6v到Autoglm…看到官方的博客,第一眼比较吸引

2026/06/30 11:33:56

医院网站建设方案湖州网站建设

GPT-SoVITS训练中断恢复机制:防止意外断电导致前功尽弃在AI语音合成的世界里,最令人崩溃的瞬间莫过于——你已经训练了20小时的模型,显卡风扇轰鸣、进度

2026/06/30 11:44:27

网站制作建设门户网站建设方案

【收藏必看】程序员入门指南:Kali Linux安装配置与网络安全学习路线详解文章详细介绍了Kali Linux系统的下载、安装及配置方法,包括虚拟机安装、root权限修改

2026/06/30 10:23:20

广州网站建设公司装饰网站建设

利用PyTorch-CUDA镜像开展高校AI教学实验课程在人工智能课程日益普及的今天,许多高校教师都面临一个尴尬的局面:一节90分钟的实验课,学生真正用来写代

2026/06/30 12:25:01