add webcam and microphone detection

This commit is contained in:
Josh de Leeuw 2021-10-21 09:57:58 -04:00
parent 45fb3ebb92
commit 8eaabdd0e5
2 changed files with 38 additions and 0 deletions

View File

@ -43,6 +43,8 @@
<p>Frame rate: ${browser_check_data.vsync_rate}</p>
<p>WebAudio API support: ${browser_check_data.webaudio}</p>
<p>Fullscreen API support: ${browser_check_data.fullscreen}</p>
<p>Webcam support: ${browser_check_data.webcam}</p>
<p>Microphone support: ${browser_check_data.microphone}</p>
`
return html;
},

View File

@ -20,6 +20,8 @@ const info = <const>{
"os",
"fullscreen",
"vsync_rate",
"webcam",
"microphone",
],
},
/**
@ -209,6 +211,40 @@ class BrowserCheckPlugin implements JsPsychPlugin<Info> {
requestAnimationFrame(start);
});
},
webcam: () => {
return new Promise((resolve, reject) => {
if (!navigator.mediaDevices || !navigator.mediaDevices.enumerateDevices) {
resolve(false);
}
navigator.mediaDevices.enumerateDevices().then((devices) => {
const webcams = devices.filter((d) => {
return d.kind == "videoinput";
});
if (webcams.length > 0) {
resolve(true);
} else {
resolve(false);
}
});
});
},
microphone: () => {
return new Promise((resolve, reject) => {
if (!navigator.mediaDevices || !navigator.mediaDevices.enumerateDevices) {
resolve(false);
}
navigator.mediaDevices.enumerateDevices().then((devices) => {
const microphones = devices.filter((d) => {
return d.kind == "audioinput";
});
if (microphones.length > 0) {
resolve(true);
} else {
resolve(false);
}
});
});
},
})
);