From edb55fdf6b7ab794aa2c896693948798778c51d0 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Wed, 23 Nov 2022 16:12:07 +0100 Subject: [PATCH] Fixed display issue when going or leaving PiP mode in conference --- .../java/org/linphone/activities/voip/CallActivity.kt | 9 +++++++-- .../org/linphone/compatibility/Api25Compatibility.kt | 5 +++++ .../java/org/linphone/compatibility/Compatibility.kt | 7 +++++++ 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/linphone/activities/voip/CallActivity.kt b/app/src/main/java/org/linphone/activities/voip/CallActivity.kt index 9a2198f20..98bfe59d9 100644 --- a/app/src/main/java/org/linphone/activities/voip/CallActivity.kt +++ b/app/src/main/java/org/linphone/activities/voip/CallActivity.kt @@ -81,6 +81,10 @@ class CallActivity : ProximitySensorActivity() { statsViewModel = ViewModelProvider(navControllerStoreOwner)[StatisticsListViewModel::class.java] + val isInPipMode = Compatibility.isInPictureInPictureMode(this) + Log.i("[Call Activity] onPostCreate: is in PiP mode? $isInPipMode") + controlsViewModel.pipMode.value = isInPipMode + controlsViewModel.askPermissionEvent.observe( this ) { @@ -193,12 +197,13 @@ class CallActivity : ProximitySensorActivity() { isInPictureInPictureMode: Boolean, newConfig: Configuration ) { - Log.i("[Call Activity] Is in PiP mode? $isInPictureInPictureMode") + super.onPictureInPictureModeChanged(isInPictureInPictureMode, newConfig) + + Log.i("[Call Activity] onPictureInPictureModeChanged: is in PiP mode? $isInPictureInPictureMode") if (::controlsViewModel.isInitialized) { // To hide UI except for TextureViews controlsViewModel.pipMode.value = isInPictureInPictureMode } - super.onPictureInPictureModeChanged(isInPictureInPictureMode, newConfig) } override fun onResume() { diff --git a/app/src/main/java/org/linphone/compatibility/Api25Compatibility.kt b/app/src/main/java/org/linphone/compatibility/Api25Compatibility.kt index b217510ed..48b947b90 100644 --- a/app/src/main/java/org/linphone/compatibility/Api25Compatibility.kt +++ b/app/src/main/java/org/linphone/compatibility/Api25Compatibility.kt @@ -21,6 +21,7 @@ package org.linphone.compatibility import android.annotation.SuppressLint import android.annotation.TargetApi +import android.app.Activity import android.bluetooth.BluetoothAdapter import android.content.Context import android.os.Build @@ -49,5 +50,9 @@ class Api25Compatibility { } return name } + + fun isInPictureInPictureMode(activity: Activity): Boolean { + return activity.isInPictureInPictureMode + } } } diff --git a/app/src/main/java/org/linphone/compatibility/Compatibility.kt b/app/src/main/java/org/linphone/compatibility/Compatibility.kt index 0239820fd..dc62219fe 100644 --- a/app/src/main/java/org/linphone/compatibility/Compatibility.kt +++ b/app/src/main/java/org/linphone/compatibility/Compatibility.kt @@ -270,6 +270,13 @@ class Compatibility { return Api23Compatibility.canDrawOverlay(context) } + fun isInPictureInPictureMode(activity: Activity): Boolean { + if (Version.sdkAboveOrEqual(Version.API25_NOUGAT_71)) { + return Api25Compatibility.isInPictureInPictureMode(activity) + } + return false + } + fun enterPipMode(activity: Activity, conference: Boolean) { if (Version.sdkStrictlyBelow(Version.API31_ANDROID_12) && Version.sdkAboveOrEqual(Version.API26_O_80)) { Api26Compatibility.enterPipMode(activity, conference)