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,
override fun onPictureInPictureModeChanged(isInPictureInPictureMode: Boolean) {
isInPIP = isInPictureInPictureMode
val binding = binding ?: return
if (isInPictureInPictureMode) {
binding!!.callCoordinatorOptionContainer.visibility = View.GONE
binding.callCoordinatorOptionContainer.visibility = View.GONE
val callActivity = activity as CallActivity?
callActivity?.hideSystemUI()
binding!!.pluginPreviewContainer.visibility = View.GONE
binding!!.pluginPreviewSurface.visibility = View.GONE
binding!!.previewContainer.visibility = View.GONE
binding!!.previewSurface.visibility = View.GONE
binding.pluginPreviewContainer.visibility = View.GONE
binding.pluginPreviewSurface.visibility = View.GONE
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
if(binding.callSharescreenBtn.isChecked){
mBackstackLost = true
binding.callCoordinatorOptionContainer.visibility = View.VISIBLE
binding.pluginPreviewContainer.visibility = View.GONE
binding.pluginPreviewSurface.visibility = View.GONE
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,
}
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 params = binding.previewContainer.layoutParams as RelativeLayout.LayoutParams
val r = 1f - animatedFraction
......@@ -1325,31 +1336,26 @@ class CallFragment : BaseSupportFragment<CallPresenter, CallView>(), CallView,
}
private fun startScreenShare(mediaProjection: MediaProjection?) {
Log.w(TAG, "[screenshare] startScreenShare ---> mediaProjection: $mediaProjection ")
if (presenter.startScreenShare(mediaProjection)) {
if (isChoosePluginMode) {
binding!!.pluginPreviewSurface.visibility = View.GONE
displayLocalVideo(false)
} else {
binding!!.previewContainer.visibility = View.GONE
displayLocalVideo(false)
}
} else {
Toast.makeText(requireContext(), "Can't start screen sharing", Toast.LENGTH_SHORT)
.show()
}
}
private fun stopShareScreen() {
binding?.previewContainer?.visibility = View.VISIBLE
presenter.stopScreenShare()
}
fun shareScreenClicked() {
if (binding?.callSharescreenBtn?.isChecked == false) {
Log.w(TAG, "[screenshare] shareScreenClicked ---> stop screen sharing ")
stopShareScreen()
val binding = binding ?: return
if (!binding.callSharescreenBtn.isChecked) {
presenter.stopScreenShare()
displayLocalVideo(true)
} else {
Log.w(TAG, "[screenshare] shareScreenClicked ---> startActivityForResult ")
startActivityForResult(mProjectionManager.createScreenCaptureIntent(), REQUEST_CODE_SCREEN_SHARE)
}
}
......
......@@ -384,6 +384,7 @@ class CallPresenter @Inject constructor(
}
val hasVideo = call.hasVideo()
val hasActiveVideo = call.hasActiveVideo()
val hasActiveScreenShare = call.hasActiveScreenSharing()
videoIsMuted = !hasActiveVideo
val view = view ?: return
if (call.isOnGoing) {
......@@ -395,7 +396,7 @@ class CallPresenter @Inject constructor(
mHardwareService.updatePreviewVideoSurface(call)
videoSurfaceUpdateId(call.id)
pluginSurfaceUpdateId(call.pluginId)
view.displayLocalVideo(hasActiveVideo && mDeviceRuntimeService.hasVideoPermission())
view.displayLocalVideo(hasActiveVideo && !hasActiveScreenShare && mDeviceRuntimeService.hasVideoPermission())
if (permissionChanged) {
mHardwareService.switchInput(call.accountId, call.id, permissionChanged)
permissionChanged = false
......
......@@ -242,6 +242,15 @@ class Call : Interaction {
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 {
NONE, SEARCHING, CONNECTING, RINGING, CURRENT, HUNGUP, BUSY, FAILURE, HOLD, UNHOLD, INACTIVE, OVER;
......
......@@ -154,6 +154,12 @@ class Conference(val accountId: String, val id: String) {
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 {
for (call in mParticipants)
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