android之查看SDCard容量

来源:互联网 发布:天气预报数据库 编辑:程序博客网 时间:2024/05/16 19:31

如图所示,通过progressBar来展示当前的sdcard容量。

代码:

activity代码:

[java:nogutter] view plaincopyprint?
  1. package cn.com.chenzheng_java;
  2. import java.io.File;
  3. import android.app.Activity;
  4. import android.os.Bundle;
  5. import android.os.Environment;
  6. import android.os.StatFs;
  7. import android.util.Log;
  8. import android.view.View;
  9. import android.view.View.OnClickListener;
  10. import android.widget.Button;
  11. import android.widget.ProgressBar;
  12. import android.widget.Toast;
  13. public class SDCardActivityextends Activity implements OnClickListener {
  14. String result = "SDCard容量相关信息:/n";
  15. ProgressBar progressBar ;
  16. Button button;
  17. @Override
  18. protected void onCreate(Bundle savedInstanceState) {
  19. super.onCreate(savedInstanceState);
  20. setContentView(R.layout.sdcard);
  21. progressBar = (ProgressBar) findViewById(R.id.progressBar_sdcard);
  22. button = (Button) findViewById(R.id.button_sdcard);
  23. button.setOnClickListener(this);
  24. }
  25. private void showSDCardSize(){
  26. progressBar.setProgress(0);
  27. File sdcard = Environment.getExternalStorageDirectory();
  28. /**
  29. * 我们可以通过StatFs访问文件系统的空间容量等信息
  30. */
  31. StatFs statFs = new StatFs(sdcard.getPath());
  32. /**
  33. * statFs.getBlockSize可以获取当前的文件系统中,一个block所占有的字节数
  34. */
  35. int blockSize = statFs.getBlockSize();
  36. /**
  37. * statFs.getAvaliableBlocks方法可以返回尚未使用的block的数量
  38. */
  39. int avaliableBlocks = statFs.getAvailableBlocks();
  40. /**
  41. * statFs.getBlockCount可以获取总的block数量
  42. */
  43. int totalBlocks = statFs.getBlockCount();
  44. result+="/n 尚未被使用的空间大小:"+avaliableBlocks*blockSize+"byte";
  45. result+="/n 总空间大小:"+totalBlocks*blockSize+"byte";
  46. float a = (float)avaliableBlocks/totalBlocks;
  47. int b = Integer.valueOf(Float.valueOf(a*100).toString().substring(0,2));
  48. progressBar.setProgress(90);
  49. Log.i("通知", result);
  50. Toast.makeText(this, b+" "+result, Toast.LENGTH_LONG).show();
  51. }
  52. @Override
  53. public void onClick(View v) {
  54. showSDCardSize();
  55. }
  56. }

sdcard.xml

[xhtml:nogutter] view plaincopyprint?
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"android:layout_height="fill_parent"
  4. android:orientation="vertical">
  5. <!--
  6. progressBar设置为水平的长框而不是一直旋转的小圆圈,应该通过如下语句设置
  7. style="?android:attr/progressBarStyleHorizontal"
  8. 或者
  9. style="?android:progressBarStyleHorizontal"
  10. -->
  11. <ProgressBarandroid:id="@+id/progressBar_sdcard"
  12. android:progress="0"style="?android:progressBarStyleHorizontal"mce_style="?android:progressBarStyleHorizontal"
  13. android:max="100"
  14. android:layout_width="fill_parent"android:layout_height="wrap_content"></ProgressBar>
  15. <Buttonandroid:id="@+id/button_sdcard"android:layout_width="wrap_content"
  16. android:text="Button"android:layout_height="wrap_content"></Button>
  17. </LinearLayout>

其他的文件都为默认。

--------------------------------------------------------------------------------------------

这里,只要使用到了一个类android.os.StatFs,该类可以让我们访问文件系统的容量相关的信息。

主要方法有:

原创粉丝点击