Cordova Instascan-无法访问视频流

时间:2019-04-01 11:27:33

标签: android cordova

我正在使用Cordova应用程序。我想实现一个qrcode读取器。我尝试了Cordova中可用的插件,但它们都是错误的,有些不能在同一屏幕上提供扫描仪/视频的预览。

因此,我决定使用instascan,它是用于网络摄像头的基于js的库。我使用了它,并在一个简单的cordova应用中实现了它。

现在我可以看到扫描预览(当前正在扫描的摄像机视频),并且扫描效果很好。

但是后来我将该代码与使用Vue cli的实际Cordova应用程序合并了。现在我得到了:

错误:无法访问视频流(NotReadableError)

此错误可能是(我读过的)由于Chrome的https政策。但是问题是,Cordova使用webview和另一个cordova应用程序,该应用程序只是此插件的基本cordova实例,可以正常工作。

我的实现:

mounted: function () {

var _this = this;

    this.$ons.ready(function () { // this is ready event fired by Onsen UI when cordova's native APIs are loaded

        var scanner = new Instascan.Scanner({
            continuous: true,
            mirror: false,
            video: document.getElementById('scannerPreview'),
        });

        scanner.addListener('scan', function (content) {
            alert('scan' + content);
        });

        Instascan.Camera.getCameras().then(function (cameras) {
            if (cameras.length > 0) {

                if (cameras.length === 1) {
                    scanner.start(cameras[0]);
                } else {
                    scanner.start(cameras[1]);
                }

                scanner.start(cameras[0]);
            } else {
                alert('No cameras found.');
            }
        }).catch(function (e) {
            alert(e);
        });

    });

},

1 个答案:

答案 0 :(得分:0)

首先添加权限插件:

cordova插件添加cordova-plugin-permission

然后您必须在相机中申请许可证:

permissions.requestPermission(permissions.CAMERA, success, error);

function error() {
return false;
}

function success( status ) {
if( !status.hasPermission ) error();

return true;
}