【问题标题】:Force rear camera on mobile device?在移动设备上强制后置摄像头?
【发布时间】:2021-03-10 06:48:50
【问题描述】:

尝试将Instascan 二维码扫描仪连接到AR.js。一切正常,但是手机上的前置摄像头打开,切换到背面不起作用。库分别与后置摄像头一起使用并允许您切换,并且只有第一个打开。 Chrome 浏览器不允许您在打开页面时选择摄像头,因此问题是相关的,主要与他有关。

代码示例: CodepenMediaTrackSettings

<html>
  <head>
    <script src="https://rawgit.com/schmich/instascan-builds/master/instascan.min.js"></script>
    <script src="https://aframe.io/releases/1.0.3/aframe.min.js"></script>
    <script src="https://raw.githack.com/jeromeetienne/AR.js/2.2.2/aframe/build/aframe-ar.js"></script> 
  </head>
  <body>
    <a-scene>
        <a-entity camera></a-entity>
    </a-scene>
 </body>
</html>
// Instascan QR scanner
let scanner = new Instascan.Scanner(
  {
    video: document.getElementById('arjs-video')
  }
);
scanner.addListener('scan', function(content) {
  alert('Content: ' + content);
  window.open(content, "_blank");
});

// Instascan camera switch
Instascan.Camera.getCameras().then(function (cameras) {
  if (cameras.length > 1) {
    scanner.start(cameras[cameras.length - 1]);
  } else {
    scanner.start(cameras[0]);
  }
}).catch(function (e) {
  console.error(e);
});

// MediaTrackSettings
let supports = navigator.mediaDevices.getSupportedConstraints();
if (supports["facingMode"]) {
    alert('Not Support!');
} else {
  let constraints = {
    facingMode: { exact: "environment" }
};
myTrack.applyConstraints(constraints);

【问题讨论】:

    标签: javascript google-chrome mobile ar.js instascan


    【解决方案1】:

    这对我有用。我在我的 Microsoft Surface 和 Android 手机上对此进行了测试。

            //Detect user's cameras
            Instascan.Camera.getCameras().then(function (cameras) {
                //If a camera is detected
                if (cameras.length > 0) {
                    //If the user has a rear/back camera
                    if (cameras[1]) {
                        //use that by default
                        scanner.start(cameras[1]);
                    } else {
                        //else use front camera
                        scanner.start(cameras[0]);
                    }
                } else {
                    //if no cameras are detected give error
                    console.error('No cameras found.');
                }
            }).catch(function (e) {
                console.error(e);
            });   
    

    我没有包含 MediaTrackSettings,也没有任何问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多