cncml手绘网
标题:
HBuilder webApp开发(十三)二维码扫描
[打印本页]
作者:
admin
时间:
2018-10-31 02:06
标题:
HBuilder webApp开发(十三)二维码扫描
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。
, b) C' u) Y' c& |' C( a8 L3 h6 U4 X
以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些:
9 t( U0 x$ q+ C A/ ~; u0 ?- b
《【iOS】AVFoundation架构下的原生二维码和条形码扫描》
% \& k0 H* p0 D* q* c! e
《【iOS】CoreImage原生二维码生成(一)》
$ H! p8 P/ ^* P% M4 h1 P% i
《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》
' h; M4 ~+ o ^
在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。
8 \( O* N) L" K0 {1 A
原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。
! E: J7 A; O/ m8 H, i
直接上代码,注释都在代码里面了。
]) f* \! q; ` @8 y) s6 C# H2 h% n
- |+ ^6 ]: b, L3 R3 b
<body >
' `8 {9 P$ ^& J0 K% A! e
<header class="mui-bar mui-bar-nav white">
3 B$ Z% q5 j( p* |/ A: `# U; Y) t, C
<a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
& N; J) U6 r; N+ W4 \
<h1 class="mui-title">二维码扫描</h1>
1 l! E$ Q# C# }9 `
</header>
; J; M: N' e2 q% l- y
<div class="mui-content">
) q5 G. }( S& T+ f- G( S+ m- V
<button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>
( T$ b: }' M7 _) u( j+ w+ ?
<button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>
( x' k7 ~3 e+ J/ w$ {
<button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>
0 i% M2 R6 L. D& U/ r0 h/ [
<div id= "bcid"></div>
7 Y" k. a; M8 l2 l; a% ^9 L- R
</div>
' k7 G, p ]9 d1 Z/ W
</body>
/ n. s8 m* o$ M$ E6 @: j
<script>
$ Y8 T" D6 n/ i4 k
mui.init({
! ~5 m0 [8 y+ E' q/ n5 @
swipeBack:true //启用右滑关闭功能
9 Z. O8 g: _ ]5 {& o! ^
});
' G: @7 ?: Y9 \- j( D
var scan = null;
( G( u" r5 {) J5 x
var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭
: a5 |; g& u9 Z/ J
// 条码识别成功事件
( G, \( ]; v3 Z
function onmarked( type, result ) {
% ?! `5 w" Y' z8 P% Z7 ~4 }$ N( v5 _
var text = '未知: ';
, h# J0 B) O" z2 U6 H9 ?
switch(type){
" z) U/ ]) S- g. H/ T+ v& O
case plus.barcode.QR:
3 e n. H* {) n, y! v
text = 'QR: '; // 二维码
- A5 m% W: S( Z; {" m W" n/ z3 \
break;
7 T% [3 { V6 R3 {1 y1 s! T
case plus.barcode.EAN13:
4 S2 P: s- d6 d2 z* _
text = 'EAN13: ';
6 t: y# ~- K# u v
break;
- }- O/ [: D4 |) G" E1 H% [% U
case plus.barcode.EAN8:
/ o! m) _" P2 f+ W" r+ D5 j
text = 'EAN8: ';
1 I$ }7 p: z- i
break;
% b* L' ]7 u8 @: O& E' r5 y: k
}
0 i6 U3 r/ v1 X# O2 ~
alert( text+result );
" B8 P! ~# x' N$ ?
}
+ F6 C) a# U& G+ j# L- `3 _
// 创建扫描控件
7 u7 T. G, T: s, U
function startRecognize() {
4 q4 h4 m6 T+ j# K/ j# l
scan = new plus.barcode.Barcode('bcid');
8 G3 i) Z" V1 V4 Z( H
scan.onmarked = onmarked;
X. h/ a6 W: i6 v: r1 [+ R6 o* H
}
1 R8 [4 _0 ^' Y( o) @* ^# O) L a, [
// 开始扫描
) w$ o# D' K) g" _, L4 O
document.getElementById("startScan").addEventListener('tap',function(){
9 I- X H/ j3 X6 ]6 `
startRecognize();
6 p1 x' D% S1 U, ~* ~
scan.start();
% z/ `3 U1 I3 j
})
$ b9 p/ k9 D( w+ X# I. M5 i1 ]
// 取消扫描
( B' N( L/ d9 d! N0 i1 l
document.getElementById("cancelScan").addEventListener('tap',function(){
, [- B# o& }8 A! {" }2 |
startRecognize();
( P. @$ i4 m( n5 k/ y. d
scan.cancel();
& f3 y* q1 c& h8 m/ Q
})
/ D# S4 j: P0 K. W* V, u- W+ l
// 开启和关闭闪光灯
% ^! z0 ~. v6 Z( P' Q2 _. A3 e
document.getElementById("setFlash").addEventListener('tap',function(){
6 g, o/ }0 w# \, O! {* n
startRecognize();
7 Z$ h6 F$ q6 F0 U6 H
isOpen = !isOpen;
8 e: p9 B V: z; E+ G, D
if(isOpen){
g h/ c; v! G( o3 M# T2 f
scan.setFlash(true);
2 \! [; k! k: Q) ?+ m; j
}else{
, V* x& I8 o* {- b/ e, T: p
scan.setFlash(false);
+ V( A+ ?, z2 A/ n! [. s/ d6 l' s
}
! b* T/ g! v2 M/ U6 b% p# F
})
6 J, \8 y6 H: ^! N( q
</script>
/ U1 M9 k* ?9 l( m1 r' C# _
复制代码
$ R6 ]8 o+ u; q0 }8 x+ b
效果图什么的就不上了,和前面提到的文章中的效果图基本一样。
2 x% m. _ x# }/ R- v
( b/ t: y. A4 m( R# k
欢迎光临 cncml手绘网 (http://bbs.cncml.com/)
Powered by Discuz! X3.2