运行效果图:
布局文件修改activity_select_sd.xml:
<LinearLayout 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:orientation="vertical"
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=".SelectSDActivity" >
<!-- 显示block的数量的标签控件 -->
<TextView
android:id="@+id/tv_TotalBlocks"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<!-- 显示block的大小的标签控件 -->
<TextView
android:id="@+id/tv_BlockSize"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<!-- 显示可用Block的标签控件 -->
<TextView
android:id="@+id/tv_AvailaBlocks"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<!-- 显示空的block -->
<TextView
android:id="@+id/tv_FreeBlocks"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<!-- 显示SDCard的总大小 -->
<TextView
android:id="@+id/tv_SDTotalBlocks"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<!-- 显示SDCard的剩余大小 -->
<TextView
android:id="@+id/tv_SDFreeSize"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
修改SelectSDActivity.java:
import java.io.File;
import com.bzu.test070listview.R.id;
import android.R.anim;
import android.os.Bundle;
import android.os.StatFs;
import android.app.Activity;
import android.view.Menu;
import android.widget.TextView;
public class SelectSDActivity extends Activity {
private TextView tv_TotalBlocks,tv_BlockSize,tv_AvailaBlocks,//block总数,每个block的size,可使用的block
tv_FreeBlocks,tv_SDTotalBlocks,tv_SDFreeSize;//剩余的block数量,SD总容量,SD剩余大小
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_select_sd);
setTitle("SD卡信息");
findById();//获取控件id
setListener();//绑定事件
}
private void setListener() {
String SDString=android.os.Environment.getExternalStorageState();//获得SDCard的状态
//判断是否存在SD卡
if(SDString.equals(android.os.Environment.MEDIA_MOUNTED)){
File pathFile=android.os.Environment.getExternalStorageDirectory();//得到SD卡的文件路径
android.os.StatFs statfs=new android.os.StatFs(pathFile.getPath());//得到SDCard的状态
long nTotalBlocks=statfs.getBlockCount();//得到block总数
tv_TotalBlocks.setText("SDCard中Block的总数:"+nTotalBlocks);
long nBlockSize=statfs.getBlockSize();
tv_BlockSize.setText("SDCard中每个block的size:"+nBlockSize);
long nAvailaBlocks=statfs.getAvailableBlocks();
tv_AvailaBlocks.setText("可供使用的block数量:"+nAvailaBlocks);
tv_FreeBlocks.setText("余下的所有Block的数量:"+statfs.getFreeBlocks());
tv_SDTotalBlocks.setText("SDCard的总容量:"+(nTotalBlocks*nBlockSize/1024/1024)+" MB");
tv_SDFreeSize.setText("SDCard的剩余容量:"+(nAvailaBlocks*nBlockSize/1024/1024)+" MB");
}
}
private void findById() {
tv_TotalBlocks=(TextView) findViewById(R.id.tv_TotalBlocks);
tv_BlockSize=(TextView) findViewById(R.id.tv_BlockSize);
tv_AvailaBlocks=(TextView) findViewById(R.id.tv_AvailaBlocks);
tv_FreeBlocks=(TextView) findViewById(R.id.tv_FreeBlocks);
tv_SDTotalBlocks=(TextView) findViewById(R.id.tv_SDTotalBlocks);
tv_SDFreeSize=(TextView) findViewById(R.id.tv_SDFreeSize);
}
}
还有SD的一些其他信息,可以借助API开发文档