reactjs - React(非本地)询问相机权限
问题描述
我有一个需要访问相机的网络应用程序,但我想手动询问相机权限,因为如果网络应用程序自动检测到相机权限,它会“为时已晚”。
我需要的是请求许可,然后我可以渲染一个渲染相机的 3rd 方 JavaScript 函数。
使用 react native 很容易,但是使用普通的 React,对于 Chrome 和 Safari,我找不到询问何时需要这些权限的方法。
任何想法?
解决方案
在@Shubh(谢谢)评论的链接之前,我得到它仅适用于Chrome:
navigator.permissions.query({ name: 'camera' })
.then((permissionObj) => {
console.log(permissionObj.state);
permission = permissionObj.state;
})
.catch((error) => {
console.log('Got error :', error);
});
但 iphone IOS (Safari) 不支持此功能。
现在有了getUserMedia()
API,我有这个代码半工作:
let stream = null;
const constraints = {
video: true
};
try {
stream = await navigator.mediaDevices.getUserMedia(constraints);
/* use the stream */
} catch (err) {
/* handle the error */
}
我唯一的问题是相机(桌面)上的灯卡住了,我现在正试图找到如何“关闭”getUserMedia,我只想授予权限,就像第一种方式一样。
编辑:现在为了关闭相机,我这样做了:
const askCameraPermission =
async (): Promise<MediaStream | null> => await navigator.mediaDevices.getUserMedia({ video: true });
let localstream: MediaStream | null;
askCameraPermission()
.then(response => {
localstream = response;
})
.then(() => {
localstream?.getTracks().forEach(track => {
track.stop();
});
})
.catch(error => console.log(error));
推荐阅读
- git - Gerrit 分支删除
- c# - 在调试模式下在 Visual Studio 中定义和读取部署中无法访问的信息
- json - 无法创建接受重音的 json 文件,即使使用 utf-8 编码
- php - 我需要将最后 3 次搜索保存在 cookie 中并显示
- mongodb - MongoDB - 2 个排序级别
- python - 如何将嵌套 dict 的值转换为 pandas 数据框?
- java - Java的“lookAt”正则表达式函数?
- firebase - Firebase Rest Api Orderby 子项值
- javascript - 在 React Native 中将导航传递给 App.js
- ios - React Native pod 安装失败