RK原生的SDK,注释了INTERNAL_STORAGE_SIZE_PATHS,导致根本读不到EMMC大小,
即使打开,也会导致读取的大小和实际有少许差距,比如8G的EMMC,实际显示大小是7.45G
使用新实现的getPrimaryStorageSize,可以获取到实际大小,而且是1024计算值,也就是实际表示值,
比如8G的EMMC,显示共8.00G
diff --git a/rk3288_mid_7.1/frameworks/base/core/java/android/os/FileUtils.java b/rk3288_mid_7.1/frameworks/base/core/java/android/os/FileUtils.java
old mode 100644
new mode 100755
index 8e24caf…0b9a5c9
— a/rk3288_mid_7.1/frameworks/base/core/java/android/os/FileUtils.java
+++ b/rk3288_mid_7.1/frameworks/base/core/java/android/os/FileUtils.java
@@ -752,4 +752,17 @@ public class FileUtils {
public static @Nullable File newFileOrNull(@Nullable String path) {
return (path != null) ? new File(path) : null;
}
+
-
public static long roundStorageSize(long size) {
-
long val = 1;
-
long pow = 1;
-
while ((val * pow) < size) {
-
val <<= 1;
-
if (val > 512) {
-
val = 1;
-
pow *= 1024;
-
}
-
}
-
return val * pow;
-
}
}
diff --git a/rk3288_mid_7.1/frameworks/base/core/java/android/os/storage/StorageManager.java b/rk3288_mid_7.1/frameworks/base/core/java/android/os/storage/StorageManager.java
old mode 100644
new mode 100755
index b10c7cd…226ace2
— a/rk3288_mid_7.1/frameworks/base/core/java/android/os/storage/StorageManager.java
+++ b/rk3288_mid_7.1/frameworks/base/core/java/android/os/storage/StorageManager.java
@@ -140,6 +140,8 @@ public class StorageManager {
private static final String[] INTERNAL_STORAGE_SIZE_PATHS = {
//"/sys/block/mmcblk0/size",
//"/sys/block/sda/size" -
"/sys/block/mmcblk1/size",//8GB
-
"/sys/block/mmcblk2/size",//16GB
};
private static final String[] INTERNAL_STORAGE_SIZE_PATHS_ALTERNATIVE = {
“/sys/block/mmcblk1/size”,
@@ -938,6 +940,7 @@ public class StorageManager {
}/** {@hide} */
-
/*
public long getPrimaryStorageSize() {
if(alternative_path){
for (String path : INTERNAL_STORAGE_SIZE_PATHS_ALTERNATIVE) {
@@ -956,8 +959,12 @@ public class StorageManager {
}
}
return 0; -
}*/
-
/** {@hide} */
-
public long getPrimaryStorageSize() {
-
return FileUtils.roundStorageSize(Environment.getDataDirectory().getTotalSpace()
-
+ Environment.getRootDirectory().getTotalSpace());
}
- private long readLong(String path) {
try (final FileInputStream fis = new FileInputStream(path);
final BufferedReader reader = new BufferedReader(new InputStreamReader(fis))😉 {