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