From b255987fb6a33b9651bb165425dbf42debe25447 Mon Sep 17 00:00:00 2001 From: drift8797 <216993364+drift8797@users.noreply.github.com> Date: Wed, 18 Jun 2025 23:45:53 -0500 Subject: [PATCH] Support beginning a video recording with the microphone muted --- .../main/java/app/grapheneos/camera/CamConfig.kt | 11 ++++++++--- .../app/grapheneos/camera/capturer/VideoCapturer.kt | 13 +------------ .../java/app/grapheneos/camera/ui/SettingsDialog.kt | 5 +++++ .../camera/ui/activities/VideoCaptureActivity.kt | 1 + 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/app/grapheneos/camera/CamConfig.kt b/app/src/main/java/app/grapheneos/camera/CamConfig.kt index 128205f54..6faf80033 100644 --- a/app/src/main/java/app/grapheneos/camera/CamConfig.kt +++ b/app/src/main/java/app/grapheneos/camera/CamConfig.kt @@ -1145,6 +1145,12 @@ class CamConfig(private val mActivity: MainActivity) { } else { View.VISIBLE } + mActivity.muteToggle.visibility = + if (includeAudio) { + View.VISIBLE + } else { + View.GONE + } val videoCaptureBuilder = VideoCapture.Builder( Recorder.Builder() @@ -1426,8 +1432,6 @@ class CamConfig(private val mActivity: MainActivity) { mActivity.captureButton.setBackgroundResource(android.R.color.transparent) mActivity.captureButton.setImageResource(R.drawable.torch_off_button) - - mActivity.micOffIcon.visibility = View.GONE } else { mActivity.qrOverlay.visibility = View.INVISIBLE mActivity.thirdOption.visibility = View.VISIBLE @@ -1442,10 +1446,11 @@ class CamConfig(private val mActivity: MainActivity) { mActivity.captureButton.setImageResource(R.drawable.recording) } else { mActivity.captureButton.setImageResource(R.drawable.camera_shutter) - mActivity.micOffIcon.visibility = View.GONE } } + mActivity.micOffIcon.visibility = View.GONE + mActivity.muteToggle.visibility = View.GONE mActivity.cbText.visibility = if (isQRMode || isVideoMode || mActivity.timerDuration == 0) { View.INVISIBLE } else { diff --git a/app/src/main/java/app/grapheneos/camera/capturer/VideoCapturer.kt b/app/src/main/java/app/grapheneos/camera/capturer/VideoCapturer.kt index 6a505d0ca..f20ca7def 100644 --- a/app/src/main/java/app/grapheneos/camera/capturer/VideoCapturer.kt +++ b/app/src/main/java/app/grapheneos/camera/capturer/VideoCapturer.kt @@ -187,7 +187,7 @@ class VideoCapturer(private val mActivity: MainActivity) { val pendingRecording = recordingCtx.pendingRecording if (includeAudio) { - pendingRecording.withAudioEnabled() + pendingRecording.withAudioEnabled(isMuted) } beforeRecordingStarts() @@ -315,14 +315,6 @@ class VideoCapturer(private val mActivity: MainActivity) { mActivity.timerView.visibility = View.VISIBLE mActivity.settingsDialog.includeAudioToggle.isEnabled = false - - if (camConfig.includeAudio) { - isMuted = false - mActivity.muteToggle.setImageResource(R.drawable.mic_on) - mActivity.muteToggle.setBackgroundColor(mActivity.getColor(R.color.red)) - mActivity.muteToggle.tooltipText = mActivity.getString(R.string.tap_to_mute_audio) - mActivity.muteToggle.visibility = View.VISIBLE - } } private fun afterRecordingStops() { @@ -375,7 +367,6 @@ class VideoCapturer(private val mActivity: MainActivity) { // mActivity.micOffIcon.visibility = View.VISIBLE mActivity.settingsDialog.includeAudioToggle.isEnabled = true - mActivity.muteToggle.visibility = View.GONE isRecording = false @@ -383,14 +374,12 @@ class VideoCapturer(private val mActivity: MainActivity) { } fun muteRecording() { - if (!isRecording) return check(camConfig.includeAudio) isMuted = true recording?.mute(true) } fun unmuteRecording() { - if (!isRecording) return check(camConfig.includeAudio) isMuted = false recording?.mute(false) 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 7a09d5c1c..a6f69e1e4 100644 --- a/app/src/main/java/app/grapheneos/camera/ui/SettingsDialog.kt +++ b/app/src/main/java/app/grapheneos/camera/ui/SettingsDialog.kt @@ -369,6 +369,11 @@ class SettingsDialog(val mActivity: MainActivity, themedContext: Context) : } else { View.VISIBLE } + mActivity.muteToggle.visibility = if (includeAudioToggle.isChecked) { + View.VISIBLE + } else { + View.GONE + } camConfig.includeAudio = includeAudioToggle.isChecked } diff --git a/app/src/main/java/app/grapheneos/camera/ui/activities/VideoCaptureActivity.kt b/app/src/main/java/app/grapheneos/camera/ui/activities/VideoCaptureActivity.kt index da57086c2..182115f03 100644 --- a/app/src/main/java/app/grapheneos/camera/ui/activities/VideoCaptureActivity.kt +++ b/app/src/main/java/app/grapheneos/camera/ui/activities/VideoCaptureActivity.kt @@ -64,6 +64,7 @@ class VideoCaptureActivity : CaptureActivity() { override fun showPreview() { super.showPreview() thirdOption.visibility = View.VISIBLE + muteToggle.visibility = View.GONE } private fun confirmVideo() {