在开发中,我们经常会用到SD卡,那么在对SD卡进行读写的时候,我们经常需要判断SD卡的剩余容量是否足够。因此,这次我们来写写获取SD卡容量的程序。

该注意的地方,我都在程序里面有注明了。看程序基本就懂了哈。

先来看看运行结果截图吧。

布局文件 activity_main.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="com.example.sdcard.MainActivity" > <TextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" /> <TextView
android:id="@+id/tv2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" /> <TextView
android:id="@+id/tv3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" /> </LinearLayout>

java文件MainActivty.java

package com.example.sdcard;

import java.io.File;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.os.StatFs;
import android.text.format.Formatter;
import android.widget.TextView;
import android.widget.Toast; @SuppressLint("ShowToast")
public class MainActivty extends Activity { @SuppressWarnings("deprecation")
@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView tv = (TextView) findViewById(R.id.tv);
TextView tv2 = (TextView) findViewById(R.id.tv2);
TextView tv3 = (TextView) findViewById(R.id.tv3); long blockSize;
long totalBlocks;
long avaibleBlocks;
// 判断是否有插入并挂载存储卡
if (Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED)) {
File path = Environment.getExternalStorageDirectory();
StatFs statFs = new StatFs(path.getPath());
/*
* Build.VERSION.SDK_INT:获取当前系统版本的等级
* Build.VERSION_CODES.JELLY_BEAN_MR2表示安卓4.3,也就是18,这里直接写18也可以
* 因为getBlockSizeLong()等三个方法是安卓4.3以后才有的,所以这里需要判断当前系统版本
* 补充一个知识点:所有储存设备都被分成若干块,每一块都有固定大小。
*/
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
// 获取块的数量
blockSize = statFs.getBlockSizeLong();
// 获取一共有多少块
totalBlocks = statFs.getBlockCountLong();
// 可以活动的块
avaibleBlocks = statFs.getAvailableBlocksLong();
tv.setText("总空间:" + formatSize(totalBlocks * blockSize));
tv2.setText("可用空间:" + formatSize(avaibleBlocks * blockSize));
tv3.setText("已用空间:"
+ formatSize((totalBlocks * blockSize)
- (avaibleBlocks * blockSize))); } else {
/*
* 黑线说明这三个API已经过时了。但是为了兼容4.3一下的系统,我们需要写上
*/
blockSize = statFs.getBlockSize();
totalBlocks = statFs.getBlockCount();
avaibleBlocks = statFs.getAvailableBlocks();
tv.setText(formatSize(avaibleBlocks * blockSize));
}
} else {
Toast.makeText(this, "未找到SD卡", 0);
}
} private String formatSize(long size) {
// 格式化显示的数据。
return Formatter.formatFileSize(MainActivty.this, size);
} }

最新文章

  1. Couchbase 环境搭建与使用(C#)
  2. 51nod1228 序列求和(自然数幂和)
  3. 微信支付之JSAPI开发-第二篇:业务流程详解与方案设计
  4. SQL Server 显示执行一条语句的执行时间
  5. MongoDB Replica Set 选举过程
  6. Server.mappath用法
  7. JVM 关闭钩子
  8. python 传递结构体指针到 c++ dll
  9. http://blog.csdn.net/shangboerds/article/details/44175667
  10. Css:背景色透明,内容不透明之终极方法!兼容所有浏览器
  11. css3 的content 属性
  12. WSDL
  13. CentOS 5升级Python版本(2.4&gt;2.7)
  14. Chapter 1.简单工厂模式
  15. CodeFirst 初恋
  16. 通过FactoryBean配置Bean
  17. 调用脚本的方式自动的创建或者是更新oracle数据库自带的Seq序列号的值
  18. JSP基础知识➣客户端请求与服务端响应(三)
  19. C/C++.文件是否存在
  20. Tensorflow高速入门2--实现手写数字识别

热门文章

  1. 【转】java中静态方法和非静态方法的存储
  2. Python中MySQL插入数据
  3. STL视频_00
  4. Redis 存储机制
  5. Spring_总结_02_依赖注入
  6. hdu-5183-Negative and Positive (NP)(hash模板)
  7. 树莓派相机操作 —— luvcview 的安装、raspistill:摄像头命令
  8. mount: error mounting /dev/root on /sysroot as ext3: Invalid argument
  9. js改变select的选中项不触发select的change事件
  10. Gym - 101635K:Blowing Candles (简单旋转卡壳,求凸包宽度)