如图所示,通过progressBar来展示当前的sdcard容量。
代码:
activity代码:
- package cn.com.chenzheng_java;
- import java.io.File;
- import android.app.Activity;
- import android.os.Bundle;
- import android.os.Environment;
- import android.os.StatFs;
- import android.util.Log;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- import android.widget.ProgressBar;
- import android.widget.Toast;
- public class SDCardActivity extends Activity implements OnClickListener {
- String result = "SDCard容量相关信息:/n";
- ProgressBar progressBar ;
- Button button;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.sdcard);
- progressBar = (ProgressBar) findViewById(R.id.progressBar_sdcard);
- button = (Button) findViewById(R.id.button_sdcard);
- button.setOnClickListener(this);
- }
- private void showSDCardSize(){
- progressBar.setProgress(0);
- File sdcard = Environment.getExternalStorageDirectory();
- /**
- * 我们可以通过StatFs访问文件系统的空间容量等信息
- */
- StatFs statFs = new StatFs(sdcard.getPath());
- /**
- * statFs.getBlockSize可以获取当前的文件系统中,一个block所占有的字节数
- */
- int blockSize = statFs.getBlockSize();
- /**
- * statFs.getAvaliableBlocks方法可以返回尚未使用的block的数量
- */
- int avaliableBlocks = statFs.getAvailableBlocks();
- /**
- * statFs.getBlockCount可以获取总的block数量
- */
- int totalBlocks = statFs.getBlockCount();
- result+="/n 尚未被使用的空间大小:"+avaliableBlocks*blockSize+"byte";
- result+="/n 总空间大小:"+totalBlocks*blockSize+"byte";
- float a = (float)avaliableBlocks/totalBlocks;
- int b = Integer.valueOf(Float.valueOf(a*100).toString().substring(0,2));
- progressBar.setProgress(90);
- Log.i("通知", result);
- Toast.makeText(this, b+" "+result, Toast.LENGTH_LONG).show();
- }
- @Override
- public void onClick(View v) {
- showSDCardSize();
- }
- }
sdcard.xml
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent" android:layout_height="fill_parent"
- android:orientation="vertical">
- <!--
- progressBar设置为水平的长框而不是一直旋转的小圆圈,应该通过如下语句设置
- style="?android:attr/progressBarStyleHorizontal"
- 或者
- style="?android:progressBarStyleHorizontal"
- -->
- <ProgressBar android:id="@+id/progressBar_sdcard"
- android:progress="0" style="?android:progressBarStyleHorizontal" mce_style="?android:progressBarStyleHorizontal"
- android:max="100"
- android:layout_width="fill_parent" android:layout_height="wrap_content"></ProgressBar>
- <Button android:id="@+id/button_sdcard" android:layout_width="wrap_content"
- android:text="Button" android:layout_height="wrap_content"></Button>
- </LinearLayout>
其他的文件都为默认。
--------------------------------------------------------------------------------------------
这里,只要使用到了一个类android.os.StatFs,该类可以让我们访问文件系统的容量相关的信息。
主要方法有: