Webrtc 是否可以在不询问用户权限的情况下检测浏览器摄像头?
在你们攻击我之前,我知道我的要求被认为是不好的,但我并不是在寻找一些诡计多端的秘密策略来未经允许接近某人的相机。 让我解释一下这个请求背后的原因,希望有人能提出另一种解决方案 我有一个电子商务产品页面,在该页面上我有一个按钮,允许用户查看覆盖在相机上的产品图像,以便在他们的环境中看到产品(想想增强现实,但不是在3d空间中) 我想做的是在我向“伪AR查看器”显示按钮之前检测用户是否具有摄像头功能。 我使用过navigator.mediaDevices.getUserMedia,但它会提示用户获取相机权限,当您第一次进入页面时,这有点令人不快,“为什么电子商务网站要求我的相机?”Webrtc 是否可以在不询问用户权限的情况下检测浏览器摄像头?,webrtc,getusermedia,Webrtc,Getusermedia,在你们攻击我之前,我知道我的要求被认为是不好的,但我并不是在寻找一些诡计多端的秘密策略来未经允许接近某人的相机。 让我解释一下这个请求背后的原因,希望有人能提出另一种解决方案 我有一个电子商务产品页面,在该页面上我有一个按钮,允许用户查看覆盖在相机上的产品图像,以便在他们的环境中看到产品(想想增强现实,但不是在3d空间中) 我想做的是在我向“伪AR查看器”显示按钮之前检测用户是否具有摄像头功能。 我使用过navigator.mediaDevices.getUserMedia,但它会提示用户获取相
到目前为止,我能想到的最好的选择是检测web浏览器,如果它的手机和支持视频的版本,则显示按钮。使用navigator.mediaDevices.enumerateDevices()API。大致:
navigator.mediaDevices.enumerateDevices()
.then(devices => {
devices.forEach(device => {
if (device.kind === 'videoinput') {
console.log('found camera');
}
})
})
据我所知,您希望检测浏览器是否将使用其自己的消息框请求权限,并让用户为此做好准备。那么你可以试试:
我会把一个“视图与AR(需要摄像机)”链接,只有看看是否有摄像机等按钮按下后。这也会告诉那些没有摄像头或者没有拔下插头的人,这个功能是存在的。
navigator.permissions.query({name: 'camera'}).then(function (permissionStatus) {
if (permissionStatus.state === 'prompt') {
// show your own message box here
// don't forget to pause execution until user reads it, before getUserMedia() call
}
})