diff --git a/app/src/main/java/org/linphone/notifications/NotificationsManager.kt b/app/src/main/java/org/linphone/notifications/NotificationsManager.kt index 7661883f6..a10b95924 100644 --- a/app/src/main/java/org/linphone/notifications/NotificationsManager.kt +++ b/app/src/main/java/org/linphone/notifications/NotificationsManager.kt @@ -138,18 +138,21 @@ class NotificationsManager @MainThread constructor(private val context: Context) ) showCallNotification(call, false) } - Call.State.Connected -> { - if (call.dir == Call.Dir.Incoming) { + Call.State.Connected, + Call.State.StreamsRunning -> { + if (call.state == Call.State.Connected && call.dir == Call.Dir.Incoming) { Log.i( "$TAG Connected call was incoming (so it was answered), removing incoming call notification" ) removeIncomingCallNotification() } - Log.i( - "$TAG Showing connected call notification for [${call.remoteAddress.asStringUriOnly()}]" - ) - showCallNotification(call, false) + if (call.state == Call.State.Connected || call.dir == Call.Dir.Incoming) { + Log.i( + "$TAG Showing connected call notification for [${call.remoteAddress.asStringUriOnly()}]" + ) + showCallNotification(call, false) + } } Call.State.Updating -> { val notifiable = getNotifiableForCall(call) @@ -1006,7 +1009,7 @@ class NotificationsManager @MainThread constructor(private val context: Context) channel ).apply { try { - style.setIsVideo(false) + style.setIsVideo(isVideo) setStyle(style) } catch (iae: IllegalArgumentException) { Log.e( diff --git a/app/src/main/java/org/linphone/ui/call/viewmodel/CurrentCallViewModel.kt b/app/src/main/java/org/linphone/ui/call/viewmodel/CurrentCallViewModel.kt index 341b82fc7..31142ff90 100644 --- a/app/src/main/java/org/linphone/ui/call/viewmodel/CurrentCallViewModel.kt +++ b/app/src/main/java/org/linphone/ui/call/viewmodel/CurrentCallViewModel.kt @@ -1040,22 +1040,40 @@ class CurrentCallViewModel @UiThread constructor() : GenericViewModel() { } if (call.dir == Call.Dir.Incoming) { + val isVideo = call.remoteParams?.isVideoEnabled == true && call.remoteParams?.videoDirection != MediaDirection.Inactive if (call.core.accountList.size > 1) { val displayName = LinphoneUtils.getDisplayName(call.toAddress) - incomingCallTitle.postValue( - AppUtils.getFormattedString( - R.string.call_incoming_for_account, - displayName + if (isVideo) { + incomingCallTitle.postValue( + AppUtils.getFormattedString( + R.string.call_video_incoming_for_account, + displayName + ) ) - ) + } else { + incomingCallTitle.postValue( + AppUtils.getFormattedString( + R.string.call_audio_incoming_for_account, + displayName + ) + ) + } } else { - incomingCallTitle.postValue(AppUtils.getString(R.string.call_incoming)) + if (isVideo) { + incomingCallTitle.postValue(AppUtils.getString(R.string.call_video_incoming)) + } else { + incomingCallTitle.postValue(AppUtils.getString(R.string.call_audio_incoming)) + } } } if (LinphoneUtils.isCallOutgoing(call.state)) { isVideoEnabled.postValue(call.params.isVideoEnabled) updateVideoDirection(call.params.videoDirection) + } else if (LinphoneUtils.isCallIncoming(call.state)) { + isVideoEnabled.postValue( + call.remoteParams?.isVideoEnabled == true && call.remoteParams?.videoDirection != MediaDirection.Inactive + ) } else { isVideoEnabled.postValue(call.currentParams.isVideoEnabled) updateVideoDirection(call.currentParams.videoDirection) diff --git a/app/src/main/res/layout/call_incoming_actions.xml b/app/src/main/res/layout/call_incoming_actions.xml index 5336ec691..17b958237 100644 --- a/app/src/main/res/layout/call_incoming_actions.xml +++ b/app/src/main/res/layout/call_incoming_actions.xml @@ -46,10 +46,29 @@ android:paddingEnd="30dp" android:paddingBottom="15dp" android:src="@drawable/phone" - android:contentDescription="@string/content_description_answer_call" + android:visibility="@{viewModel.isVideoEnabled ? View.GONE : View.VISIBLE}" + android:contentDescription="@string/content_description_answer_audio_call" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="@id/answer_video_call" + app:layout_constraintStart_toEndOf="@id/hang_up" + app:tint="@color/white" /> + + diff --git a/app/src/main/res/layout/call_incoming_fragment.xml b/app/src/main/res/layout/call_incoming_fragment.xml index 57f34b80a..cf70ebab7 100644 --- a/app/src/main/res/layout/call_incoming_fragment.xml +++ b/app/src/main/res/layout/call_incoming_fragment.xml @@ -35,7 +35,7 @@ android:layout_marginStart="10dp" android:layout_marginTop="10dp" android:layout_marginBottom="10dp" - android:text="@{viewModel.incomingCallTitle, default=@string/call_incoming}" + android:text="@{viewModel.incomingCallTitle, default=@string/call_video_incoming}" app:layout_constraintStart_toEndOf="@id/call_direction_icon" app:layout_constraintTop_toTopOf="parent"/> diff --git a/app/src/main/res/layout/history_call_list_cell.xml b/app/src/main/res/layout/history_call_list_cell.xml index d7ed626a2..7d4485062 100644 --- a/app/src/main/res/layout/history_call_list_cell.xml +++ b/app/src/main/res/layout/history_call_list_cell.xml @@ -35,7 +35,7 @@ android:layout_height="wrap_content" android:layout_marginStart="8dp" android:layout_marginBottom="5dp" - android:text="@{model.isOutgoing() ? @string/call_outgoing : @string/call_incoming, default=@string/call_outgoing}" + android:text="@{model.isOutgoing() ? @string/call_outgoing : @string/call_audio_incoming, default=@string/call_outgoing}" android:textSize="14sp" android:textColor="?attr/color_main2_700" app:layout_constraintStart_toEndOf="@id/call_status" diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 8222bbf22..8d31bd894 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -570,9 +570,11 @@ Appel sortant - Appel entrant + Appel entrant + Appel vidéo entrant Appel terminé - Appel entrant pour %s + Appel entrant pour %s + Appel vidéo entrant pour %s Transférer %s à… Appels en cours Pas d\'autre appel diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index be3cb197e..7108c6f25 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -608,9 +608,11 @@ Outgoing call - Incoming call + Incoming call + Incoming video call Call ended - Incoming call for %s + Incoming call for %s + Incoming video call for %s Transfer %s to… Current calls No other call @@ -797,7 +799,8 @@ Toggles password visibility Expands/retracts bottom sheet Terminates the call - Answers the call + Answers the call + Answers the video call Starts a call Starts a video call Enables/disables sending your camera feed