Android检测手机中存储卡及剩余空间大小的方法(基于Environment,StatFs及DecimalFormat)
程序员文章站
2024-02-14 10:35:40
本文实例讲述了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程序设计有所帮助。