文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2022-06-06 09:05

关注

本文实例讲述了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来显示存储卡的状况
  
  @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程序设计有所帮助。

您可能感兴趣的文章:java.text.DecimalFormat类十进制格式化DecimalFormat数字格式化用法详解java.text.DecimalFormat用法详解java中DecimalFormat四舍五入用法详解Java中DecimalFormat用法详解java DecimalFormat常用方法详解java 使用DecimalFormat进行数字的格式化实例详解DecimalFormat多种用法详解


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯