html5扫码功能

最近项目中需要扫码功能,无意间接触了html5的新功能(对于我这个做后端的),感觉html5确实强大(之前玩过android开发),废话不多说,上流程。

一、代码

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>扫码页面</title>
<meta name="viewport"
content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
<link rel="stylesheet" href="css/icons-extra.css" type="text/css" />
<link rel="stylesheet" href="css/mui.min.css" type="text/css" />
<link rel="stylesheet" href="css/app.css" type="text/css" />
<script src="js/mui.min.js"></script>
<style type="text/css">
#h5code {
width: 100%;
height: 100%;
position: absolute;
background: #000000;
}
html, body, div {
height: 100%;
width: 100%;
}
.bcon {
color: #0E76E1;
width: 50%;
background-color: #ffffff;
float: left;
line-height: 44px;
text-align: center;
}
</style>
</head>
<body>
<header class="mui-bar mui-bar-nav">
<a class="mui-action-back mui-icon mui-icon-back mui-pull-left"></a>
<h1 class="mui-title" style="color: #0E76E1;">二维码扫描</h1>
<a class="active"><span
class="mui-icon-extra mui-icon-extra-lamp mui-pull-right"
style="margin: 6px 6px;" id="flashLight"></span></a>
</header>


<div id="h5code"></div>


<div class="mui-bar mui-bar-footer" style="padding: 0px;">
<div class="bcon mui-action-back" οnclick="cancelScan()">取 消</div>
<div class="bcon" οnclick="openPicture();">相册</div>
</div>


<script type="text/javascript">
//手机返回键
window.onbeforeunload = function() {
window.location.href = "index.html";
}


//扫描对象 
var scan = null;
mui.plusReady(function() {
mui.init();
startRecognize();
});
//打开摄像头功能
function setFlash() {
scan.setFlash(true);
}
function startRecognize() {
try {
//定义识别条码类型的过滤器
var filter = null;
var styles = {
frameColor : "#29E52C",
scanbarColor : "#29E52C",
background : "rgba(255,255,255,-20)"
};
//扫描控件构造  
scan = new plus.barcode.Barcode('h5code', filter, styles);
//回调成功
scan.onmarked = onmarked;
//回调失败
scan.onerror = onerror;
scan.start();
//打开关闭闪光灯处理  
var flag = false;
document.getElementById("flashLight").addEventListener('tap',
function() {
if (flag == false) {
//打开摄像头
scan.setFlash(true);
flag = true;
} else {
//关闭摄像头
scan.setFlash(false);
flag = false;
}
});
} catch (e) {
alert("错误信息:" + e);
}
};
// 从相册中选择二维码图片   
function openPicture() {
plus.gallery.pick(function(path) {
plus.barcode.scan(path, onmarked, function(error) {
plus.nativeUI.alert("无法识别此图片");
});
}, function(err) {
plus.nativeUI.alert("错误信息: " + err.message);
});
}
function onerror(e) {
alert("打印错误信息:"+e);
};
function onmarked(type, result) {
var text = null;
switch (type) {
case plus.barcode.QR:
text = "QR:";
break;
case plus.barcode.EAN8:
text = "EAN8:";
break;
}
alert("扫码结果 : " + result);


};
//结束对摄像头获取图片数据进行条码识别操作,同时关闭摄像头的视频捕获
//所以不用scan.stop()
function cancelScan() {
scan.cancel();
//scan.stop();
}

</script>
</body>
</html>

二、打包成apk

需要的权限这里就不多说了,这是必须的。

最后分享个网址 http://www.dcloud.io/,这里有你需要的。

根据提供的引用内容,uni-app官网不支持H5扫码功能,但是可以通过引用中的manifest.json配置来实现H5扫码功能。具体步骤如下: 1.在manifest.json文件中添加如下配置: ```json "h5": { "devServer": { "https": true } } ``` 2.在需要使用扫码功能的页面中引入js文件: ```html <script src="https://cdn.bootcdn.net/ajax/libs/qrcodejs/1.0.0/qrcode.min.js"></script> ``` 3.在页面中添加扫码区域: ```html <div id="qrcode"></div> ``` 4.在页面的script标签中编写生成二维码和扫码的逻辑: ```javascript import QRCode from 'qrcodejs2' export default { mounted() { const qrcode = new QRCode('qrcode', { text: 'https://www.example.com', // 二维码内容 width: 256, // 二维码宽度 height: 256, // 二维码高度 colorDark: '#000000', // 二维码颜色 colorLight: '#ffffff', // 二维码背景色 correctLevel: QRCode.CorrectLevel.H // 二维码容错率 }) qrcode._htOption.colorDark = '#000000' // 二维码颜色 qrcode._htOption.colorLight = '#ffffff' // 二维码背景色 const scanner = new Instascan.Scanner({ video: document.getElementById('preview'), mirror: false }) scanner.addListener('scan', function (content) { console.log(content) }) Instascan.Camera.getCameras().then(function (cameras) { if (cameras.length > 0) { scanner.start(cameras[0]) } else { console.error('No cameras found.') } }).catch(function (e) { console.error(e) }) } } ``` 以上代码中,我们使用了qrcodejs2库来生成二维码,使用了Instascan库来实现扫码功能。需要注意的是,Instascan库需要在https环境下才能正常工作。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值