[android] 分析setting源代码获取SD卡大小

前端之家收集整理的这篇文章主要介绍了[android] 分析setting源代码获取SD卡大小前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

保存文件到@H_404_1@sd卡需要判断@H_404_1@sd卡的大小,通过查看@H_404_1@android系统的自带应用的源代码,得到方法@H_404_1@sdk下面的@H_404_1@source@H_404_1@sdk的源代码,包含的是@H_404_1@android.Jar下面的所有@H_404_1@class的源代码。在@H_404_1@android系统源代码中有@H_404_1@ndk@H_404_1@java@H_404_1@c@H_404_1@,dalvik虚拟机等,里面@H_404_1@packages/apps/settings是设置的源代码

 

导入一个源代码,@H_404_1@import ==> general ==> existing projects into workspace 选择完@H_404_1@root目录后会报错(@H_404_1@no project to import) 

正确导入 @H_404_1@import  ==>  android ==> existing android code into workspace ==>选中@H_404_1@root目录 完成

导入系统源码此时的项目里面会报各种错误,原因是一些@H_404_1@api找不到,忽略掉就行,@H_404_1@Environment.getExternalStorageDirectory()得到根路径@H_404_1@File类型的

Environment.getDataDirectory() 获取手机内存

调用@H_404_1@File对象的@H_404_1@getPath(),得到@H_404_1@String路径,实例化@H_404_1@StaFs

调用@H_404_1@StaFs对象的@H_404_1@getBlockCount() 得到空间个数,调用@H_404_1@getAvailableBlock()可用个数

调用@H_404_1@StaFs对象的@H_404_1@getBlockSize() 得到每个空间大小 两个相乘得到总空间大小

调用@H_404_1@Formatter.formatFileSize() 格式化大小(@H_404_1@android.text.format

 

根据系统设置的文字信息搜索代码部分,按@H_404_1@ctrl+h 文件搜索,在@H_404_1@setting源码中查找到。@H_404_1@windows上面存储文件,首先格式化硬盘,比如存储@H_404_1@1个字节的信息,占用空间也是@H_404_1@4kb

 

activity代码

 

package com.tsh.readsdsize;

import java.io.File;

 android.app.Activity;
 android.os.Bundle;
 android.os.Environment;
 android.os.StatFs;
 android.text.format.Formatter;
 android.util.Log;
 android.widget.TextView;

public class MainActivity extends Activity {
    private TextView tv;
    @SuppressWarnings("deprecation")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv=(TextView) findViewById(R.id.tv);
        //SD卡根目录
        File rootFile=Environment.getExternalStorageDirectory();
        StatFs stat=new StatFs(rootFile.getPath());
        int size=stat.getBlockSize();
        long count=(long) stat.getBlockCount();
        long avaNum=stat.getAvailableBlocks();
        long sum=size*count;
        long avaSum=avaNum*格式化
        String sdSize=Formatter.formatFileSize(this,sum);
        String avSdSize=Formatter.formatFileSize(getRomSize());
    }
    /**
     * 
     * 获取手机内存大小
     */
    public String getRomSize(){
        File rootFile=Environment.getDataDirectory();
        StatFs stat=return "总空间(手机):"+sdSize+"\n"+"可用空间(手机):"+avSdSize;
    }

}

 

猜你在找的Android相关文章