cncml手绘网
标题:
HBuilder webApp开发(十三)二维码扫描
[打印本页]
作者:
admin
时间:
2018-10-31 02:06
标题:
HBuilder webApp开发(十三)二维码扫描
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。
d" B; i0 ]% g+ `
以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些:
& T8 A: R8 O, Y$ [) R: d/ I( |5 M
《【iOS】AVFoundation架构下的原生二维码和条形码扫描》
0 J( r' @/ ^ m( u3 L
《【iOS】CoreImage原生二维码生成(一)》
! H4 `; ]. N; R1 z6 O w8 _
《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》
8 i/ U% T/ w/ G
在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。
9 x) z: ]4 S! i( q! X0 Q {+ f
原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。
9 R4 n0 ]5 n! m; E ~1 K% k$ s
直接上代码,注释都在代码里面了。
0 a; C- ~8 f/ |
# t2 s7 \1 c- \7 Y; ^
<body >
# e# c% K& w$ r" b
<header class="mui-bar mui-bar-nav white">
) I D( ?* [3 w" X D( j: q
<a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
+ ]+ u. y P, v
<h1 class="mui-title">二维码扫描</h1>
3 b* I, A4 G* e* } D
</header>
* N* z3 V7 }; A- }1 f
<div class="mui-content">
: j" P# u! D) g. z; y
<button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>
2 Q0 q" V+ m% f
<button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>
% P% l: J0 w. W+ A! h8 A4 U
<button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>
. w0 d; P* [6 x' l
<div id= "bcid"></div>
6 b, I y$ `6 H6 C
</div>
- q3 v' D* B2 U. F
</body>
& x% B7 z7 J" ^4 k a/ t" K5 y3 Y
<script>
* R. c" Q8 X9 r, u
mui.init({
1 i7 Z) Q* ^& p0 X3 D1 A2 d
swipeBack:true //启用右滑关闭功能
# g) i0 N; [+ F) Z0 w" ?0 i
});
" I+ n& W0 }2 s7 ?- k* O, t
var scan = null;
" k/ a* ^% A+ _. A, b, o% d: ?
var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭
. a/ v& x: b) e! k" H( u
// 条码识别成功事件
/ t T/ n& _& M7 ]- T9 }- P$ F% } {
function onmarked( type, result ) {
* o* G1 [- S. @; d
var text = '未知: ';
9 y: M3 a; @! }6 O& {# W3 L
switch(type){
5 H: j# X' u1 t' g! B8 u
case plus.barcode.QR:
' i, z: h& S8 G0 ^* n
text = 'QR: '; // 二维码
, e- P* E2 ^- @+ M
break;
. ^. y! I/ \5 R# k3 }" R" {
case plus.barcode.EAN13:
2 _# F; Q3 X5 G
text = 'EAN13: ';
4 `9 i5 n' z7 ?
break;
' ?% n$ x; A: s0 \- j) K/ f
case plus.barcode.EAN8:
, s) z$ }$ Q+ Y. r7 g
text = 'EAN8: ';
' p- N+ B' N# S# t5 }6 Z
break;
! R/ t$ W' H. V5 V0 i0 i
}
. ~) l5 a3 Z, b5 e2 I1 p, T& j; P
alert( text+result );
$ K( k" F% u* p: l
}
/ ]9 B) c1 m. l3 y: @" g3 G3 `5 H
// 创建扫描控件
3 w% y+ n3 ?6 i' {+ V% W
function startRecognize() {
+ V: L7 j8 V4 p, c) B; r, M+ y
scan = new plus.barcode.Barcode('bcid');
' v0 C* o0 c: Y# t- I9 D& W; j9 M
scan.onmarked = onmarked;
8 E( I* \3 t+ m
}
9 z" y( G6 ~% ~$ y
// 开始扫描
6 Q3 n% i- J- c+ w
document.getElementById("startScan").addEventListener('tap',function(){
2 `6 M) U' [% B" P0 a3 P
startRecognize();
4 E9 G3 ?3 R" `5 [' Z# E2 ?2 v( Q
scan.start();
# |. C, b# g% E" s4 H$ Y% M1 N
})
, U* S. Q, W8 f
// 取消扫描
7 D9 {9 H" l* r$ S4 c
document.getElementById("cancelScan").addEventListener('tap',function(){
; c5 r2 k! j& `: D
startRecognize();
: e" P0 d* K7 T9 d9 e& V
scan.cancel();
: C* |6 D4 M7 |0 L, o- O
})
. Z8 Q2 N0 _- ^
// 开启和关闭闪光灯
- |: G1 O0 T' |* K0 a
document.getElementById("setFlash").addEventListener('tap',function(){
; m$ u+ ^) V8 J$ H* z
startRecognize();
2 F. d8 o0 S0 P7 \: n+ R6 u, S
isOpen = !isOpen;
, l3 k/ F* V5 o# S; e7 Z/ {# n
if(isOpen){
3 C1 M }( n9 _6 l( I
scan.setFlash(true);
/ \% D( U5 [% c: M+ C) w0 X; Q
}else{
9 m% F W& b+ [/ T8 B6 L
scan.setFlash(false);
1 d/ S1 J3 g9 H1 C+ l& W/ U3 ~- l
}
7 a: @8 c* e; f" W3 `6 N, j& ^1 B4 q
})
! m" y$ ?$ r6 g; y
</script>
% z* Y( P( M2 L$ a/ _4 I2 C7 {
复制代码
$ z5 Q. f* w7 ]$ N, ]0 Z
效果图什么的就不上了,和前面提到的文章中的效果图基本一样。
3 m( {* g/ _; h2 i: x6 m/ o1 k
4 U- L& e' J3 @" T$ o% O2 }
欢迎光临 cncml手绘网 (http://cncml.com/)
Powered by Discuz! X3.2