Prevent avatar from showing a start of outgoing video call.

This commit is contained in:
Cody Henthorne 2020-06-12 09:38:26 -04:00 committed by Greyson Parrelli
parent 2ecdf803c0
commit 941ab5a98f
3 changed files with 16 additions and 5 deletions

View file

@ -528,9 +528,11 @@ public class WebRtcCallActivity extends AppCompatActivity {
callScreen.setLocalRenderer(event.getLocalRenderer()); callScreen.setLocalRenderer(event.getLocalRenderer());
callScreen.setRemoteRenderer(event.getRemoteRenderer()); callScreen.setRemoteRenderer(event.getRemoteRenderer());
viewModel.updateFromWebRtcViewModel(event); boolean enableVideo = event.getLocalCameraState().getCameraCount() > 0 && enableVideoIfAvailable;
if (event.getLocalCameraState().getCameraCount() > 0 && enableVideoIfAvailable) { viewModel.updateFromWebRtcViewModel(event, enableVideo);
if (enableVideo) {
enableVideoIfAvailable = false; enableVideoIfAvailable = false;
handleSetMuteVideo(false); handleSetMuteVideo(false);
} }

View file

@ -35,6 +35,7 @@ public class WebRtcCallViewModel extends ViewModel {
private boolean canDisplayTooltipIfNeeded = true; private boolean canDisplayTooltipIfNeeded = true;
private boolean hasEnabledLocalVideo = false; private boolean hasEnabledLocalVideo = false;
private boolean showVideoForOutgoing = false;
private long callConnectedTime = -1; private long callConnectedTime = -1;
private Handler ellapsedTimeHandler = new Handler(Looper.getMainLooper()); private Handler ellapsedTimeHandler = new Handler(Looper.getMainLooper());
private boolean answerWithVideoAvailable = false; private boolean answerWithVideoAvailable = false;
@ -97,7 +98,7 @@ public class WebRtcCallViewModel extends ViewModel {
} }
@MainThread @MainThread
public void updateFromWebRtcViewModel(@NonNull WebRtcViewModel webRtcViewModel) { public void updateFromWebRtcViewModel(@NonNull WebRtcViewModel webRtcViewModel, boolean enableVideo) {
remoteVideoEnabled.setValue(webRtcViewModel.isRemoteVideoEnabled()); remoteVideoEnabled.setValue(webRtcViewModel.isRemoteVideoEnabled());
microphoneEnabled.setValue(webRtcViewModel.isMicrophoneEnabled()); microphoneEnabled.setValue(webRtcViewModel.isMicrophoneEnabled());
@ -106,6 +107,13 @@ public class WebRtcCallViewModel extends ViewModel {
} }
localVideoEnabled.setValue(webRtcViewModel.getLocalCameraState().isEnabled()); localVideoEnabled.setValue(webRtcViewModel.getLocalCameraState().isEnabled());
if (enableVideo) {
showVideoForOutgoing = webRtcViewModel.getState() == WebRtcViewModel.State.CALL_OUTGOING;
} else if (webRtcViewModel.getState() != WebRtcViewModel.State.CALL_OUTGOING) {
showVideoForOutgoing = false;
}
updateLocalRenderState(webRtcViewModel.getState()); updateLocalRenderState(webRtcViewModel.getState());
updateWebRtcControls(webRtcViewModel.getState(), updateWebRtcControls(webRtcViewModel.getState(),
webRtcViewModel.getLocalCameraState().isEnabled(), webRtcViewModel.getLocalCameraState().isEnabled(),
@ -177,8 +185,8 @@ public class WebRtcCallViewModel extends ViewModel {
} }
private @NonNull WebRtcLocalRenderState getRealLocalRenderState(boolean shouldDisplayLocalVideo, @NonNull WebRtcLocalRenderState state) { private @NonNull WebRtcLocalRenderState getRealLocalRenderState(boolean shouldDisplayLocalVideo, @NonNull WebRtcLocalRenderState state) {
if (shouldDisplayLocalVideo) return state; if (shouldDisplayLocalVideo || showVideoForOutgoing) return state;
else return WebRtcLocalRenderState.GONE; else return WebRtcLocalRenderState.GONE;
} }
private @NonNull WebRtcControls getRealWebRtcControls(boolean neverDisplayControls, @NonNull WebRtcControls controls) { private @NonNull WebRtcControls getRealWebRtcControls(boolean neverDisplayControls, @NonNull WebRtcControls controls) {

View file

@ -37,6 +37,7 @@
android:id="@+id/call_screen_large_local_renderer_holder" android:id="@+id/call_screen_large_local_renderer_holder"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="@color/black"
android:visibility="gone" android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"