From e1104aa36c09204b6d3ede0beda6b4f4d31e5413 Mon Sep 17 00:00:00 2001 From: MHShetty Date: Wed, 7 Aug 2024 00:26:53 +0530 Subject: [PATCH] Prevent specifying preview stabilization option for unsupported devices (Video stabilization has two modes, ON and PREVIEW_STABILIZATION; the second one gets enabled when enabling preview stabilization which might not be supported on all devices) --- .../main/java/app/grapheneos/camera/CamConfig.kt | 15 ++++++++++++--- .../app/grapheneos/camera/ui/SettingsDialog.kt | 2 +- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/app/grapheneos/camera/CamConfig.kt b/app/src/main/java/app/grapheneos/camera/CamConfig.kt index 65f83e0f5..663fe6a3e 100644 --- a/app/src/main/java/app/grapheneos/camera/CamConfig.kt +++ b/app/src/main/java/app/grapheneos/camera/CamConfig.kt @@ -441,7 +441,7 @@ class CamConfig(private val mActivity: MainActivity) { var enableEIS: Boolean get() { - return isStabilizationSupported() && mActivity.settingsDialog.enableEISToggle.isChecked + return isVideoStabilizationSupported() && mActivity.settingsDialog.enableEISToggle.isChecked } set(value) { val editor = commonPref.edit() @@ -557,7 +557,16 @@ class CamConfig(private val mActivity: MainActivity) { camera!!.cameraInfo.isZslSupported } - fun isStabilizationSupported() : Boolean { + fun isVideoStabilizationSupported() : Boolean { + return isRecorderStabilizationSupported() + } + + private fun isPreviewStabilizationSupported() : Boolean { + return Preview.getPreviewCapabilities(getCurrentCameraInfo()).isStabilizationSupported + } + + + private fun isRecorderStabilizationSupported() : Boolean { return Recorder.getVideoCapabilities(getCurrentCameraInfo()).isStabilizationSupported } @@ -1196,7 +1205,7 @@ class CamConfig(private val mActivity: MainActivity) { ResolutionSelector.Builder().setAspectRatioStrategy(aspectRatioStrategy).build() ) - if (isVideoMode) { + if (isVideoMode && isPreviewStabilizationSupported()) { previewBuilder.setPreviewStabilizationEnabled(enableEIS) } diff --git a/app/src/main/java/app/grapheneos/camera/ui/SettingsDialog.kt b/app/src/main/java/app/grapheneos/camera/ui/SettingsDialog.kt index bf6df8ed1..be8649c47 100644 --- a/app/src/main/java/app/grapheneos/camera/ui/SettingsDialog.kt +++ b/app/src/main/java/app/grapheneos/camera/ui/SettingsDialog.kt @@ -400,7 +400,7 @@ class SettingsDialog(val mActivity: MainActivity) : includeAudioSetting.visibility = View.VISIBLE enableEISSetting.visibility = View.GONE videoQualitySetting.visibility = View.VISIBLE - enableEISSetting.visibility = if (camConfig.isStabilizationSupported()) { + enableEISSetting.visibility = if (camConfig.isVideoStabilizationSupported()) { View.VISIBLE } else { View.GONE