ca3532023a
- Settings STARTUP MODE chips (AsyncStorage startup_mode): default = clean camera + PROVIA neutral 4:3, last = restore full session look. - initSession: resolve sim-* recipe ids via FILM_SIMS (fix clobber of session ratio/adjustments to 4:3 canonical); restore via setSelectedRecipe not applyRecipe so user tweaks (frame/geotag/ratio) survive restore. - applyDefaultStartup turns GPS watermark OFF (user-requested default). - Shutter: OFF must not play click on must-play-policy devices. VisionCamera v5.2.3 HybridPhotoOutput.kt plays MediaActionSound itself gated by (enableShutterSound ?: true) || mustPlayShutterSound — on Xiaomi mustPlay=true so OFF still clicked. Both capture paths now gate on enableShutterSound != false. node_modules patch not trackable -> artifacts/patches/vision-camera-shutter-silent.patch. Verified on Xiaomi 12S Ultra: log SND user=false -> play=false; cold-start DEFAULT shows GPS WATERMARK OFF.
44 lines
2.2 KiB
Diff
44 lines
2.2 KiB
Diff
diff --git a/node_modules/react-native-vision-camera/android/src/main/java/com/margelo/nitro/camera/hybrids/outputs/HybridPhotoOutput.kt b/node_modules/react-native-vision-camera/android/src/main/java/com/margelo/nitro/camera/hybrids/outputs/HybridPhotoOutput.kt
|
|
index f3bdfe3..883fa50 100644
|
|
--- a/node_modules/react-native-vision-camera/android/src/main/java/com/margelo/nitro/camera/hybrids/outputs/HybridPhotoOutput.kt
|
|
+++ b/node_modules/react-native-vision-camera/android/src/main/java/com/margelo/nitro/camera/hybrids/outputs/HybridPhotoOutput.kt
|
|
@@ -2,7 +2,6 @@ package com.margelo.nitro.camera.hybrids.outputs
|
|
|
|
import android.media.MediaActionSound
|
|
import android.util.Log
|
|
-import androidx.camera.core.CameraInfo
|
|
import androidx.camera.core.CameraSelector
|
|
import androidx.camera.core.ImageCapture
|
|
import androidx.camera.core.resolutionselector.ResolutionSelector
|
|
@@ -161,7 +160,11 @@ class HybridPhotoOutput(
|
|
|
|
// 1. Get settings
|
|
val isMirrored = shouldMirror()
|
|
- val enableShutterSound = (settings.enableShutterSound ?: true) || CameraInfo.mustPlayShutterSound()
|
|
+ // The click is played by THIS app via MediaActionSound below —
|
|
+ // CameraInfo.mustPlayShutterSound() only reports device/region policy, it
|
|
+ // does not make the OS play anything. Honor the user toggle: OFF stays
|
|
+ // silent even on devices CameraX flags as must-play.
|
|
+ val enableShutterSound = settings.enableShutterSound != false
|
|
imageCapture.flashMode = settings.flashMode?.toFlashMode() ?: ImageCapture.FLASH_MODE_OFF
|
|
val location =
|
|
if (settings.location != null) {
|
|
@@ -170,7 +173,6 @@ class HybridPhotoOutput(
|
|
} else {
|
|
null
|
|
}
|
|
-
|
|
// 2. Perform Capture
|
|
var didFireOnDidCapturePhoto = false
|
|
val image =
|
|
@@ -228,8 +230,7 @@ class HybridPhotoOutput(
|
|
|
|
// 1. Get settings
|
|
val isMirrored = shouldMirror()
|
|
- val enableShutterSound =
|
|
- (settings.enableShutterSound ?: true) || CameraInfo.mustPlayShutterSound()
|
|
+ val enableShutterSound = settings.enableShutterSound != false
|
|
imageCapture.flashMode = settings.flashMode?.toFlashMode() ?: ImageCapture.FLASH_MODE_OFF
|
|
val location =
|
|
if (settings.location != null) {
|