如何检测麦克风权限状态

时间:2020-05-19 19:25:17

标签: javascript node.js google-chrome permissions microphone

我希望向用户显示不同的模式,以指导他们在尝试使用我的应用程序中需要麦克风的任务时允许其权限-基于是否尚未请求其麦克风权限,已授予权限或权限被禁止。

如何可靠地确定用户处于哪种权限状态?最好使用onChange处理程序来了解用户是否在任何时候撤消了他们的许可,以及某些适用于Chrome,Firefox和Safari的操作。

灵感来自voice.google.com,在尝试将麦克风许可权设置为“问”,“允许”或“阻止”的Google语音号码时,它们在呼叫小部件上显示不同的屏幕。

我经历过https://developers.google.com/web/updates/2015/04/permissions-api-for-the-web,但似乎找不到解决方案。

编辑:

<div id="button">Click me</div>
<script>
  const button = document.getElementById("button")
  button.addEventListener('click', () => {
    navigator.mediaDevices.getUserMedia({
        audio: true
      })
      .then(function(stream) {
        console.log('You let me use your mic!')
        console.log(stream)
        navigator.permissions.query({
          name: 'microphone'
        }, ).then(function(permissionStatus) {
          console.log("PermissionStatus: ", permissionStatus.state); // granted, denied, prompt
          permissionStatus.onchange = function() {
            console.log("Permission changed to " + this.state);
          }
        })
      })
      .catch(function(err) {
        console.error(err)
        console.log('No mic for you!')
      });
  })
  navigator.permissions.query({
      name: 'microphone'
    })
    .then(function(permissionStatus) {
      console.log("PermissionStatus: ", permissionStatus.state); // granted, denied, prompt
      permissionStatus.onchange = function() {
        console.log("Permission changed to " + this.state);
      }
    })

</script>

1 个答案:

答案 0 :(得分:1)

名称是“麦克风”,您将得到“已授予”,“提示”或“已拒绝”作为状态。 https://developers.google.com/web/fundamentals/media/recording-audio#use_the_permissions_api_to_check_if_you_already_have_access