欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android检测手机中存储卡及剩余空间大小的方法(基于Environment,StatFs及DecimalFormat)

程序员文章站 2024-02-21 18:47:28
本文实例讲述了android检测手机中存储卡及剩余空间大小的方法。分享给大家供大家参考,具体如下: android中environment可用来检测手机中是否安装有存储卡...

本文实例讲述了android检测手机中存储卡及剩余空间大小的方法。分享给大家供大家参考,具体如下:

android中environment可用来检测手机中是否安装有存储卡以及文件存储路径等。statfs可以获取存储卡的空间大小以及剩余空间大小。decimalformat可以实现把数字划分为一定的格式。

具体程序如下:

import java.io.file;
import java.text.decimalformat;
import android.app.activity;
import android.os.bundle;
import android.os.environment;
import android.os.statfs;
import android.view.view;
import android.view.view.onclicklistener;
import android.widget.button;
import android.widget.progressbar;
import android.widget.textview;
public class a08activity extends activity {
 private textview tv;//用来显示存储卡的情况
 private button b;//触发检测存储卡事件
 private progressbar pb;//用progressbar来显示存储卡的状况
  /** called when the activity is first created. */
  @override
  public void oncreate(bundle savedinstancestate) {
    super.oncreate(savedinstancestate);
    setcontentview(r.layout.main);
    tv=(textview)findviewbyid(r.id.tv);
    b=(button)findviewbyid(r.id.button);
    pb=(progressbar)findviewbyid(r.id.pb);
    b.setonclicklistener(new onclicklistener(){
  @override
  public void onclick(view v) {
  // todo auto-generated method stub
  showsize();//用来检测存储卡的存储情况
  }
  });
  }
 protected void showsize() {
 // todo auto-generated method stub
 tv.settext("");
 pb.setprogress(0);
 //用来检测存储卡是否存在
 if(environment.getexternalstoragestate().equals(environment.media_mounted)){
  //如果存储卡存在,则获取存储文件的路径
  file path=environment.getexternalstoragedirectory();
  statfs sf=new statfs(path.getpath());//创建statfs对象
  long blocksize=sf.getblocksize();//获得blocksize
  long totalblock=sf.getblockcount();//获得全部block
  long availableblock=sf.getavailableblocks();//获取可用的block
  //用string数组来存放block信息
  string[] total=filesize(totalblock*blocksize);
  string[] available=filesize(availableblock*blocksize);
  //在progressbar中显示可用空间的大小
  int a=integer.parseint(available[0]);
  pb.setprogress(a);
  string s="sd卡中空间总共有:"+total[0]+total[1]+"\n";
  s+="剩余空间大小:"+available[0]+available[1];
  tv.settext(s);
 }
 else if(environment.getexternalstoragestate().equals(environment.media_removed)){
  tv.settext("sd卡已移除");
 }
 }
 //用来定义存储空间显示格式
 public string[] filesize(long size){
 string s="";
 if(size>1024){
  s="kb";
  size/=1024;
  if(size>1024){
  s="mb";
  size/=1024;
  }
 }
 decimalformat df=new decimalformat();
 df.setgroupingsize(3);
 string[] result=new string[3];
 result[0]=df.format(size);
 result[1]=s;
 return result;
 }
}

更多关于android相关内容感兴趣的读者可查看本站专题:《android控件用法总结》及《android开发入门与进阶教程

希望本文所述对大家android程序设计有所帮助。