From 96b8bc828b4c0c3ebd33f331ccb0d910b72d19d0 Mon Sep 17 00:00:00 2001 From: Ergyun Syuleyman Date: Fri, 8 May 2020 18:42:53 +0300 Subject: [PATCH] NY-10244: [AN]: Info message when screen and camera sharing at the same time --- .../presenters/ConferenceCallPresenter.java | 34 ++++++++++++++++- .../communicator/mvp/view/CallView.java | 7 ++++ .../conference/ConferenceCallFragment.java | 37 ++++++++++++++++++- app/src/main/res/values-en/strings.xml | 4 ++ app/src/main/res/values-es/strings.xml | 4 ++ app/src/main/res/values-ko/strings.xml | 4 ++ app/src/main/res/values-zh-rCN/strings.xml | 4 ++ app/src/main/res/values-zh/strings.xml | 4 ++ app/src/main/res/values/strings.xml | 4 ++ 9 files changed, 100 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/ConferenceCallPresenter.java b/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/ConferenceCallPresenter.java index 0e76c78047..ce146e11bd 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/ConferenceCallPresenter.java +++ b/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/ConferenceCallPresenter.java @@ -446,6 +446,10 @@ public class ConferenceCallPresenter extends ConferenceSDKPresenter if (getAttachedViews().size() == 0) return; ActiveConferenceCall call = mDataManager.getConferenceSDK().getActiveConference(); if (call != null && !mDataManager.getConferenceSDK().isP2P()) { + if (isCameraRunning()) { + getViewState().showStopOwnCameraFirstgAlert(); + return; + } if (/*!call.isModerator() &&*/ !isScreenSharing() && hasRemoteScreenShare()) { getViewState().showFirstStopScreenSharingWarning(call); return; @@ -464,6 +468,23 @@ public class ConferenceCallPresenter extends ConferenceSDKPresenter } } + public void stopCameraAndContinueWithScreenshare() { + if (getAttachedViews().size() == 0) return; + if (!isScreenSharing()) { + stopCameraCapture(); + //startScreenCapture(); + getViewState().continueWithScreenshare(); + } + } + + public void continueWithScreenshare() { + if (getAttachedViews().size() == 0) return; + if (!isScreenSharing()) { + startScreenCapture(); + getViewState().setScreenShareOn(true); + } + } + public String getInvitationLink() { return mDataManager.getConferenceSDK().getActiveConferenceJoinLink(); } @@ -555,11 +576,22 @@ public class ConferenceCallPresenter extends ConferenceSDKPresenter } } + public void tryStartCameraCapture() { + if (getAttachedViews().size() == 0) return; + ActiveConferenceCall call = mDataManager.getConferenceSDK().getActiveConference(); + if (call != null && !mDataManager.getConferenceSDK().isP2P()) { + if (!isScreenSharing()) { + mDataManager.getConferenceSDK().startCameraCapture(); + return; + } + } + getViewState().showStopScreenShareFirstAlert(); + } + public void startCameraCapture() { mDataManager.getConferenceSDK().startCameraCapture(); } - public void stopCameraCapture() { mDataManager.getConferenceSDK().stopCameraCapture(); } diff --git a/app/src/main/java/com/nynja/mobile/communicator/mvp/view/CallView.java b/app/src/main/java/com/nynja/mobile/communicator/mvp/view/CallView.java index d718d095ff..c2c9ea0f0f 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/mvp/view/CallView.java +++ b/app/src/main/java/com/nynja/mobile/communicator/mvp/view/CallView.java @@ -83,4 +83,11 @@ public interface CallView extends ErrorMvpView { void setScreenShareOn(boolean shareOn); void showFirstStopScreenSharingWarning(ActiveConferenceCall call); + + void showStopOwnCameraFirstgAlert(); + + void showStopScreenShareFirstAlert(); + + void continueWithScreenshare(); + } diff --git a/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/conference/ConferenceCallFragment.java b/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/conference/ConferenceCallFragment.java index 00e46d5ecc..3441886a6b 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/conference/ConferenceCallFragment.java +++ b/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/conference/ConferenceCallFragment.java @@ -373,7 +373,7 @@ public class ConferenceCallFragment extends BaseFragment implements CallView, .subscribe(permission -> { if (permission.granted) { videoOnOf.setChecked(true); - mConferencePresenter.startCameraCapture(); + mConferencePresenter.tryStartCameraCapture(); } else if (!permission.shouldShowRequestPermissionRationale) { PermissionHelper.getInstance().showPermissionDialog(getActivity(), mConferencePresenter.getPermissionDialogListener(), Manifest.permission.CAMERA); @@ -1602,6 +1602,9 @@ public class ConferenceCallFragment extends BaseFragment implements CallView, @Override public void showFirstStopScreenSharingWarning(ActiveConferenceCall call){ + if (getActivity() == null || !isAdded() || audioSpeaker == null) { + return; + } if (call == null) return; final String msg = getString(R.string.call_ask_to_stop_ss_first, call.getConferenceSSOwner()); getActivity().runOnUiThread(() -> DialogFactory.showAlert(getActivity(), @@ -1609,6 +1612,38 @@ public class ConferenceCallFragment extends BaseFragment implements CallView, getString(R.string.call_conference_alert_title), null)); } + + @Override + public void showStopOwnCameraFirstgAlert() { + if (getActivity() == null || !isAdded() || audioSpeaker == null) { + return; + } + DialogFactory.showAlert(getActivity(), getString(R.string.call_conference_alert_title), + getString(R.string.call_start_conference_ss_alert), + getString(R.string.call_continue_button), getString(R.string.cancel), + (dialog, which) -> mConferencePresenter.stopCameraAndContinueWithScreenshare(), + null); + } + + @Override + public void showStopScreenShareFirstAlert() { + if (getActivity() == null || !isAdded() || audioSpeaker == null) { + return; + } + videoOnOf.setChecked(false); + DialogFactory.showAlert(getActivity(), + getString(R.string.call_start_conference_camera_alert), + getString(R.string.call_conference_alert_title), null); + } + + @Override + public void continueWithScreenshare() { + new Handler(Looper.getMainLooper()).postDelayed(() -> { + videoOnOf.setChecked(false); + mConferencePresenter.continueWithScreenshare(); + }, Consts.DELAY_300); + } + @Override public void onBluetoothDeviceDisconnected() { //mConferencePresenter.bluetoothDisconnected(); diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml index 7c4abf8019..4b8c7a2ef6 100644 --- a/app/src/main/res/values-en/strings.xml +++ b/app/src/main/res/values-en/strings.xml @@ -1337,4 +1337,8 @@ Cannot start screen share because it has been already started by another participant Start camera is not available for groups + To share your screen, you need to stop your camera first. Tap \"Continue\" below and we will stop your camera for you and start screen sharing. + To start your camera, you need to stop screen sharing first. + Continue + diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index bf1a90442a..a93d6de9c0 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -1336,4 +1336,8 @@ Cannot start screen share because it has been already started by another participant Start camera is not available for groups + To share your screen, you need to stop your camera first. Tap \"Continue\" below and we will stop your camera for you and start screen sharing. + To start your camera, you need to stop screen sharing first. + Continue + diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index c13526f956..3fb29a0c69 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -1336,4 +1336,8 @@ Cannot start screen share because it has been already started by another participant Start camera is not available for groups + To share your screen, you need to stop your camera first. Tap \"Continue\" below and we will stop your camera for you and start screen sharing. + To start your camera, you need to stop screen sharing first. + Continue + diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 355a75c596..4716478128 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -1336,4 +1336,8 @@ Cannot start screen share because it has been already started by another participant Start camera is not available for groups + To share your screen, you need to stop your camera first. Tap \"Continue\" below and we will stop your camera for you and start screen sharing. + To start your camera, you need to stop screen sharing first. + Continue + diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index 355a75c596..4716478128 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/app/src/main/res/values-zh/strings.xml @@ -1336,4 +1336,8 @@ Cannot start screen share because it has been already started by another participant Start camera is not available for groups + To share your screen, you need to stop your camera first. Tap \"Continue\" below and we will stop your camera for you and start screen sharing. + To start your camera, you need to stop screen sharing first. + Continue + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 398d5866d8..d18544ed30 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1338,4 +1338,8 @@ Cannot start screen share because it has been already started by another participant Start camera is not available for groups + To share your screen, you need to stop your camera first. Tap \"Continue\" below and we will stop your camera for you and start screen sharing. + To start your camera, you need to stop screen sharing first. + Continue + -- GitLab