Added back video preview on call activity while in PiP mode + added setting to keep previous behavior even if not recommended
This commit is contained in:
parent
f88054f138
commit
b4a5d9bf44
7 changed files with 26 additions and 3 deletions
|
@ -102,6 +102,7 @@
|
||||||
|
|
||||||
<activity android:name=".activities.call.CallActivity"
|
<activity android:name=".activities.call.CallActivity"
|
||||||
android:launchMode="singleTop"
|
android:launchMode="singleTop"
|
||||||
|
android:resizeableActivity="true"
|
||||||
android:supportsPictureInPicture="true" />
|
android:supportsPictureInPicture="true" />
|
||||||
|
|
||||||
<activity android:name=".activities.call.IncomingCallActivity"
|
<activity android:name=".activities.call.IncomingCallActivity"
|
||||||
|
|
|
@ -26,6 +26,7 @@ import android.view.MotionEvent
|
||||||
import androidx.databinding.DataBindingUtil
|
import androidx.databinding.DataBindingUtil
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import org.linphone.LinphoneApplication.Companion.coreContext
|
import org.linphone.LinphoneApplication.Companion.coreContext
|
||||||
|
import org.linphone.LinphoneApplication.Companion.corePreferences
|
||||||
import org.linphone.R
|
import org.linphone.R
|
||||||
import org.linphone.activities.call.viewmodels.ControlsFadingViewModel
|
import org.linphone.activities.call.viewmodels.ControlsFadingViewModel
|
||||||
import org.linphone.activities.call.viewmodels.SharedCallViewModel
|
import org.linphone.activities.call.viewmodels.SharedCallViewModel
|
||||||
|
@ -134,6 +135,11 @@ class CallActivity : ProximitySensorActivity() {
|
||||||
if (isInPictureInPictureMode) {
|
if (isInPictureInPictureMode) {
|
||||||
viewModel.areControlsHidden.value = true
|
viewModel.areControlsHidden.value = true
|
||||||
}
|
}
|
||||||
viewModel.isVideoPreviewHidden.value = isInPictureInPictureMode
|
|
||||||
|
if (corePreferences.hideCameraPreviewInPipMode) {
|
||||||
|
viewModel.isVideoPreviewHidden.value = isInPictureInPictureMode
|
||||||
|
} else {
|
||||||
|
viewModel.isVideoPreviewResizedForPip.value = isInPictureInPictureMode
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,6 +38,7 @@ class ControlsFadingViewModel : ViewModel() {
|
||||||
val areControlsHidden = MutableLiveData<Boolean>()
|
val areControlsHidden = MutableLiveData<Boolean>()
|
||||||
|
|
||||||
val isVideoPreviewHidden = MutableLiveData<Boolean>()
|
val isVideoPreviewHidden = MutableLiveData<Boolean>()
|
||||||
|
val isVideoPreviewResizedForPip = MutableLiveData<Boolean>()
|
||||||
|
|
||||||
private val videoEnabled = MutableLiveData<Boolean>()
|
private val videoEnabled = MutableLiveData<Boolean>()
|
||||||
private val nonEarpieceOutputAudioDevice = MutableLiveData<Boolean>()
|
private val nonEarpieceOutputAudioDevice = MutableLiveData<Boolean>()
|
||||||
|
@ -78,6 +79,7 @@ class ControlsFadingViewModel : ViewModel() {
|
||||||
|
|
||||||
areControlsHidden.value = false
|
areControlsHidden.value = false
|
||||||
isVideoPreviewHidden.value = false
|
isVideoPreviewHidden.value = false
|
||||||
|
isVideoPreviewResizedForPip.value = false
|
||||||
nonEarpieceOutputAudioDevice.value = coreContext.core.outputAudioDevice?.type != AudioDevice.Type.Earpiece
|
nonEarpieceOutputAudioDevice.value = coreContext.core.outputAudioDevice?.type != AudioDevice.Type.Earpiece
|
||||||
|
|
||||||
val isVideoCall = coreContext.isVideoCallOrConferenceActive()
|
val isVideoCall = coreContext.isVideoCallOrConferenceActive()
|
||||||
|
|
|
@ -235,7 +235,7 @@ class CorePreferences constructor(private val context: Context) {
|
||||||
config.setInt("app", "version_check_url_last_timestamp", value)
|
config.setInt("app", "version_check_url_last_timestamp", value)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Read only application settings previously in non_localizable_custom */
|
/* Read only application settings, some were previously in non_localizable_custom */
|
||||||
|
|
||||||
val defaultDomain: String
|
val defaultDomain: String
|
||||||
get() = config.getString("app", "default_domain", "sip.linphone.org")!!
|
get() = config.getString("app", "default_domain", "sip.linphone.org")!!
|
||||||
|
@ -279,6 +279,11 @@ class CorePreferences constructor(private val context: Context) {
|
||||||
val showIncomingChatMessagesDeliveryStatus: Boolean
|
val showIncomingChatMessagesDeliveryStatus: Boolean
|
||||||
get() = config.getBool("app", "show_incoming_messages_delivery_status", false)
|
get() = config.getBool("app", "show_incoming_messages_delivery_status", false)
|
||||||
|
|
||||||
|
// If enabled, this will cause the video to "freeze" on your correspondent screen
|
||||||
|
// as you won't send video packets anymore
|
||||||
|
val hideCameraPreviewInPipMode: Boolean
|
||||||
|
get() = config.getBool("app", "hide_camera_preview_in_pip_mode", false)
|
||||||
|
|
||||||
/* Tabs */
|
/* Tabs */
|
||||||
|
|
||||||
val showHistory: Boolean
|
val showHistory: Boolean
|
||||||
|
|
|
@ -81,6 +81,12 @@ fun View.setLayoutHeight(dimension: Float) {
|
||||||
this.layoutParams.height = dimension.toInt()
|
this.layoutParams.height = dimension.toInt()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@BindingAdapter("android:layout_size")
|
||||||
|
fun View.setLayoutSize(dimension: Float) {
|
||||||
|
this.layoutParams.height = dimension.toInt()
|
||||||
|
this.layoutParams.width = dimension.toInt()
|
||||||
|
}
|
||||||
|
|
||||||
@BindingAdapter("android:background")
|
@BindingAdapter("android:background")
|
||||||
fun LinearLayout.setBackground(resource: Int) {
|
fun LinearLayout.setBackground(resource: Int) {
|
||||||
this.setBackgroundResource(resource)
|
this.setBackgroundResource(resource)
|
||||||
|
|
|
@ -30,8 +30,9 @@
|
||||||
|
|
||||||
<org.linphone.mediastream.video.capture.CaptureTextureView
|
<org.linphone.mediastream.video.capture.CaptureTextureView
|
||||||
android:onTouch="@{previewTouchListener}"
|
android:onTouch="@{previewTouchListener}"
|
||||||
android:visibility="@{viewModel.isVideoPreviewHidden ? View.INVISIBLE : View.VISIBLE}"
|
android:visibility="@{viewModel.isVideoPreviewHidden ? View.INVISIBLE : View.VISIBLE, default=visible}"
|
||||||
android:id="@+id/local_preview_video_surface"
|
android:id="@+id/local_preview_video_surface"
|
||||||
|
android:layout_size="@{viewModel.isVideoPreviewResizedForPip ? @dimen/video_preview_pip_max_size : @dimen/video_preview_max_size}"
|
||||||
android:layout_width="200dp"
|
android:layout_width="200dp"
|
||||||
android:layout_height="200dp"
|
android:layout_height="200dp"
|
||||||
android:layout_alignParentRight="true"
|
android:layout_alignParentRight="true"
|
||||||
|
|
|
@ -5,4 +5,6 @@
|
||||||
<dimen name="outgoing_chat_message_bubble_left_margin">45dp</dimen>
|
<dimen name="outgoing_chat_message_bubble_left_margin">45dp</dimen>
|
||||||
<dimen name="chat_message_bubble_image_height_big">200dp</dimen>
|
<dimen name="chat_message_bubble_image_height_big">200dp</dimen>
|
||||||
<dimen name="chat_message_bubble_image_height_small">100dp</dimen>
|
<dimen name="chat_message_bubble_image_height_small">100dp</dimen>
|
||||||
|
<dimen name="video_preview_max_size">200dp</dimen>
|
||||||
|
<dimen name="video_preview_pip_max_size">50dp</dimen>
|
||||||
</resources>
|
</resources>
|
Loading…
Reference in a new issue