Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 获取可用/总/可用的内部内存大小_Android_Android Studio_Kotlin_Memory - Fatal编程技术网

Android 获取可用/总/可用的内部内存大小

Android 获取可用/总/可用的内部内存大小,android,android-studio,kotlin,memory,Android,Android Studio,Kotlin,Memory,您好,我正在尝试使用下面的方法获取设备的总内存和可用内存大小。但它给了我错误的价值观: fun totalMemory(): Long { val statFs = StatFs(Environment.getRootDirectory().absolutePath) return (statFs.blockCount * statFs.blockSize).toLong() } fun freeMemory(): Long { val statFs = StatFs

您好,我正在尝试使用下面的方法获取设备的总内存和可用内存大小。但它给了我错误的价值观:

 fun totalMemory(): Long {
    val statFs = StatFs(Environment.getRootDirectory().absolutePath)
    return (statFs.blockCount * statFs.blockSize).toLong()
}

fun freeMemory(): Long {
    val statFs = StatFs(Environment.getRootDirectory().absolutePath)
    return (statFs.availableBlocks * statFs.blockSize).toLong()
}

fun busyMemory(): Long {
    val statFs = StatFs(Environment.getRootDirectory().absolutePath)
    val total = (statFs.blockCount * statFs.blockSize).toLong()
    val free = (statFs.availableBlocks * statFs.blockSize).toLong()
    return total - free
}
我正在使用以下方法以人类可读的形式转换值:

fun floatForm(d: Double): String {
    return DecimalFormat("#.##").format(d)
}


fun bytesToHuman(size: Long): String? {
    val Kb = 1 * 1024.toLong()
    val Mb = Kb * 1024
    val Gb = Mb * 1024
    val Tb = Gb * 1024
    val Pb = Tb * 1024
    val Eb = Pb * 1024
    if (size < Kb) return floatForm(size.toDouble()) + " byte"
    if (size >= Kb && size < Mb) return floatForm(size.toDouble() / Kb) + " Kb"
    if (size >= Mb && size < Gb) return floatForm(size.toDouble() / Mb) + " Mb"
    if (size >= Gb && size < Tb) return floatForm(size.toDouble() / Gb) + " Gb"
    if (size >= Tb && size < Pb) return floatForm(size.toDouble() / Tb) + " Tb"
    if (size >= Pb && size < Eb) return floatForm(size.toDouble() / Pb) + " Pb"
    return if (size >= Eb) floatForm(size.toDouble() / Eb) + " Eb" else "???"
}
fun floatForm(d:Double):字符串{
返回十进制格式(“#.###”)。格式(d)
}
fun bytesToHuman(尺寸:长):字符串?{
val Kb=1*1024.toLong()
val Mb=Kb*1024
val Gb=Mb*1024
val Tb=Gb*1024
val Pb=Tb*1024
val Eb=Pb*1024
if(size=Kb&&size=Mb&&size=Gb&&size=Tb&&size=Pb&&size=Eb)floatForm(size.toDouble()/Eb)+“Eb”else“”,则返回
}

我需要得到实际的自由/总内部尺寸

您应该包括代码返回的内容以及您期望它返回的内容。这可能会帮助您更快此方法返回我totalMemory:-1751187456字节freeMemory:49.44Mbin文件管理器显示实际总大小为32GB,可用空间为13.8GB