示例#1
0
        private void PublishRemoteVideoStream(RemoteVideoStream v)
        {
            _remoteVideoStreams.Add(v);
            var renderer         = new VideoStreamRenderer(v, MainActivity.Instance);
            var renderingOptions = new CreateViewOptions(ScalingMode.Crop);
            var nativeView       = renderer.CreateView(renderingOptions);
            var formsView        = nativeView.ToView();

            RemoteVideoAdded?.Invoke(this, formsView);
        }
示例#2
0
 public void Hangup()
 {
     _call.RemoteParticipantsUpdated -= _call_RemoteParticipantsUpdated;
     Com.Laerdal.Azurecommunicationhelper.CallClientHelper.HangUp(_call, new HangUpOptions());
     _localRenderer?.Dispose();
     _localRenderer = null;
     _localVideoStream?.Dispose();
     _localVideoStream = null;
     _remoteVideoStreams.Clear();
     _call.Dispose();
     _call = null;
 }
示例#3
0
        public Task JoinGroup(Guid groupID)
        {
            var camera = _deviceManager.Cameras.First(c => c.CameraFacing == CameraFacing.Front);

            _localVideoStream = new LocalVideoStream(camera, MainActivity.Instance);
            _localRenderer    = new VideoStreamRenderer(_localVideoStream, MainActivity.Instance);
            var renderingOptions = new CreateViewOptions(ScalingMode.Crop);
            var nativeView       = _localRenderer.CreateView(renderingOptions);
            var formsView        = nativeView.ToView();

            LocalVideoAdded?.Invoke(this, formsView);
            var groupCallLocator = new GroupCallLocator(UUID.FromString(groupID.ToString()));
            var videoOptions     = new VideoOptions(new LocalVideoStream[] { _localVideoStream });
            var joinCallOptions  = new JoinCallOptions();

            joinCallOptions.SetVideoOptions(videoOptions);
            _call = _callAgent.Join(Application.Context, groupCallLocator, joinCallOptions);
            _call.RemoteParticipantsUpdated += _call_RemoteParticipantsUpdated;
            return(Task.CompletedTask);
        }