package irdc.cunchu; import irdc.cunchu.R; import java.io.File; import java.text.DecimalFormat; import android.app.Activity; import android.os.Bundle; import android.os.Environment; import android.os.StatFs; import android.view.View; import android.widget.Button; import android.widget.ProgressBar; import android.widget.TextView; public class cunchu extends Activity { private Button myButton; private ProgressBar myProgressBar; private TextView myTextView; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); myButton = (Button) findViewById(R.id.myButton); myProgressBar = (ProgressBar) findViewById(R.id.myProgressBar); myTextView = (TextView) findViewById(R.id.myTextView); myButton.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View arg0) { showSize(); } }); } private void showSize() { /* 将TextView及ProgressBar设置为空值及0 */ myTextView.setText(""); myProgressBar.setProgress(0); /* 判断存储卡是否插入 */ if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { /* �取得SD CARD文件路径一般是/sdcard */ File path = Environment.getExternalStorageDirectory(); /* StatFs看文件系统空间使用状况 */ StatFs statFs = new StatFs(path.getPath()); /* Block的size*/ long blockSize = statFs.getBlockSize(); /* 总Block数量 */ long totalBlocks = statFs.getBlockCount(); /* �已使用的Block数量 */ long availableBlocks = statFs.getAvailableBlocks(); String[] total = fileSize(totalBlocks * blockSize); String[] available = fileSize(availableBlocks * blockSize); /* getMax取得在main.xml里ProgressBar设置的最大值 */ int ss = Integer.parseInt(available[0]) * myProgressBar.getMax() / Integer.parseInt(total[0]); myProgressBar.setProgress(ss); String text = "总共" + total[0] + total[1] + "\n"; text += "可用" + available[0] + available[1]; myTextView.setText(text); } else if (Environment.getExternalStorageState().equals( Environment.MEDIA_REMOVED)) { String text = "SD CARD已删除"; myTextView.setText(text); } } /*返回为字符串数组[0]为大小[1]为单位KB或MB*/ private String[] fileSize(long size) { String str = ""; if (size >= 1024) { str = "KB"; size /= 1024; if (size >= 1024) { str = "MB"; size /= 1024; } } DecimalFormat formatter = new DecimalFormat(); /* 每3个数字用,分隔如:1,000 */ formatter.setGroupingSize(3); String result[] = new String[2]; result[0] = formatter.format(size); result[1] = str; return result; } }
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="irdc.cunchu" android:versionCode="1" android:versionName="1.0.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name="irdc.cunchu.cunchu" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <Button android:id="@+id/myButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/strButton" > </Button> <TextView android:id="@+id/myTextView" android:layout_width="fill_parent" android:layout_height="wrap_content" > </TextView> <ProgressBar android:id="@+id/myProgressBar" style="?android:attr/progressBarStyleHorizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:max="100" android:progress="0"> </ProgressBar> </LinearLayout>