zoukankan      html  css  js  c++  java
  • 分析setting源代码获取sd卡大小

    分析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目录下找到某个功能的实现源代码

     1 package com.example.readsdcard;
     2 import java.io.File;
     3  4 public class MainActivity extends Activity {
     5     @Override
     6     protected void onCreate(Bundle savedInstanceState) {
     7         super.onCreate(savedInstanceState);
     8         setContentView(R.layout.activity_main);
     9         TextView tv = (TextView)findViewById(R.id.tv);
    10         
    11         File path = Environment.getExternalStorageDirectory();
    12         StatFs stat = new StatFs(path.getPath());
    13         long blockSize = stat.getBlockSize();
    14         long totalBlocks = stat.getBlockCount();
    15         long availableBlocks = stat.getAvailableBlocksLong();        
    16         long totalSize = blockSize * totalBlocks;
    17         long availSize = availableBlocks * blockSize;
    18         
    19         //将long类型转化为字符串类型
    20         String totalStr = Formatter.formatFileSize(this, totalSize);
    21         String availStr = Formatter.formatFileSize(this, availSize);
    22     
    23         //设置到界面上
    24         tv.setText("总内存:" + totalStr + "
    " +"可用内存:" + availStr + "
    " + getRomSpaceInfo());
    25     }
    26     
    27         public String getRomSpaceInfo()
    28         {
    29             File path = Environment.getDataDirectory();
    30             StatFs stat = new StatFs(path.getPath());
    31             long blockSize = stat.getBlockSize();
    32             long totalBlocks = stat.getBlockCount();
    33             long availableBlocks = stat.getAvailableBlocksLong();
    34             
    35             long totalSize = blockSize * totalBlocks;
    36             long availSize = availableBlocks * blockSize;
    37             
    38             String totalStr = Formatter.formatFileSize(this, totalSize);
    39             String availStr = Formatter.formatFileSize(this, availSize);
    40             return "手机内存:总空间" + totalStr +"
    手机内存:可用空间" + availStr;
    41         }
    42 }

     

     
  • 相关阅读:
    c++字符串排序
    JAVA实现四则运算的简单计算器
    JAVA图形小动画之简单行星运动
    JAVA多线程编程
    ege图形库之简单贪吃蛇(c++)
    ege图形库之动画排序
    mysql 性能优化方案
    MYSQL 优化常用方法
    [手把手教你] 用Swoft 搭建微服务(TCP RPC)
    php有效防止同一用户多次登录
  • 原文地址:https://www.cnblogs.com/baoxiaofei/p/4237549.html
Copyright © 2011-2022 走看看