【转】Android 如何获取SDCard 内存(二)
2、讲述 StatFs 类
StatFs 一个模拟linux的df命令的一个类,获得SD卡和手机内存的使用情况
StatFs 常用方法:
getAvailableBlocks()
解释:返回 Int ,获取当前可用的存储空间
getBlockCount()
解释:返回 Int ,获取该区域可用的文件系统数
getBlockSize()
解释:返回 Int ,大小,以字节为单位,一个文件系统
getFreeBlocks()
解释:返回 Int ,该块区域剩余的空间
restat(String path)
解释:执行一个由该对象所引用的文件系统
3、完整例子读取 SDCard 内存
存储卡在 Android 手机上是可以随时插拔的,每次的动作都对引起操作系统进行 ACTION_BROADCAST,本例子将使用上面学到的方法,计算出 SDCard 的剩余容量和总容量。代码如下:
1.package com.demo
2.
3.import java.io.File;
4.import java.text.DecimalFormat;
5.
6.import android.R.integer;
7.import android.app.Activity;
8.import android.os.Bundle;
9.import android.os.Environment;
10.import android.os.StatFs;
11.import android.view.View;
12.import android.view.View.OnClickListener;
13.import android.widget.Button;
14.import android.widget.ProgressBar;
15.import android.widget.TextView;
16.import android.widget.Toast;
17.
18.public
19.class getStorageActivity extends Activity {
20. private Button myButton;
21. /** Called when the activity is first created. */
22. @Override
23. public
24.void onCreate(Bundle savedInstanceState) {
25. super.onCreate(savedInstanceState);
26. setContentView(R.layout.main);
27. findView();
28. viewHolder.myButton.setOnClickListener(new OnClickListener() {
29.
30. @Override
31. public
32.void onClick(View arg0) {
33. // TODO Auto-generated method stub
34. getSize();
35. }
36. });
37. }
38.
39.
40. void findView(){
41. viewHolder.myButton=(Button)findViewById(R.id.Button01);
42. viewHolder.myBar=(ProgressBar)findViewById(R.id.myProgressBar);
43. viewHolder.myTextView=(TextView)findViewById(R.id.myTextView);
44. }
45.
46.
47.
48. void getSize(){
49. viewHolder.myTextView.setText("");
50. viewHolder.myBar.setProgress(0);
51. //判断是否有插入存储卡
52.
53.if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
54. File path =Environment.getExternalStorageDirectory();
55. //取得sdcard文件路径
56. StatFs statfs=new StatFs(path.getPath());
57. //获取block的SIZE
58.
59.long blocSize=statfs.getBlockSize();
60. //获取BLOCK数量
61.
62.long totalBlocks=statfs.getBlockCount();
63. //己使用的Block的数量
64.
65.long availaBlock=statfs.getAvailableBlocks();
66.
67. String[] total=filesize(totalBlocks*blocSize);
68. String[] availale=filesize(availaBlock*blocSize);
69. //设置进度条的最大值
70.
71.int maxValue=Integer.parseInt(availale[0])
72. *viewHolder.myBar.getMax()/Integer.parseInt(total[0]);
73. viewHolder.myBar.setProgress(maxValue);
74. String Text="总共:"+total[0]+total[1]+"\n"
75.+"可用:"+availale[0]+availale[1];
76. viewHolder.myTextView.setText(Text);
77.
78. }else
79.if(Environment.getExternalStorageState().equals(Environment.MEDIA_REMOVED)){
80. Toast.makeText(getStorageActivity.this, "没有sdCard", 1000).show();
81. }
82. }
83.
84. //返回数组,下标1代表大小,下标2代表单位 KB/MB
85. String[] filesize(long size){
86. String str="";
87. if(size>=1024){
88. str="KB";
89. size/=1024;
90. if(size>=1024){
91. str="MB";
92. size/=1024;
93. }
94. }
95. DecimalFormat formatter=new DecimalFormat();
96. formatter.setGroupingSize(3);
97. String result[] =new String[2];
98. result[0]=formatter.format(size);
99. result[1]=str;
100. return result;
101. }
102.}
转载于:https://www.cnblogs.com/wxy8/archive/2011/10/13/2210808.html
【转】Android 如何获取SDCard 内存(二)相关推荐
- 学习笔记:android下获取sdcard容量大小
在日常开发中,有时候需要对SDCard的容量先进行判断再存储文件.我们可以通过查看android关于setting功能的源代码,以便找到获取sdcard可用空间的方法. 获取sdcard容量大小的主要 ...
- Android中获取系统内存信息以及进程信息-----ActivityManager的使用(一)
本节内容主要是讲解ActivityManager的使用,通过ActivityManager我们可以获得系统里正在运行的activities,包括 进程(Process)等.应用程序/包.服务(Serv ...
- Android 如何获取手机内存大小,内置存储空间大小
直接上代码 package com.example.administrator.phoneinfo;import android.content.Context; import android.os. ...
- android 获取应用内存大小,如何在Android中获取当前内存使用量?
这取决于您要获得的内存查询的定义. 通常,您想知道堆内存的状态,因为如果它占用了太多内存,您就会得到OOM并使应用程序崩溃. 为此,您可以检查下一个值:final Runtime runtime = ...
- Android系统信息获取 之十二:获取屏幕分辨率及密度
Android中屏幕分辨率可以有三种方式进行获取,一种是通过WindowManager获取,第二种是通过Resources获取,第三种是Display获取. 可结合具体环境灵活使用. 其中获取的屏幕宽 ...
- Android系统信息获取 之一:系统存储信息的获取(RAM,ROM,SDCard)
Android系统的存储设备一般分为RAM,ROM,SDCard三个部分.其中RAM是Random Access Memory的缩写,是随机存储器,在工作状态时可以随机读写数据,断电以后会丢失数据,即 ...
- 【朝花夕拾】Android性能篇之(二)Java内存分配
前言 原文:[朝花夕拾]Android性能篇之(二)Java内存分配 在内存方面,相比于C/C++程序员,咱们java系程序员算是比较幸运的,因为对于内存的分配和回收,都交给 ...
- android获取app内存信息,Android 获取内存信息(RAM,ROM)
一.RAM,ROM简单介绍 RAM为运行内存,比如,360手机助手的悬浮窗,经常提示的运行内存超过80%之类的,指的都是运行内存.一般大小为几个G. ROM为存储数据的内存,比如,爱奇艺APP在视频页 ...
- Android 获取手机内存大小
背景 项目中图片拍照功能是调用系统相机,由于某些手机内存不足,经常调用系统相机后,项目app进程被系统杀掉了,所以采取的措施是:调用系统相机前先判断手机可用内存大小,当可用内存低于500M时,提示用户 ...
最新文章
- SpringMVC的优点
- 缓存和字符串相互转换
- 五个工业风满满的 Look-alike 算法
- 2018年 第09届 蓝桥杯 Java B组 决赛真题详解及小结
- SAP Spartacus login 页面看不到 UI 控件的问题解决
- SAP JAM里的用户profile功能
- WPF实现实现圆形菜单
- 耗时又繁重的SQL诊断优化,以后就都交给数据库自治服务DAS吧!
- e3是合法浮点数吗_下面4个选项中,均是合法浮点数的选项是?
- text html mime img,使用Python的email.mime.multipart发送HTML邮件时命...
- NO.47 确定项目要完成的需求列表
- JS - Math对象
- oracle xtts 测试,XTTS 跨平台表空间迁移测试
- 2017百度之星初赛
- 泰克示波器面板上的旋钮的作用有哪些
- 用线性探测法处理冲突时的散列表_案例
- java framemaker教程_Freemarker入门案例
- 安装并使用EVE模拟器
- 主成分分析(PCA)(principal component analysis)
- 前景背景样本不均衡解决方案:Focal Loss,GHM与PISA(附python实现代码)