2011-10-12 38 views
3

我想在我的phonegap應用程序中拍照時顯示兩種信號源類型之前檢查相機是否存在。例如,iPad 1沒有相機,因此我不想顯示彈出框以從CameraMy Photos中選擇來源類型。在phonegap中有沒有告訴我相機是否存在於此設備中?在ios phonegap中檢查相機是否存在

+0

你有答案嗎? –

+0

我已添加設備專用檢查{DEVICE_TYPE!=「ipad」} – GauravSTomar

+0

我沒有收到..我怎麼知道它是ipad1或ipad2 –

回答

0

你可以得到的UIDevice類設備型號字符串,並檢查該

0

應該能夠調用此代碼來檢查任何設備上的攝像頭的存在。

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

只是好奇,如果你試過這個,並且它是否適合你,謝謝 – user511530

+0

不,它不適合我 – GauravSTomar

+0

這不起作用,在Cordova 3.2和iPad 1 – silverchair

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知識是有限的。

+0

上測試,這不起作用,在Cordova 3.2和iPad 1上測試 – silverchair

1

目前,似乎沒有要查詢相機的存在的一種方式。

這並不理想,但它可能是您的失敗保險箱。如果設備沒有攝像頭,則對getPicture的調用將落入失敗處理程序,該處理程序會返回一條消息。當相機不可用時,該消息是:「沒有相機可用」。所以你可以一次處理這個失敗,然後在用戶設置中堅持一些東西,你可以向前查詢。就像我說的,不理想。如果API可以報告這個特定的失敗,它也應該提供一種檢查存在的方法。

失敗:函數(消息){ 如果(消息==「沒有可用的相機」){// 保存這個地方所以下次我們不必依靠故障處理程序來告訴我們這個攝像頭沒有按'不存在 } }

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"); 
});