【问题标题】:what event is triggered in chrome when I allow camera or mic (javascript)当我允许相机或麦克风(javascript)时,chrome会触发什么事件
【发布时间】:2018-08-02 09:16:40
【问题描述】:

我希望在我的 js 应用程序中知道我何时允许(或不允许)摄像头和/或麦克风;当我从应用程序第一次尝试 getUserMedia() 时出现的弹出窗口中进行选择后,就会发生这种情况。

如果我启用摄像头和麦克风,我想使用 enumerateDevices() 再次获取设备。但是找不到用户单击允许后发生的事件或事件...

【问题讨论】:

  • 检查我的答案。我希望我明白你在寻找什么。

标签: javascript permissions camera webrtc getusermedia


【解决方案1】:

您的代码将如下所示:https://jsfiddle.net/etondm56/6/

function hasGetUserMedia() {
  return !!(navigator.getUserMedia || navigator.webkitGetUserMedia ||
    navigator.mozGetUserMedia || navigator.msGetUserMedia);
}

if (hasGetUserMedia()) {
  var errorCallback = function(e) {
    alert('Reeeejected!', e);
  };

  // Not showing vendor prefixes.
  navigator.getUserMedia({
    video: true,
    audio: true
  }, function(localMediaStream) {
    alert('good to go');
    navigator.mediaDevices.enumerateDevices()
      .then(function(devices) {
        devices.forEach(function(device) {
          alert(device.kind + ": " + device.label +
            " id = " + device.deviceId);
        });
      })
      .catch(function(err) {
        alert(err.name + ": " + err.message);
      });
  }, errorCallback);
} else {
  alert('cant get data');
}

请注意,如果它已被允许,您将收到“good to go”提醒。您必须在允许摄像头或麦克风重新测试的网站上删除该权限。

【讨论】:

  • 嗨,感谢您的回复,我做了类似的事情,但我希望在按下允许摄像头或允许麦克风铬弹出按钮后触发此操作,应用程序中没有任何内容...刷新,调用,以便能够再次检查设备...
  • 是的,您必须取消重新测试的权限,因为您已经这样做了.. 对于没有这样做的人,它会按预期工作。刷新页面将查找video: true, audio: true 条件。清楚了吗?
  • 我可能没有说清楚:我想要的是,如果用户登录我的应用程序(反应应用程序)将进入应用程序的一个部分,该部分将使用相机或麦克风,他被提示允许(第一次使用)相机并允许麦克风他会点击让说允许然后什么都没有触发,我没有可以在我的应用程序中捕捉到重新获取可用设备的事件,这次带有标签,使用枚举设备。没有触发我知道或检查的事件,没有 componenetdidupdate 或任何可用于再次调用 enumerateDevices 并获取具有正确标签的视频和音频设备。
  • 你找到解决这个问题的方法了吗?
猜你喜欢
  • 1970-01-01
  • 2018-06-08
  • 1970-01-01
  • 2013-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-19
  • 2019-06-07
相关资源
最近更新 更多