Skip to content

Commit f95f1b0

Browse files
committed
Only show EIS settings when available
(uses the official CameraX API)
1 parent 1154e35 commit f95f1b0

File tree

3 files changed

+17
-12
lines changed

3 files changed

+17
-12
lines changed

app/src/main/java/app/grapheneos/camera/CamConfig.kt

+14-3
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@ import android.view.animation.Animation
1818
import android.view.animation.LinearInterpolator
1919
import android.widget.Button
2020
import androidx.annotation.StringRes
21-
import androidx.camera.camera2.interop.Camera2Interop
2221
import androidx.camera.core.AspectRatio
2322
import androidx.camera.core.Camera
23+
import androidx.camera.core.CameraInfo
2424
import androidx.camera.core.CameraSelector
2525
import androidx.camera.core.ImageAnalysis
2626
import androidx.camera.core.ImageCapture
@@ -429,7 +429,7 @@ class CamConfig(private val mActivity: MainActivity) {
429429

430430
var enableEIS: Boolean
431431
get() {
432-
return mActivity.settingsDialog.enableEISToggle.isChecked
432+
return isStabilizationSupported() && mActivity.settingsDialog.enableEISToggle.isChecked
433433
}
434434
set(value) {
435435
val editor = commonPref.edit()
@@ -532,6 +532,10 @@ class CamConfig(private val mActivity: MainActivity) {
532532
camera!!.cameraInfo.isZslSupported
533533
}
534534

535+
fun isStabilizationSupported() : Boolean {
536+
return Recorder.getVideoCapabilities(getCurrentConfigCameraInfo()!!).isStabilizationSupported
537+
}
538+
535539
fun shouldShowGyroscope(): Boolean {
536540
return isInPhotoMode && gSuggestions
537541
}
@@ -894,6 +898,14 @@ class CamConfig(private val mActivity: MainActivity) {
894898
startCamera(true)
895899
}
896900

901+
// Will always return a valid CameraInfo if called within startCamera
902+
private fun getCurrentConfigCameraInfo() : CameraInfo? {
903+
for (cameraInfo in cameraProvider!!.availableCameraInfos) {
904+
if (cameraInfo.lensFacing == lensFacing) return cameraInfo
905+
}
906+
return null
907+
}
908+
897909
fun toggleCameraSelector() {
898910

899911
// Manually switch to the opposite lens facing
@@ -1111,7 +1123,6 @@ class CamConfig(private val mActivity: MainActivity) {
11111123
ResolutionSelector.Builder().setAspectRatioStrategy(aspectRatioStrategy).build()
11121124
)
11131125

1114-
@androidx.camera.camera2.interop.ExperimentalCamera2Interop
11151126
if (isVideoMode) {
11161127
previewBuilder.setPreviewStabilizationEnabled(enableEIS)
11171128
}

app/src/main/java/app/grapheneos/camera/ui/SettingsDialog.kt

+1-8
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ import android.widget.Spinner
2929
import android.widget.ToggleButton
3030
import androidx.annotation.StringRes
3131
import androidx.appcompat.widget.SwitchCompat
32-
import androidx.camera.camera2.interop.Camera2CameraInfo
3332
import androidx.camera.core.AspectRatio
3433
import androidx.camera.core.CameraSelector
3534
import androidx.camera.core.DynamicRange
@@ -367,17 +366,11 @@ class SettingsDialog(val mActivity: MainActivity) :
367366
}
368367

369368
fun showOnlyRelevantSettings() {
370-
@androidx.camera.camera2.interop.ExperimentalCamera2Interop
371369
if (camConfig.isVideoMode) {
372370
includeAudioSetting.visibility = View.VISIBLE
373371
enableEISSetting.visibility = View.GONE
374-
for (mode in Camera2CameraInfo.from(camConfig.camera!!.cameraInfo)
375-
.getCameraCharacteristic(CameraCharacteristics
376-
.CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES)!!){
377-
if (mode == CameraMetadata.CONTROL_VIDEO_STABILIZATION_MODE_ON)
378-
enableEISSetting.visibility = View.VISIBLE
379-
}
380372
videoQualitySetting.visibility = View.VISIBLE
373+
if (camConfig.isStabilizationSupported()) enableEISSetting.visibility = View.VISIBLE
381374
} else {
382375
includeAudioSetting.visibility = View.GONE
383376
enableEISSetting.visibility = View.GONE

app/src/main/res/layout/settings.xml

+2-1
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,8 @@
233233
android:layout_height="wrap_content"
234234
android:paddingVertical="@dimen/settings_dialog_menu_item_vertical"
235235
android:paddingHorizontal="@dimen/settings_dialog_menu_item_horizontal"
236-
android:orientation="horizontal">
236+
android:orientation="horizontal"
237+
android:visibility="gone">
237238

238239
<TextView
239240
android:layout_height="wrap_content"

0 commit comments

Comments
 (0)