检查ios phonegap中的相机是不是存在

Posted

技术标签:

【中文标题】检查ios phonegap中的相机是不是存在【英文标题】:Check camera existence in ios phonegap检查ios phonegap中的相机是否存在 【发布时间】:2011-10-12 08:06:40 【问题描述】:

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

【问题讨论】:

你有答案了吗???? 我已添加设备特定检查 DEVICE_TYPE!="ipad" 我没有得到 .. 我怎么知道它是 ipad1 或 ipad2 其实我还没有找到完美的解决方案:( 【参考方案1】:

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

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

失败:函数(消息) if (message == "没有可用的相机") // 把它保存在某个地方,这样下次我们就不必依赖失败处理程序来告诉我们相机不存在

【讨论】:

【参考方案2】:

我需要这样做,所以我将它添加到我为执行各种任务而制作的插件中。到目前为止只有 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");
);

【讨论】:

【参考方案3】:

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

【讨论】:

【参考方案4】:

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

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

【讨论】:

只是好奇你是否尝试过这个以及它是否对你有用。谢谢。 这不起作用,在 Cordova 3.2 和 iPad 1 上测试【参考方案5】:

我在尝试使用 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 知识有限。

【讨论】:

这不起作用,在 Cordova 3.2 和 iPad 1 上测试【参考方案6】:

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

【讨论】:

以上是关于检查ios phonegap中的相机是不是存在的主要内容,如果未能解决你的问题,请参考以下文章

重启ios应用后检查照片是不是仍然存在于相机胶卷中

Phonegap 3.4.0 和相机插件 (iOS) 的问题:CDVPlugin 类 CDVCamera (pluginName: camera) 不存在

Cordova/Phonegap / iOS:错误:找不到插件“Plugin01”,或者不是 CDVP 插件。检查 config.xml 中的插件映射

PhoneGap 检查文件是不是存在

检查PhoneGap的记录是不是存在SQL

PhoneGap 相机 API 不适用于 iOS