Проверьте наличие камеры в ios phonegap - PullRequest
3 голосов
/ 12 октября 2011

Я хочу проверить существование камеры, прежде чем показывать два типа источников при съемке в моем приложении phonegap.Например, у iPad 1 нет камеры, поэтому я не хочу показывать всплывающее окно для выбора типа источника из Camera и My Photos.Есть ли в phonegap что-то, что говорит мне, что камера существует в этом устройстве или нет?

Ответы [ 6 ]

1 голос
/ 26 февраля 2013

Мне нужно было сделать именно это, поэтому я добавил его в плагин, который я сделал для выполнения различных задач. Пока только версии для 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");
});
1 голос
/ 03 апреля 2012

В настоящее время, похоже, нет способа запросить существование камеры.

Это не идеально, но для вас это может быть отказоустойчиво.Если на устройстве нет камеры, вызов getPicture попадет в обработчик сбоя, который возвращает сообщение.Когда камера недоступна, это сообщение: «камера недоступна».Таким образом, вы можете обработать этот сбой один раз, а затем сохранить что-то в пользовательских настройках, что вы можете запросить в дальнейшем.Как я уже сказал, не идеально.Если API может сообщить об этом конкретном сбое, он также должен предоставить способ проверки существования.

fail: function (message) {if (message == "камера недоступна") {// сохранить это где-то такв следующий раз нам не нужно полагаться на обработчик ошибок, чтобы сообщить нам, что камеры не существует}}

0 голосов
/ 04 февраля 2012

Я думаю, это хорошо объясняет, если вы еще не нашли ответ: http://docs.phonegap.com/en/1.4.1/phonegap_camera_camera.md.html#Camera

0 голосов
/ 22 октября 2011

Я сделал что-то подобное, пытаясь использовать 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 ...

Я не доволен, еслиСкажите, если кто-нибудь знает, как написать это более логичным способом, пожалуйста, дайте мне знать, мое ноу-хау в JS ограничено.

0 голосов
/ 12 октября 2011

Должен быть в состоянии вызвать этот код, чтобы проверить наличие камеры на любом устройстве.

if (typeof navigator.camera !== "undefined") { 
  // We are safe to use the camera 
} else { 
  // Bad news no camera 
} 
0 голосов
/ 12 октября 2011

Вы можете получить строку модели устройства из класса UIDevice и проверить это

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...