Android 系统获取内存,ROM,SD卡大小

直接记录方法下来,我个人理解  RAM:指的是内存   ROM:内部存储    SD卡属于外部存储

我的小米2A运行得到的结果是:113MB/755MB (可用内存与系统差不多/系统标的是1GB)

                                                         875MB/3.49GB

                                                         3.17GB/9.37GB(可用sd卡与系统显示差不多/sd总大小系统显示10GB)

kukai电视结果:349MB/811MB

                              4.07GB/5.66GB (系统显示4.07GB/8GB)

                              没有sd卡但还是显示 4.07GB/5.66GB


// 获取android当前可用内存大小
    private String getAvailMemory() {
    	  
        ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);  
        MemoryInfo mi = new MemoryInfo();  
        am.getMemoryInfo(mi);  
        //mi.availMem; 当前系统的可用内存  
        return Formatter.formatFileSize(getBaseContext(), mi.availMem);// 将获取的内存大小规格化  
    }  
  
    //系统总内存大小 
    private String getTotalMemory() {  
        String str1 = "/proc/meminfo";// 系统内存信息文件  
        String str2;  
        String[] arrayOfString;  
        long initial_memory = 0;  
  
        try {  
            FileReader localFileReader = new FileReader(str1);  
            BufferedReader localBufferedReader = new BufferedReader(  
                    localFileReader, 8192);  
            str2 = localBufferedReader.readLine();// 读取meminfo第一行,系统总内存大小  
  
            arrayOfString = str2.split("\\s+");  
            for (String num : arrayOfString) {  
                Log.i(str2, num + "\t");  
            }  
  
            initial_memory = Integer.valueOf(arrayOfString[1]).intValue() * 1024;// 获得系统总内存,单位是KB,乘以1024转换为Byte  
            localBufferedReader.close();  
  
        } catch (IOException e) {  
        }  
        return Formatter.formatFileSize(getBaseContext(), initial_memory);// Byte转换为KB或者MB,内存大小规格化  
    }
    
    //ROM大小
    private String getRomSpace() {  
        File path = Environment.getDataDirectory();  
        StatFs stat = new StatFs(path.getPath());
        long blockSize = stat.getBlockSize();
        long totalBlocks = stat.getBlockCount();  
        long availableBlocks = stat.getAvailableBlocks(); 
        //long usedBlocks=totalBlocks-availableBlocks;
          
        String totalSize = Formatter.formatFileSize(getApplicationContext(), totalBlocks*blockSize);  
        String availableSize = Formatter.formatFileSize(getApplicationContext(), availableBlocks*blockSize);  
          
        return availableSize+"/"+totalSize;  
    }  
    
    
    //得到SD卡大小
    private String getSdcardSize(){
        
        File path = Environment.getExternalStorageDirectory();//得到SD卡的路径  
        StatFs stat = new StatFs(path.getPath());//创建StatFs对象,用来获取文件系统的状态  
        long blockCount = stat.getBlockCount();  
        long blockSize = stat.getBlockSize();  
        long availableBlocks = stat.getAvailableBlocks();  
          
        String totalSize = Formatter.formatFileSize(getApplicationContext(), blockCount*blockSize);//格式化获得SD卡总容量  
        String availableSize = Formatter.formatFileSize(getApplicationContext(), availableBlocks*blockSize);//获得SD卡可用容
        
        return availableSize+"/"+totalSize;  
    }



-------------------------------附上课笔记-------------------------------------------------------------

20.5.ActivityManager获取内存大小

  • 剩余可用内存

MemoryInfooutInfo = newActivityManager.MemoryInfo();

activityManager.getMemoryInfo(outInfo);

floatavailMem=outInfo.availMem/1024f/1024f;

//格式化这个文本字符串

DecimalFormatformat = newDecimalFormat("###.00");

StringavailMemStr = format.format(availMem);

tv_avail_memory.setText(availMemStr+"MB");

  • 单个进程占用内存:DecimalFormat格式化得到的int(参照上面)

MemoryInfo[]memoryInfo = activityManager.getProcessMemoryInfo(pids);

intkbMemory = memoryInfo[0].getTotalPrivateDirty()

  • 总内内存

Api中没有相关方法:方法一(很多软件这样做):可用上面两个相加 方法二(实际内存大小):Build类,用反射获得,从类中可取得内存大小


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值