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.
This commit is contained in:
Zephyron 2025-01-17 19:59:13 +10:00
parent 382999025a
commit 3698478977
2 changed files with 13 additions and 6 deletions

View file

@ -28,7 +28,7 @@ android {
namespace = "org.citron.citron_emu"
compileSdkVersion = "android-34"
ndkVersion = "26.1.10909125" // "27.2.12479018" // "28.0.12433566 rc1"// "28.0.12674087 rc2" // "26.1.10909125"
ndkVersion = "27.2.12479018" // "27.2.12479018" // "28.0.12433566 rc1"// "28.0.12674087 rc2" // "26.1.10909125"
buildFeatures {
viewBinding = true

View file

@ -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
@ -1094,10 +1096,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)
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
}
}
}