Cordova 扫码插件整理-cordova-plugin-qrscanner
·
cordova plugin add cordova-plugin-qrscanner
初始化,获取摄像头权限等
if (typeof QRScanner !== 'object') {
return;
}
QRScanner.prepare(onDone);
function onDone(err, status) {
if (err) {
if (err.name === 'SCAN_CANCELED') {
console.error('在找到二维码之前,扫描已被取消。');
} else {
console.error(err._message);
}
vm.$f7.dialog.alert(err._message);
}
if (status.authorized) {
// vm.$f7.dialog.alert('Autorizado');
console.log('Autorizado:', Autorizado);
} else if (status.denied) {
// vm.$f7.dialog.alert('Denegado');
console.log('Denegado:', Denegado);
} else {}
}
监听扫描结果、取消监听
var callback = function(err, contents){
if(err){
console.error(err._message);
}
alert('The QR Code contains: ' + contents);
};
QRScanner.scan(callback);
QRScanner.cancelScan(function(status){
console.log(status);
});
开启和隐藏扫描
QRScanner.show(function(status){
console.log(status);
});
QRScanner.hide(function(status){
console.log(status);
});
开启、关闭手电筒
QRScanner.enableLight(function(err, status){
err && console.error(err);
console.log(status);
});
QRScanner.disableLight(function(err, status){
err && console.error(err);
console.log(status);
});
切换前后摄像头
QRScanner.useFrontCamera(function(err, status){
err && console.error(err);
console.log(status);
});
QRScanner.useBackCamera(function(err, status){
err && console.error(err);
console.log(status);
});
销毁、其他api参考git
QRScanner.destroy(function(status){
console.log(status);
});
<template>
<f7-page class="scanner-open-page" id="scanner-open-page">
<f7-navbar :back-link="$t('app.back')" @backClick="onBackClick"></f7-navbar>
<div class="qrscanner">
<div class="qrscanner-area"></div>
<div class="through-line"></div>
</div>
<f7-fab position="right-bottom" slot="fixed" color="green">
<f7-icon ios="f7:add" md="material:add"></f7-icon>
<f7-icon ios="f7:close" md="material:close"></f7-icon>
<f7-fab-buttons position="left">
<f7-fab-button @click="change">
<f7-icon f7="refresh_round"></f7-icon>
</f7-fab-button>
<f7-fab-button @click="light">
<f7-icon f7="bolt"></f7-icon>
</f7-fab-button>
</f7-fab-buttons>
</f7-fab>
</f7-page>
</template>
<style type="text/css">
.page-previous {
transform: translate3d(-100%, 0, 0) !important;
-webkit-transform: translate3d(-100%, 0, 0) !important;
/*background: none transparent !important;*/
}
.scanner-open-page {
background: none transparent !important;
}
</style>
<script>
import { baseConfig } from '@/utils/baseConfig'
import { codeFormat } from '@/utils/appFunc'
import ScannerStyle from '@/assets/css/scanner.css'
export default {
beforeMount() {},
mounted: function() {
// this.$f7router.navigate('/inspection/scanner/')
this._scan();
},
computed: {
},
data() {
return {
lightOn: false,
frontCamera: false,
}
},
methods: {
_scan: function() {
let vm = this;
if (typeof QRScanner !== 'object') {
return;
}
QRScanner.prepare(onDone);
MostrarCamara();
QRScanner.hide(function(status) {});
function onDone(err, status) {
if (err) {
if (err.name === 'SCAN_CANCELED') {
console.error('在找到二维码之前,扫描已被取消。');
} else {
console.error(err._message);
}
vm.$f7.dialog.alert(err._message);
}
if (status.authorized) {
// vm.$f7.dialog.alert('Autorizado');
console.log('Autorizado:', Autorizado);
} else if (status.denied) {
// vm.$f7.dialog.alert('Denegado');
console.log('Denegado:', Denegado);
} else {}
}
function displayContents(err, text) {
if (err) {
// vm.$f7.dialog.alert('Error');
console.error('err:', err);
} else {
// vm.$f7.dialog.alert(text);
// if (text.indexOf(baseConfig.wechatUrl) === -1) {
// vm.$f7.dialog.alert("该码不符合规则。"+"码内容为:"+text);
// setTimeout(() => {
// QRScanner.prepare(onDone);
// QRScanner.cancelScan();
// MostrarCamara();
// QRScanner.hide();
// }, 1200);
// return;
// }
QRScanner.hide();
QRScanner.destroy();
vm.$f7router.navigate('/inspection/scanner/', {
props: {
// statusCode: 100,
// error: "你查询的追溯码不存在<br>请注意甄别,谨防上当受骗",
code: codeFormat(text)
}
})
}
}
function MostrarCamara() {
QRScanner.scan(displayContents);
QRScanner.show();
}
},
light: function() {
let vm = this;
if (typeof QRScanner !== 'object') {
return;
}
if (!vm.lightOn) {
QRScanner.enableLight(function(err, status) {
console.log(status);
if (err) {
console.error(err);
return;
}
vm.lightOn = true;
});
} else {
QRScanner.disableLight(function(err, status) {
console.log(status);
if (err) {
console.error(err);
return;
}
vm.lightOn = false;
});
}
},
change: function() {
let vm = this;
if (typeof QRScanner !== 'object') {
return;
}
if (!vm.frontCamera) {
QRScanner.useFrontCamera(function(err, status) {
console.log(status);
if (err) {
console.error(err);
return;
}
vm.frontCamera = true;
});
} else {
QRScanner.useBackCamera(function(err, status) {
console.log(status);
if (err) {
console.error(err);
return;
}
vm.frontCamera = false;
});
}
},
onBackClick: function() {
if (typeof QRScanner !== 'object') {
return;
}
QRScanner.destroy(function(status) {
console.log(status);
});
}
},
components: {
}
}
</script>
.qrscanner {
width: 100%;
height: 100%;
}
.qrscanner-area {
width: 100%;
height: 85%;
background: url(../images/scanner.svg) no-repeat center center;
background-size: contain;
}
.through-line {
left: 20%;
width: 60%;
height: 2px;
background: red;
position: absolute;
animation: myfirst 5s linear infinite alternate;
}
@keyframes myfirst {
0% {
background: red;
top: 180px;
}
25% {
background: yellow;
top: 240px;
}
50% {
background: blue;
top: 260px;
}
75% {
background: green;
top: 290px;
}
100% {
background: red;
top: 320px;
}
}
更多推荐
所有评论(0)