From 2c6524f6c07fc6777b07dea12af7e19fc7426f79 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Mon, 9 Feb 2026 11:39:37 -0500 Subject: [PATCH] Include battery info debuglog. --- .../securesms/ApplicationContext.java | 3 ++- .../logsubmit/LogSectionSystemInfo.kt | 1 + .../securesms/util/DeviceProperties.java | 20 +++++++++++++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java b/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java index 981d4c1f3e..4e1b0ce5d5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java +++ b/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java @@ -104,6 +104,7 @@ import org.thoughtcrime.securesms.service.webrtc.AndroidTelecomUtil; import org.thoughtcrime.securesms.storage.StorageSyncHelper; import org.thoughtcrime.securesms.util.AppForegroundObserver; import org.thoughtcrime.securesms.util.AppStartup; +import org.thoughtcrime.securesms.util.DeviceProperties; import org.thoughtcrime.securesms.util.DynamicTheme; import org.thoughtcrime.securesms.util.RemoteConfig; import org.thoughtcrime.securesms.util.SignalLocalMetrics; @@ -241,7 +242,7 @@ public class ApplicationContext extends Application implements AppForegroundObse @Override public void onForeground() { long startTime = System.currentTimeMillis(); - Log.i(TAG, "App is now visible."); + Log.i(TAG, "App is now visible. Battery: " + DeviceProperties.getBatteryLevel(this) + "% (charging: " + DeviceProperties.isCharging(this) + ")"); AppDependencies.getFrameRateTracker().start(); AppDependencies.getMegaphoneRepository().onAppForegrounded(); diff --git a/app/src/main/java/org/thoughtcrime/securesms/logsubmit/LogSectionSystemInfo.kt b/app/src/main/java/org/thoughtcrime/securesms/logsubmit/LogSectionSystemInfo.kt index c69e2b1298..03803760b1 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/logsubmit/LogSectionSystemInfo.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/logsubmit/LogSectionSystemInfo.kt @@ -79,6 +79,7 @@ class LogSectionSystemInfo : LogSection { Telecom : $telecomSupported User-Agent : ${StandardUserAgentInterceptor.USER_AGENT} SlowNotifications : ${isHavingDelayedNotifications()} + Battery Level : ${DeviceProperties.getBatteryLevel(context)}% (charging: ${DeviceProperties.isCharging(context)}) IgnoringBatteryOpt: ${PowerManagerCompat.isIgnoringBatteryOptimizations(context)} BkgRestricted : ${if (Build.VERSION.SDK_INT >= 28) DeviceProperties.isBackgroundRestricted(context) else "N/A"} Data Saver : ${DeviceProperties.getDataSaverState(context)} diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/DeviceProperties.java b/app/src/main/java/org/thoughtcrime/securesms/util/DeviceProperties.java index e43eb4f134..10842ee2de 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/DeviceProperties.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/DeviceProperties.java @@ -4,6 +4,7 @@ import android.app.ActivityManager; import android.app.ActivityManager.MemoryInfo; import android.content.Context; import android.net.ConnectivityManager; +import android.os.BatteryManager; import android.os.Build; import androidx.annotation.NonNull; @@ -79,6 +80,25 @@ public final class DeviceProperties { return activityManager.isBackgroundRestricted(); } + /** + * Returns the current battery level as a percentage (0-100), or -1 if unavailable. + */ + public static int getBatteryLevel(@NonNull Context context) { + BatteryManager batteryManager = (BatteryManager) context.getSystemService(Context.BATTERY_SERVICE); + if (batteryManager != null) { + return batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY); + } + return -1; + } + + /** + * Returns whether the device is currently charging. + */ + public static boolean isCharging(@NonNull Context context) { + BatteryManager batteryManager = (BatteryManager) context.getSystemService(Context.BATTERY_SERVICE); + return batteryManager != null && batteryManager.isCharging(); + } + public static DataSaverState getDataSaverState(@NonNull Context context) { if (Build.VERSION.SDK_INT >= 24) { switch (ServiceUtil.getConnectivityManager(context).getRestrictBackgroundStatus()) {