Comprobar la existencia de la camera en ios phonegap

Quiero verificar la existencia de la camera antes de mostrar los dos types de fuente al tomar una foto en la aplicación de mi phonegap . Por ejemplo, el iPad 1 no tiene una camera, por lo tanto, no quiero mostrar la window emergente para seleccionar el tipo de fuente de la Camera y My Photos . ¿Hay algo en el phonegap que me diga que la camera existe en este dispositivo o no?

Solutions Collecting From Web of "Comprobar la existencia de la camera en ios phonegap"

Actualmente, no parece haber una forma de consultar la existencia de la camera.

Esto no es ideal, pero podría ser un fracaso para usted. Si el dispositivo no tiene camera, una llamada a getPicture caerá en el manejador de fallas, que devuelve un post. Cuando la camera no está disponible, ese post es: "no hay camera disponible". Entonces podrías manejar esa falla una vez, y luego persistir en la configuration del usuario, que podrías consultar en el futuro. Como dije, no es ideal. Si la API puede informar esta falla específica, también debería proporcionar una manera de verificar la existencia.

fail: function (post) {if (post == "no hay camera disponible") {// guarda esto en alguna parte para que la próxima vez no tengamos que confiar en el controller de fallos para decirnos que la camera no existe}}

Necesitaba hacer exactamente esto, así que lo agregué a un plugin que hice para realizar varias tareas. Solo versiones de iOS hasta el momento.

TomPhonegapUtility.h

 #import <Foundation/Foundation.h> #import <Cordova/CDV.h> @interface TomPhonegapUtility : CDVPlugin - (void) isCameraAvailable:(CDVInvokedUrlCommand*)command; @end 

TomPhonegapUtility.m

 #import "TomPhonegapUtility.h" #import <Cordova/CDV.h> @implementation TomPhonegapUtility - (void) isCameraAvailable:(CDVInvokedUrlCommand*)command { CDVPluginResult *pluginResult = nil; if ([UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeCamera]) { pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsInt:1]; } else { pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsInt:0]; } [self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; } @end 

TomPhonegapUtility.js

 function TomPhoneGapUtility () { this.isCameraAvailable = function(successCallback) { cordova.exec(successCallback, function(){}, "TomPhonegapUtility", "isCameraAvailable", []); } } 

Cómo utilizar

 var util = new TomPhoneGapUtility(); util.isCameraAvailable(function(hasCamera) { if (hasCamera) alert("YES"); else alert("NO"); }); 

Puede get la cadena del model de dispositivo de la class UIDevice y comprobar esto.

Debe poder llamar a este código para verificar la existencia de una camera en cualquier dispositivo.

 if (typeof navigator.camera !== "undefined") { // We are safe to use the camera } else { // Bad news no camera } 

He hecho algo como esto al intentar usar la forma HTML5 de tomar una foto:

 if (typeof navigator.device !== 'undefined' && typeof navigator.device.capture !== 'undefined' && typeof navigator.device.capture.captureImage !== 'undefined') { // Can take a picture } else { // No camera } 

Tenga en count que si ha utilizado esta solución o la anterior en el simulador IOS, le dará una respuesta confiable, el simulador parece devolver que tiene una camera, pero no puede simular la toma de una image y lo hará devuelve un error 20 …

No estoy contento con la statement si, si alguien sabe cómo escribir esto de una manera más lógica, por favor avíseme, mi conocimiento de JS es limitado.

Creo que esto lo explica bien, si aún no ha encontrado la respuesta: http://docs.phonegap.com/es/1.4.1/phonegap_camera_camera.md.html#Camera