diff --git a/fusion_plating/fusion_plating_shopfloor/__manifest__.py b/fusion_plating/fusion_plating_shopfloor/__manifest__.py index 9d15dd99..ceab2104 100644 --- a/fusion_plating/fusion_plating_shopfloor/__manifest__.py +++ b/fusion_plating/fusion_plating_shopfloor/__manifest__.py @@ -5,7 +5,7 @@ { 'name': 'Fusion Plating — Shop Floor', - 'version': '19.0.19.0.0', + 'version': '19.0.20.0.0', 'category': 'Manufacturing/Plating', 'summary': 'Shop-floor tablet stations, QR scanning, bake window enforcer, ' 'first-piece inspection gates.', diff --git a/fusion_plating/fusion_plating_shopfloor/static/src/js/qr_scanner.js b/fusion_plating/fusion_plating_shopfloor/static/src/js/qr_scanner.js index 38d10cfa..d6c37b1a 100644 --- a/fusion_plating/fusion_plating_shopfloor/static/src/js/qr_scanner.js +++ b/fusion_plating/fusion_plating_shopfloor/static/src/js/qr_scanner.js @@ -112,8 +112,16 @@ export class QrScanner extends Component { return; } try { + // Request a 1280x720 rear-camera stream when possible. The + // browser will downgrade if the device can't deliver it. + // Higher resolution gives jsQR more pixels per QR module + // and dramatically improves decode rate on phones. this.stream = await navigator.mediaDevices.getUserMedia({ - video: { facingMode: { ideal: "environment" } }, + video: { + facingMode: { ideal: "environment" }, + width: { ideal: 1280 }, + height: { ideal: 720 }, + }, audio: false, }); // Wait one paint tick so the t-ref resolves to the