From 33413680740356a417751906c2607c9ea6e97859 Mon Sep 17 00:00:00 2001 From: Zephyron Date: Fri, 17 Jan 2025 19:59:13 +1000 Subject: [PATCH] android: Fix battery temperature reading in EmulationFragment Replaces the battery temperature reading implementation with a more compatible approach using ACTION_BATTERY_CHANGED broadcast intent. This change provides better backwards compatibility and adds proper error handling for the temperature reading functionality. --- .../yuzu_emu/fragments/EmulationFragment.kt | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EmulationFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EmulationFragment.kt index e80a089b32..414a958bd8 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EmulationFragment.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EmulationFragment.kt @@ -7,6 +7,8 @@ import android.annotation.SuppressLint import android.app.AlertDialog import android.content.Context import android.content.DialogInterface +import android.content.Intent +import android.content.IntentFilter import android.content.pm.ActivityInfo import android.content.res.Configuration import android.net.Uri @@ -1084,10 +1086,15 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { } private fun getBatteryTemperature(context: Context): Float { - val batteryManager = context.getSystemService(Context.BATTERY_SERVICE) as BatteryManager - // Get temperature in tenths of a degree Celsius - val temperature = batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_TEMPERATURE) - // Convert to degrees Celsius - return temperature / 10.0f + try { + val batteryIntent = context.registerReceiver(null, IntentFilter(Intent.ACTION_BATTERY_CHANGED)) + // Temperature in tenths of a degree Celsius + val temperature = batteryIntent?.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, 0) ?: 0 + // Convert to degrees Celsius + return temperature / 10.0f + } catch (e: Exception) { + Log.error("[EmulationFragment] Failed to get battery temperature: ${e.message}") + return 0.0f + } } }