管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。 ' s2 m( K* v: m6 G5 @& f; _
以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些: 8 u) }/ S6 ~ C }6 p
《【iOS】AVFoundation架构下的原生二维码和条形码扫描》
) o7 _! c1 I( d$ ]8 _ N《【iOS】CoreImage原生二维码生成(一)》
) U8 B, @) _* X4 I5 @# \《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》 , B$ M& J% N: ?+ p. R
在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。 6 e9 f9 P6 q+ q' }( }. q( V6 `" Z! W
原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。 " l/ o: R7 ~9 Z M5 ^* S
直接上代码,注释都在代码里面了。: z h" y) U+ {; H' u
7 L0 p& U, w: z; e. N* I6 C- <body >) U4 |1 ]0 Q5 G! d3 c& ?
- <header class="mui-bar mui-bar-nav white">8 |7 G7 Z# a7 X x. }; |% G# T
- <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
+ x% u' {; |, ]) o - <h1 class="mui-title">二维码扫描</h1>& L, E; C9 n. u: k5 k0 D) f2 i
- </header>
5 ^& b# D6 M6 V, q% ^ - <div class="mui-content">
, L' a6 v8 O/ L, O - <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>
. \& w: y7 X* d3 P: ]7 }8 n - <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>
$ S& U" }) ^+ ]6 w - <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>4 J3 v* z! N6 m- j% a
- <div id= "bcid"></div>
# I" v/ J0 T0 p; c; ~" r8 ? - </div>
; G, K$ T: y+ L; U: { - </body>
) e, y) m& l$ w) g* ?- D* u% o+ o - <script>
7 @5 }: J& F1 S) ?/ E: ]9 P' @, ~ - mui.init({
3 R8 Q) u- m0 K/ l - swipeBack:true //启用右滑关闭功能0 ~" L3 K/ x+ t* o9 ^2 ]# C5 Q
- });
4 ^+ u, N, y h9 P: N - var scan = null;% Q2 E6 X3 P* ^0 h) a* y5 @
- var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭6 S* n* S8 W7 u3 z2 w' C) y
- // 条码识别成功事件
7 M7 m% Z. n+ g - function onmarked( type, result ) {
/ I# L! p. l) e - var text = '未知: ';
O+ J8 W3 w0 n c) {, Q; y5 S$ { - switch(type){9 ]6 v/ B! M7 H% z( E7 p( G( h9 g8 z
- case plus.barcode.QR:, I. f# |$ P' C+ M# D
- text = 'QR: '; // 二维码
& {0 n6 y0 |! l& o8 w- C - break;
x$ w5 V2 p" X' G0 b4 g$ f/ d - case plus.barcode.EAN13:$ D; m0 v& U# p) _- x2 H/ a
- text = 'EAN13: ';1 R6 `0 Z& O1 M1 Y* t+ m) U
- break;! R9 P# ?$ w- Q1 `* W/ m: _) F, o
- case plus.barcode.EAN8:
1 w+ {3 s- ~; K% e - text = 'EAN8: ';9 `5 {' x% O2 N+ y, O( w
- break;
S: m- |+ d' Y+ S - }
1 x" ~+ ^! o3 E0 x - alert( text+result );2 F) d1 t! e8 d8 c$ I* P* R: \
- }
4 ?. u; k: s% z5 r" c7 B - // 创建扫描控件
. u+ z* w! i* l, h( K* Q - function startRecognize() { h/ X, o( j# O9 u$ J, u% u9 U9 Z
- scan = new plus.barcode.Barcode('bcid');
. ^" e) N h4 q. f: \& ]6 T6 i - scan.onmarked = onmarked;
) g4 S) w. G0 F. ?5 I - }- L# C0 u, w$ f8 I: P6 X! I
- // 开始扫描
- `6 t4 _# s. L4 H) }# v A* o - document.getElementById("startScan").addEventListener('tap',function(){
; p. G6 _: r& @2 L% O5 W - startRecognize();7 i9 }% j. m- N
- scan.start();
5 G/ T8 y. r+ n6 q0 F: w - })' V+ i1 c5 r! Q+ e" {3 b% F! Z
- // 取消扫描
q3 B$ O9 l. |' }* e' f# v5 T, P - document.getElementById("cancelScan").addEventListener('tap',function(){
( ?! e1 a$ e0 P+ h$ L0 U, n7 ^6 v - startRecognize();
4 b2 s+ g* e$ q& l7 [ E - scan.cancel();
; G6 X$ D5 K- H m# ]$ O - })
- m6 H: e3 c0 X, m - // 开启和关闭闪光灯6 d6 p# K) k( N8 W+ j
- document.getElementById("setFlash").addEventListener('tap',function(){& f& D0 T) {* S5 p- Z3 a& X
- startRecognize();
' o6 K2 y6 x2 d" n* N! p - isOpen = !isOpen; Q( T0 o3 V1 z5 i
- if(isOpen){
$ |* d6 d! x; O# D! E. l - scan.setFlash(true);
/ c; S/ J$ Z( [4 Y8 R0 x - }else{
' C! Y# d6 Z# t1 }1 [% @0 c: ?; q - scan.setFlash(false);
0 B1 E6 G4 E7 |' G - }
; f! Q; [4 O6 E8 D - })
9 z! `0 X9 O' H T - </script>$ q5 j" c0 z, Q# X
复制代码 " b/ R6 N4 X; U+ |' k- c5 V7 j% d
效果图什么的就不上了,和前面提到的文章中的效果图基本一样。) _% i3 G W' R
; ?' g1 T# B1 n$ }2 t
|
|