检查ios phonegap中的相机存在
在我的phonegap
应用程序中拍摄照片时,我想在显示两种来源types之前检查相机是否存在。 例如,iPad 1没有相机,因此我不想显示popup窗口以从Camera
和My Photos
select来源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