From b50a49e2f243ff0ca4c908a6cfeefe313e8891d4 Mon Sep 17 00:00:00 2001 From: MHShetty Date: Fri, 26 Jul 2024 00:14:35 +0530 Subject: [PATCH 1/8] Add mic on icon --- app/src/main/res/drawable/mic_on.xml | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 app/src/main/res/drawable/mic_on.xml diff --git a/app/src/main/res/drawable/mic_on.xml b/app/src/main/res/drawable/mic_on.xml new file mode 100644 index 000000000..6db73c9bc --- /dev/null +++ b/app/src/main/res/drawable/mic_on.xml @@ -0,0 +1,10 @@ + + + From 4916f92cd485b18351638598283e9422f88e4275 Mon Sep 17 00:00:00 2001 From: MHShetty Date: Fri, 26 Jul 2024 00:14:49 +0530 Subject: [PATCH 2/8] Make mic_off icon similar to mic_on --- app/src/main/res/drawable/mic_off.xml | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/app/src/main/res/drawable/mic_off.xml b/app/src/main/res/drawable/mic_off.xml index 79764438f..000e8862a 100644 --- a/app/src/main/res/drawable/mic_off.xml +++ b/app/src/main/res/drawable/mic_off.xml @@ -1,5 +1,9 @@ - - - + + + \ No newline at end of file From 1739552799f9314d894d9f195341204fd9c9c746 Mon Sep 17 00:00:00 2001 From: MHShetty Date: Wed, 27 Nov 2024 11:48:31 +0530 Subject: [PATCH 3/8] Fix issue with incorrect bracket closure (after merging new changes) --- app/src/main/java/app/grapheneos/camera/ui/SettingsDialog.kt | 2 ++ app/src/main/res/values/colors.xml | 4 ++++ 2 files changed, 6 insertions(+) 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 6a310ee71..d96796cae 100644 --- a/app/src/main/java/app/grapheneos/camera/ui/SettingsDialog.kt +++ b/app/src/main/java/app/grapheneos/camera/ui/SettingsDialog.kt @@ -361,7 +361,9 @@ class SettingsDialog(val mActivity: MainActivity, themedContext: Context) : mActivity.videoCapturer.muteRecording() } } + } + includeAudioToggle.setOnClickListener { mActivity.micOffIcon.visibility = if (includeAudioToggle.isChecked) { View.GONE } else { diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 696617df3..cf37f0342 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -11,4 +11,8 @@ #ffe8cf #ffdf00 + + #E1E3E5 + + #ff0000 From 2df0314725789476ab7a4f064067a203413b8daf Mon Sep 17 00:00:00 2001 From: MHShetty Date: Fri, 26 Jul 2024 00:47:59 +0530 Subject: [PATCH 4/8] Add helper texts for mute toggle (as string resources in strings.xml) --- app/src/main/res/values/strings.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5c99ffcc5..92ffec1e4 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -189,4 +189,7 @@ Use ZSL in Latency mode Uses Zero Shutter Lag (ZSL) in Latency mode for faster capture. Certain devices may have a buggy implementation for this. Unable to request for audio permission in between a recording + + Tap to mute audio + Tap to unmute audio From 650d8551df9ffc1b8c28ee56c720ba288a184c4a Mon Sep 17 00:00:00 2001 From: MHShetty Date: Fri, 26 Jul 2024 00:48:47 +0530 Subject: [PATCH 5/8] Add UI for mute toggle (in activity_main.xml) --- app/src/main/res/layout/activity_main.xml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 79eb338c0..30507dc0a 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -162,6 +162,21 @@ + + Date: Fri, 26 Jul 2024 00:49:12 +0530 Subject: [PATCH 6/8] Implement functionality of mute toggle --- .../camera/capturer/VideoCapturer.kt | 20 +++++++++++++++++++ .../camera/ui/activities/MainActivity.kt | 17 ++++++++++++++++ 2 files changed, 37 insertions(+) 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 6c5ca1af2..9a7443fb8 100644 --- a/app/src/main/java/app/grapheneos/camera/capturer/VideoCapturer.kt +++ b/app/src/main/java/app/grapheneos/camera/capturer/VideoCapturer.kt @@ -48,6 +48,9 @@ class VideoCapturer(private val mActivity: MainActivity) { private var recording: Recording? = null + var isMuted = false + private set + var includeAudio: Boolean = false var isPaused = false @@ -298,6 +301,16 @@ class VideoCapturer(private val mActivity: MainActivity) { mActivity.tabLayout.visibility = View.INVISIBLE mActivity.timerView.setText(R.string.start_value_timer) 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() { @@ -341,16 +354,23 @@ class VideoCapturer(private val mActivity: MainActivity) { // if (!mActivity.config.includeAudio) // mActivity.micOffIcon.visibility = View.VISIBLE + mActivity.settingsDialog.includeAudioToggle.isEnabled = true + mActivity.muteToggle.visibility = View.GONE + isRecording = false mActivity.forceUpdateOrientationSensor() } fun muteRecording() { + check(isRecording && camConfig.includeAudio) + isMuted = true recording?.mute(true) } fun unmuteRecording() { + check(isRecording && camConfig.includeAudio) + isMuted = false recording?.mute(false) } diff --git a/app/src/main/java/app/grapheneos/camera/ui/activities/MainActivity.kt b/app/src/main/java/app/grapheneos/camera/ui/activities/MainActivity.kt index a0eecfcfa..d41de6893 100644 --- a/app/src/main/java/app/grapheneos/camera/ui/activities/MainActivity.kt +++ b/app/src/main/java/app/grapheneos/camera/ui/activities/MainActivity.kt @@ -204,6 +204,8 @@ open class MainActivity : AppCompatActivity(), private lateinit var gLeftDash: View private lateinit var gRightDash: View + lateinit var muteToggle: ShapeableImageView + private var bottomNavigationBarPadding: Int = 0 val thumbnailLoaderExecutor = Executors.newSingleThreadExecutor() @@ -1009,6 +1011,21 @@ open class MainActivity : AppCompatActivity(), gRightDash = binding.gCircleRightDash gCircleFrame = binding.gCircleFrame + + muteToggle = binding.muteToggle + muteToggle.setOnClickListener { + if (videoCapturer.isMuted) { + videoCapturer.unmuteRecording() + muteToggle.setImageResource(R.drawable.mic_on) + muteToggle.setBackgroundColor(getColor(R.color.red)) + muteToggle.tooltipText = getString(R.string.tap_to_mute_audio) + } else { + videoCapturer.muteRecording() + muteToggle.setImageResource(R.drawable.mic_off) + muteToggle.setBackgroundColor(getColor(android.R.color.darker_gray)) + muteToggle.tooltipText = getString(R.string.tap_to_unmute_audio) + } + } } private fun repositionTabLayout() { From 56341bc699f263875dce462f7b49ab80eaf18911 Mon Sep 17 00:00:00 2001 From: MHShetty Date: Fri, 26 Jul 2024 01:20:37 +0530 Subject: [PATCH 7/8] Show toast message while muting/unmuting audio (during video recording) --- .../java/app/grapheneos/camera/ui/activities/MainActivity.kt | 2 ++ app/src/main/res/values/strings.xml | 3 +++ 2 files changed, 5 insertions(+) diff --git a/app/src/main/java/app/grapheneos/camera/ui/activities/MainActivity.kt b/app/src/main/java/app/grapheneos/camera/ui/activities/MainActivity.kt index d41de6893..30ef3eb23 100644 --- a/app/src/main/java/app/grapheneos/camera/ui/activities/MainActivity.kt +++ b/app/src/main/java/app/grapheneos/camera/ui/activities/MainActivity.kt @@ -1019,11 +1019,13 @@ open class MainActivity : AppCompatActivity(), muteToggle.setImageResource(R.drawable.mic_on) muteToggle.setBackgroundColor(getColor(R.color.red)) muteToggle.tooltipText = getString(R.string.tap_to_mute_audio) + showMessage(R.string.video_audio_recording_unmuted) } else { videoCapturer.muteRecording() muteToggle.setImageResource(R.drawable.mic_off) muteToggle.setBackgroundColor(getColor(android.R.color.darker_gray)) muteToggle.tooltipText = getString(R.string.tap_to_unmute_audio) + showMessage(R.string.video_audio_recording_muted) } } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 92ffec1e4..d1e33d788 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -192,4 +192,7 @@ Tap to mute audio Tap to unmute audio + + The video\'s audio recording has been muted + The video\'s audio recording has been unmuted From 97bd14a880db91fa165ba092c48c5d49ce2932a0 Mon Sep 17 00:00:00 2001 From: MHShetty Date: Mon, 29 Jul 2024 14:13:03 +0530 Subject: [PATCH 8/8] Reposition mute toggle --- app/src/main/res/layout/activity_main.xml | 51 ++++++++++++++++------- 1 file changed, 37 insertions(+), 14 deletions(-) diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 30507dc0a..2417a2532 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -162,20 +162,43 @@ - + + + + + + + + + + + + +