From 7817e6603ca38379b0e0e86912b092de8fd14e44 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Wed, 3 Dec 2025 14:19:35 +0100 Subject: [PATCH] Force front camera as default device when leaving QR code fragment --- .../java/org/linphone/core/CoreContext.kt | 22 +++++++++++++++++++ .../fragment/QrCodeScannerFragment.kt | 2 ++ .../ui/assistant/viewmodel/QrCodeViewModel.kt | 22 +++++++------------ .../viewmodel/MeetingWaitingRoomViewModel.kt | 18 +++++++-------- 4 files changed, 40 insertions(+), 24 deletions(-) diff --git a/app/src/main/java/org/linphone/core/CoreContext.kt b/app/src/main/java/org/linphone/core/CoreContext.kt index f80055ac4..819964db3 100644 --- a/app/src/main/java/org/linphone/core/CoreContext.kt +++ b/app/src/main/java/org/linphone/core/CoreContext.kt @@ -1269,4 +1269,26 @@ class CoreContext } } } + + fun setBackCamera(): Boolean { + for (camera in core.videoDevicesList) { + if (camera.contains("Back")) { + Log.i("TAG Found back facing camera [$camera], using it") + coreContext.core.videoDevice = camera + return true + } + } + return false + } + + fun setFrontCamera(): Boolean { + for (camera in core.videoDevicesList) { + if (camera.contains("Front")) { + Log.i("$TAG Found front facing camera [$camera], using it") + coreContext.core.videoDevice = camera + return true + } + } + return false + } } diff --git a/app/src/main/java/org/linphone/ui/assistant/fragment/QrCodeScannerFragment.kt b/app/src/main/java/org/linphone/ui/assistant/fragment/QrCodeScannerFragment.kt index 566d9094d..8a7c49b1a 100644 --- a/app/src/main/java/org/linphone/ui/assistant/fragment/QrCodeScannerFragment.kt +++ b/app/src/main/java/org/linphone/ui/assistant/fragment/QrCodeScannerFragment.kt @@ -147,6 +147,8 @@ class QrCodeScannerFragment : GenericFragment() { core.nativePreviewWindowId = null core.isVideoPreviewEnabled = false core.isQrcodeVideoPreviewEnabled = false + + coreContext.setFrontCamera() } super.onPause() diff --git a/app/src/main/java/org/linphone/ui/assistant/viewmodel/QrCodeViewModel.kt b/app/src/main/java/org/linphone/ui/assistant/viewmodel/QrCodeViewModel.kt index 6f986194e..e0de49fbc 100644 --- a/app/src/main/java/org/linphone/ui/assistant/viewmodel/QrCodeViewModel.kt +++ b/app/src/main/java/org/linphone/ui/assistant/viewmodel/QrCodeViewModel.kt @@ -122,23 +122,17 @@ class QrCodeViewModel // this is required right after granting the CAMERA permission core.reloadVideoDevices() - for (camera in core.videoDevicesList) { - if (camera.contains("Back")) { - Log.i("$TAG Found back facing camera [$camera], using it") - coreContext.core.videoDevice = camera - return@postOnCoreThread + if (!coreContext.setBackCamera()) { + for (camera in core.videoDevicesList) { + if (camera != "StaticImage: Static picture") { + Log.w("$TAG No back facing camera found, using first one available [$camera]") + coreContext.core.videoDevice = camera + return@postOnCoreThread + } } - } - for (camera in core.videoDevicesList) { - if (camera != "StaticImage: Static picture") { - Log.w("$TAG No back facing camera found, using first one available [$camera]") - coreContext.core.videoDevice = camera - return@postOnCoreThread - } + Log.e("$TAG No camera device found!") } - - Log.e("$TAG No camera device found!") } } } diff --git a/app/src/main/java/org/linphone/ui/main/meetings/viewmodel/MeetingWaitingRoomViewModel.kt b/app/src/main/java/org/linphone/ui/main/meetings/viewmodel/MeetingWaitingRoomViewModel.kt index 2ad451122..169191702 100644 --- a/app/src/main/java/org/linphone/ui/main/meetings/viewmodel/MeetingWaitingRoomViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/meetings/viewmodel/MeetingWaitingRoomViewModel.kt @@ -212,18 +212,16 @@ class MeetingWaitingRoomViewModel @UiThread fun setFrontCamera() { coreContext.postOnCoreThread { core -> - for (camera in core.videoDevicesList) { - if (camera.contains("Front")) { - Log.i("$TAG Found front facing camera [$camera], using it") - coreContext.core.videoDevice = camera - return@postOnCoreThread + if (!coreContext.setFrontCamera()) { + for (camera in core.videoDevicesList) { + if (camera != "StaticImage: Static picture") { + Log.w("$TAG No front facing camera found, using first one available [$camera]") + coreContext.core.videoDevice = camera + return@postOnCoreThread + } } - } - val first = core.videoDevicesList.firstOrNull() - if (first != null) { - Log.w("$TAG No front facing camera found, using first one available [$first]") - coreContext.core.videoDevice = first + Log.e("$TAG No camera device found!") } } }