|
|
|
@ -27,7 +27,7 @@ object MemoryUtil {
|
|
|
|
|
const val Pb = Tb * 1024
|
|
|
|
|
const val Eb = Pb * 1024
|
|
|
|
|
|
|
|
|
|
private fun bytesToSizeUnit(size: Float): String =
|
|
|
|
|
private fun bytesToSizeUnit(size: Float, roundUp: Boolean = false): String =
|
|
|
|
|
when {
|
|
|
|
|
size < Kb -> {
|
|
|
|
|
context.getString(
|
|
|
|
@ -39,63 +39,59 @@ object MemoryUtil {
|
|
|
|
|
size < Mb -> {
|
|
|
|
|
context.getString(
|
|
|
|
|
R.string.memory_formatted,
|
|
|
|
|
(size / Kb).hundredths,
|
|
|
|
|
if (roundUp) ceil(size / Kb) else (size / Kb).hundredths,
|
|
|
|
|
context.getString(R.string.memory_kilobyte)
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
size < Gb -> {
|
|
|
|
|
context.getString(
|
|
|
|
|
R.string.memory_formatted,
|
|
|
|
|
(size / Mb).hundredths,
|
|
|
|
|
if (roundUp) ceil(size / Mb) else (size / Mb).hundredths,
|
|
|
|
|
context.getString(R.string.memory_megabyte)
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
size < Tb -> {
|
|
|
|
|
context.getString(
|
|
|
|
|
R.string.memory_formatted,
|
|
|
|
|
(size / Gb).hundredths,
|
|
|
|
|
if (roundUp) ceil(size / Gb) else (size / Gb).hundredths,
|
|
|
|
|
context.getString(R.string.memory_gigabyte)
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
size < Pb -> {
|
|
|
|
|
context.getString(
|
|
|
|
|
R.string.memory_formatted,
|
|
|
|
|
(size / Tb).hundredths,
|
|
|
|
|
if (roundUp) ceil(size / Tb) else (size / Tb).hundredths,
|
|
|
|
|
context.getString(R.string.memory_terabyte)
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
size < Eb -> {
|
|
|
|
|
context.getString(
|
|
|
|
|
R.string.memory_formatted,
|
|
|
|
|
(size / Pb).hundredths,
|
|
|
|
|
if (roundUp) ceil(size / Pb) else (size / Pb).hundredths,
|
|
|
|
|
context.getString(R.string.memory_petabyte)
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
else -> {
|
|
|
|
|
context.getString(
|
|
|
|
|
R.string.memory_formatted,
|
|
|
|
|
(size / Eb).hundredths,
|
|
|
|
|
if (roundUp) ceil(size / Eb) else (size / Eb).hundredths,
|
|
|
|
|
context.getString(R.string.memory_exabyte)
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Devices are unlikely to have 0.5GB increments of memory so we'll just round up to account for
|
|
|
|
|
// the potential error created by memInfo.totalMem
|
|
|
|
|
private val totalMemory: Float
|
|
|
|
|
val totalMemory: Float
|
|
|
|
|
get() {
|
|
|
|
|
val memInfo = ActivityManager.MemoryInfo()
|
|
|
|
|
with(context.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager) {
|
|
|
|
|
getMemoryInfo(memInfo)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return ceil(
|
|
|
|
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
|
|
|
|
|
memInfo.advertisedMem.toFloat()
|
|
|
|
|
} else {
|
|
|
|
|
memInfo.totalMem.toFloat()
|
|
|
|
|
}
|
|
|
|
|
)
|
|
|
|
|
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
|
|
|
|
|
memInfo.advertisedMem.toFloat()
|
|
|
|
|
} else {
|
|
|
|
|
memInfo.totalMem.toFloat()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fun isLessThan(minimum: Int, size: Float): Boolean =
|
|
|
|
@ -109,5 +105,7 @@ object MemoryUtil {
|
|
|
|
|
else -> totalMemory < Kb && totalMemory < minimum
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fun getDeviceRAM(): String = bytesToSizeUnit(totalMemory)
|
|
|
|
|
// Devices are unlikely to have 0.5GB increments of memory so we'll just round up to account for
|
|
|
|
|
// the potential error created by memInfo.totalMem
|
|
|
|
|
fun getDeviceRAM(): String = bytesToSizeUnit(totalMemory, true)
|
|
|
|
|
}
|
|
|
|
|