Android 获取内存、内部存储、外部存储空间大小
2016-04-05 02:56
661 查看
测试于:Android2.3+
今天贴一个工具类,主要是获取RAM、ROM、SDCARD空间大小的还有转换帮助方法。直接上代码,一看便知。哈哈
今天贴一个工具类,主要是获取RAM、ROM、SDCARD空间大小的还有转换帮助方法。直接上代码,一看便知。哈哈
package com.mob.getsdandphone; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.text.DecimalFormat; import android.app.ActivityManager; import android.content.Context; import android.os.Environment; import android.os.StatFs; public class FileSizeUtil { private static final int ERROR = -1; /** * SDCARD是否存 */ public static boolean externalMemoryAvailable() { return android.os.Environment.getExternalStorageState().equals( android.os.Environment.MEDIA_MOUNTED); } /** * 获取手机内部剩余存储空间 * * @return */ public static long getAvailableInternalMemorySize() { File path = Environment.getDataDirectory(); StatFs stat = new StatFs(path.getPath()); long blockSize = stat.getBlockSize(); long availableBlocks = stat.getAvailableBlocks(); return availableBlocks * blockSize; } /** * 获取手机内部总的存储空间 * * @return */ public static long getTotalInternalMemorySize() { File path = Environment.getDataDirectory(); StatFs stat = new StatFs(path.getPath()); long blockSize = stat.getBlockSize(); long totalBlocks = stat.getBlockCount(); return totalBlocks * blockSize; } /** * 获取SDCARD剩余存储空间 * * @return */ public static long getAvailableExternalMemorySize() { if (externalMemoryAvailable()) { File path = Environment.getExternalStorageDirectory(); StatFs stat = new StatFs(path.getPath()); long blockSize = stat.getBlockSize(); long availableBlocks = stat.getAvailableBlocks(); return availableBlocks * blockSize; } else { return ERROR; } } /** * 获取SDCARD总的存储空间 * * @return */ public static long getTotalExternalMemorySize() { if (externalMemoryAvailable()) { File path = Environment.getExternalStorageDirectory(); StatFs stat = new StatFs(path.getPath()); long blockSize = stat.getBlockSize(); long totalBlocks = stat.getBlockCount(); return totalBlocks * blockSize; } else { return ERROR; } } /** * 获取系统总内存 * * @param context 可传入应用程序上下文。 * @return 总内存大单位为B。 */ public static long getTotalMemorySize(Context context) { String dir = "/proc/meminfo"; try { FileReader fr = new FileReader(dir); BufferedReader br = new BufferedReader(fr, 2048); String memoryLine = br.readLine(); String subMemoryLine = memoryLine.substring(memoryLine.indexOf("MemTotal:")); br.close(); return Integer.parseInt(subMemoryLine.replaceAll("\\D+", "")) * 1024l; } catch (IOException e) { e.printStackTrace(); } return 0; } /** * 获取当前可用内存,返回数据以字节为单位。 * * @param context 可传入应用程序上下文。 * @return 当前可用内存单位为B。 */ public static long getAvailableMemory(Context context) { ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); ActivityManager.MemoryInfo memoryInfo = new ActivityManager.MemoryInfo(); am.getMemoryInfo(memoryInfo); return memoryInfo.availMem; } private static DecimalFormat fileIntegerFormat = new DecimalFormat("#0"); private static DecimalFormat fileDecimalFormat = new DecimalFormat("#0.#"); /** * 单位换算 * * @param size 单位为B * @param isInteger 是否返回取整的单位 * @return 转换后的单位 */ public static String formatFileSize(long size, boolean isInteger) { DecimalFormat df = isInteger ? fileIntegerFormat : fileDecimalFormat; String fileSizeString = "0M"; if (size < 1024 && size > 0) { fileSizeString = df.format((double) size) + "B"; } else if (size < 1024 * 1024) { fileSizeString = df.format((double) size / 1024) + "K"; } else if (size < 1024 * 1024 * 1024) { fileSizeString = df.format((double) size / (1024 * 1024)) + "M"; } else { fileSizeString = df.format((double) size / (1024 * 1024 * 1024)) + "G"; } return fileSizeString; } }
相关文章推荐
- android的Environment类
- Android Volley完全解析(一),初识Volley的基本用法
- Android广播接收器和Activity间传递数据
- android_ExpandableListView
- 关于真机测试的android选择图片在ImageView上显示,调用setImageBitmap无法显示和闪退、控件消失
- Android之EditText
- Android 数据加密算法总结
- android-auto-scroll-view-pager-master的使用
- Android框架设计模式(五)——Singleton Method
- RelativeLayout 和LinearLayout比较小tip
- Android SharedPreferences理解
- android中出现could not find camera.apk,解决办法!
- android manifest
- android linearlayout
- Android Service之Messenger实现通信
- Android 自定义RadioButton或CheckBox选择样式
- gradle相关
- monkey调试类命令
- Android --- Recyclerview and Cardview
- monkey约束类命令