trasera tiembla plus pantalla negra funciona camara ios objective-c ios-camera

ios - tiembla - ¿Detecta la existencia de la cámara en la aplicación iPhone?



la camara trasera de mi iphone no funciona (7)

Para comprobar la cámara está disponible (Swift)

if(!UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.Camera))

Estoy escribiendo una aplicación para iOS, y necesito poder detectar si el dispositivo tiene una cámara. Previamente, verificaría si el dispositivo es un iPhone o no, ya que solo el iPhone tiene una cámara, pero con el lanzamiento del iPod Touch 4 ya no es una opción viable. La aplicación funciona sin una cámara, pero la presencia de una cámara agrega funcionalidad.

Entonces, ¿alguien puede proporcionarme un código que devuelva si hay una cámara o no?


Sí, hay una API provista para hacer justamente eso:

BOOL isCamera = [UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera];


Si está utilizando las clases de AV Foundation en lugar de UIImagePickerController, puede hacer lo siguiente:

BOOL hasCamera = ([[AVCaptureDevice devices] count] > 0);

Si está usando UIImagePickerController, probablemente no valga la pena, ya que tendría que agregar AVFoundation.framework a su proyecto.


Si necesita saber si el dispositivo tiene específicamente una cámara frontal o trasera, use esto:

isCameraAvailable = [UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceFront];


Rápido:

if UIImagePickerController.isSourceTypeAvailable(.Camera){ //Your code goes here //For example you can print available media types: print(UIImagePickerController.availableMediaTypesForSourceType(.Camera)) }


SWIFT 3

Como escribió Juan Boero, compruebe lo siguiente:

if UIImagePickerController.isSourceTypeAvailable(.camera){ }

Pero agregaría otro control para ver si el usuario permite el acceso a la cámara como sugiere Apple en su ejemplo de PhotoPicker ( ejemplo PhotoPicker Objective-C ):

* tenga en cuenta que debe importar AVFoundation

let authStatus = AVCaptureDevice.authorizationStatus(forMediaType: AVMediaTypeVideo) if authStatus == AVAuthorizationStatus.denied { // Denied access to camera // Explain that we need camera access and how to change it. let dialog = UIAlertController(title: "Unable to access the Camera", message: "To enable access, go to Settings > Privacy > Camera and turn on Camera access for this app.", preferredStyle: UIAlertControllerStyle.alert) let okAction = UIAlertAction(title: "OK", style: UIAlertActionStyle.default, handler: nil) dialog.addAction(okAction) self.present(dialog, animated:true, completion:nil) } else if authStatus == AVAuthorizationStatus.notDetermined { // The user has not yet been presented with the option to grant access to the camera hardware. // Ask for it. AVCaptureDevice.requestAccess(forMediaType: AVMediaTypeVideo, completionHandler: { (grantd) in // If access was denied, we do not set the setup error message since access was just denied. if grantd { // Allowed access to camera, go ahead and present the UIImagePickerController. self.showImagePickerForSourceType(sourceType: UIImagePickerControllerSourceType.camera) } }) } else { // Allowed access to camera, go ahead and present the UIImagePickerController. self.showImagePickerForSourceType(sourceType: UIImagePickerControllerSourceType.camera) } func showImagePickerForSourceType(sourceType: UIImagePickerControllerSourceType) { let myPickerController = UIImagePickerController() myPickerController.delegate = self; myPickerController.sourceType = sourceType self.present(myPickerController, animated: true, completion: nil) }


Puede usar el método +isSourceTypeAvailable: en UIImagePickerController:

if ([UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeCamera]) // Has camera