分析setting源代码获取sd卡大小
2015-09-10 09:34
357 查看
分析setting源代码获取sd卡大小
android系统有一个特点,即开源,我们可以得到任何一个应用的源代码,比如我们不知道这样的android代码怎么写,我们可以打开模拟器里面的设置(setting),里面有一个存储,我们可以下载setting的源代码,通过快捷方式(ctrl+h)一步步查找怎么写代码
由于有些api没有导入,项目中会有红叉,可以不理会这些红叉----可以根据项目名,按快捷键ctrl+h----搜索设置里面的项目名,找到相应的代码。最终可以定位到src目录下找到某个功能的实现源代码
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; } }
相关文章推荐
- JAVA中正则表达式匹配,替换,查找,切割的方法
- 拼接字符串代码段
- eclipse使用小技巧
- 常用Java注释标签(Java comment tags)
- c#属性
- C#中有关string和byte[]转换的问题
- java数据类型
- java变量的命名使用规则
- java安装jdk和编辑器
- 解决Struts2报错!!Unable to load configuration struts2-core-2.2.3.jar!/struts-default.xml:29:72报错
- Java中一些关键字的使用技巧总结
- 已知两圆圆心坐标及半径求两圆交点 (C语言|参数方程求解)
- ASP.Net MVC开发基础学习笔记(1):走向MVC模式
- C#线程同步的几种方法
- 用Qt编写一个串口通讯程序
- orocos OperationCaller 类是设计(泛型编程)
- 零基础学python-14.1 python的文档资源:注释和dir()
- 零基础学python-14.1 python的文档资源:注释和dir()
- iOS开发之SQLite-C语言接口规范(一)——Ready And Open Your SQLite
- java读取Excel的方法,解析xls、xlsx两种格式