async private void CheckCamaraAutorizationStatus(AVAuthorizationStatus authorizationStatus) { switch (authorizationStatus) { case AVAuthorizationStatus.NotDetermined: await AVCaptureDevice.RequestAccessForMediaTypeAsync(AVMediaType.Video); CheckCamaraAutorizationStatus(authorizationStatus); break; case AVAuthorizationStatus.Restricted: InvokeOnMainThread(() => ShowMessage("Acceso a Camara Restringido", "Por que no muestras los packs??? Te quieres morir??", NavigationController)); break; case AVAuthorizationStatus.Denied: InvokeOnMainThread(() => ShowMessage("Acceso a Camara Denegado", "Por que no muestras los packs??? Te quieres morir??", NavigationController)); break; case AVAuthorizationStatus.Authorized: InvokeOnMainThread(() => { var imagePickerController = new UIImagePickerController { SourceType = UIImagePickerControllerSourceType.Camera, Delegate = this }; PresentViewController(imagePickerController, true, null); }); break; default: throw new ArgumentOutOfRangeException(); } }
public void MakeSnapshot(string path, int size, Action <bool> callback) { AVAuthorizationStatus status = AVCaptureDevice.GetAuthorizationStatus(AVMediaType.Video); switch (status) { case AVAuthorizationStatus.NotDetermined: AVCaptureDevice.RequestAccessForMediaType(AVMediaType.Video, granded => { if (granded) { Context.MainController.InvokeOnMainThread(() => Write(path, size, callback)); } }); break; case AVAuthorizationStatus.Restricted: case AVAuthorizationStatus.Denied: using (var alert = new UIAlertView(D.WARNING, D.CAMERA_NOT_ALLOWED, null, D.OK)) alert.Show(); break; case AVAuthorizationStatus.Authorized: Write(path, size, callback); break; } }
public bool IsCameraAuthorized() { AVAuthorizationStatus authStatus = AVCaptureDevice.GetAuthorizationStatus(AVMediaType.Video); if (authStatus == AVAuthorizationStatus.Authorized) { // do your logic return(true); } else if (authStatus == AVAuthorizationStatus.Denied) { // denied return(false); } else if (authStatus == AVAuthorizationStatus.Restricted) { // restricted, normally won't happen return(false); } else if (authStatus == AVAuthorizationStatus.NotDetermined) { // not determined?! return(false); } else { return(false); // impossible, unknown authorization status } }
public static void AVAuthCallback(AVAuthorizationStatus status) { if (locationDelegate != null) { aVAuthorizationDelegate(status); } }
void FireAVPermissionCompletionHandlerWithType(ClusterAVAuthorizationType mediaType) { AVAuthorizationStatus status = AVCaptureDevice.GetAuthorizationStatus(AVEquivalentMediaType(mediaType)); if (_avPermissionCompletionHandler != null) { ClusterDialogResult userDialogResult = ClusterDialogResult.Granted; ClusterDialogResult systemDialogResult = ClusterDialogResult.Granted; if (status == AVAuthorizationStatus.NotDetermined) { userDialogResult = ClusterDialogResult.Denied; systemDialogResult = ClusterDialogResult.NoActionTaken; } else if (status == AVAuthorizationStatus.Authorized) { userDialogResult = ClusterDialogResult.Granted; systemDialogResult = ClusterDialogResult.Granted; } else if (status == AVAuthorizationStatus.Denied) { userDialogResult = ClusterDialogResult.Granted; systemDialogResult = ClusterDialogResult.Denied; } else if (status == AVAuthorizationStatus.Restricted) { userDialogResult = ClusterDialogResult.Granted; systemDialogResult = ClusterDialogResult.ParentallyRestricted; } _avPermissionCompletionHandler((status == AVAuthorizationStatus.Authorized), userDialogResult, systemDialogResult); _avPermissionCompletionHandler = null; } }
private void CheckCameraAuthorizationStatus(AVAuthorizationStatus authorizationStatus) { switch (authorizationStatus) { case AVAuthorizationStatus.NotDetermined: break; case AVAuthorizationStatus.Restricted: InvokeOnMainThread(() => { showMessage("Not Available", "The resource is not available, it is restricted", NavigationController); }); break; case AVAuthorizationStatus.Denied: InvokeOnMainThread(() => { showMessage("Not Available", "The resource is not available, it is denied by you", NavigationController); }); break; case AVAuthorizationStatus.Authorized: InvokeOnMainThread(() => { var imagePickerController = new UIImagePickerController { SourceType = UIImagePickerControllerSourceType.Camera, Delegate = this }; PresentViewController(imagePickerController, true, null); }); break; default: break; } }
private void Setup() { AVAuthorizationStatus authorizationStatus = AVCaptureDevice.GetAuthorizationStatus(AVMediaType.Video); switch (authorizationStatus) { case AVAuthorizationStatus.NotDetermined: { AVCaptureDevice.RequestAccessForMediaType(AVMediaType.Video, new AVRequestAccessStatus(delegate(bool accessGranted) { if (accessGranted) { SetupCapture(); } else { Console.WriteLine("Access denied"); } })); break; } case AVAuthorizationStatus.Authorized: { SetupCapture(); break; } case AVAuthorizationStatus.Restricted: { Console.WriteLine("Access denied"); break; } default: { break; } } }
/// <summary> /// Gets the current authorization permissions for the camera. /// </summary> public CameraPermission GetPermission() { if (this.device == null) { return(CameraPermission.NotAvailable); } AVAuthorizationStatus status = this.GetAuthorizationStatus(); if (status == AVAuthorizationStatus.Authorized) { return(CameraPermission.Authorized); } if (status == AVAuthorizationStatus.Denied) { return(CameraPermission.Denied); } if (status == AVAuthorizationStatus.NotDetermined) { return(CameraPermission.NotDetermined); } if (status == AVAuthorizationStatus.Restricted) { return(CameraPermission.Restricted); } throw new CameraPermissionException("Unexpected AVAuthorizationStatus (" + status + ")."); }
protected override void OnElementChanged(ElementChangedEventArgs <CustomCamera> e) { if (Control == null) { AVAuthorizationStatus status = AVCaptureDevice.GetAuthorizationStatus(AVAuthorizationMediaType.Video); if (status == AVAuthorizationStatus.Authorized) { // プライバシー設定でカメラ使用が許可されている } else if (status == AVAuthorizationStatus.Denied) { // 不許可になっている } else if (status == AVAuthorizationStatus.Restricted) { // 制限されている } else if (status == AVAuthorizationStatus.NotDetermined) { // アプリで初めてカメラ機能を使用する場合 AVCaptureDevice.RequestAccessForMediaTypeAsync(AVAuthorizationMediaType.Video); } m_uiCameraPreview = new UICameraPreview(e.NewElement); SetNativeControl(m_uiCameraPreview); if (e.OldElement != null) { } if (e.NewElement != null) { } } }
void CheckCameraAtuhorizationStatus(AVAuthorizationStatus authorizationStatus) { switch (authorizationStatus) { case AVAuthorizationStatus.NotDetermined: AVCaptureDevice.RequestAccessForMediaTypeAsync(AVMediaType.Video); break; case AVAuthorizationStatus.Restricted: InvokeOnMainThread(() => ShowMessage("Fail", "Acceso Restringido", NavigationController)); break; case AVAuthorizationStatus.Denied: InvokeOnMainThread(() => ShowMessage("Fail", "Acceso Denegado", NavigationController)); break; case AVAuthorizationStatus.Authorized: InvokeOnMainThread(() => { var Camera = new UIImagePickerController { SourceType = UIImagePickerControllerSourceType.Camera, Delegate = this }; PresentViewController(Camera, true, null); }); break; default: throw new ArgumentOutOfRangeException(); } }
void TryOpenCamera() { if (!UIImagePickerController.IsSourceTypeAvailable(UIImagePickerControllerSourceType.Camera)) { AVAuthorizationStatus authStatus = AVCaptureDevice.GetAuthorizationStatus(AVMediaType.Video); CheckCamaraAutorizationStatus(authStatus); return; } }
private void ReloadCameraCell(AVAuthorizationStatus status) { var cameraCell = _getCameraCellFunc.Invoke(); if (cameraCell == null) { return; } cameraCell.AuthorizationStatus = status; }
void TryOpenCamera() { if (!UIImagePickerController.IsSourceTypeAvailable(UIImagePickerControllerSourceType.Camera)) { ShowMessage("Error", "La Camara no esta disponible", NavigationController); return; } AVAuthorizationStatus authStatus = AVCaptureDevice.GetAuthorizationStatus(AVMediaType.Video); CheckCamaraAutorizationStatus(authStatus); }
// //Camera access Authozation //* async Task CameraAuterization() { AVAuthorizationStatus acvStatus = AVCaptureDevice.GetAuthorizationStatus(AVMediaType.Video); if ( acvStatus != AVAuthorizationStatus.Authorized ) { await AVCaptureDevice.RequestAccessForMediaTypeAsync(AVMediaType.Video); } }//*/
void CheckCameraAuthorizationStatus(AVAuthorizationStatus aVAuthorizationStatus) { switch (aVAuthorizationStatus) { case AVAuthorizationStatus.NotDetermined: //Solicitud del permiso. AVCaptureDevice.RequestAccessForMediaType(AVMediaType.Video, (bool accessGranted) => CheckCameraAuthorizationStatus(AVCaptureDevice.GetAuthorizationStatus(AVMediaType.Video))); break; case AVAuthorizationStatus.Restricted: InvokeOnMainThread(() => { ShowMessage(title: "Resource not available.", message: "The resource is not available due its restricted use.", fromViewController: NavigationController); }); break; case AVAuthorizationStatus.Denied: InvokeOnMainThread(() => { ShowMessage(title: "Resource not available.", message: "The resource is not available due it was denied by you.", fromViewController: NavigationController); }); break; case AVAuthorizationStatus.Authorized: //Abrir la cámara. InvokeOnMainThread(() => { var imagePickerController = new UIImagePickerController { SourceType = UIImagePickerControllerSourceType.Camera, Delegate = this }; PresentViewController(imagePickerController, true, null); }); break; default: break; } }
public static void RequestPermissions() { AVAuthorizationStatus avstatus = HasCameraPermission(); PHAuthorizationStatus phstatus = HasCameraRollPermission(); //アクセス許可のリクエストを出していない場合はリクエストを送る if (avstatus == AVAuthorizationStatus.NotDetermined) { _RequestCameraPermission(); } if (phstatus == PHAuthorizationStatus.NotDetermined) { _RequestCameraRollPermission(); } }
public override bool IsAvailable( ) { // get the permission settings AVAuthorizationStatus authStatus = AVCaptureDevice.GetAuthorizationStatus(AVMediaType.Video); // see if there's even a camera ON the device bool isTypeAvailable = UIImagePickerController.IsSourceTypeAvailable(UIImagePickerControllerSourceType.Camera); // if there IS a camera, and the permission is allowed or notdetermined, then yes, it's available. if (isTypeAvailable == true && (authStatus == AVAuthorizationStatus.Authorized || authStatus == AVAuthorizationStatus.NotDetermined)) { return(true); } // otherwise it isn't. return(false); }
private void GetFromCamera() { AVAuthorizationStatus authStatus = AVCaptureDevice.GetAuthorizationStatus(AVMediaType.Video); if (authStatus == AVAuthorizationStatus.Authorized) { DoPhoto(); return; } AVCaptureDevice.RequestAccessForMediaType(AVAuthorizationMediaType.Video, (bool access) => { if (access == true) { DoPhoto(); } ; }); }
public static AuthorizationState ToShared(this AVAuthorizationStatus status) { var state = AuthorizationState.NotDetermined; switch (status) { case AVAuthorizationStatus.NotDetermined: break; case AVAuthorizationStatus.Authorized: state = AuthorizationState.Authorized; break; case AVAuthorizationStatus.Restricted: case AVAuthorizationStatus.Denied: state = AuthorizationState.Denied; break; } return(state); }
void CheckCameraAuthorizationStatus(AVAuthorizationStatus authorizationStatus) { switch (authorizationStatus) { case AVAuthorizationStatus.NotDetermined: //Pedir permiso authorizationStatus = AVCaptureDevice.GetAuthorizationStatus(AVMediaType.Video); CheckCameraAuthorizationStatus(authorizationStatus); break; case AVAuthorizationStatus.Restricted: InvokeOnMainThread(() => { ShowMessage("Its is resticted", "", NavigationController); }); break; case AVAuthorizationStatus.Denied: InvokeOnMainThread(() => { ShowMessage("It is denied", "", NavigationController); }); break; case AVAuthorizationStatus.Authorized: //Open photo library InvokeOnMainThread(() => { var imagePicker = new UIImagePickerController { SourceType = UIImagePickerControllerSourceType.Camera, Delegate = this }; PresentViewController(imagePicker, true, null); }); break; default: break; } }
void CheckCameraAuthorizationStatus(AVAuthorizationStatus authorizationStatus) { switch (authorizationStatus) { case AVAuthorizationStatus.NotDetermined: //TODO: Vamos a pedir el permiso para acceder AVCaptureDevice.RequestAccessForMediaType(AVAuthorizationMediaType.Video, (accessGranted) => { if (!accessGranted) { CheckCameraAuthorizationStatus(authorizationStatus); } }); break; case AVAuthorizationStatus.Restricted: //TODO: Mostrar un mensaje diciendo que esta restringido InvokeOnMainThread(() => ShowMessage("Error", "El permiso esta restringido.", NavigationController)); break; case AVAuthorizationStatus.Denied: //TODO: El usuario denego el permiso. InvokeOnMainThread(() => ShowMessage("Error", "El permiso fue denegado.", NavigationController)); break; case AVAuthorizationStatus.Authorized: //TODO: Abrir la galeria InvokeOnMainThread(() => { var imagePickerController = new UIImagePickerController { SourceType = UIImagePickerControllerSourceType.Camera, Delegate = this }; PresentViewController(imagePickerController, true, null); }); break; default: break; } }
void CheckCameraAuthorizationStatus(AVAuthorizationStatus auth) { switch (auth) { case AVAuthorizationStatus.Authorized: InvokeOnMainThread(() => { var imagePicker = new UIImagePickerController { SourceType = UIImagePickerControllerSourceType.Camera, Delegate = this }; PresentViewController(imagePicker, true, null); }); break; case AVAuthorizationStatus.Denied: InvokeOnMainThread(() => { ShowMessage("Alert!", "No", NavigationController); }); break; case AVAuthorizationStatus.NotDetermined: AVCaptureDevice.RequestAccessForMediaType(AVMediaType.Video, (bool access) => CheckCameraAuthorizationStatus(auth)); break; case AVAuthorizationStatus.Restricted: InvokeOnMainThread(() => { ShowMessage("Alert!", "No", NavigationController); }); break; default: break; } }
public void ShowAVPermissionsWithType(ClusterAVAuthorizationType mediaType, string requestTitle, string message, string denyButtonTitle, string grantButtonTitle, ClusterPrePermissionCompletionHandler completionHandler) { if (requestTitle.Length == 0) { switch (mediaType) { case ClusterAVAuthorizationType.Camera: requestTitle = @"Access Camera?"; break; default: requestTitle = @"Access Microphone?"; break; } } denyButtonTitle = GetTitleForType(ClusterTitleType.Deny, denyButtonTitle); grantButtonTitle = GetTitleForType(ClusterTitleType.Request, grantButtonTitle); AVAuthorizationStatus status = AVCaptureDevice.GetAuthorizationStatus(AVMediaType.Video); if (status == AVAuthorizationStatus.NotDetermined) { _avPermissionCompletionHandler = completionHandler; _preAVPermissionAlertView = new UIAlertView(requestTitle, message, new AlertViewDelegate(this), denyButtonTitle, grantButtonTitle); _preAVPermissionAlertView.Tag = (nint)(int)mediaType; _preAVPermissionAlertView.Show(); } else { if (completionHandler != null) { completionHandler((status == AVAuthorizationStatus.Authorized), ClusterDialogResult.NoActionTaken, ClusterDialogResult.NoActionTaken); } } }
public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions) { // Override point for customization after application launch. // If not required for your application you can safely delete this method //mvvmcross Window = new UIWindow(UIScreen.MainScreen.Bounds); var presenter = new MvxIosViewPresenter(this, Window); var setup = new Setup(this, presenter); setup.Initialize(); var startup = Mvx.Resolve <IMvxAppStart>(); startup.Start(); Window.MakeKeyAndVisible(); AVAuthorizationStatus authStatus = AVCaptureDevice.GetAuthorizationStatus(AVMediaType.Video); return(true); }
public void CaptureFailedSession(AVAuthorizationStatus status) { Console.WriteLine("did fail authorization to camera"); ReloadCameraCell(status); }
public bool HaveCameraPermissions() { AVAuthorizationStatus authStatus = AVCaptureDevice.GetAuthorizationStatus(AVMediaType.Video); return(authStatus != AVAuthorizationStatus.Denied && authStatus != AVAuthorizationStatus.Restricted); }
public override void ViewDidLoad() { base.ViewDidLoad(); this.View.BackgroundColor = UIColor.White; int v = 0; if (UIDevice.CurrentDevice.CheckSystemVersion(7, 0)) { v = 20; } nfloat height = this.View.Frame.Height / 2 - v; CGRect frame = new CGRect(0, v, this.View.Frame.Width, height); UIImage image = TouchStyle.ImageFromResource("barcode-overlay-sm.png"); this._imageOverlay = new UIImageView(image) { Frame = frame, ContentMode = UIViewContentMode.Center, AutoresizingMask = (UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight | UIViewAutoresizing.FlexibleBottomMargin) }; this.View.Add(this._imageOverlay); UIImage image2 = TouchStyle.ImageFromResource("barcode-scanblocked-sm.png"); this._imageOverlayScanBlocked = new UIImageView(image2) { Frame = frame, ContentMode = UIViewContentMode.Center, AutoresizingMask = (UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight | UIViewAutoresizing.FlexibleBottomMargin), Hidden = true }; this.View.Add(this._imageOverlayScanBlocked); this._cameraView = new UIView { AutoresizingMask = (UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight | UIViewAutoresizing.FlexibleBottomMargin) }; this._cameraView.Frame = frame; AVAuthorizationStatus authorizationStatus = AVCaptureDevice.GetAuthorizationStatus(AVMediaType.Video); if (authorizationStatus == AVAuthorizationStatus.Authorized) { AVCaptureDevice device = AVCaptureDevice.GetDefaultDevice(AVMediaType.Video); // update for iOS 13 NSError nSError; AVCaptureDeviceInput aVCaptureDeviceInput = AVCaptureDeviceInput.FromDevice(device, out nSError); if (aVCaptureDeviceInput != null) { this._captureSession = new AVCaptureSession(); this._captureSession.AddInput(aVCaptureDeviceInput); AVCaptureMetadataOutput aVCaptureMetadataOutput = new AVCaptureMetadataOutput(); this._captureSession.AddOutput(aVCaptureMetadataOutput); this._cameraMetaDataDelegate = new CameraScannerSplitView.CameraMetaDataDelegate(this); aVCaptureMetadataOutput.SetDelegate(this._cameraMetaDataDelegate, DispatchQueue.MainQueue); //aVCaptureMetadataOutput.MetadataObjectTypes = aVCaptureMetadataOutput.AvailableMetadataObjectTypes; aVCaptureMetadataOutput.MetadataObjectTypes = AVMetadataObjectType.QRCode | AVMetadataObjectType.Code128Code | AVMetadataObjectType.UPCECode | AVMetadataObjectType.EAN13Code; } } else if (authorizationStatus == AVAuthorizationStatus.NotDetermined) { AVCaptureDevice.RequestAccessForMediaType(AVMediaType.Video, (granted) => { if (!granted) { Device.Log.Error("ViewDidLoadBase ScanLayer RequestAccessForMediaType not granted!"); } else { Device.Log.Error("ViewDidLoadBase ScanLayer RequestAccessForMediaType granted!"); } }); } else { Device.Log.Error("Not Authorized! Status: " + authorizationStatus.ToString()); } if (authorizationStatus >= AVAuthorizationStatus.NotDetermined && authorizationStatus <= AVAuthorizationStatus.Authorized) { switch ((int)authorizationStatus) { case 0: AVCaptureDevice.RequestAccessForMediaType(AVMediaType.Video, delegate(bool result) { Device.Thread.ExecuteOnMainThread(delegate { if (result) { this.SetupVideoPreviewLayer(); } else { this.AddNoCameraAccessLabels(); } }); }); break; case 1: Device.Log.Warn("Camera Access is restricted", new object[0]); this.AddNoCameraAccessLabels(); break; case 2: this.AddNoCameraAccessLabels(); break; case 3: this.SetupVideoPreviewLayer(); break; } } this.View.InsertSubviewBelow(this._cameraView, this._imageOverlay); CGRect frame2 = new CGRect(0, frame.Bottom, this.View.Frame.Width, this.View.Frame.Height - frame.Height); this._resultsView = new UITableView(frame2, UITableViewStyle.Plain) { AutoresizingMask = (UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleTopMargin | UIViewAutoresizing.FlexibleHeight) }; this._resultsView.Source = new CameraScannerSplitView.CameraListSource(this); this.View.Add(this._resultsView); this.NavigationItem.LeftBarButtonItem = new UIBarButtonItem("Done", UIBarButtonItemStyle.Done, delegate { string text = string.Empty; if (this._resultsView.Source != null) { try { string text2 = string.Empty; List <string> list = (this._resultsView.Source as CameraScannerSplitView.CameraListSource).ScannedBarcodes(); foreach (string current in list) { if (!string.IsNullOrEmpty(current)) { text2 = text2 + current + "\r\n"; } } text = text2; } catch (Exception arg) { Device.Log.Error("This error occurred while parsing barcodes scanned: \r\n" + arg, new object[0]); } } if (this._callback.Parameters == null) { this._callback.Parameters = new Dictionary <string, string>(); } this._callback.Parameters[this._barcodeValueKey] = text; iApp.Navigate(this._callback); ModalManager.EnqueueModalTransition(TouchFactory.Instance.TopViewController, null, true); }); }
public void AVCallback(AVAuthorizationStatus status) { DebugLog($"Camera Callback received {status}"); RequestPermissions(); }