Ejemplo n.º 1
0
        public void IF_OpenCamera(ISupportMediaResultListener _supportMediaResultListener, SyncPhotoOptions options, int _CodeRequest)
        {
            CodeRequest = _CodeRequest;
            supportMediaResultListener = _supportMediaResultListener;

            UIStoryboard            storyboard = UIStoryboard.FromName("SupportMediaStoryboard", null);
            SupportCameraController controller = (SupportCameraController)storyboard.InstantiateViewController("SupportCameraController");

            controller.syncPhotoOptions = options;
            NaviExtensions.OpenController(controller);
        }
        public Task <SupportImageXF> IF_OpenCamera(SyncPhotoOptions options)
        {
            ManualResetEvent manualResetEvent = new ManualResetEvent(false);

            SupportImageXF result = null;

            var currentPresent = NaviExtensions.GetTopController();

            if (currentPresent == null)
            {
                return(Task.FromResult(result));
            }

            return(Task.Factory.StartNew(() => {
                try
                {
                    manualResetEvent.Reset();

                    SupportCameraController supportCameraController = null;

                    currentPresent.InvokeOnMainThread(() => {
                        var storyboard = UIStoryboard.FromName("SupportMediaStoryboard", null);
                        supportCameraController = (SupportCameraController)storyboard.InstantiateViewController("SupportCameraController");
                        supportCameraController.syncPhotoOptions = options;

                        supportCameraController.OnPicked += (obj) =>
                        {
                            supportCameraController.InvokeOnMainThread(() =>
                            {
                                try
                                {
                                    supportCameraController.DismissViewController(true, () =>
                                    {
                                        result = obj.galleryImageXF;
                                        manualResetEvent.Set();
                                    });
                                }
                                catch (Exception ex)
                                {
                                    Console.WriteLine(ex.StackTrace);
                                    manualResetEvent.Set();
                                }
                            });
                        };
                        currentPresent.PresentViewController(supportCameraController, true, null);
                    });

                    manualResetEvent.WaitOne();

                    if (supportCameraController != null)
                    {
                        supportCameraController.Dispose();
                    }

                    return result;
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex);
                    return result;
                }
            }));
        }