您尚未登录,请登录后浏览更多内容! 登录 | 立即注册

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11439|回复: 0
打印 上一主题 下一主题

[HBuilder] HBuilder webApp开发(十三)二维码扫描

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。 , m, |5 }" P& W; U
以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些:
/ C  z, U1 `2 I& Z* y$ ]《【iOS】AVFoundation架构下的原生二维码和条形码扫描》
, o  q9 {" m" Q《【iOS】CoreImage原生二维码生成(一)》
7 @0 T4 z7 }! S( A7 N《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》
0 J! f( f4 {! T- @: }在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。 7 Y1 O6 ~2 ?7 D0 k+ \
原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。 0 }1 P1 R% I- U! Z* c
直接上代码,注释都在代码里面了。9 Z9 H3 X+ {8 ~+ @& j- p
1 C7 D4 ^3 m2 J0 z# j
  1. <body >+ z9 @; M0 b, C3 l0 ]+ h; h: P' O# a: Z
  2.     <header class="mui-bar mui-bar-nav white">) E, J5 b% y+ W* q5 _& F- a- l; Y5 d+ B
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
    - F* D" i; l6 ]$ A$ i
  4.         <h1 class="mui-title">二维码扫描</h1>: ]1 O, m+ ?+ |" ]! W7 L
  5.     </header>
    ; J. n/ J* X( S8 [+ b
  6.     <div class="mui-content">0 K' e8 E* J; {- f7 f
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>6 F" n; S0 M! X
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>
    " s" X& d# F9 z0 f: _
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>  K9 E* R8 }5 U1 l9 b
  10.         <div id= "bcid"></div>& i. q2 q4 k! w0 d; ?; V7 a
  11.     </div>7 R! ]3 o: |* v! I
  12. </body>+ Z+ F0 y* r+ i+ p7 U* x
  13. <script>
    7 t) c3 O# ?2 Y1 K- \% |# y0 u& y2 |
  14.     mui.init({3 j- V0 d# f8 S1 }. k* q
  15.         swipeBack:true //启用右滑关闭功能. b  T6 ?5 L/ I9 v' m
  16.     });) B+ b( w, d% Y2 s2 Y7 v
  17.     var scan = null;
    ( x$ [+ f! P$ g
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭4 l" I5 J0 C. d2 Y9 [
  19.     // 条码识别成功事件0 h7 _) |: C, U# j" G, s
  20.     function onmarked( type, result ) {* _3 e1 F! a' [
  21.         var text = '未知: ';& m* e0 w) U. }1 W: Z8 d
  22.         switch(type){+ ]6 y# g0 a3 U
  23.             case plus.barcode.QR:" h4 O9 ?+ M# }, ?$ B& P
  24.             text = 'QR: '; // 二维码. p+ z( X* h- {, o- \' w/ Y, B. e
  25.             break;
    - z: n' a0 f1 U& y
  26.             case plus.barcode.EAN13:3 }( V- }# P" @. q8 e& D- h( q4 A$ h. C
  27.             text = 'EAN13: ';" Q7 t0 O* e" s  J/ ?2 B9 {" n
  28.             break;
    " v$ O; M6 t) }( Y9 a) ?* F
  29.             case plus.barcode.EAN8:# U6 K2 S/ R% O, m
  30.             text = 'EAN8: ';
    ! ~- j% M6 b5 {6 n* h9 k0 @
  31.             break;+ v4 B) x5 {6 Q5 X
  32.         }
    + f1 c# b% {: Q) D2 h4 B
  33.         alert( text+result );
    " ?# m0 P) i' f% F9 u" s: Z
  34.     }
    3 M. D0 w$ V8 x; J8 }+ C/ E. M
  35.     // 创建扫描控件
    ) K2 q4 b# h. p, k% B  B" W
  36.     function startRecognize() {
    . S0 Q+ T, _& J& n, A9 j1 n
  37.         scan = new plus.barcode.Barcode('bcid');
    3 w# s+ |# |: _+ R0 g6 p8 J0 \
  38.         scan.onmarked = onmarked;
      E$ p7 I7 P0 S& @8 K8 {4 `
  39.     }, d: z$ R9 U  ?) M6 R5 s9 n1 b
  40.     // 开始扫描2 s: x5 E4 X: s" \) g  y7 g( r
  41.     document.getElementById("startScan").addEventListener('tap',function(){
    * t+ R( P1 z7 t9 ]+ F- }6 _. V
  42.         startRecognize();
    7 _3 H$ `3 s. j
  43.         scan.start();
    : s6 V& M/ [6 G/ w4 t1 O
  44.     })0 }: F; h9 ?$ n5 i
  45.     // 取消扫描
    # V3 [8 I2 h9 L5 I2 x
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){4 t: q. w5 I# Z* h
  47.         startRecognize();
    ' z, R0 d" }! z  h8 d; Q$ y1 N
  48.         scan.cancel();' p; A; H3 S; B: N
  49.     })
    $ ]" R1 y) H- U/ Q. `- K
  50.     //  开启和关闭闪光灯) n$ o/ q; }2 P8 }6 y$ o: [1 k* j/ Y
  51.     document.getElementById("setFlash").addEventListener('tap',function(){( t& T: m/ V% W8 L9 Y* f
  52.         startRecognize();% B' K; @7 [+ R, e" s3 H. U5 N; W3 `/ ?
  53.         isOpen = !isOpen;' ]; ?3 ^8 r7 k
  54.         if(isOpen){5 a7 I1 ?3 T% F& ]" |% b* C
  55.             scan.setFlash(true);9 t8 [6 s1 j/ [# n5 v% Y
  56.         }else{: r3 P  Q) O6 d- n( S: e5 Q
  57.             scan.setFlash(false);7 a- _5 ?- u) {0 R; a
  58.         }
    3 C1 F5 a" R  e6 n
  59.     })
    $ X1 C& X4 ]$ z, R* @/ o
  60. </script>
    ( o1 {+ s; R8 n% _. j/ T8 o3 Z! f8 z
复制代码

! ~% R- S% N3 z; h' h5 c效果图什么的就不上了,和前面提到的文章中的效果图基本一样。
) n5 ~. c: x, Z+ W. P, K# G5 ~; t7 K; s6 f: {
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 21:34 , Processed in 0.149663 second(s), 20 queries .

Copyright © 2001-2024 Powered by cncml! X3.2. Theme By cncml!