您的位置:首页 > 移动开发 > Android开发

Android获取RAM大小,内部存储大小,外部存储大小

2016-07-19 01:31 405 查看
转载自:http://www.devnote.cn/article/238.html
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;}}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: