From 81d132bf646ee5910565bf0e771f7e8c0605fc42 Mon Sep 17 00:00:00 2001 From: Miguel Juarez Lopez Date: Tue, 10 Sep 2024 15:26:06 -0400 Subject: [PATCH 1/2] [sdk][andr] Don't use PowerManager if not available --- .../kotlin/io/bitdrift/capture/events/common/PowerMonitor.kt | 4 ++-- .../capture/events/device/DeviceStateListenerLogger.kt | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/platform/jvm/capture/src/main/kotlin/io/bitdrift/capture/events/common/PowerMonitor.kt b/platform/jvm/capture/src/main/kotlin/io/bitdrift/capture/events/common/PowerMonitor.kt index bc908a0..11859bf 100644 --- a/platform/jvm/capture/src/main/kotlin/io/bitdrift/capture/events/common/PowerMonitor.kt +++ b/platform/jvm/capture/src/main/kotlin/io/bitdrift/capture/events/common/PowerMonitor.kt @@ -13,7 +13,7 @@ import android.os.PowerManager import androidx.annotation.RequiresApi internal class PowerMonitor(context: Context) { - val powerManager = context.getSystemService(Context.POWER_SERVICE) as PowerManager + val powerManager = context.getSystemService(Context.POWER_SERVICE) as? PowerManager @RequiresApi(Build.VERSION_CODES.Q) private val thermalStatusMap = hashMapOf( @@ -32,6 +32,6 @@ internal class PowerMonitor(context: Context) { } fun isPowerSaveModeEnabledAttribute(): Pair { - return Pair("_low_power_enabled", if (powerManager.isPowerSaveMode) "1" else "0") + return Pair("_low_power_enabled", if (powerManager?.isPowerSaveMode == true) "1" else "0") } } diff --git a/platform/jvm/capture/src/main/kotlin/io/bitdrift/capture/events/device/DeviceStateListenerLogger.kt b/platform/jvm/capture/src/main/kotlin/io/bitdrift/capture/events/device/DeviceStateListenerLogger.kt index 5f19674..575e94c 100644 --- a/platform/jvm/capture/src/main/kotlin/io/bitdrift/capture/events/device/DeviceStateListenerLogger.kt +++ b/platform/jvm/capture/src/main/kotlin/io/bitdrift/capture/events/device/DeviceStateListenerLogger.kt @@ -66,7 +66,7 @@ internal class DeviceStateListenerLogger( context.registerComponentCallbacks(this) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { - powerMonitor.powerManager.addThermalStatusListener(executor, thermalCallback) + powerMonitor.powerManager?.addThermalStatusListener(executor, thermalCallback) } } @@ -75,7 +75,7 @@ internal class DeviceStateListenerLogger( context.unregisterComponentCallbacks(this) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { - powerMonitor.powerManager.removeThermalStatusListener(thermalCallback) + powerMonitor.powerManager?.removeThermalStatusListener(thermalCallback) } } From f5b10aaeaf6ec3885aff07814187169f4c547e55 Mon Sep 17 00:00:00 2001 From: Miguel Juarez Lopez Date: Tue, 10 Sep 2024 15:31:27 -0400 Subject: [PATCH 2/2] Add comment --- .../kotlin/io/bitdrift/capture/events/common/PowerMonitor.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/platform/jvm/capture/src/main/kotlin/io/bitdrift/capture/events/common/PowerMonitor.kt b/platform/jvm/capture/src/main/kotlin/io/bitdrift/capture/events/common/PowerMonitor.kt index 11859bf..16be285 100644 --- a/platform/jvm/capture/src/main/kotlin/io/bitdrift/capture/events/common/PowerMonitor.kt +++ b/platform/jvm/capture/src/main/kotlin/io/bitdrift/capture/events/common/PowerMonitor.kt @@ -13,6 +13,8 @@ import android.os.PowerManager import androidx.annotation.RequiresApi internal class PowerMonitor(context: Context) { + // Customers have reported encountering certain devices (particularly the Caterpillar S48C phone) + // where this returns null on Android 8.1.0. Even though it should always be available on API level >= 21. val powerManager = context.getSystemService(Context.POWER_SERVICE) as? PowerManager @RequiresApi(Build.VERSION_CODES.Q)