Браузер Samsung по умолчанию или любой браузер по умолчанию в Android не поддерживает заднюю камеру - PullRequest
0 голосов
/ 22 мая 2018

Ниже мой код, я делаю сканер QR-кода (для мобильного устройства), используя плагин ниже

https://github.com/cozmo/jsQR

, который поддерживает почти Chrome, Mozilla FireFox, Opera, MS EDGEв мобильных устройствах, но я пытаюсь добиться, чтобы во всех последних устройствах браузеры по умолчанию (android - в основном устройства Samsung) также работали, но вместо того, чтобы брать заднюю камеру (заднюю камеру), она брала переднюю камеру (обращенную к пользователю) для этого, я написалкод согласно разработчикам группы Mozilla

{ facingMode: { exact: "environment" } }

вот мой код

 navigator.mediaDevices.getUserMedia({ video: { facingMode: { exact: "environment" } } }).then(function(stream) {
                  video.srcObject = stream;
                  video.setAttribute("playsinline", true); // required to tell iOS safari we don't want fullscreen
                  video.play();
                  requestAnimationFrame(tick);
                  localStream = stream;
                })
                .catch(function(err) {
                    console.log(err);
                      /* handle the error */
                });

Ответы [ 2 ]

0 голосов
/ 13 июля 2018

Наконец-то я получил решение своей проблемы: вам нужно использовать navigator.mediaDevices.enumerateDevices, получить идентификатор устройства и назначить его getUserMedia, но это может вызвать проблемы совместимости браузера, я тоже написал код для этого, используя условие

navigator.mediaDevices.enumerateDevices()
                .then(function(devices) {

                var videoDevices = [0,0];
                var videoDeviceIndex = 0;
                devices.forEach(function(device) {
                                        if(device.kind == "videoinput") { 
                                            videoDevices[videoDeviceIndex++] =  device.deviceId;  
                                        }
                 });

                var isSafari = !!navigator.userAgent.match(/Version\/[\d\.]+.*Safari/);
                var iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;
                            if(navigator.userAgent.indexOf("Firefox") !== -1){
                                console.log("Firefox")
                                var constraints =  {facingMode: videoDevices[1] };
                            } else if(isSafari && iOS){
                                console.log("Safari")
                                var constraints =  { facingMode: { exact: "environment" } };
                            } else {
                                console.log("other browser")
                                var constraints =  {deviceId: {  exact: videoDevices[1]  }  }
                            }
                                return navigator.mediaDevices.getUserMedia({ video: constraints });

                              }).then(function(stream) {
                                  video.srcObject = stream;
                                  video.setAttribute("playsinline", true); 
                                  video.play();

                                })
                                .catch(function(err) {
                                   //use this to display the error 
                                    console.log(err);
                                });
0 голосов
/ 22 мая 2018

Вы можете использовать FaceMode, чтобы выбрать «пользователя» или «окружение» для передней или задней камеры соответственно.

Использовать

navigator.getUserMedia({video: { facingMode: { exact: "environment" } } },
successCallback, errorCallback);

, как вы уже используете, попробуйте позвонитькак показано ниже, удалив exact:

navigator.getUserMedia({video: { facingMode: "environment" } },
successCallback, errorCallback);

From https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...