Merge pull request #11954 from t895/log-hardware
android: Log more system information
This commit is contained in:
		| @@ -11,6 +11,7 @@ import java.io.File | |||||||
| import org.yuzu.yuzu_emu.utils.DirectoryInitialization | import org.yuzu.yuzu_emu.utils.DirectoryInitialization | ||||||
| import org.yuzu.yuzu_emu.utils.DocumentsTree | import org.yuzu.yuzu_emu.utils.DocumentsTree | ||||||
| import org.yuzu.yuzu_emu.utils.GpuDriverHelper | import org.yuzu.yuzu_emu.utils.GpuDriverHelper | ||||||
|  | import org.yuzu.yuzu_emu.utils.Log | ||||||
|  |  | ||||||
| fun Context.getPublicFilesDir(): File = getExternalFilesDir(null) ?: filesDir | fun Context.getPublicFilesDir(): File = getExternalFilesDir(null) ?: filesDir | ||||||
|  |  | ||||||
| @@ -49,6 +50,7 @@ class YuzuApplication : Application() { | |||||||
|         DirectoryInitialization.start() |         DirectoryInitialization.start() | ||||||
|         GpuDriverHelper.initializeDriverParameters() |         GpuDriverHelper.initializeDriverParameters() | ||||||
|         NativeLibrary.logDeviceInfo() |         NativeLibrary.logDeviceInfo() | ||||||
|  |         Log.logDeviceInfo() | ||||||
|  |  | ||||||
|         createNotificationChannels() |         createNotificationChannels() | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -107,7 +107,7 @@ class EmulationActivity : AppCompatActivity(), SensorEventListener { | |||||||
|  |  | ||||||
|         val preferences = PreferenceManager.getDefaultSharedPreferences(YuzuApplication.appContext) |         val preferences = PreferenceManager.getDefaultSharedPreferences(YuzuApplication.appContext) | ||||||
|         if (!preferences.getBoolean(Settings.PREF_MEMORY_WARNING_SHOWN, false)) { |         if (!preferences.getBoolean(Settings.PREF_MEMORY_WARNING_SHOWN, false)) { | ||||||
|             if (MemoryUtil.isLessThan(MemoryUtil.REQUIRED_MEMORY, MemoryUtil.Gb)) { |             if (MemoryUtil.isLessThan(MemoryUtil.REQUIRED_MEMORY, MemoryUtil.totalMemory)) { | ||||||
|                 Toast.makeText( |                 Toast.makeText( | ||||||
|                     this, |                     this, | ||||||
|                     getString( |                     getString( | ||||||
|   | |||||||
| @@ -3,6 +3,8 @@ | |||||||
|  |  | ||||||
| package org.yuzu.yuzu_emu.utils | package org.yuzu.yuzu_emu.utils | ||||||
|  |  | ||||||
|  | import android.os.Build | ||||||
|  |  | ||||||
| object Log { | object Log { | ||||||
|     // Tracks whether we should share the old log or the current log |     // Tracks whether we should share the old log or the current log | ||||||
|     var gameLaunched = false |     var gameLaunched = false | ||||||
| @@ -16,4 +18,14 @@ object Log { | |||||||
|     external fun error(message: String) |     external fun error(message: String) | ||||||
|  |  | ||||||
|     external fun critical(message: String) |     external fun critical(message: String) | ||||||
|  |  | ||||||
|  |     fun logDeviceInfo() { | ||||||
|  |         info("Device Manufacturer - ${Build.MANUFACTURER}") | ||||||
|  |         info("Device Model - ${Build.MODEL}") | ||||||
|  |         if (Build.VERSION.SDK_INT > Build.VERSION_CODES.R) { | ||||||
|  |             info("SoC Manufacturer - ${Build.SOC_MANUFACTURER}") | ||||||
|  |             info("SoC Model - ${Build.SOC_MODEL}") | ||||||
|  |         } | ||||||
|  |         info("Total System Memory - ${MemoryUtil.getDeviceRAM()}") | ||||||
|  |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -27,7 +27,7 @@ object MemoryUtil { | |||||||
|     const val Pb = Tb * 1024 |     const val Pb = Tb * 1024 | ||||||
|     const val Eb = Pb * 1024 |     const val Eb = Pb * 1024 | ||||||
|  |  | ||||||
|     private fun bytesToSizeUnit(size: Float): String = |     private fun bytesToSizeUnit(size: Float, roundUp: Boolean = false): String = | ||||||
|         when { |         when { | ||||||
|             size < Kb -> { |             size < Kb -> { | ||||||
|                 context.getString( |                 context.getString( | ||||||
| @@ -39,63 +39,59 @@ object MemoryUtil { | |||||||
|             size < Mb -> { |             size < Mb -> { | ||||||
|                 context.getString( |                 context.getString( | ||||||
|                     R.string.memory_formatted, |                     R.string.memory_formatted, | ||||||
|                     (size / Kb).hundredths, |                     if (roundUp) ceil(size / Kb) else (size / Kb).hundredths, | ||||||
|                     context.getString(R.string.memory_kilobyte) |                     context.getString(R.string.memory_kilobyte) | ||||||
|                 ) |                 ) | ||||||
|             } |             } | ||||||
|             size < Gb -> { |             size < Gb -> { | ||||||
|                 context.getString( |                 context.getString( | ||||||
|                     R.string.memory_formatted, |                     R.string.memory_formatted, | ||||||
|                     (size / Mb).hundredths, |                     if (roundUp) ceil(size / Mb) else (size / Mb).hundredths, | ||||||
|                     context.getString(R.string.memory_megabyte) |                     context.getString(R.string.memory_megabyte) | ||||||
|                 ) |                 ) | ||||||
|             } |             } | ||||||
|             size < Tb -> { |             size < Tb -> { | ||||||
|                 context.getString( |                 context.getString( | ||||||
|                     R.string.memory_formatted, |                     R.string.memory_formatted, | ||||||
|                     (size / Gb).hundredths, |                     if (roundUp) ceil(size / Gb) else (size / Gb).hundredths, | ||||||
|                     context.getString(R.string.memory_gigabyte) |                     context.getString(R.string.memory_gigabyte) | ||||||
|                 ) |                 ) | ||||||
|             } |             } | ||||||
|             size < Pb -> { |             size < Pb -> { | ||||||
|                 context.getString( |                 context.getString( | ||||||
|                     R.string.memory_formatted, |                     R.string.memory_formatted, | ||||||
|                     (size / Tb).hundredths, |                     if (roundUp) ceil(size / Tb) else (size / Tb).hundredths, | ||||||
|                     context.getString(R.string.memory_terabyte) |                     context.getString(R.string.memory_terabyte) | ||||||
|                 ) |                 ) | ||||||
|             } |             } | ||||||
|             size < Eb -> { |             size < Eb -> { | ||||||
|                 context.getString( |                 context.getString( | ||||||
|                     R.string.memory_formatted, |                     R.string.memory_formatted, | ||||||
|                     (size / Pb).hundredths, |                     if (roundUp) ceil(size / Pb) else (size / Pb).hundredths, | ||||||
|                     context.getString(R.string.memory_petabyte) |                     context.getString(R.string.memory_petabyte) | ||||||
|                 ) |                 ) | ||||||
|             } |             } | ||||||
|             else -> { |             else -> { | ||||||
|                 context.getString( |                 context.getString( | ||||||
|                     R.string.memory_formatted, |                     R.string.memory_formatted, | ||||||
|                     (size / Eb).hundredths, |                     if (roundUp) ceil(size / Eb) else (size / Eb).hundredths, | ||||||
|                     context.getString(R.string.memory_exabyte) |                     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 |     val totalMemory: Float | ||||||
|     // the potential error created by memInfo.totalMem |  | ||||||
|     private val totalMemory: Float |  | ||||||
|         get() { |         get() { | ||||||
|             val memInfo = ActivityManager.MemoryInfo() |             val memInfo = ActivityManager.MemoryInfo() | ||||||
|             with(context.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager) { |             with(context.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager) { | ||||||
|                 getMemoryInfo(memInfo) |                 getMemoryInfo(memInfo) | ||||||
|             } |             } | ||||||
|  |  | ||||||
|             return ceil( |             return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) { | ||||||
|                 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) { |                 memInfo.advertisedMem.toFloat() | ||||||
|                     memInfo.advertisedMem.toFloat() |             } else { | ||||||
|                 } else { |                 memInfo.totalMem.toFloat() | ||||||
|                     memInfo.totalMem.toFloat() |             } | ||||||
|                 } |  | ||||||
|             ) |  | ||||||
|         } |         } | ||||||
|  |  | ||||||
|     fun isLessThan(minimum: Int, size: Float): Boolean = |     fun isLessThan(minimum: Int, size: Float): Boolean = | ||||||
| @@ -109,5 +105,7 @@ object MemoryUtil { | |||||||
|             else -> totalMemory < Kb && totalMemory < minimum |             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) | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user