public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView tvMemoryInfo = (TextView) findViewById(R.id.no_memory_state);
//获得sd卡的内存状态
File sdcardFileDir = Environment.getExternalStorageDirectory();
String sdcardMemory = getMemoryInfo(sdcardFileDir);
//获得手机内部存储空间的状态
File dataFileDir = Environment.getDataDirectory();
String dataMenmory = getMemoryInfo(dataFileDir);
tvMemoryInfo.setText("SD卡:"+sdcardMemory+"\n手机内部存储:"+dataMenmory);
}
private String getMemoryInfo(File path){
//获得一个磁盘状态对象
StatFs stat = new StatFs(path.getPath());
//获得一个扇区的大小
long blockSize = stat.getBlockSize();
//获得总扇区数
long totalBlocks = stat.getBlockCount();
//获得可用的扇区总数(剩余空间的扇区数)
long availableBlocks = stat.getAvailableBlocks();
//总空间
String totalMemory = Formatter.formatFileSize(this,totalBlocks*blockSize);
//可用空间
String availableMemory = Formatter.formatFileSize(this,availableBlocks*blockSize);
return "总空间:"+totalMemory+"\n"+"可用空间:"+availableMemory;
}
}
acticity_main.xml中
<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"
tools:context=".MainActivity" >
<TextView
android:id="@+id/no_memory_state"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
/>
</RelativeLayout>
效果