標籤:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/LinearLayout1" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity" > <!-- 顯示block的數量的標籤控制項 --> <TextView android:id="@+id/tv_TotalBlocks" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <!-- 顯示block的大小的標籤控制項 --> <TextView android:id="@+id/tv_BlocSize" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <!-- 顯示可用block的標籤控制項 --> <TextView android:id="@+id/tv_AvailaBlock" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <!-- 顯示空block的標籤控制項 --> <TextView android:id="@+id/tv_FreeBlock" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <!-- 顯示SDCard的總大小的標籤控制項 --> <TextView android:id="@+id/tv_SDTotalSize" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <!-- 顯示SDCard的剩餘大小的標籤控制項 --> <TextView android:id="@+id/tv_SDFreeSize" android:layout_width="wrap_content" android:layout_height="wrap_content" /></LinearLayout>
package com.example.yanlei.yl2;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.widget.TextView;import java.io.File;public class MainActivity extends AppCompatActivity { private TextView mTvTotalBlocks; //SDCard上BLOCK總數 private TextView mTvBlocSize; //SDCard上每個block的SIZE private TextView mTvAvailaBlock; //可供程式使用的Block的數量 private TextView mTvFreeBlock; //剩下的所有Block的數量(包括預留的一般程式無法使用的塊) private TextView mTvSDTotalSize; //SDCard 總容量大小MB private TextView mTvSDFreeSize; //SDCard 剩餘大小MB @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 得到布局中的控制項 findView(); // 繫結控制項事件 SDCardSizeTest(); } private void findView() { // 繫結控制項 mTvTotalBlocks = (TextView)findViewById(R.id.tv_TotalBlocks); mTvBlocSize = (TextView)findViewById(R.id.tv_BlocSize); mTvAvailaBlock = (TextView)findViewById(R.id.tv_AvailaBlock); mTvFreeBlock = (TextView)findViewById(R.id.tv_FreeBlock); mTvSDTotalSize = (TextView)findViewById(R.id.tv_SDTotalSize); mTvSDFreeSize = (TextView)findViewById(R.id.tv_SDFreeSize); } public void SDCardSizeTest() { // 取得SDCard當前的狀態 String sDcString = android.os.Environment.getExternalStorageState(); //如果當前系統有sdcard存在 if (sDcString.equals(android.os.Environment.MEDIA_MOUNTED)) { // 取得sdcard檔案路徑 File pathFile = android.os.Environment .getExternalStorageDirectory(); //得到sdcard的狀態 android.os.StatFs statfs = new android.os.StatFs(pathFile.getPath()); // 擷取SDCard上BLOCK總數 long nTotalBlocks = statfs.getBlockCount(); mTvTotalBlocks.setText("SDCard上BLOCK總數: "+nTotalBlocks); // 擷取SDCard上每個block的SIZE long nBlocSize = statfs.getBlockSize(); mTvBlocSize.setText("SDCard上每個bloc的SIZE:"+nBlocSize); // 擷取可供程式使用的Block的數量 long nAvailaBlock = statfs.getAvailableBlocks(); mTvAvailaBlock.setText("可供程式使用的Block的數量 : " + nAvailaBlock); // 擷取剩下的所有Block的數量(包括預留的一般程式無法使用的塊) long nFreeBlock = statfs.getFreeBlocks(); mTvFreeBlock.setText("剩下的所有Block的數量: " + nFreeBlock); // 計算SDCard 總容量大小MB long nSDTotalSize = nTotalBlocks * nBlocSize / 1024 / 1024; mTvSDTotalSize.setText("SDCard 總容量大小MB: " + nSDTotalSize +"MB"); // 計算 SDCard 剩餘大小MB long nSDFreeSize = nAvailaBlock * nBlocSize / 1024 / 1024; mTvSDFreeSize.setText(" SDCard 剩餘大小MB: " + nSDFreeSize +"MB"); } }}
android 獲得SDCard資訊