gpt4 book ai didi

javascript - 如何检测是否已在 chrome 中授予麦克风权限

转载 作者:可可西里 更新时间:2023-11-01 02:23:44 27 4
gpt4 key购买 nike

我想在我的网站加载时检测是否已授予麦克风权限,而无需实际运行如下内容:

navigator.webkitGetUserMedia({audio: active}, 
function(){alert('worked')},
function(){alert('failed')});

是否有一个简单的 API 来检测用户是否已永久授予我的应用程序(通过 https 运行)的麦克风访问权限?

最佳答案

更新

microphone 已添加到 Permission API即使它在 Safari 或 Internet Explorer 上尚不可用。

你可能希望它可以从权限 api 访问,但它不是:(

也许在功能中这可以像其余部分一样工作:

navigator.permissions.query(
// { name: 'camera' }
{ name: 'microphone' }
// { name: 'geolocation' }
// { name: 'notifications' }
// { name: 'midi', sysex: false }
// { name: 'midi', sysex: true }
// { name: 'push', userVisibleOnly: true }
// { name: 'push' } // without userVisibleOnly isn't supported in chrome M45, yet
).then(function(permissionStatus){

console.log(permissionStatus.state); // granted, denied, prompt

permissionStatus.onchange = function(){
console.log("Permission changed to " + this.state);
}

})

旧答案

我认为唯一可行的方法是,当您请求许可时,您自己使用 localStorage 中的键/值项来跟踪这一点。

不幸的是当它被改变时它没有通知你

// initialization
if( localStorage.getItem('voice_access') === null ){
// just assume it is prompt
localStorage.setItem('voice_access', 'prompt');
}

// Then somewhere
navigator.getUserMedia({ audio: true }, function (e) {
// http://stackoverflow.com/q/15993581/1008999
//
// In chrome, If your app is running from SSL (https://),
// this permission will be persistent.
// That is, users won't have to grant/deny access every time.
localStorage.setItem("voice_access", "granted");

}, function (err) {
if (err.name === 'PermissionDismissedError') {
localStorage.setItem('voice_access', 'prompt')
}
if (err.name === 'PermissionDeniedError') {
localStorage.setItem('voice_access', 'denied')
}
})

您可以加倍努力,使用上面的代码构建一个漂亮的小包装器,并扩展/替换权限 api 以处理更多枚举名称并创建一个 broadcast api 在更改时告诉其他选项卡。但为什么要让它变得如此复杂......? localStorage 不能 100% 可信。在获得许可和清除存储的情况下,可以随时随地更改它

关于javascript - 如何检测是否已在 chrome 中授予麦克风权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23048083/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com