Estoy usando la biblioteca de escáner de código de barras html5-qrcode v2.0.12 basada en zxing-js. Estoy usando php, javascript y html para hacer un PWA que escanee códigos de barras. Estoy probando en un iPhone 8 con iOS 14.7.1.
Aquí está el enlace de documentación para la biblioteca: QR y escáner de código de barras usando HTML y Javascript
Mi problema es que no puedo encontrar ninguna documentación en línea que permita cualquier configuración para habilitar la opción de antorcha/linterna una vez que se haya iniciado la ventana del escáner. Quiero hacer esto para configuraciones de poca luz donde podría ayudar a obtener un mejor escaneo.
ACTUALIZAR He encontrado este enlace a una bifurcación que menciona la compatibilidad con la linterna, pero no puedo averiguar cómo agregar el código apropiado o dónde. Menciona que primero se debe activar la cámara. Agregue soporte para detectar y encender/apagar la luz del flash
En los ajustes de configuración, probé 'torch: true' pero no hace nada. También he investigado el uso de getUserMedia. Las referencias que encuentro en este sitio parecen no funcionar en iPhones.
¿Es posible controlar la luz de la cámara en un teléfono a través de un sitio web?
Encienda la linterna del teléfono en la aplicación web usando JavaScript y HTML
NodeJS - Encender y apagar Tourch/Linterna en dispositivos móviles Android/IPhone
¿Es posible usar un código y/o biblioteca jquery o javascript para agregar un interruptor de palanca para encenderlo manualmente? En este punto, el usuario ya ha otorgado permiso para que el navegador acceda al teléfono si eso hace la diferencia.
<script src="https://unpkg.com/html5-qrcode@2.0.9/dist/html5-qrcode.min.js"></script> <div id="reader" width="350px"></div> <script> const html5QrCode = new Html5Qrcode("reader"); /** successful scan actions **/ const qrCodeSuccessCallback = (decodedText, decodedResult) => { html5QrCode.stop(); alert (decodedText); }; /** define scanner default settings **/ const config = { fps: 60, qrbox: 275, torch: true, aspectRatio: 1.0 }; html5QrCode.start({ facingMode: { exact: "environment"} }, config, qrCodeSuccessCallback); </script>Una vez que la cámara se inició, puede encender o apagar la linterna llamando a applyVideoConstraints .
function powerTorch(powerOn) { if(html5QrCode.getState() === Html5QrcodeScannerState.SCANNING || html5QrCode.getState() === Html5QrcodeScannerState.PAUSED ) { html5QrCode.applyVideoConstraints( { advanced: [{torch: powerOn}] }); } }Pero creo que sigue sin funcionar en iPhones (no funciona en la ip13 de mi amigo).