Browse Source
Merge pull request #10869 from 8bitDream/memory
Merge pull request #10869 from 8bitDream/memory
android: Add a notice when RAM inadequatence_cpp
committed by
GitHub
3 changed files with 85 additions and 1 deletions
-
17src/android/app/src/main/java/org/yuzu/yuzu_emu/activities/EmulationActivity.kt
-
59src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/MemoryUtil.kt
-
10src/android/app/src/main/res/values/strings.xml
@ -0,0 +1,59 @@ |
|||
// SPDX-FileCopyrightText: 2023 yuzu Emulator Project |
|||
// SPDX-License-Identifier: GPL-2.0-or-later |
|||
|
|||
package org.yuzu.yuzu_emu.utils |
|||
|
|||
import android.app.ActivityManager |
|||
import android.content.Context |
|||
import org.yuzu.yuzu_emu.R |
|||
import java.util.Locale |
|||
|
|||
class MemoryUtil(val context: Context) { |
|||
|
|||
private val Long.floatForm: String |
|||
get() = String.format(Locale.ROOT, "%.2f", this.toDouble()) |
|||
|
|||
private fun bytesToSizeUnit(size: Long): String { |
|||
return when { |
|||
size < Kb -> "${size.floatForm} ${context.getString(R.string.memory_byte)}" |
|||
size < Mb -> "${(size / Kb).floatForm} ${context.getString(R.string.memory_kilobyte)}" |
|||
size < Gb -> "${(size / Mb).floatForm} ${context.getString(R.string.memory_megabyte)}" |
|||
size < Tb -> "${(size / Gb).floatForm} ${context.getString(R.string.memory_gigabyte)}" |
|||
size < Pb -> "${(size / Tb).floatForm} ${context.getString(R.string.memory_terabyte)}" |
|||
size < Eb -> "${(size / Pb).floatForm} ${context.getString(R.string.memory_petabyte)}" |
|||
else -> "${(size / Eb).floatForm} ${context.getString(R.string.memory_exabyte)}" |
|||
} |
|||
} |
|||
|
|||
private val totalMemory = |
|||
with(context.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager) { |
|||
val memInfo = ActivityManager.MemoryInfo() |
|||
getMemoryInfo(memInfo) |
|||
memInfo.totalMem |
|||
} |
|||
|
|||
fun isLessThan(minimum: Int, size: Long): Boolean { |
|||
return when (size) { |
|||
Kb -> totalMemory < Mb && totalMemory < minimum |
|||
Mb -> totalMemory < Gb && (totalMemory / Mb) < minimum |
|||
Gb -> totalMemory < Tb && (totalMemory / Gb) < minimum |
|||
Tb -> totalMemory < Pb && (totalMemory / Tb) < minimum |
|||
Pb -> totalMemory < Eb && (totalMemory / Pb) < minimum |
|||
Eb -> totalMemory / Eb < minimum |
|||
else -> totalMemory < Kb && totalMemory < minimum |
|||
} |
|||
} |
|||
|
|||
fun getDeviceRAM(): String { |
|||
return bytesToSizeUnit(totalMemory) |
|||
} |
|||
|
|||
companion object { |
|||
const val Kb: Long = 1024 |
|||
const val Mb = Kb * 1024 |
|||
const val Gb = Mb * 1024 |
|||
const val Tb = Gb * 1024 |
|||
const val Pb = Tb * 1024 |
|||
const val Eb = Pb * 1024 |
|||
} |
|||
} |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue