检查ios phonegap中的相机存在

在我的phonegap应用程序中拍摄照片时,我想在显示两种来源types之前检查相机是否存在。 例如,iPad 1没有相机,因此我不想显示popup窗口以从CameraMy Photosselect来源types。 phonegap中是否有东西可以告诉我相机是否存在于此设备中?

目前,似乎没有办法查询相机的存在。

这不是理想的,但它可能是一个失败的保险箱。 如果设备没有摄像头,则对getPicture的调用将落入失败处理程序,返回消息。 当相机不可用时,该消息是:“没有相机可用”。 所以你可以一次处理这个失败,然后在用户设置中坚持一些东西,你可以向前查询。 就像我说的,不理想。 如果API可以报告这个具体的失败,它也应该提供一个方法来检查存在。

失败:function(消息){如果(消息==“没有相机可用”){/ /保存这个地方,所以下一次我们不必依靠失败处理程序告诉我们的相机不存在}}

我需要这样做,所以我把它添加到我做的各种任务的插件。 目前只有iOS版本。

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", []); } } 

如何使用

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

您可以从UIDevice类获取设备模型string并检查它

应该能够调用此代码来检查任何设备上是否存在摄像头。

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

尝试使用HTML5拍照方式时,我做了这样的事情:

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

请记住,如果你已经在IOS模拟器上使用了这个解决scheme或之前的解决scheme,它会给你一个可靠的答案,仿真器似乎返回它有一个摄像头,但不能模拟拍照,将返回错误20 …

我对if语句不满意,如果有人知道如何以更合乎逻辑的方式写这个,请让我知道,我的JS知识是有限的。

我认为这解释得很好,如果你还没有find答案: http : //docs.phonegap.com/en/1.4.1/phonegap_camera_camera.md.html#Camera