检查ios phonegap中的相机是不是存在
Posted
技术标签:
【中文标题】检查ios phonegap中的相机是不是存在【英文标题】:Check camera existence in ios phonegap检查ios phonegap中的相机是否存在 【发布时间】:2011-10-12 08:06:40 【问题描述】:在我的phonegap
应用程序中拍照时,我想在显示两种来源类型之前检查相机是否存在。例如,iPad 1 没有相机,因此我不想显示从Camera
和My 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中的相机是不是存在的主要内容,如果未能解决你的问题,请参考以下文章
Phonegap 3.4.0 和相机插件 (iOS) 的问题:CDVPlugin 类 CDVCamera (pluginName: camera) 不存在
Cordova/Phonegap / iOS:错误:找不到插件“Plugin01”,或者不是 CDVP 插件。检查 config.xml 中的插件映射