public static void GenerateCertificate() { Promise <DtlsCertificate> promise = new Promise <DtlsCertificate>(); _certificatePromise = promise; ManagedThread.Dispatch(() => { promise.Resolve(DtlsCertificate.GenerateCertificate()); }); }
public Future <FM.IceLink.LocalMedia> StartLocalMedia(Android.Content.Context context, AbsoluteLayout container) #endif { return(_certificatePromise.Then <FM.IceLink.LocalMedia>((cert) => { _certificate = cert; if (!EnableAudioSend && !EnableVideoSend) { LayoutManager = new XamarinLayoutManager(container); return Promise <FM.IceLink.LocalMedia> .ResolveNow <FM.IceLink.LocalMedia>(null); } else { Xamarin.Forms.View localView; // Set up the local media. if (!EnableScreenShare) { #if __IOS__ LocalCameraMedia = new LocalCameraMedia(!EnableAudioSend, !EnableVideoSend, null); #else if (EnableAudioSend) { _AecContext = new AecContext(); LocalCameraMedia = new LocalCameraMedia(context, !EnableAudioSend, !EnableVideoSend, _AecContext); } else { LocalCameraMedia = new LocalCameraMedia(context, !EnableAudioSend, !EnableVideoSend, null); } #endif localView = new FMView(((LocalCameraMedia)LocalCameraMedia).GetView()); } else { #if __IOS__ LocalScreenMedia = new LocalScreenMedia(!EnableAudioSend, !EnableVideoSend, null); #else if (EnableAudioSend) { _AecContext = new AecContext(); LocalScreenMedia = new LocalScreenMedia(MediaProjection, context, !EnableAudioSend, !EnableVideoSend, _AecContext); } else { LocalScreenMedia = new LocalScreenMedia(MediaProjection, context, !EnableAudioSend, !EnableVideoSend, null); } #endif localView = new FMView(LocalScreenMedia.View); } // Set up the layout manager. LayoutManager = new XamarinLayoutManager(container); // Add the local preview to the layout. if (localView != null) { LayoutManager.SetLocalView(localView); // TODO Context menu //LocalMedia.View.ContextMenu = videoChat.LocalContextMenu; } // Start the local media. if (!EnableScreenShare) { return LocalCameraMedia.Start(); } else { return LocalScreenMedia.Start(); } } })); }