summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuK1337 <priv.luk@gmail.com>2023-03-25 10:12:37 +0100
committerSebastiano Barezzi <seba@sebaubuntu.dev>2023-04-25 20:27:40 +0200
commit29a6b08233428792faee4e92222c7fa3c4cfcd09 (patch)
tree6aca55a58e3fe662976b3b1cc7257000118f6df3
parentca59c077cd3592a6550261ab5a1b77ef485c6cbb (diff)
Aperture: Allow muting microphone during ongoing recording
Change-Id: I64c0c974f7aa391f8316fdcf5a42b34a285cb162
-rw-r--r--app/src/main/java/androidx/camera/video/RecordingExt.kt19
-rw-r--r--app/src/main/java/androidx/camera/video/internal/audio/AudioSourceExt.kt9
-rw-r--r--app/src/main/java/org/lineageos/aperture/CameraActivity.kt11
3 files changed, 34 insertions, 5 deletions
diff --git a/app/src/main/java/androidx/camera/video/RecordingExt.kt b/app/src/main/java/androidx/camera/video/RecordingExt.kt
new file mode 100644
index 0000000..444ce72
--- /dev/null
+++ b/app/src/main/java/androidx/camera/video/RecordingExt.kt
@@ -0,0 +1,19 @@
+/*
+ * SPDX-FileCopyrightText: 2023 The LineageOS Project
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package androidx.camera.video
+
+import androidx.camera.video.internal.audio.muted
+
+private val Recording.audioSource
+ get() = (Recording::class.java.getDeclaredField("mRecorder").apply {
+ isAccessible = true
+ }.get(this) as Recorder).mAudioSource
+
+var Recording.muted
+ get() = audioSource.muted
+ set(value) {
+ audioSource.mute(value)
+ }
diff --git a/app/src/main/java/androidx/camera/video/internal/audio/AudioSourceExt.kt b/app/src/main/java/androidx/camera/video/internal/audio/AudioSourceExt.kt
new file mode 100644
index 0000000..a0d6178
--- /dev/null
+++ b/app/src/main/java/androidx/camera/video/internal/audio/AudioSourceExt.kt
@@ -0,0 +1,9 @@
+/*
+ * SPDX-FileCopyrightText: 2023 The LineageOS Project
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package androidx.camera.video.internal.audio
+
+val AudioSource.muted
+ get() = mMuted
diff --git a/app/src/main/java/org/lineageos/aperture/CameraActivity.kt b/app/src/main/java/org/lineageos/aperture/CameraActivity.kt
index a818693..9bdbe85 100644
--- a/app/src/main/java/org/lineageos/aperture/CameraActivity.kt
+++ b/app/src/main/java/org/lineageos/aperture/CameraActivity.kt
@@ -49,6 +49,7 @@ import androidx.camera.extensions.ExtensionMode
import androidx.camera.video.Quality
import androidx.camera.video.Recording
import androidx.camera.video.VideoRecordEvent
+import androidx.camera.video.muted
import androidx.camera.view.CameraController
import androidx.camera.view.LifecycleCameraController
import androidx.camera.view.PreviewView
@@ -1288,7 +1289,7 @@ open class CameraActivity : AppCompatActivity() {
// Torch mode can be toggled at any time
flashButton.isEnabled =
cameraMode != CameraMode.PHOTO || cameraState == CameraState.IDLE
- micButton.isEnabled = cameraState == CameraState.IDLE
+ micButton.isEnabled = cameraState == CameraState.IDLE || audioConfig.audioEnabled
settingsButton.isEnabled = cameraState == CameraState.IDLE
}
}
@@ -1545,7 +1546,7 @@ open class CameraActivity : AppCompatActivity() {
private fun updateMicrophoneModeIcon() {
micButton.isVisible = cameraMode == CameraMode.VIDEO
- audioConfig.audioEnabled.let {
+ sharedPreferences.lastMicMode.let {
micButton.setCompoundDrawablesWithIntrinsicBounds(
0,
if (it) R.drawable.ic_mic_on else R.drawable.ic_mic_off,
@@ -1560,7 +1561,7 @@ open class CameraActivity : AppCompatActivity() {
* Toggles microphone during video recording
*/
private fun toggleMicrophoneMode() {
- setMicrophoneMode(!audioConfig.audioEnabled)
+ setMicrophoneMode(!sharedPreferences.lastMicMode)
}
/**
@@ -1569,9 +1570,9 @@ open class CameraActivity : AppCompatActivity() {
@SuppressLint("MissingPermission")
private fun setMicrophoneMode(microphoneMode: Boolean) {
audioConfig = AudioConfig.create(microphoneMode)
- updateMicrophoneModeIcon()
-
+ recording?.muted = !microphoneMode
sharedPreferences.lastMicMode = microphoneMode
+ updateMicrophoneModeIcon()
}
/**