javascript - ZXing force 安卓设备上的后置摄像头?
问题描述
我正在构建一个使用 ZXing 库扫描条形码的项目。目前,我拥有的代码适用于打开后置摄像头的 iOS 设备,但在使用 android 设备进行测试时,它会打开前置摄像头。有没有办法让我始终强制在任何设备上使用后置摄像头?请参阅下面的工作代码:
<script type="text/javascript">
window.addEventListener('load', function () {
let selectedDeviceId;
const codeReader = new ZXing.BrowserMultiFormatReader();
console.log('ZXing code reader initialized');
codeReader.getVideoInputDevices()
.then((videoInputDevices) => {
if (videoInputDevices.length < 1) {
console.log('No video devices found');
return;
}
selectedDeviceId = videoInputDevices[0].deviceId;
codeReader.decodeFromVideoDevice(selectedDeviceId, 'video', (result, err) => {
if (result) {
console.log(result);
var barcode = result;
//this.window.alert(barcode);
if (String(barcode).charAt(0) == 'L') {
document.getElementById('result').textContent = result.text;
document.getElementById('result').style.color = "green";
var previousurl = document.referrer;
window.location.href = previousurl + "&BarCode=" + result.text;
}
else {
document.getElementById('result').textContent = result.text;
document.getElementById('result').style.color = "red";
window.alert("Incorrect Barcode scan value. Please try again.")
}
}
if (err && !(err instanceof ZXing.NotFoundException)) {
console.error(err);
document.getElementById('result').textContent = err;
}
})
console.log(`Started continous decode from camera with id ${selectedDeviceId}`)
})
.catch((err) => {
console.error(err)
})
})
</script>
解决方案
删除 selectedDeviceId 并使用 undefined
codeReader.decodeFromVideoDevice(undefined, 'video', (result, err) => {
if (result) {
文档说,如果您使用 undefined ,它将自动选择摄像头,如果有更多可用的摄像头,则首选主(面向环境的)摄像头。
发生错误是因为 codeReader.getVideoInputDevices()
返回不同的结果
推荐阅读
- android - 微信 SendAuth 请求访问令牌代码只有效一次
- jenkins - 我们如何通过非 gui 模式在 JMeter 脚本中获取汇总报告参数(吞吐量、接收和发送字节数)的结果?
- python - 使用 KMeans 聚类在图像上创建聚类
- sql - 创建 PLR 扩展 Postgres 时出错
- c# - 使用 Fluent Api 配置具有自身类型的 2 个属性的实体
- amazon-web-services - AWS - Guzzle 我们计算的请求签名与您提供的签名不匹配。检查您的 AWS 秘密访问密钥和签名方法
- android - Android本地化不适用于edittext
- azure-language-understanding - LUIS 未通话量配额。配额将被补充
- linux-kernel - 在 beaglebone black 上卸载 mmcblk1p1 时出错 - 在重新分区和格式化期间
- android - 正面、负面和中性按钮在我的应用程序中不可见