cncml手绘网
标题:
HBuilder webApp开发(十三)二维码扫描
[打印本页]
作者:
admin
时间:
2018-10-31 02:06
标题:
HBuilder webApp开发(十三)二维码扫描
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。
! Y* ^5 j, J5 I$ d' V) U
以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些:
9 q, C& _' c8 K5 O
《【iOS】AVFoundation架构下的原生二维码和条形码扫描》
9 ?7 z3 a, z, J" Y9 T- y+ ]5 |
《【iOS】CoreImage原生二维码生成(一)》
# Y9 H! K* ~4 M: \9 N* C- ^
《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》
6 y7 D( e$ S% ^) h$ I( h
在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。
I2 w, @$ s a2 G
原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。
j: K# W8 M2 ~ t. V! p* V7 V
直接上代码,注释都在代码里面了。
* `$ e+ p! m+ N- ]
( _& A c5 [7 [* u' y
<body >
" k3 [3 d. U2 Z2 |
<header class="mui-bar mui-bar-nav white">
; C% a' Y8 b8 x% K v r. s
<a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
$ _6 t2 N( u- |+ a" N+ L
<h1 class="mui-title">二维码扫描</h1>
) p9 B5 V. `0 O, x" E1 {5 C
</header>
c, k+ y n8 @# q1 d
<div class="mui-content">
# v( z* t& Z9 G) g& g# T
<button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>
& Q5 ?, S- D0 S G& m9 `! A& Z
<button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>
4 O( x7 w0 e( Q1 a+ C
<button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>
! G0 F. {/ s5 }& o$ o
<div id= "bcid"></div>
& o2 d# p8 {: H' |- m
</div>
6 j, D, Q8 K9 B6 N% ?# j2 j
</body>
* y, b( F; V r* }- e" k- {
<script>
4 | c; D4 d9 l2 c- I7 o% C
mui.init({
1 [8 O1 q" N3 X; Q7 g
swipeBack:true //启用右滑关闭功能
+ T5 Q+ |3 i5 r# d2 ~9 k
});
4 R4 p! ?) p) H) P
var scan = null;
N2 A% n7 E" k f% [- u6 a
var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭
) q) Q7 y1 l0 s5 T) ^9 F+ K& \1 Y* Q
// 条码识别成功事件
Q+ }) x3 b. _" b; R
function onmarked( type, result ) {
i# ]% I/ V' O: f# g6 f
var text = '未知: ';
4 }' z! m: \! ~$ j& y
switch(type){
# O- i8 V- j- O* k7 n2 C
case plus.barcode.QR:
5 I" Z3 W* `: r/ p
text = 'QR: '; // 二维码
: Y3 v! S3 |' W u
break;
& D3 u8 t" x. @, r! p
case plus.barcode.EAN13:
5 J3 Q2 c6 |+ V% o$ Q, J; o
text = 'EAN13: ';
2 h3 X% z* |0 M$ n4 d4 @
break;
# U0 z( J& I9 V' x. e# N4 [
case plus.barcode.EAN8:
" _8 |* Z7 F# P# {. \
text = 'EAN8: ';
' Q- a- L% t# s9 B1 r6 p$ i! R
break;
' R$ X W! k7 n2 l, c
}
& ~9 X( q4 I: w5 S+ d; P0 m
alert( text+result );
6 O, I1 z1 A' w' y& l5 p! K
}
) H' I# V$ x6 o$ W5 I
// 创建扫描控件
7 w% `& `+ f* Y
function startRecognize() {
& \% i z% C$ f9 |5 @
scan = new plus.barcode.Barcode('bcid');
- F8 v: f0 m8 J7 U5 @3 U: g8 A2 a2 G' P
scan.onmarked = onmarked;
$ j( Y, R- F1 t' F
}
+ b4 n0 C' F: f% u6 u) F+ b
// 开始扫描
G t; y4 b) I3 F; y v9 m, ]' l# s
document.getElementById("startScan").addEventListener('tap',function(){
+ O9 n. ~3 B* ]# L# s2 x
startRecognize();
, P! @- ~ r8 `& a
scan.start();
+ b( {/ n# q) U5 b5 {+ h8 d
})
6 n2 U1 L/ l* m# E8 R
// 取消扫描
9 r$ m$ ]" k! Q* B1 Z( ^; E4 J
document.getElementById("cancelScan").addEventListener('tap',function(){
/ E3 d& I- I/ e" W7 G: e2 Y8 A
startRecognize();
4 s2 s c! d: g' [* u. S. @. ]
scan.cancel();
" e0 ?7 H1 Q, K
})
% h2 S1 s& o3 [2 {" ? ~
// 开启和关闭闪光灯
& o" x0 E- O+ C# H2 Y: g# z% O; w
document.getElementById("setFlash").addEventListener('tap',function(){
0 ]# S: \( [) u& M" v2 b
startRecognize();
. G- p/ v. _% m
isOpen = !isOpen;
. T3 @0 r( p6 t2 l8 ]7 q# ?, e) U
if(isOpen){
) P4 ~. v D8 H" y* K7 c$ `2 k
scan.setFlash(true);
& l3 }) n1 k9 Y: B
}else{
# ]6 E0 X* y& ^; k8 @& M
scan.setFlash(false);
* e/ E# D- |! a; j+ |
}
7 N. w% \. p- ]0 x
})
/ ~9 ^! k" B5 |4 E! A
</script>
6 A$ V% g' H2 U. }
复制代码
7 ` B$ M0 P* P! @
效果图什么的就不上了,和前面提到的文章中的效果图基本一样。
; x: W- W; b7 K+ p5 e( J
7 C9 S$ Y# a- D0 R/ M" _
欢迎光临 cncml手绘网 (http://bbs.cncml.com/)
Powered by Discuz! X3.2