Skip to content
Snippets Groups Projects
Commit 95b59c25 authored by Maxime Callet's avatar Maxime Callet
Browse files

Screensharing: adding screensharing media status getter

Change-Id: I480ccfef6fe721416584efff5bdc8ad373fa627c
parent fa014d45
No related branches found
No related tags found
No related merge requests found
...@@ -466,22 +466,33 @@ class CallFragment : BaseSupportFragment<CallPresenter, CallView>(), CallView, ...@@ -466,22 +466,33 @@ class CallFragment : BaseSupportFragment<CallPresenter, CallView>(), CallView,
override fun onPictureInPictureModeChanged(isInPictureInPictureMode: Boolean) { override fun onPictureInPictureModeChanged(isInPictureInPictureMode: Boolean) {
isInPIP = isInPictureInPictureMode isInPIP = isInPictureInPictureMode
val binding = binding ?: return
if (isInPictureInPictureMode) { if (isInPictureInPictureMode) {
binding!!.callCoordinatorOptionContainer.visibility = View.GONE binding.callCoordinatorOptionContainer.visibility = View.GONE
val callActivity = activity as CallActivity? val callActivity = activity as CallActivity?
callActivity?.hideSystemUI() callActivity?.hideSystemUI()
binding!!.pluginPreviewContainer.visibility = View.GONE binding.pluginPreviewContainer.visibility = View.GONE
binding!!.pluginPreviewSurface.visibility = View.GONE binding.pluginPreviewSurface.visibility = View.GONE
binding!!.previewContainer.visibility = View.GONE binding.previewContainer.visibility = View.GONE
binding!!.previewSurface.visibility = View.GONE binding.previewSurface.visibility = View.GONE
} else { } else {
mBackstackLost = true if(binding.callSharescreenBtn.isChecked){
binding!!.callCoordinatorOptionContainer.visibility = View.VISIBLE mBackstackLost = true
binding!!.pluginPreviewContainer.visibility = View.VISIBLE binding.callCoordinatorOptionContainer.visibility = View.VISIBLE
binding!!.pluginPreviewSurface.visibility = View.VISIBLE binding.pluginPreviewContainer.visibility = View.GONE
binding!!.previewContainer.visibility = View.VISIBLE binding.pluginPreviewSurface.visibility = View.GONE
binding!!.previewSurface.visibility = View.VISIBLE binding.previewContainer.visibility = View.GONE
binding.previewSurface.visibility = View.GONE
} else {
mBackstackLost = true
binding.callCoordinatorOptionContainer.visibility = View.VISIBLE
binding.pluginPreviewContainer.visibility = View.VISIBLE
binding.pluginPreviewSurface.visibility = View.VISIBLE
binding.previewContainer.visibility = View.VISIBLE
binding.previewSurface.visibility = View.VISIBLE
}
} }
} }
...@@ -631,7 +642,7 @@ class CallFragment : BaseSupportFragment<CallPresenter, CallView>(), CallView, ...@@ -631,7 +642,7 @@ class CallFragment : BaseSupportFragment<CallPresenter, CallView>(), CallView,
} }
private fun configurePreview(width: Int, animatedFraction: Float) { private fun configurePreview(width: Int, animatedFraction: Float) {
Log.w(TAG, " configurePreview ---------> width: $width, animatedFraction: $animatedFraction") //Log.w(TAG, " configurePreview ---------> width: $width, animatedFraction: $animatedFraction")
val binding = binding ?: return val binding = binding ?: return
val params = binding.previewContainer.layoutParams as RelativeLayout.LayoutParams val params = binding.previewContainer.layoutParams as RelativeLayout.LayoutParams
val r = 1f - animatedFraction val r = 1f - animatedFraction
...@@ -1325,31 +1336,26 @@ class CallFragment : BaseSupportFragment<CallPresenter, CallView>(), CallView, ...@@ -1325,31 +1336,26 @@ class CallFragment : BaseSupportFragment<CallPresenter, CallView>(), CallView,
} }
private fun startScreenShare(mediaProjection: MediaProjection?) { private fun startScreenShare(mediaProjection: MediaProjection?) {
Log.w(TAG, "[screenshare] startScreenShare ---> mediaProjection: $mediaProjection ")
if (presenter.startScreenShare(mediaProjection)) { if (presenter.startScreenShare(mediaProjection)) {
if (isChoosePluginMode) { if (isChoosePluginMode) {
binding!!.pluginPreviewSurface.visibility = View.GONE binding!!.pluginPreviewSurface.visibility = View.GONE
displayLocalVideo(false)
} else { } else {
binding!!.previewContainer.visibility = View.GONE binding!!.previewContainer.visibility = View.GONE
displayLocalVideo(false)
} }
} else { } else {
Toast.makeText(requireContext(), "Can't start screen sharing", Toast.LENGTH_SHORT) Toast.makeText(requireContext(), "Can't start screen sharing", Toast.LENGTH_SHORT)
.show() .show()
} }
} }
private fun stopShareScreen() {
binding?.previewContainer?.visibility = View.VISIBLE
presenter.stopScreenShare()
}
fun shareScreenClicked() { fun shareScreenClicked() {
if (binding?.callSharescreenBtn?.isChecked == false) { val binding = binding ?: return
Log.w(TAG, "[screenshare] shareScreenClicked ---> stop screen sharing ") if (!binding.callSharescreenBtn.isChecked) {
stopShareScreen() presenter.stopScreenShare()
displayLocalVideo(true)
} else { } else {
Log.w(TAG, "[screenshare] shareScreenClicked ---> startActivityForResult ")
startActivityForResult(mProjectionManager.createScreenCaptureIntent(), REQUEST_CODE_SCREEN_SHARE) startActivityForResult(mProjectionManager.createScreenCaptureIntent(), REQUEST_CODE_SCREEN_SHARE)
} }
} }
......
...@@ -384,6 +384,7 @@ class CallPresenter @Inject constructor( ...@@ -384,6 +384,7 @@ class CallPresenter @Inject constructor(
} }
val hasVideo = call.hasVideo() val hasVideo = call.hasVideo()
val hasActiveVideo = call.hasActiveVideo() val hasActiveVideo = call.hasActiveVideo()
val hasActiveScreenShare = call.hasActiveScreenSharing()
videoIsMuted = !hasActiveVideo videoIsMuted = !hasActiveVideo
val view = view ?: return val view = view ?: return
if (call.isOnGoing) { if (call.isOnGoing) {
...@@ -395,7 +396,7 @@ class CallPresenter @Inject constructor( ...@@ -395,7 +396,7 @@ class CallPresenter @Inject constructor(
mHardwareService.updatePreviewVideoSurface(call) mHardwareService.updatePreviewVideoSurface(call)
videoSurfaceUpdateId(call.id) videoSurfaceUpdateId(call.id)
pluginSurfaceUpdateId(call.pluginId) pluginSurfaceUpdateId(call.pluginId)
view.displayLocalVideo(hasActiveVideo && mDeviceRuntimeService.hasVideoPermission()) view.displayLocalVideo(hasActiveVideo && !hasActiveScreenShare && mDeviceRuntimeService.hasVideoPermission())
if (permissionChanged) { if (permissionChanged) {
mHardwareService.switchInput(call.accountId, call.id, permissionChanged) mHardwareService.switchInput(call.accountId, call.id, permissionChanged)
permissionChanged = false permissionChanged = false
......
...@@ -242,6 +242,15 @@ class Call : Interaction { ...@@ -242,6 +242,15 @@ class Call : Interaction {
return false return false
} }
fun hasActiveScreenSharing(): Boolean {
val mediaList = mediaList ?: return false
for (media in mediaList) {
if (media.source == "camera://desktop" && media.isEnabled && !media.isMuted)
return true
}
return false
}
enum class CallStatus { enum class CallStatus {
NONE, SEARCHING, CONNECTING, RINGING, CURRENT, HUNGUP, BUSY, FAILURE, HOLD, UNHOLD, INACTIVE, OVER; NONE, SEARCHING, CONNECTING, RINGING, CURRENT, HUNGUP, BUSY, FAILURE, HOLD, UNHOLD, INACTIVE, OVER;
......
...@@ -154,6 +154,12 @@ class Conference(val accountId: String, val id: String) { ...@@ -154,6 +154,12 @@ class Conference(val accountId: String, val id: String) {
return mParticipants.size == 1 && mParticipants[0].hasMedia(Media.MediaType.MEDIA_TYPE_VIDEO) return mParticipants.size == 1 && mParticipants[0].hasMedia(Media.MediaType.MEDIA_TYPE_VIDEO)
}*/ }*/
fun hasActiveScreenSharing(): Boolean {
for (call in mParticipants)
if(call.hasActiveScreenSharing()) return true
return false
}
fun hasActiveVideo(): Boolean { fun hasActiveVideo(): Boolean {
for (call in mParticipants) for (call in mParticipants)
if (call.hasActiveMedia(Media.MediaType.MEDIA_TYPE_VIDEO)) if (call.hasActiveMedia(Media.MediaType.MEDIA_TYPE_VIDEO))
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment