package com.example.getMem;

import java.io.File;

import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.os.StatFs;
import android.text.format.Formatter;
import android.widget.TextView;
import android.app.Activity;
import android.app.AlertDialog.Builder; public class MainActivity extends Activity {     private TextView tv_totalSize;
    private TextView tv_availabelSize;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        tv_totalSize=(TextView) findViewById(R.id.totalSize);
        tv_availabelSize=(TextView) findViewById(R.id.availabel);
        
        // 获取存储空间
        File dataFileDir=Environment.getDataDirectory();
        String data =getMemoryInfo(dataFileDir);
        String []d= data.split("##");
        
        tv_totalSize.setText("内部存储总大小:" + d[0]);
        tv_availabelSize.setText("内部存储可用空间是:" + d[1]);
        
        //获取Sd 卡空间
        
//        File SdFileDir=Environment.getExternalStorageDirectory();
//        //判断Sd卡是否可用
//        if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
//            String sdMemory =getMemoryInfo(SdFileDir);
//            String []sd=sdMemory.split("##");
//            tv_totalSize.setText("内部存储总大小:" + sd[0]);
//            tv_availabelSize.setText("内部存储可用空间是:" + sd[1]);
//            
//        }
        
    }
    private String getMemoryInfo(File path) {
        long blockSize;
        long totalBlockCount;
        long avaiLabelCount;
        // TODO Auto-generated method stub
        StatFs stat = new StatFs(path.getPath());
        
        //检测系统版本
        if(Build.VERSION.SDK_INT >=Build.VERSION_CODES.JELLY_BEAN_MR2){
        
        //获取每个扇区的大小
         blockSize = stat.getBlockSizeLong();        
        
        //获取总共有多少扇区
         totalBlockCount=stat.getBlockCountLong();
        
        //获取可用扇区数量
         avaiLabelCount=stat.getAvailableBlocksLong();
         }else{
             blockSize=stat.getBlockSize();
             totalBlockCount=stat.getBlockCount();
             avaiLabelCount=stat.getAvailableBlocks();
            
         }
        
                 
        // 磁盘总大小
        String totalMemory =Formatter.formatFileSize(this, blockSize*totalBlockCount);
        // 可用大小
        String availabelMemory=Formatter.formatFileSize(this, blockSize*avaiLabelCount);
        
        return totalMemory+"##"+availabelMemory;
    }     
     }

http://pan.baidu.com/s/1bp0V87d

Android 获取存储空间的更多相关文章

  1. android 获取sd卡根目录

    dir:/storage/emulated/0 也就是 sdcard目录 ====== android 获取sd卡根目录 public String getSDPath(){        File ...

  2. Android获取SD卡路径及SDCard内存的方法

    这篇文章主要介绍了Android获取SD卡路径及SDCard内存的方法,较为详细的分析了Android针对SD卡操作所涉及的类及其具体函数功能,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了A ...

  3. Android获取内置sdcard跟外置sdcard路径

    Android获取内置sdcard跟外置sdcard路径.(测试过两个手机,亲测可用) 1.先得到外置sdcard路径,这个接口是系统提供的标准接口. 2.得到上一级文件夹目录 3.得到该目录的所有文 ...

  4. Android获取系统时间方法的总结

    Android获取系统时间方法的方法有很多种,常用的有Calendar.Date.currentTimeMills等方法. (1)Calendar Calendar获取系统时间首先要用Calendar ...

  5. Android获取屏幕宽和高

    android获取屏幕的高度和宽度用到WindowManager这个类,两种方法:   1.WindowManager wm = (WindowManager) getContext()        ...

  6. android 获取文件夹、文件的大小 以B、KB、MB、GB 为单位

    android 获取文件夹.文件的大小 以B.KB.MB.GB 为单位   public class FileSizeUtil { public static final int SIZETYPE_B ...

  7. Android获取APK包名的几种方法

    Android获取APK包名的几种方法:1.adb shell pm list package -f | findstr 关键字 #只能获取到包名,主Activity名无法获取到 2.使用aapt-- ...

  8. I.MX6 android 获取framebuffer信息

    /******************************************************************************** * I.MX6 android 获取 ...

  9. android 获取IMEI号

    android 获取 imei号码 核心代码: Imei = ((TelephonyManager) getSystemService(TELEPHONY_SERVICE)).getDeviceId( ...

随机推荐

  1. Power Gating的设计(模块二)

    针对lower power的验证,由cpf/upf来建模,包括: 1)power gating的功能模型(在power gate之后将output force为x) 2)isolation功能模型: ...

  2. Linux下/etc/resolv.conf 会被重新写入

    主要原因是因为安装了network manager,所以在启动后每次都会重写这个文件. 所以需要在network manager->eth0->ipv4->Automatic(DHC ...

  3. OpenGL笔试题

    简述FrameBuffer,RenderBuffer,Depth Buffer,Framebuffer attachment,Stencil buffer的关系 简述利用OpenGL执行图像叠加(大P ...

  4. PL/SQL编程基础

    范例:编写不做任何工作的PL/SQL块 BEGIN NULL ; END ; /   范例:编写一个简单的PL/SQL程序 DECLARE v_num NUMBER ; -- 定义一个变量v_num ...

  5. ADB server didn't ACK的解决方法

    异常信息如下: C:\Users\Administrator>adb devices* daemon not running. starting it now on port 5037 *ADB ...

  6. android 学习随笔七(网络:图片及文本传输及线程关系 )

    主线程.子线程.UI的关系 简单的HTTP请求 -------------------------------------------------------- public class MainAc ...

  7. scala的静态,单列模式

    package com.test.scala.test /** * 单例对象,这种对象不能提供构造函数 */ object SingleObject { private var lastnumber= ...

  8. Xcode 项目配置学习

    Xcode有四种build for 分别是: build for Running build for Testing build for Profiling build for Archiving R ...

  9. Linux和Windows远程桌面互连

    1.Ubuntu 连 windows    W.1 Windows设置允许远程桌面连接    U.1 Ubuntu设置 apt-get install rdesktop    U.2 Ubuntu连接 ...

  10. settings.xml

    <settings> <!--本地仓库.该值表示构建系统本地仓库的路径.其默认值为~/.m2/repository,windows:C:/Users/Administrator/.m ...