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