Android学习文档之获取内存大小

十一长假过去了,也是时候恢复学习了,大家要劳逸结合,不能太辛苦,也不能太懒啊~(哈哈……自我安慰)

 

由于是长假刚刚结束,我想大家可能还没调整好,么四儿,这一期我们就讲解一下如何获取手机内存和内存卡的空间大小(主要是Android:StatFs类),算是一个小实例,循序渐进嘛,哈哈……发现我真能为自己的懒找借口……

 

好了,废话不多说

 

内存大小的展现需要一个TextView,我们新建一个项目时可不需更改任何代码,只需为TextView添加一个id,其代码如下:


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <TextView
        android:id="@+id/et_size"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

</RelativeLayout>



布局文件写好,我们需要去读取内存大小,然后再TextView上进行展现,故而不需要点击事件,只需重写TextView的内容即可,

 

MainActivity.java


package com.hackerant.memorysize;

import java.io.File;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.os.Environment;
import android.os.StatFs;
import android.text.format.Formatter;
import android.view.Menu;
import android.widget.TextView;

public class MainActivity extends Activity
{

	private TextView etSize;
	
	@Override
	protected void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		etSize = (TextView) findViewById(R.id.et_size);
		
		etSize.setText(getSDSize(this) + getRoomSize(this));
	}
	
	
	@SuppressLint("NewApi")
	/**
	 * 获取内存卡大小
	 * @param context
	 * @return
	 */
	public String getSDSize(Context context){
		
		String totalSize = "0K";
		String availSize = "0K";
		
		//获取SD卡文件
		File path = Environment.getExternalStorageDirectory();
		
		//用于获取大小
		StatFs statFs = new StatFs(path.getPath());
		//getBlockCountLong()在API18以上版本方可使用
		long block = statFs.getBlockCount();
		long size = statFs.getBlockSize();
		long avail = statFs.getAvailableBlocks();
		
		totalSize = Formatter.formatFileSize(context, block * size);
		availSize = Formatter.formatFileSize(context, size * avail);
		
		return "内存卡信息:" + "\n" 
			+ "总空间:" + totalSize 
			+ "\n" + "可用空间:" +availSize + "\n";
	}
	
	
	@SuppressLint("NewApi")
	/**
	 * 获取内存大小
	 * @param context
	 * @return
	 */
	public String getRoomSize(Context context){
		
		String totalSize = "0K";
		String availSize = "0K";
		
		//获取SD卡文件
		File path = Environment.getDataDirectory();
		
		//用于获取大小
		StatFs statFs = new StatFs(path.getPath());
		
		long block = statFs.getBlockCount();
		long size = statFs.getBlockSize();
		long avail = statFs.getAvailableBlocks();
		
		totalSize = Formatter.formatFileSize(context, block * size);
		availSize = Formatter.formatFileSize(context, size * avail);
		
		return "内存信息:" + "\n" 
			+ "总空间:" + totalSize 
			+ "\n" + "可用空间:" +availSize;
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu)
	{
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}



代码中statFs.getBlockCount()为获取当前存储空间一共多少块,statFs.getBlockSize()为每块大小,statFs.getAvailableBlocks()为可用块数,要想获得空间大小,需块数*块大小即可,Formatter.formatFileSize()为安卓系统源码对空间进行格式化的代码,可直接使用,也可自己去除1024获得。

 

其效果图如下:




说明:

1、getBlockCount()、getAvailableBlocks()、getBlockSize()均为低版本写法,系统已经建议不要再用,高版本的均在后面加入long

2、本代码中没有判断内存卡是否存在而直接默认存在并使用,若无内存卡会报错。之前已经讲过内存卡是否存在,请使用者自行加上。


另需要源码的朋友可至http://pan.baidu.com/s/12X9Iu下载


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
获取内存大小,可以获取内存,剩余内存,以及已经使用的内存 文件目录: CheckMemory ...........\.idea ...........\.....\.name ...........\.....\androidDexCompiler.xml ...........\.....\compiler.xml ...........\.....\copyright ...........\.....\.........\profiles_settings.xml ...........\.....\encodings.xml ...........\.....\misc.xml ...........\.....\modules.xml ...........\.....\scopes ...........\.....\......\scope_settings.xml ...........\.....\uiDesigner.xml ...........\.....\vcs.xml ...........\.....\workspace.xml ...........\AndroidManifest.xml ...........\ant.properties ...........\assets ...........\bin ...........\build.xml ...........\CheckMemory.iml ...........\gen ...........\...\me ...........\...\..\normalhh ...........\...\..\........\checkmemory ...........\...\..\........\...........\BuildConfig.java ...........\...\..\........\...........\Manifest.java ...........\...\..\........\...........\R.java ...........\libs ...........\local.properties ...........\out ...........\...\production ...........\...\..........\CheckMemory ...........\...\..........\...........\CheckMemory.apk ...........\...\..........\...........\CheckMemory.unaligned.apk ...........\...\..........\...........\me ...........\...\..........\...........\..\normalhh ...........\...\..........\...........\..\........\checkmemory ...........\...\..........\...........\..\........\...........\BuildConfig.class ...........\...\..........\...........\..\........\...........\MyActivity.class ...........\...\..........\...........\..\........\...........\R$attr.class ...........\...\..........\...........\..\........\...........\R$drawable.class ...........\...\..........\...........\..\........\...........\R$id.class ...........\...\..........\...........\..\........\...........\R$layout.class ...........\...\..........\...........\..\........\...........\R$string.class ...........\...\..........\...........\..\........\...........\R.class ...........\proguard-project.txt ...........\project.properties ...........\res ...........\...\drawable-hdpi ...........\...\.............\ic_launcher.png ...........\...\drawable-ldpi ...........\...\.............\ic_launcher.png ...........\...\drawable-mdpi ...........\...\.............\ic_launcher.png ...........\...\drawable-xhdpi ...........\...\..............\ic_launcher.png ...........\...\layout ...........\...\......\main.xml ...........\...\values ...........\...\......\strings.xml ...........\src ...........\...\me ...........\...\..\normalhh ...........\...\..\........\checkmemory ...........\...\..\........\...........\MyActivity.java

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值