Я играю с html5/javascript getUserMedia api, чтобы написать приложение js, которое будет использовать камеру устройства, если оно доступно. Я использую Modernizr для обнаружения возможности (браузера) следующим образом:
if (Modernizr.getusermedia) {
И внутри истинного блока:
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");
}
);
Это прекрасно работает. Но то, что я обнаружил, заключается в том, что вызов Modernizer.getUserMedia возвращает true на основе браузера, поддерживающего api, а не на самом деле у устройства есть камера или нет.
IE. на моем MacBook с камерой iSight и текущей версией Chrome, Modernizr.getUserMedia возвращает true, затем navigator.getUserMedia(...) запрашивает разрешение на использование камеры. Отлично
Однако, на другой машине без камеры, но с текущей версией Chrome, Modernizr.getUserMedia возвращает true, что означает, что navigator.getUserMedia(...) запрашивает разрешение на использование камеры, которая у устройства отсутствует, Не так отлично!
Кто-нибудь знает, можно ли обнаружить наличие камеры? В идеале я не хочу запрашивать у пользователя разрешения на доступ к камере, если у них их нет!
Приветствия
Натан