你的位置:首页 > 操作系统

[操作系统]android 获得SDCard信息


<LinearLayout ="http://schemas.android.com/apk/res/android"  ="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");    }  }}