Я работаю над приложением Cordova. Я хочу реализовать читатель qrcode. Я пробовал плагины, доступные в Cordova, но все они глючные, а некоторые не обеспечивают предварительный просмотр сканера / видео на одном экране.
Поэтому я решил использовать instascan - библиотеку на основе js, которая будет использоваться с веб-камерами. Я использовал его и реализовал в простом приложении Cordova, и он работает.
Теперь я вижу предварительный просмотр моего сканирования (видео с камеры, которое в настоящее время сканируется), и оно сканируется идеально.
Но позже я объединил этот код с моим настоящим приложением Cordova, которое использует Vue cli. Теперь я получаю:
Ошибка: невозможно получить доступ к видеопотоку (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);
});
});
},