cncml手绘网
标题:
HBuilder webApp开发(十三)二维码扫描
[打印本页]
作者:
admin
时间:
2018-10-31 02:06
标题:
HBuilder webApp开发(十三)二维码扫描
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。
/ ]4 m$ d# r; S: J- S5 h n
以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些:
5 m( a- [6 l% [% f% ^6 m; Y
《【iOS】AVFoundation架构下的原生二维码和条形码扫描》
+ _0 [4 B! t1 p+ n8 t* I7 o* Z
《【iOS】CoreImage原生二维码生成(一)》
4 ~' b( {% M; X( N: x" j8 H, [
《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》
& i: P8 k y" `
在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。
$ y/ E# @! }% }1 Y
原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。
' a$ v: c" M: r7 l! n1 Z7 Z
直接上代码,注释都在代码里面了。
6 r( t5 H$ `0 Y. _- _
/ E' W0 u% K8 O/ B. f2 b
<body >
3 H, P' G( A/ m! w: S$ d3 o
<header class="mui-bar mui-bar-nav white">
& B- N- [0 {' }/ n6 E% S( B
<a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
9 b2 n2 L$ {; |, q8 {6 |' g( v
<h1 class="mui-title">二维码扫描</h1>
, W3 l' {4 L- M7 I
</header>
7 y* F/ c/ S, e& b2 I5 r; H
<div class="mui-content">
" e; z y6 ?, L1 p4 {- f
<button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>
5 e0 \% Z% Q, j. z$ m J/ l
<button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>
/ T1 L* K! Q+ M9 O% c, f U7 l/ p
<button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>
2 L* }+ |1 L: J! g% a
<div id= "bcid"></div>
4 P1 Q& B3 C, c+ ?
</div>
) ]7 o% i9 P6 _$ c
</body>
: b% P5 r% o, r7 a& a
<script>
/ b- {. x0 _) p3 k% o3 P' t3 I
mui.init({
( z% F& @ l3 ]- f! U$ K
swipeBack:true //启用右滑关闭功能
& H9 b2 E" k# I2 W) J- ~' m5 G: T( z
});
$ N f* v9 p4 f! t2 |1 H$ `2 M; t. N
var scan = null;
! p, ?& S0 l5 t
var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭
" R! v3 C8 S& H
// 条码识别成功事件
; I; u' j" ~9 d& m9 @3 n3 w
function onmarked( type, result ) {
3 h0 b& `: w6 x8 G) c' E
var text = '未知: ';
% o2 \6 R. d2 k c( D/ R
switch(type){
! @# Z. P: Y7 v b! V" y
case plus.barcode.QR:
$ a- O L( |4 t1 {: {8 `
text = 'QR: '; // 二维码
+ l, v6 l% U( J% _- U2 y2 a- B8 u+ w
break;
& R% j1 T2 Z: L2 F$ x& d
case plus.barcode.EAN13:
, h1 l% ^* U; A2 s( s( ?7 m8 R0 R
text = 'EAN13: ';
3 }7 y4 E- E; P& z" Q
break;
9 B( V6 z' B( Z9 |
case plus.barcode.EAN8:
# A$ r- N- h' {
text = 'EAN8: ';
0 Z9 r- K: F0 t) E) G
break;
# z: B. j2 w. d5 k% Y0 J* A) ~
}
6 Q% R! O; r# O" \/ j; p( T
alert( text+result );
# n1 S+ v) s$ V- }4 X- Q2 t3 P
}
7 o$ E: m6 a8 q! I7 u
// 创建扫描控件
! T* y0 L0 l) d) _- a- F. c6 z- y8 J( ~
function startRecognize() {
( }3 t& K/ o: m% B% t( [' }+ ^: u
scan = new plus.barcode.Barcode('bcid');
; w$ q& b5 T. o3 d0 a/ [" r* E
scan.onmarked = onmarked;
! Z8 x \- [. z- A) I8 o v
}
) U( n/ C1 W% p
// 开始扫描
# L* m( j; f7 l9 E9 g) l
document.getElementById("startScan").addEventListener('tap',function(){
4 s4 v/ X% A+ e# a1 ~9 r7 O3 }- V
startRecognize();
6 `7 q0 x" v# q; ]" O0 y
scan.start();
5 Q2 L- d3 V+ c! [3 r; W* O" x
})
% x5 l# D3 f9 r6 @+ i5 y
// 取消扫描
5 o( U. D! d' B4 _. ?4 c) k4 K7 |9 u
document.getElementById("cancelScan").addEventListener('tap',function(){
# g* `/ V: v( B$ T2 R
startRecognize();
~5 d7 D" S$ J x% V; `
scan.cancel();
( }5 G; C. d$ S! H) F6 j& P, i
})
0 P8 T9 Y& |' i) z
// 开启和关闭闪光灯
4 \$ _2 V$ ~* l3 ^
document.getElementById("setFlash").addEventListener('tap',function(){
; V; s. A, `( H/ s
startRecognize();
7 W% _6 P( j& @8 z
isOpen = !isOpen;
$ m. O" M! ^( x' Y: R8 ^ h0 B
if(isOpen){
. j1 w' r) Q; M9 [8 z
scan.setFlash(true);
2 P* }$ [8 ]- v. @+ t
}else{
, @& ?3 o. _1 g# Q9 F: u
scan.setFlash(false);
3 k) i$ ?. T5 y( ~
}
! Z& M) ~) L& E6 L5 E' d+ x
})
7 f0 G! Q& b, ~5 b$ ^% |
</script>
. p8 ^2 y0 C/ S8 T& c; d4 Y
复制代码
0 Z& W! C) J4 x
效果图什么的就不上了,和前面提到的文章中的效果图基本一样。
3 Y( P& z7 _" b1 R" t! `7 Z
- P! ]. W4 T8 u7 W# M- Z) P, ^
欢迎光临 cncml手绘网 (http://bbs.cncml.com/)
Powered by Discuz! X3.2