私は 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");
}
);
これはうまくいきます。しかし、私が見つけたのは、デバイスに実際にカメラがあるかどうかではなく、API をサポートするブラウザーに基づいて Modernizer.getUserMedia 呼び出しが true を返すことです。
すなわち。iSight カメラと現在のバージョンの Chrome を搭載した私の MacBook では、Modernizr.getUserMedia は true を返し、navigator.getUserMedia(...) はカメラを使用する許可を求めます。優秀な
ただし、カメラがなくても現在のバージョンの Chrome がインストールされている別のマシンでは、Modernizr.getUserMedia は true を返します。これは、navigator.getUserMedia(...) がデバイスにないカメラを使用する許可を求めていることを意味します。それほど優れていません!
カメラの存在を検出できるかどうか知っている人はいますか? 理想的には、ユーザーがカメラを持っていない場合に、カメラへのアクセス許可を求めるプロンプトを表示したくありません!
乾杯
ネイサン