From aeabd9268f6f7743b30554c1f4d4a72d1abd55b9 Mon Sep 17 00:00:00 2001 From: otsmr Date: Wed, 30 Apr 2025 22:28:48 +0200 Subject: [PATCH] record audio only when video is started --- lib/src/views/camera/camera_preview_view.dart | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/lib/src/views/camera/camera_preview_view.dart b/lib/src/views/camera/camera_preview_view.dart index f5cb585..e944c25 100644 --- a/lib/src/views/camera/camera_preview_view.dart +++ b/lib/src/views/camera/camera_preview_view.dart @@ -91,7 +91,8 @@ class _CameraPreviewViewState extends State { } } - Future selectCamera(int sCameraId, {bool init = false}) async { + Future selectCamera(int sCameraId, + {bool init = false, bool enableAudio = false}) async { if (sCameraId >= gCameras.length) return; if (init) { for (; sCameraId < gCameras.length; sCameraId++) { @@ -106,9 +107,9 @@ class _CameraPreviewViewState extends State { controller = CameraController( gCameras[sCameraId], ResolutionPreset.high, - enableAudio: await Permission.microphone.isGranted && videoWithAudio, + enableAudio: enableAudio, ); - controller?.initialize().then((_) async { + await controller?.initialize().then((_) async { if (!mounted) { return; } @@ -306,6 +307,10 @@ class _CameraPreviewViewState extends State { Future startVideoRecording() async { if (controller != null && controller!.value.isRecordingVideo) return; + if (hasAudioPermission && videoWithAudio) { + await selectCamera(cameraId, + enableAudio: await Permission.microphone.isGranted && videoWithAudio); + } try { await controller?.startVideoRecording();