cncml手绘网
标题:
HBuilder webApp开发(十三)二维码扫描
[打印本页]
作者:
admin
时间:
2018-10-31 02:06
标题:
HBuilder webApp开发(十三)二维码扫描
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。
' P0 V/ j2 M( |2 F8 h
以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些:
; A: i6 p+ u4 W; p# E1 L7 Z8 C( u+ h
《【iOS】AVFoundation架构下的原生二维码和条形码扫描》
5 P ~' `& D5 Y* J
《【iOS】CoreImage原生二维码生成(一)》
1 q0 A. S# h6 p6 C+ b2 _# u
《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》
4 b1 L( X. U4 M- A
在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。
5 A/ d! l. N: n2 O) _
原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。
: l4 }% p, X* _7 L% @; D
直接上代码,注释都在代码里面了。
, e/ O! W( W8 T- P
( u/ Y8 _ f) m; k! p# s8 M
<body >
; f) u, L+ K2 i4 \. u* G
<header class="mui-bar mui-bar-nav white">
: k7 U" |; ]: v4 T3 l& u8 O
<a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
7 U, ~- M i: f
<h1 class="mui-title">二维码扫描</h1>
' F0 [, Z7 @1 E7 k9 I
</header>
& X3 s5 i- \# j" P7 d
<div class="mui-content">
+ C8 ~5 S! Q2 ^
<button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>
/ P }" Z- z' E% V8 R& v8 H; s* @' p
<button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>
" @/ t5 _0 M0 W7 \/ q& y6 `
<button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>
/ x7 m9 u& W+ o1 c
<div id= "bcid"></div>
2 P, u1 P& q8 ~0 T* o; O; J
</div>
y% t& f# C, ^' E: d
</body>
& J { u! S# C& B" Q U
<script>
2 b* U+ @ ~) F1 ]) t* i8 w
mui.init({
3 X$ a3 } z; M6 Y2 I
swipeBack:true //启用右滑关闭功能
0 Y1 a4 H) z1 W, D* _; c. b: T
});
; d# H, ]( K7 k% w- V
var scan = null;
% [- e$ B& b$ M
var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭
/ }) x% Z' w; ?0 C8 S4 k
// 条码识别成功事件
( ~7 `3 b4 n: A% \9 B
function onmarked( type, result ) {
, q5 |6 j! H; A! o
var text = '未知: ';
$ w5 z& a1 A: K! y
switch(type){
3 g* l0 I" W" m6 a# _. @
case plus.barcode.QR:
S& ~" z4 Y5 z, s. p
text = 'QR: '; // 二维码
$ }+ n0 R K: e. y: I
break;
8 y- |+ |, M+ Q/ }) J- r
case plus.barcode.EAN13:
# C" e; \: C: M
text = 'EAN13: ';
; K) \8 @+ B$ h" s3 {
break;
; T$ S0 M/ M" Z3 Z! k! Z% |
case plus.barcode.EAN8:
0 m ]/ L4 a% Z$ |% P a
text = 'EAN8: ';
& Y! u! C; J, [9 J9 f. d, I4 `
break;
9 f+ j5 R, p. J. H0 P8 u
}
2 p; D9 P, ]& m' f& ]$ }& @; t
alert( text+result );
/ O' u, }) w9 }
}
% i9 g3 k2 Q" q G
// 创建扫描控件
- J6 u1 E8 g& L5 m
function startRecognize() {
0 Z5 _" c2 j8 ~
scan = new plus.barcode.Barcode('bcid');
! j, J$ s: a; l) A
scan.onmarked = onmarked;
: p$ U$ @& \6 A5 K
}
$ ~8 n3 }' Z& p
// 开始扫描
) i0 \% [- _( ^" V( p
document.getElementById("startScan").addEventListener('tap',function(){
7 i6 F0 } @- w% p2 b. O
startRecognize();
z S/ {8 e5 p
scan.start();
, w. k+ j* T3 X j
})
# X4 r ~. Z# W+ D
// 取消扫描
2 ?9 S8 { E- d7 B& |0 }! Z
document.getElementById("cancelScan").addEventListener('tap',function(){
* m% h9 g _. g, _/ l- B! k
startRecognize();
8 P' w5 L! P/ S! \, n2 {1 e0 _ ]
scan.cancel();
+ g; n7 `7 h5 O9 l2 K% H9 h
})
3 E. b& N" z h
// 开启和关闭闪光灯
3 I* a5 p% U$ z2 @
document.getElementById("setFlash").addEventListener('tap',function(){
; ~; Y" F- c$ g; a
startRecognize();
3 P! G _7 U% D _) A
isOpen = !isOpen;
5 M0 F* x/ i/ X/ ~, e# P
if(isOpen){
" f" T6 d3 e0 ?9 C6 A- M
scan.setFlash(true);
; p0 q% `& g% p0 K4 s) r
}else{
9 R% D) Q! _0 u
scan.setFlash(false);
9 d7 O$ p$ _ T/ Q. X# T+ }
}
) P# x' b$ @( |. H/ O2 c
})
. P6 Y3 V# p# |8 O
</script>
C: ^' Z! U- V' U
复制代码
. i* K) g: V' D" M# w7 \1 s
效果图什么的就不上了,和前面提到的文章中的效果图基本一样。
5 B( V" A- g2 W9 M" f1 a, N. [
, L# }/ x7 M4 A9 ~- V& j7 F) s
欢迎光临 cncml手绘网 (http://www.cncml.com/)
Powered by Discuz! X3.2