在ios phonegap中检查相机是否存在

时间:2011-10-12 08:06:41

标签: javascript objective-c ios cordova

我想在我的phonegap应用程序中拍照时显示两种源类型之前检查相机是否存在。例如,iPad 1没有摄像头,因此我不想显示弹出窗口以从CameraMy Photos中选择源类型。 phonegap中是否有某些内容告诉我此设备中是否存在相机?

6 个答案:

答案 0 :(得分:1)

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

这不太理想,但对您来说可能是失败的安全措施。如果设备没有摄像头,则对getPicture的调用将落入失败处理程序,该处理程序将返回一条消息。当相机不可用时,该消息为:“没有可用的相机”。因此,您可以处理一次失败,然后在用户设置中保留一些内容,您可以查询这些内容。就像我说的,不理想。如果API可以报告此特定故障,它还应提供检查存在的方法。

失败:函数(消息){     if(message ==“没有相机可用”){         //将此保存在某处,以便下次我们不必依赖故障处理程序告诉我们摄像机不存在     } }

答案 1 :(得分:1)

我需要做到这一点,所以我把它添加到我做了各种任务的插件中。目前只有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");
});

答案 2 :(得分:0)

您可以从UIDevice类获取设备模型字符串并检查此

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

在尝试使用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模拟器上使用过此解决方案或之前的解决方案,它会给您一个可靠的答案,模拟器似乎返回它有一个摄像头,但无法模拟拍摄图片并将返回错误20 ...

我对if语句不满意,如果有人知道如何以更合理的方式写这个,请告诉我,我的JS知识有限。

答案 5 :(得分:0)

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