【问题标题】:How to detect microphone permissions state如何检测麦克风权限状态
【发布时间】:2020-09-05 23:52:30
【问题描述】:

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

如何可靠地找出用户所处的权限状态?最好使用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>

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 我试过这样做,但我不会得到onChange 的回复,如果我在允许权限后调用它,我仍然会得到“提示”回复。我将编辑问题以显示我尝试过的内容。
    • 我将您的代码粘贴到 codepen 中,当我单击按钮时它可以工作
    • 不可能!我刚刚尝试了 codepen,它就像一个魅力。出于某种原因,它在 jsfiddle 或 repl 中不起作用,超级奇怪。感谢您的帮助。
    猜你喜欢
    • 2014-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-08
    • 2019-11-04
    • 2021-12-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多