cncml手绘网
标题:
HBuilder webApp开发(十三)二维码扫描
[打印本页]
作者:
admin
时间:
2018-10-31 02:06
标题:
HBuilder webApp开发(十三)二维码扫描
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。
. w. L$ J O; U- o& P1 i9 g
以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些:
; r. v% ]- Q- g( k8 ]
《【iOS】AVFoundation架构下的原生二维码和条形码扫描》
' ]2 t$ }( v. J8 o) k
《【iOS】CoreImage原生二维码生成(一)》
: c- B; U) S1 x6 x+ p
《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》
4 Q1 J% A# B5 G7 B1 q( W& D8 c
在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。
& O- ]8 y+ D2 t' {' f) o
原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。
3 `+ X8 {+ N+ T' T& C
直接上代码,注释都在代码里面了。
b# B1 J4 b: H- V) `' y
! D: v( ^6 \: [
<body >
" h6 R9 b9 W$ i' J, f" `" J
<header class="mui-bar mui-bar-nav white">
" R4 P4 p! Z/ r
<a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
; W3 Z! I. v5 k7 k" B3 B
<h1 class="mui-title">二维码扫描</h1>
4 ` E# W; [" z1 r
</header>
' n2 j! ?$ R+ X- c' B/ v
<div class="mui-content">
- v# Z2 h; [: w9 |
<button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>
|+ A* r I" S; N, a
<button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>
$ h' d& r- }* j" g1 w& \2 o* X/ p* r! n3 r6 B
<button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>
5 K8 D8 m' ^, |# M6 l
<div id= "bcid"></div>
! P @* H# S( A; A5 z. I4 Y
</div>
4 ?& ?$ p6 R# O; G
</body>
6 J+ o/ c' Y, Q3 H' {8 Q
<script>
8 [0 [3 g9 P+ }
mui.init({
0 H$ n0 n c" ?6 t, M6 Q' e R- ~
swipeBack:true //启用右滑关闭功能
, c: H3 G% G8 \# I9 m$ `
});
% n/ Y( S2 H& d) S
var scan = null;
7 p! ` [9 ]6 z' _1 j
var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭
" t7 x& g/ ^% D( w
// 条码识别成功事件
0 c6 O/ ~0 `, F3 r2 N& w
function onmarked( type, result ) {
7 P" O' j% S) K1 ]- U4 x5 N7 a
var text = '未知: ';
7 M' q5 ~" r b/ r% s
switch(type){
2 f& c3 }- r A
case plus.barcode.QR:
1 v6 n! o- ]' V' c ]% b1 Y5 K. f
text = 'QR: '; // 二维码
5 v* g! _' `9 s0 P9 E7 F2 A6 O
break;
5 y: R$ J7 o6 V3 j3 }( n7 Y' V
case plus.barcode.EAN13:
1 f/ `/ @0 s, x$ u% R- Q9 g, Z
text = 'EAN13: ';
# L% m) [4 j9 q2 I- U' s
break;
* G7 m: @8 d1 e J- X
case plus.barcode.EAN8:
; F3 C- z/ v3 Z8 y/ F3 x
text = 'EAN8: ';
, G/ a$ z/ O& |* T
break;
" j2 Y6 c- A& V+ i4 b. A
}
' A( h7 O( U/ \
alert( text+result );
1 B4 ~3 \. M* i% B
}
0 Y5 F% |8 N1 e1 [( P
// 创建扫描控件
: {- o) C" ]. t$ G
function startRecognize() {
$ X7 U1 |, W7 p! W% q" h
scan = new plus.barcode.Barcode('bcid');
0 G6 c/ u3 s* a' c" N
scan.onmarked = onmarked;
" H! }+ Q6 d. J/ t
}
2 i; M3 m( r. @
// 开始扫描
9 g8 ]3 j' X. w& Y
document.getElementById("startScan").addEventListener('tap',function(){
; l9 S: k& i, i# ?% ~* {+ a
startRecognize();
% B: k& l. X+ }( A4 k3 ?+ k
scan.start();
2 p5 G1 [8 E3 s) |7 F" J
})
2 [. k V! s* C' R! c
// 取消扫描
* t P, w, |' T# @# }( _/ ~
document.getElementById("cancelScan").addEventListener('tap',function(){
2 i$ G. H8 `9 j& L, V- W
startRecognize();
. L1 V( _5 _1 P+ ~
scan.cancel();
% m: g; G5 l5 P/ _# G: Y
})
8 y! O' P0 y6 |: {, `
// 开启和关闭闪光灯
, q9 M l: w* Y8 u8 W
document.getElementById("setFlash").addEventListener('tap',function(){
0 `3 M7 A0 w& s8 |7 J4 Q
startRecognize();
; O+ Q3 N" V$ L, U: V
isOpen = !isOpen;
1 |; Q$ d) e+ i! W7 E- N1 Y
if(isOpen){
' c, B3 w. K- \4 Y3 q
scan.setFlash(true);
/ v1 i1 ~/ f3 s0 v
}else{
* s* `8 Z7 ~/ c. Z. n% c
scan.setFlash(false);
) ^/ x- [9 `% [2 t' j# `) l
}
7 T: M5 b& ^6 e2 A% M
})
) l! [1 F- l$ |+ _/ L- B- J
</script>
+ _- H) b1 `6 k- g
复制代码
$ J% ~- G! T4 ^- L
效果图什么的就不上了,和前面提到的文章中的效果图基本一样。
- D% s( C. `# z0 e! c1 q
8 C8 s" Y) B) L$ x
欢迎光临 cncml手绘网 (http://www.cncml.com/)
Powered by Discuz! X3.2