查看源代码查找获取sd卡剩余容量的代码

  • 下载android源码,找到app下的Settings应用源码,导入Settings项目(android项目源码)
  • 查找“可用空间”得到
     <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"/>
    
  • 查找"memorysdavail",得到
    //这个字符串就是sd卡剩余容量
    formatSize(availableBlocks * blockSize) + readOnly
    //这两个参数相乘,得到sd卡以字节为单位的剩余容量
    availableBlocks * blockSize
    
  • 存储设备会被分为若干个区块,每个区块有固定的大小
  • 区块大小 * 区块数量 等于 存储设备的总大小
  • 示例代码
    File path = Environment.getExternalStorageDirectory();
        StatFs stat = new StatFs(path.getPath());
        long blockSize;
        long totalBlocks;
        long availableBlocks;
    
        //获取当前系统版本的等级
        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2){
             blockSize = stat.getBlockSizeLong();
             totalBlocks = stat.getBlockCountLong();
             availableBlocks = stat.getAvailableBlocksLong();
        }
        else{
            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);
    }
    
    
时间: 2024-11-05 11:33:31

查看源代码查找获取sd卡剩余容量的代码的相关文章

Android基础--获取SD卡可用容量

import java.io.File; import android.os.Build; import android.os.Bundle; import android.os.Environment; import android.os.StatFs; import android.app.Activity; import android.text.format.Formatter; import android.view.Menu; import android.widget.TextVi

Android获取SD卡总容量,可用大小,机身内存总容量及可用大小

public long getSDTotalSize() { /*获取存储卡路径*/ File sdcardDir= Environment.getExternalStorageDirectory(); /*StatFs 看文件系统空间使用情况*/ StatFs statFs=new StatFs(sdcardDir.getPath()); long blockSize= statFs.getBlockSizeLong(); long totalSize=statFs.getBlockCount

安卓读取SD卡的容量

在开发中,我们经常会用到SD卡,那么在对SD卡进行读写的时候,我们经常需要判断SD卡的剩余容量是否足够.因此,这次我们来写写获取SD卡容量的程序. 该注意的地方,我都在程序里面有注明了.看程序基本就懂了哈. 先来看看运行结果截图吧. 布局文件 activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://sche

无废话Android之android下junit测试框架配置、保存文件到手机内存、android下文件访问的权限、保存文件到SD卡、获取SD卡大小、使用SharedPreferences进行数据存储、使用Pull解析器操作XML文件、android下操作sqlite数据库和事务(2)

1.android下junit测试框架配置 单元测试需要在手机中进行安装测试 (1).在清单文件中manifest节点下配置如下节点 <instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="com.example.demo1" /> 上面targetPackage指定的包要和应用的package相同. (2)在清单文件中ap

获取sd卡的内存空间和可用空间

protected void onCreate(Bundle savedInstanceState) {   super.onCreate(savedInstanceState);   setContentView(R.layout.activity_main);     //或sd的路径   File file=Environment.getExternalStorageDirectory();   //获取sd卡的所有信息   StatFs fs=new StatFs(file.getPat

Android 获取SD卡路径和判断SD卡是否存在

android获取sd卡路径方法: 不建议直接写死android sd卡的路径. public String getSDPath(){ File sdDir = null; boolean sdCardExist = Environment.getExternalStorageState() .equals(android.os.Environment.MEDIA_MOUNTED); //判断sd卡是否存在 if (sdCardExist) { sdDir = Environment.getEx

Android - 通过系统数据库获取SD卡音乐媒体信息

当写一些东西(比如音乐播放器)的时候,就需要SD卡的mp3列表了-开始我是使用列文件来着,但是再获取文件的信息(歌手,专辑,图片,时长等..)很麻烦,所以直接用这个函数了- 1 private void getMusicPaths(){ 2 // 3 // 获取音乐列表 4 // 5 Cursor cursor = getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null, M

Android开发学习---如何写数据到外部存储设备(sd卡),Environment.getExternalStorageDirectory,怎么获取sd卡的大小?

本文主要介绍如何写数据到sd卡,这里主要到的技术是Environment中的方法. 1. 2.实现代码: /datasave/src/com/amos/datasave/savePasswordService.java //写数据到sdcard public void savePasswordToSDCard(String name, String password) { // android 2.1 /sdcard/xx.txt // android 2.2 /mnt/sdcard/xx.tx

cocos2d-x 获取SD卡图片 线程 UI

获取SD卡图片: CCSprite* pSprite = CCSprite::create("/mnt/sdcard/x.png"); /mnt/sdcard 是SD卡的根目录,有的机子是/sdcard,所以最好用内部函数获取SD卡的根目录. UI更新是不能在子线程里的,这样会出现黑块或白块或直接挂掉 弄个定时器schedule实时监听是否要更新UI .h文件 class A: public cocos2d::CCLayer { public: virtual bool init();