获取手机内存信息(包括手机本身内存以及SD卡内存的容量)

这是我自己写的程序,中间也在网上搜索了一些方法,结合他们的方法写出来的
	// 获取手机空间信息
	public void getMemorySize() {
		List count = new ArrayList();
		String[] s1;
		long[] l;


		long phoneMemorySize = Phoneinfo.getTotalInternalMemorySize()
				/ (1024 * 1024);// 手机总空间
		long phoneUseMemorySize = Phoneinfo.getAvailableInternalMemorySize()
				/ (1024 * 1024);// 手机可用空间大小
		long usedSize = phoneMemorySize - phoneUseMemorySize;// 手机已用空间大小


		String status = Environment.getExternalStorageState();
		if (status.equals(Environment.MEDIA_MOUNTED)) {
			s1 = new String[] { "手机总空间", "手机可用空间", "手机已用空间", "SD卡总空间",
					"SD卡可用空间", "SD卡已用空间" };
			// 存在SDcard
			long SDmemorySize = SDcardinfo.getTotalExternalMemorySize()
					/ (1024 * 1024);// sd卡总空间
			long SDUseSize = SDcardinfo.getAvailableExternalMemorySize()
					/ (1024 * 1024);// sd卡 可用空间
			long SDUsed = SDmemorySize - SDUseSize;
			l = new long[] { phoneMemorySize, phoneUseMemorySize, usedSize,
					SDmemorySize, SDUseSize, SDUsed };
		} else {
			// 不存在SDcard
			l = new long[] { phoneMemorySize, phoneUseMemorySize, usedSize };
			s1 = new String[] { "手机总空间", "手机可用空间", "手机已用空间" };


		}


		List<HashMap<String, Object>> data = new ArrayList<HashMap<String, Object>>();
		for (int i = 0; i < s1.length; i++) {
			HashMap<String, Object> item = new HashMap<String, Object>();
			item.put("name", s1[i]);
			item.put("size", l[i] + "M");
			data.add(item);
		}
		SimpleAdapter adapter = new SimpleAdapter(this, data, R.layout.item1,
				new String[] { "name", "size" }, new int[] { R.id.name,
						R.id.size });
		lv.setAdapter(adapter);
		l = null;
		s1 = null;
	}



Phoneinf .java

public class Phoneinfo {

	/**
	 * @author jack
	 */
	//这个是手机内存的总空间大小
    static public long getTotalInternalMemorySize() {
        File path = Environment.getDataDirectory();
        StatFs stat = new StatFs(path.getPath());
        long blockSize = stat.getBlockSize();
        long totalBlocks = stat.getBlockCount();
        return totalBlocks * blockSize;
    }
    //这个是手机内存的可用空间大小 
    static public long getAvailableInternalMemorySize() {
            File path = Environment.getDataDirectory();
            StatFs stat = new StatFs(path.getPath());
            long blockSize = stat.getBlockSize();
            long availableBlocks = stat.getAvailableBlocks();
            return availableBlocks * blockSize;
        }

SDinfo .java

public class SDcardinfo {
	
	//这个是手机sdcard的可用空间大小
    static public long getAvailableExternalMemorySize() {
            File path = Environment.getExternalStorageDirectory();
            StatFs stat = new StatFs(path.getPath());
            long blockSize = stat.getBlockSize();
            long availableBlocks = stat.getAvailableBlocks();
            return availableBlocks * blockSize;
    }

  //这个是手机sdcard的总空间大小
    static public long getTotalExternalMemorySize() {
            File path = Environment.getExternalStorageDirectory();
            StatFs stat = new StatFs(path.getPath());
            long blockSize = stat.getBlockSize();
            long totalBlocks = stat.getBlockCount();
            return totalBlocks * blockSize;
    }
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值