您的位置:首页 > 编程语言

分析setting源代码获取sd卡大小

2015-09-10 09:34 357 查看
分析setting源代码获取sd卡大小
android系统有一个特点,即开源,我们可以得到任何一个应用的源代码,比如我们不知道这样的android代码怎么写,我们可以打开模拟器里面的设置(setting),里面有一个存储,我们可以下载setting的源代码,通过快捷方式(ctrl+h)一步步查找怎么写代码

1.1步骤:

比如下载android2.3的源代码(注意这里的源代码不是指sources里面的代码,source里面的代码是sdk的全部代码,这里的代码是指全部android的代码,包含sdk,模拟器,等等,这里的代码很大,2.3差不多800M,4.0差不多10G)-----打开下载的文件----打开frameworks----base----packages---apps----settings-----把setting目录解压到桌面------import这个目录到eclipse



由于有些api没有导入,项目中会有红叉,可以不理会这些红叉----可以根据项目名,按快捷键ctrl+h----搜索设置里面的项目名,找到相应的代码。最终可以定位到src目录下找到某个功能的实现源代码

package com.example.readsdcard;
import java.io.File;
…
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView tv = (TextView)findViewById(R.id.tv);

File path = Environment.getExternalStorageDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long totalBlocks = stat.getBlockCount();
long availableBlocks = stat.getAvailableBlocksLong();
long totalSize = blockSize * totalBlocks;
long availSize = availableBlocks * blockSize;

//将long类型转化为字符串类型
String totalStr = Formatter.formatFileSize(this, totalSize);
String availStr = Formatter.formatFileSize(this, availSize);

//设置到界面上
tv.setText("总内存:" + totalStr + "\n" +"可用内存:" + availStr + "\n" + getRomSpaceInfo());
}

public String getRomSpaceInfo()
{
File path = Environment.getDataDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long totalBlocks = stat.getBlockCount();
long availableBlocks = stat.getAvailableBlocksLong();

long totalSize = blockSize * totalBlocks;
long availSize = availableBlocks * blockSize;

String totalStr = Formatter.formatFileSize(this, totalSize);
String availStr = Formatter.formatFileSize(this, availSize);
return "手机内存:总空间" + totalStr +"\n手机内存:可用空间" + availStr;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: