继上篇音乐播放器,我们讲到使用 SDCard 播放音乐的例子,上篇也将如何在 Android 模拟器中创建 SDCard 的步骤列了出来。本篇将扩展上篇例子,去获取SDCard 的所存内存,显示出来告诉用户。本篇讲述的内容如下:
- 1、讲述 Environment 类。
- 2、讲述 StatFs 类。
- 3、完整例子读取 SDCard 内存
1、讲述 Environment 类
Environment 是一个提供访问环境变量的类。
Environment包含常量:
Environment常用方法:
2、讲述 StatFs 类
StatFs 一个模拟linux的df命令的一个类,获得SD卡和手机内存的使用情况
StatFs 常用方法:
3、完整例子读取 SDCard 内存
存储卡在 Android 手机上是可以随时插拔的,每次的动作都对引起操作系统进行 ACTION_BROADCAST,本例子将使用上面学到的方法,计算出 SDCard 的剩余容量和总容量。代码如下:
packagecom.terry;
importjava.io.File;
importjava.text.DecimalFormat;
importandroid.R.integer;
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.os.Environment;
importandroid.os.StatFs;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;
importandroid.widget.ProgressBar;
importandroid.widget.TextView;
importandroid.widget.Toast;
publicclassgetStorageActivityextendsActivity{
privateButtonmyButton;
/**Calledwhentheactivityisfirstcreated.*/
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
findView();
viewHolder.myButton.setOnClickListener(newOnClickListener(){
@Override
publicvoidonClick(Viewarg0){
//TODOAuto-generatedmethodstub
getSize();
}
});
}
voidfindView(){
viewHolder.myButton=(Button)findViewById(R.id.Button01);
viewHolder.myBar=(ProgressBar)findViewById(R.id.myProgressBar);
viewHolder.myTextView=(TextView)findViewById(R.id.myTextView);
}
voidgetSize(){
viewHolder.myTextView.setText("");
viewHolder.myBar.setProgress(0);
//判断是否有插入存储卡
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
Filepath=Environment.getExternalStorageDirectory();
//取得sdcard文件路径
StatFsstatfs=newStatFs(path.getPath());
//获取block的SIZE
longblocSize=statfs.getBlockSize();
//获取BLOCK数量
longtotalBlocks=statfs.getBlockCount();
//己使用的Block的数量
longavailaBlock=statfs.getAvailableBlocks();
String[]total=filesize(totalBlocks*blocSize);
String[]availale=filesize(availaBlock*blocSize);
//设置进度条的最大值
intmaxValue=Integer.parseInt(availale[0])
*viewHolder.myBar.getMax()/Integer.parseInt(total[0]);
viewHolder.myBar.setProgress(maxValue);
StringText="总共:"+total[0]+total[1]+"\n"
+"可用:"+availale[0]+availale[1];
viewHolder.myTextView.setText(Text);
}elseif(Environment.getExternalStorageState().equals(Environment.MEDIA_REMOVED)){
Toast.makeText(getStorageActivity.this,"没有sdCard",1000).show();
}
}
//返回数组,下标1代表大小,下标2代表单位KB/MB
String[]filesize(longsize){
Stringstr="";
if(size>=1024){
str="KB";
size/=1024;
if(size>=1024){
str="MB";
size/=1024;
}
}
DecimalFormatformatter=newDecimalFormat();
formatter.setGroupingSize(3);
Stringresult[]=newString[2];
result[0]=formatter.format(size);
result[1]=str;
returnresult;
}
}
长按二维码向我转账
受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。
阅读
好看
已推荐到看一看
你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
取消
分享想法到看一看
确定
最多200字,当前共字