in app/src/main/java/com/amazonaws/services/chime/sdkdemo/adapter/VideoAdapter.kt [83:139]
fun bindVideoTile(videoCollectionTile: VideoCollectionTile) {
audioVideo.bindVideoView(view.video_surface, videoCollectionTile.videoTileState.tileId)
// Save the bound VideoRenderView in order to explicitly control the visibility of SurfaceView.
// This is to bypass the issue where we cannot hide a SurfaceView that overlaps with another one.
videoCollectionTile.videoRenderView = view.video_surface
videoCollectionTile.pauseMessageView = view.poor_connection_message
if (videoCollectionTile.videoTileState.isContent) {
view.video_surface.contentDescription = "ScreenTile"
} else {
view.video_surface.contentDescription = "${videoCollectionTile.attendeeName} VideoTile"
}
if (videoCollectionTile.videoTileState.isLocalTile) {
view.on_tile_button.setImageResource(R.drawable.ic_switch_camera)
view.attendee_name.visibility = View.GONE
view.on_tile_button.visibility = View.VISIBLE
// To facilitate demoing and testing both use cases, we account for both our external
// camera and the camera managed by the facade. Actual applications should
// only use one or the other
updateLocalVideoMirror()
view.on_tile_button.setOnClickListener {
if (audioVideo.getActiveCamera() != null) {
audioVideo.switchCamera()
} else {
cameraCaptureSource?.switchCamera()
}
updateLocalVideoMirror()
}
} else {
view.video_surface.mirror = false
view.attendee_name.text = videoCollectionTile.attendeeName
view.attendee_name.visibility = View.VISIBLE
view.on_tile_button.visibility = View.VISIBLE
when (videoCollectionTile.videoTileState.pauseState) {
VideoPauseState.Unpaused ->
view.on_tile_button.setImageResource(R.drawable.ic_pause_video)
VideoPauseState.PausedByUserRequest ->
view.on_tile_button.setImageResource(R.drawable.ic_resume_video)
VideoPauseState.PausedForPoorConnection ->
view.poor_connection_message.visibility = View.VISIBLE
}
view.on_tile_button.setOnClickListener {
val tileId = videoCollectionTile.videoTileState.tileId
if (videoCollectionTile.videoTileState.pauseState == VideoPauseState.Unpaused) {
audioVideo.pauseRemoteVideoTile(tileId)
userPausedVideoTileIds.add(tileId)
view.on_tile_button.setImageResource(R.drawable.ic_resume_video)
} else {
audioVideo.resumeRemoteVideoTile(tileId)
userPausedVideoTileIds.remove(tileId)
view.on_tile_button.setImageResource(R.drawable.ic_pause_video)
}
}
}
}