高通 A12 设置-存储 存储总大小显示不正确问题

news2025/2/27 2:21:16

总存储大小计算原理:
系统获取存储大小是通过获取”/system”和”/data” 两个Directory 的和来计算的,即Environment.getDataDirectory().getTotalSpace()
+ Environment.getRootDirectory().getTotalSpace()

问题一 :实际存储大小大于等于16G,设置-存储 存储总大小显示不正确
问题分析:
USERDATAIMAGE 大小配置不正确,导致系统获取的总存储大小异常;
USERDATAIMAGE配置规则和方法:
在这里插入图片描述

修改的代码及路径:
对应项目工程的BoardConfig.mk,将BOARD_USERDATAIMAGE_PARTITION_SIZE修改成上面计算的大小值
如:sc126\qcm2290-iot-spf-2.0\fibo\projects\SN129-13-00-00\LA.UM.9.15.2
device\qcom\sc126_32go\BoardConfig.mk
BOARD_USERDATAIMAGE_PARTITION_SIZE := 24000000000
问题二:实际存储大小为8G,设置-存储 存储总大小显示不正确
问题分析:
存储大小为8G,查看各分区占用情况发现super分区占用在2.7G左右,userdata分区占用2.8G左右;系统打印的getTotalBytes只有1.9G; 无法通过配置userdata大小使getTotalBytes 达到4G以上来向上取到8G内存;
问题根本原因是系统总内存太小,导致super占用内存比例太大导致。
解决思路:
通过获取系统内存节点来获取总内存大小"sys/class/block/mmcblk0/size";但不同平台对应的节点存在差异,所以移植到其它平台时,需查找平台对应的内存大小的节点
修改的代码及路径:

a/fibo/common/LA.QSSI.12.0.r1/frameworks/base/services/usage/java/com/android/server/usage/StorageStatsService.java
+++ b/fibo/common/LA.QSSI.12.0.r1/frameworks/base/services/usage/java/com/android/server/usage/StorageStatsService.java
@@ -86,7 +86,11 @@ import java.util.Collections;
 import java.util.List;
 import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.function.Consumer;
-
+//[JIRA:MC0350-218] Modified by luoyalong for memory display error in Settings 2023-8-25 start
+import android.util.Log;
+import java.io.BufferedReader;
+import java.io.FileReader;
+//[JIRA:MC0350-218] Modified by luoyalong for memory display error in Settings 2023-8-25 end
 public class StorageStatsService extends IStorageStatsManager.Stub {
     private static final String TAG = "StorageStatsService";
 
@@ -217,9 +221,23 @@ public class StorageStatsService extends IStorageStatsManager.Stub {
     @Override
     public long getTotalBytes(String volumeUuid, String callingPackage) {
         // NOTE: No permissions required
-
+        //[JIRA:MC0350-218] Modified by luoyalong for memory display error in Settings 2023-8-25 start
+        //romInfo,Different platforms correspond to different nodes
+        String romInfo = "sys/class/block/mmcblk0/size";
+        int cutSize = 2;
+        int unit = 1000;
         if (volumeUuid == StorageManager.UUID_PRIVATE_INTERNAL) {
-            return FileUtils.roundStorageSize(mStorage.getPrimaryStorageSize());
+            String romSize = readCmd(romInfo);
+            double totalRom = Math.ceil(Double.parseDouble(romSize)/cutSize/unit/unit);
+            Log.e(TAG, "totalROM = " + totalRom);
+            if (totalRom < 16  && totalRom > 0) {
+                long totalBytes = new Double(totalRom).longValue() * unit * unit * unit; 
+                Log.e(TAG, "totalBytes = " + totalBytes);
+                return totalBytes;
+            }else{
+                return FileUtils.roundStorageSize(mStorage.getPrimaryStorageSize());
+            }
+        //[JIRA:MC0350-218] Modified by luoyalong for memory display error in Settings 2023-8-25 end   
         } else {
             final VolumeInfo vol = mStorage.findVolumeByUuid(volumeUuid);
             if (vol == null) {
@@ -229,7 +247,29 @@ public class StorageStatsService extends IStorageStatsManager.Stub {
             return FileUtils.roundStorageSize(vol.disk.size);
         }
     }
-
+    //[JIRA:MC0350-218] Modified by luoyalong for memory display error in Settings 2023-8-25 start
+    public String readCmd(String sys_path) {
+        String prop = "waiting";
+        BufferedReader reader = null;
+        try {
+            reader = new BufferedReader(new FileReader(sys_path));
+            prop = reader.readLine();
+        } catch (IOException e) {
+            e.printStackTrace();
+            Log.e(TAG, " ***ERROR*** " + e.getMessage());
+        } finally {
+            if(reader != null){
+                try {
+                    reader.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        Log.e(TAG, "readFile cmd from "+sys_path + ",data"+" -> prop = "+prop);
+        return prop;
+    }
+    //[JIRA:MC0350-218] Modified by luoyalong for memory display error in Settings 2023-8-25 end
     @Override
     public long getFreeBytes(String volumeUuid, String callingPackage) {
         // NOTE: No permissions required

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

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

相关文章

网安周报|国防承包商Belcan泄露了带有漏洞列表的管理员密码

1.国防承包商Belcan泄露了带有漏洞列表的管理员密码 网络新闻研究团队发现了一个开放的 Kibana 实例&#xff0c;其中包含有关 Belcan、其员工和内部基础设施的敏感信息。Belcan 是一家政府、国防和航空航天承包商&#xff0c;提供全球设计、软件、制造、供应链、信息技术和数字…

企业在选择低代码平台时,应该注意哪些方面?

在 IT行业&#xff0c;“低代码”这个词可以说是近几年的热词了。低代码开发平台&#xff08;Low-Code Platform&#xff09;是一种新型的软件开发工具&#xff0c;它可以通过少量代码快速开发应用程序。通过采用低代码技术&#xff0c;开发者可以减少自己编写和测试应用程序的…

国际数字影像文创产业园开展企业法律的讲座

2023年8月18日14:30-16:10由成都市金牛区人民政府五块石街道办事处指导&#xff0c;国际数字影像文创产业园区、成都树观法律咨询服务有限公司主办&#xff0c;成都目莓商业运营管理有限公司协办的“法律讲座沙龙”活动在数媒大厦5楼共享会议室成功开展。 本次活动主题为“企业…

网络工程----小型网络配置1

此次作业设计&#xff1a; 硬件&#xff1a;二层交换机、三层交换机、路由、服务器、pc 配置知识&#xff1a;dhcp, dns配置&#xff0c;vlan划分&#xff0c;不同vlan间通信&#xff0c;静态路由&#xff0c;Nat动态地址&#xff0c; nat server映射&#xff0c;acl 配置命…

海外ios应用商店优化排名因素之评级与评论

评分显示在搜索结果中&#xff0c;直接影响转化率&#xff0c;而评论可以在应用页面上看到&#xff0c;评级和评论是我们无法直接控制的因素。但是我们仍然可以通过了解用户的需求并兑现承诺来尝试改进它。 1、关于用户的评论。 抱怨的用户在讲述某个问题时总是会给出最好的反…

Keil编译告警 warning: #1-D: last line of file ends without a newline

如题所示&#xff0c;Keil编译的时候&#xff0c;如果遇到了这个问题&#xff0c;就是文件最后一行并不是一个新行结尾。这个问题不影响编译结果&#xff0c;但是强迫症就受不了。 原因是源文件最后一行可能空出来了&#xff0c;但是有空格&#xff0c;如下所示&#xff1a; 这…

ACL2023 Prompt 相关文章速通 Part 1

Accepted Papers link: ACL2023 main conference accepted papers 文章目录 Accepted PapersPrompter: Zero-shot Adaptive Prefixes for Dialogue State Tracking Domain AdaptationQuery Refinement Prompts for Closed-Book Long-Form QAPrompting Language Models for Lin…

亚马逊评论后多久显示?有没有快速留评的方法?

通常情况下&#xff0c;亚马逊上的产品评论会在提交后的一到两天内显示出来。然而&#xff0c;实际的显示时间可能会因多种因素而有所不同&#xff0c;包括评论审核时间、产品销量、亚马逊服务器负载等等。在某些情况下&#xff0c;评论可能会更快地显示出来&#xff0c;而在其…

Ubuntu 22.04.3 LTS 维护更新发布

导读近日消息&#xff0c;Canonical 今天发布了代号为 Jammy Jellyfish、长期支持的 Ubuntu 22.04 第 3 个维护版本更新&#xff0c;距离上个版本相隔 6 周时间。 Ubuntu 22.04.3 LTS 最大的亮点在于内核升级到 Linux Kernel 6.2&#xff0c;此外 Mesa 图形堆栈也升级到 23.0.…

徐庆臣(黑客洗白者)个人介绍

徐庆臣&#xff08;黑客洗白者&#xff09;&#xff0c;具备10年以上研发、渗透测试和网络信息安全领域从业经验&#xff0c;具有较强的网络安全管理、技术实战项目经验。曾就职于新浪、用友等互联网知名企业&#xff0c;并担任项目经理和安全技术总监等负责人角色&#xff0c;…

Modelica由入门到精通—为什么要学习Modelica语言

1.为什么要学习Modelica语言 本人正在研究Modelica 多领域统一建模仿真语言&#xff0c;特此做学习入门介绍&#xff0c;希望可以帮助需要的小伙伴。 文章目录 1.为什么要学习Modelica语言一、背景二、系统建模与仿真2.1 系统仿真与系统模型2.2 仿真价值与可靠性 三、物理建模…

kettle开发-Day42-远程执行作业

目录 前言&#xff1a; 一、远程执行 1、先看定义 2、前置条件 2.1网络畅通 2.2数据库DB连接一致 二、实战案例-Windows 1、初始配置-被远程端 1.1启动carte服务 1.2cmd 命令启动carte服务 2、初始化-远程端 3、实际应用 3.1、错误案例 3.2、正确案例 三、总结 前言&…

react import 引用失效 node_modules/@types/react/index.d.ts not a module.ts

问题描述 react ts的项目&#xff0c;正常使用vs code打开&#xff0c; 先运行 npm install 安装依赖过后 结果所有的react引用依旧标红&#xff0c;如下图所示&#xff1a; 点击红线 show problem(查看问题)&#xff0c;提示node_modules/types/react/index.d.ts not a mod…

day-31 代码随想录算法训练营(19)贪心part01

455.分发饼干 思路一&#xff1a;贪心思路&#xff0c;大饼干先分给大胃口 思路二&#xff1a;小饼干先分给小胃口 376.摆动序列 分析摆动&#xff1a;记 presub 为前面与当前数之差&#xff0c;lastsub 为当前与后面数之差 思路&#xff1a; 1.正常摆动时&#xff0c;需要 …

Talk | 上海交通大学官同坤:识别任意文本,隐式注意力与字符间蒸馏在文本识别中的应用

本期为TechBeat人工智能社区第525期线上Talk&#xff01; 北京时间8月23日(周三)20:00&#xff0c;上海交通大学博士生—官同坤的Talk已准时在TechBeat人工智能社区开播&#xff01; 他与大家分享的主题是: “隐式注意力与字符间蒸馏在文本识别中的应用”&#xff0c;分享了识别…

基于Jenkins+Git+Ansible 发布PHP 项目-------从小白到大神之路之学习运维第88天

第四阶段提升 时 间&#xff1a;2023年8月25日 参加人&#xff1a;全班人员 内 容&#xff1a; 基于JenkinsGitAnsible 发布PHP 项目 目录 基于JenkinsGitAnsible 发布PHP 项目 一、部署PHP 运行环境 二、主机环境配置 三、Tomcat主机操作&#xff1a; 四、Jenkins主…

【PHP】echo 输出数组报Array to string conversion解决办法

代码&#xff1a; <?PHP echo "Hello World!";$demoName array("kexuexiong","xiong");echo "<pre>";var_dump($demoName);echo $demoName; print_r($demoName);echo "</pre>"; ?>输出结果&#xff1…

【点云分割】points3d框架学习01 —— 安装和配置

安装 $ pip install torch1.12.1cu113 torchvision0.13.1cu113 torchaudio0.12.1 --extra-index-url https://download.pytorch.org/whl/cu113 $ pip install torch-points3d $ pip install ipython $ pip install trame $ pip install h5py $ pip install gdown案例 from to…

自动化测试 —— Pytest fixture及conftest详解

前言 fixture是在测试函数运行前后&#xff0c;由pytest执行的外壳函数。fixture中的代码可以定制&#xff0c;满足多变的测试需求&#xff0c;包括定义传入测试中的数据集、配置测试前系统的初始状态、为批量测试提供数据源等等。fixture是pytest的精髓所在&#xff0c;类似u…

AD(第三部分---PCB封装库的创建方法及现有封装调用)

封装库可以理解成实物图 PCB封装是我们电子设计图和实物图之间的映射体&#xff0c;具有精准数据的要求。 16.常见CHIP封装的创建(电阻 容SOT二极管) 下文做的是1N589W二极管的封装库 首先要找到产品规格书&#xff0c;重要部分(三视图尺寸&#xff0c;分别是顶视图&#xf…