Android学习(16) --获取sd卡剩余容量的代码

获取sd卡剩余容量的代码

  • 导入源码中的Settings项目
  • 查找“可用空间”得到

     <string name="memory_available" msgid="418542433817289474">"可用空间"</string>
    
  • 查找”memory_available”,得到

    <Preference android:key="memory_sd_avail" 
        style="?android:attr/preferenceInformationStyle" 
        android:title="@string/memory_available"
        android:summary="00"/>
    
  • 查找”memory_sd_avail”,得到

    //这个字符串就是sd卡剩余容量
    formatSize(availableBlocks * blockSize) + readOnly
    //这两个参数相乘,得到sd卡以字节为单位的剩余容量
    availableBlocks * blockSize
    
  • 存储设备会被分为若干个区块,每个区块有固定的大小

  • 区块大小 * 区块数量 等于 存储设备的总大小

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        File path = Environment.getExternalStorageDirectory();
        StatFs stat = new StatFs(path.getPath());
        long blockSize;
        long totalBlocks;
        long availableBlocks;
    
        //获取当前系统版本的等级  大于等于4.3
        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2){
             blockSize = stat.getBlockSizeLong(); 
             totalBlocks = stat.getBlockCountLong();
             availableBlocks = stat.getAvailableBlocksLong();
        }
        else{ //小于4.3
            blockSize = stat.getBlockSize();
            totalBlocks = stat.getBlockCount();
            availableBlocks = stat.getAvailableBlocks();
        }
    
        TextView tv = (TextView) findViewById(R.id.tv);
        tv.setText(formatSize(availableBlocks * blockSize));
    }
    
    private String formatSize(long size) {
        return Formatter.formatFileSize(this, size);
    }
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值