From c4a6fc5e417d84e500e649b02d7dac08f7b89555 Mon Sep 17 00:00:00 2001 From: markushi Date: Tue, 10 Jun 2025 12:54:54 +0200 Subject: [PATCH 1/2] Address PR feeback --- .../android/replay/util/SystemProperties.kt | 31 ++++++------------- .../replay/video/SimpleVideoEncoder.kt | 2 +- 2 files changed, 10 insertions(+), 23 deletions(-) diff --git a/sentry-android-replay/src/main/java/io/sentry/android/replay/util/SystemProperties.kt b/sentry-android-replay/src/main/java/io/sentry/android/replay/util/SystemProperties.kt index 76d0de5a46..f8b36a9199 100644 --- a/sentry-android-replay/src/main/java/io/sentry/android/replay/util/SystemProperties.kt +++ b/sentry-android-replay/src/main/java/io/sentry/android/replay/util/SystemProperties.kt @@ -1,34 +1,21 @@ package io.sentry.android.replay.util -import android.annotation.SuppressLint import android.os.Build -import java.lang.reflect.Method internal object SystemProperties { - // from https://cs.android.com/android/platform/superproject/main/+/main:out/soong/.intermediates/system/libsysprop/srcs/PlatformProperties/android_common/xref/srcjars.xref/android/sysprop/SocProperties.java;l=163-171 - // these props are not available on API < 31 via Build, so we use reflection to access them - const val SOC_MODEL = "ro.soc.model" - const val SOC_MANUFACTURER = "ro.soc.manufacturer" - - @delegate:SuppressLint("PrivateApi") - private val getProperty: Method by lazy { - val clazz = Class.forName("android.os.SystemProperties") - clazz.getMethod("get", String::class.java) + enum class Property(val key: String) { + SOC_MODEL("ro.soc.model"), + SOC_MANUFACTURER("ro.soc.manufacturer") } - fun get(key: String, defaultValue: String = ""): String { - return if (Build.VERSION.SDK_INT < Build.VERSION_CODES.S) { - try { - getProperty.invoke(null, key) as? String ?: defaultValue - } catch (e: Throwable) { - defaultValue - } - } else { + fun get(key: Property, defaultValue: String = ""): String { + return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { when (key) { - SOC_MODEL -> Build.SOC_MODEL - SOC_MANUFACTURER -> Build.SOC_MANUFACTURER - else -> throw IllegalArgumentException("Unknown system property: $key") + Property.SOC_MODEL -> Build.SOC_MODEL + Property.SOC_MANUFACTURER -> Build.SOC_MANUFACTURER } + } else { + defaultValue } } } diff --git a/sentry-android-replay/src/main/java/io/sentry/android/replay/video/SimpleVideoEncoder.kt b/sentry-android-replay/src/main/java/io/sentry/android/replay/video/SimpleVideoEncoder.kt index 70ce45dff2..2e0b916a78 100644 --- a/sentry-android-replay/src/main/java/io/sentry/android/replay/video/SimpleVideoEncoder.kt +++ b/sentry-android-replay/src/main/java/io/sentry/android/replay/video/SimpleVideoEncoder.kt @@ -169,7 +169,7 @@ internal class SimpleVideoEncoder( val canvas = if ( Build.MANUFACTURER.contains("xiaomi", ignoreCase = true) || Build.MANUFACTURER.contains("motorola", ignoreCase = true) || - SystemProperties.get(SystemProperties.SOC_MODEL).equals("T606", ignoreCase = true) + SystemProperties.get(SystemProperties.Property.SOC_MODEL).equals("T606", ignoreCase = true) ) { surface?.lockCanvas(null) } else { From 5aa506bb8af97c2e115f0c8017bf3d093c99fd39 Mon Sep 17 00:00:00 2001 From: markushi Date: Tue, 10 Jun 2025 12:57:56 +0200 Subject: [PATCH 2/2] Cleanup --- .../java/io/sentry/android/replay/util/SystemProperties.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sentry-android-replay/src/main/java/io/sentry/android/replay/util/SystemProperties.kt b/sentry-android-replay/src/main/java/io/sentry/android/replay/util/SystemProperties.kt index f8b36a9199..2de284cf64 100644 --- a/sentry-android-replay/src/main/java/io/sentry/android/replay/util/SystemProperties.kt +++ b/sentry-android-replay/src/main/java/io/sentry/android/replay/util/SystemProperties.kt @@ -3,9 +3,9 @@ package io.sentry.android.replay.util import android.os.Build internal object SystemProperties { - enum class Property(val key: String) { - SOC_MODEL("ro.soc.model"), - SOC_MANUFACTURER("ro.soc.manufacturer") + enum class Property { + SOC_MODEL, + SOC_MANUFACTURER } fun get(key: Property, defaultValue: String = ""): String {