Ich spiele mit dem HTML5/Javascript getUserMedia API, um eine js-App zu schreiben, die die Kamera des Geräts verwenden wird, falls verfügbar. Ich verwende Modernizr die Fähigkeit zu erkennen (des Browsers) wie folgt aus:getUserMedia - wie erkennt man, ob das Gerät tatsächlich eine Kamera hat
if (Modernizr.getusermedia) {
Und innerhalb des wahren Block:
navigator.getUserMedia(
{ // we would like to use video but not audio
// This object is browser API specific! - some implementations require boolean properties, others require strings!
video: true,
audio: false
},
function(videoStream) {
// 'success' callback - user has given permission to use the camera
// my code to use the camera here ...
},
function() {
// 'no permission' call back
console.log("user did not give access to the camera");
}
);
Dies funktioniert gut. Aber was ich gefunden habe ist, dass der Aufruf von Modernizer.getUserMedia basierend auf dem Browser, der die API unterstützt, true zurückgibt und nicht, ob das Gerät tatsächlich eine Kamera hat oder nicht.
IE. Auf meinem MacBook mit seiner iSight-Kamera und einer aktuellen Version von Chrome gibt Modernizr.getUserMedia true zurück, und navigator.getUserMedia (...) fordert zur Verwendung der Kamera auf. Excellent
Auf einem anderen Computer ohne Kamera, aber mit einer aktuellen Version von Chrome, gibt Modernizr.getUserMedia true zurück, was bedeutet, dass navigator.getUserMedia (...) zur Verwendung der Kamera auffordert, die das Gerät nicht verwendet. t haben. Nicht so hervorragend!
Weiß jemand, ob es möglich ist, die Existenz einer Kamera zu erkennen? Idealerweise möchte ich den Benutzer nicht zur Erlaubnis auffordern, auf die Kamera zuzugreifen, wenn sie keine haben!
Prost
Nathan
Welcher Callback wird (mit welchen Argumenten) aufgerufen, wenn Sie es auf dem Gerät ohne Kamera zulassen? – Bergi
Der Erfolg Callback wird aufgerufen, aber ich habe nicht überprüft, ob das arg (VideoStream in meinem Code oben) Null ist oder nicht. Das ist ein guter Punkt, ich sollte das überprüfen. Tun Sie es in Kürze und lassen Sie es wissen ... –