获取 Android 设备的总内存

Fetch total Memory of Android Device

我正在尝试获取 Android 设备的总内存。但它 returns 我是 24GB。但是,设备的总内存为 32GB。

我尝试使用...

public long getInternalFreeSpace()    {
    //Get free Bytes...
    long bytesAvailable = stat.getBlockSizeLong() * stat.getAvailableBlocksLong();
    return bytesAvailable;
}

试试这个:

public long getInternalFreeSpace(){
StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath());
return long bytesAvailable = (long)stat.getBlockSize() *(long)stat.getBlockCount();
}

阅读StatFs.

Retrieve overall information about the space on a filesystem

private static long getInternalMemorySize() 
 {
    final File pathOBJ = Environment.getDataDirectory();
    final StatFs stat = new StatFs(pathOBJ.getPath());
    final long blockSize;
    final long totalBlocks;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) 
    {
        blockSize = stat.getBlockSizeLong();
        totalBlocks = stat.getBlockCountLong();
    } else 
    {

        blockSize = stat.getBlockSize();
        totalBlocks = stat.getBlockCount();
    }
    return totalBlocks * blockSize;
 }

你可以检查Get total memory of certain device .

试试这个,让我知道它是否适合你..

StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath());
long bytesAvailable = (long)stat.getBlockSize() *(long)stat.getBlockCount();
long megAvailable = bytesAvailable / 1048576;

使用这个:

public static long getAvailableInternalMemorySize() {
    File path = Environment.getDataDirectory();
    StatFs stat = new StatFs(path.getPath());
    long blockSize = stat.getBlockSize();
    long availableBlocks = stat.getAvailableBlocks();
    long size = availableBlocks * blockSize;
    long availableBlocksInKB = size /= 1024;
    long availableBlocksInMB = availableBlocksInKB /= 1024;
    return availableBlocksInMB;
}
stat.getBlockSizeLong() * stat.getFreeBlocksLong();

https://developer.android.com/reference/android/os/StatFs.html#getFreeBlocksLong()