Gram z api html5/javascript getUserMedia, aby napisać aplikację js, która będzie korzystać z kamery urządzenia, jeśli jest dostępna. Używam modernizr do wykrywania zdolności (w przeglądarce) tak:getUserMedia - jak wykryć, czy urządzenie rzeczywiście ma kamerę
if (Modernizr.getusermedia) {
A w prawdziwym bloku:
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");
}
);
To działa prawidłowo. Ale odkryłem, że wywołanie Modernizer.getUserMedia zwraca true w oparciu o przeglądarkę obsługującą interfejs API, a nie to, czy urządzenie rzeczywiście ma kamerę, czy nie.
IE. na moim MacBooku z kamerą iSight i aktualną wersją Chrome, Modernizr.getUserMedia zwraca true, a następnie navigator.getUserMedia (...) pyta o pozwolenie na korzystanie z kamery. Doskonały
Jednak na innej maszynie bez kamery, ale z aktualną wersją Chrome, Modernizr.getUserMedia zwraca wartość true, co oznacza, że navigator.getUserMedia (...) monituje o pozwolenie na korzystanie z kamery, której urządzenie nie robi. t mają. Nie tak doskonałe!
Czy ktoś wie, czy możliwe jest wykrycie obecności aparatu? Idealnie nie chcę pytać użytkownika o zgodę na dostęp do kamery, jeśli jej nie ma!
Cheers
Nathan
Który wywołanie zwrotne zostanie wywołane (z którymi argumentami), gdy zezwolisz na to urządzenie bez kamery? – Bergi
Wywołanie zwrotne sukcesu jest wywoływane, ale nie sprawdziłem, czy argument (videoStream w powyższym kodzie) ma wartość null lub nie. To dobry punkt, powinienem to sprawdzić. Zrobię to wkrótce i dam ci znać ... –