cncml手绘网

标题: HBuilder webApp开发(十三)二维码扫描 [打印本页]

作者: admin    时间: 2018-10-31 02:06
标题: HBuilder webApp开发(十三)二维码扫描
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。 ' P0 V/ j2 M( |2 F8 h
以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些: ; A: i6 p+ u4 W; p# E1 L7 Z8 C( u+ h
《【iOS】AVFoundation架构下的原生二维码和条形码扫描》 5 P  ~' `& D5 Y* J
《【iOS】CoreImage原生二维码生成(一)》 1 q0 A. S# h6 p6 C+ b2 _# u
《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》
4 b1 L( X. U4 M- A在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。 5 A/ d! l. N: n2 O) _
原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。
: l4 }% p, X* _7 L% @; D直接上代码,注释都在代码里面了。, e/ O! W( W8 T- P
( u/ Y8 _  f) m; k! p# s8 M
  1. <body >; f) u, L+ K2 i4 \. u* G
  2.     <header class="mui-bar mui-bar-nav white">: k7 U" |; ]: v4 T3 l& u8 O
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
    7 U, ~- M  i: f
  4.         <h1 class="mui-title">二维码扫描</h1>' F0 [, Z7 @1 E7 k9 I
  5.     </header>
    & X3 s5 i- \# j" P7 d
  6.     <div class="mui-content">+ C8 ~5 S! Q2 ^
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>
    / P  }" Z- z' E% V8 R& v8 H; s* @' p
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>" @/ t5 _0 M0 W7 \/ q& y6 `
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>/ x7 m9 u& W+ o1 c
  10.         <div id= "bcid"></div>
    2 P, u1 P& q8 ~0 T* o; O; J
  11.     </div>
      y% t& f# C, ^' E: d
  12. </body>
    & J  {  u! S# C& B" Q  U
  13. <script>
    2 b* U+ @  ~) F1 ]) t* i8 w
  14.     mui.init({
    3 X$ a3 }  z; M6 Y2 I
  15.         swipeBack:true //启用右滑关闭功能0 Y1 a4 H) z1 W, D* _; c. b: T
  16.     });
    ; d# H, ]( K7 k% w- V
  17.     var scan = null;
    % [- e$ B& b$ M
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭
    / }) x% Z' w; ?0 C8 S4 k
  19.     // 条码识别成功事件
    ( ~7 `3 b4 n: A% \9 B
  20.     function onmarked( type, result ) {
    , q5 |6 j! H; A! o
  21.         var text = '未知: ';
    $ w5 z& a1 A: K! y
  22.         switch(type){3 g* l0 I" W" m6 a# _. @
  23.             case plus.barcode.QR:
      S& ~" z4 Y5 z, s. p
  24.             text = 'QR: '; // 二维码
    $ }+ n0 R  K: e. y: I
  25.             break;8 y- |+ |, M+ Q/ }) J- r
  26.             case plus.barcode.EAN13:
    # C" e; \: C: M
  27.             text = 'EAN13: ';; K) \8 @+ B$ h" s3 {
  28.             break;
    ; T$ S0 M/ M" Z3 Z! k! Z% |
  29.             case plus.barcode.EAN8:0 m  ]/ L4 a% Z$ |% P  a
  30.             text = 'EAN8: ';
    & Y! u! C; J, [9 J9 f. d, I4 `
  31.             break;9 f+ j5 R, p. J. H0 P8 u
  32.         }
    2 p; D9 P, ]& m' f& ]$ }& @; t
  33.         alert( text+result );
    / O' u, }) w9 }
  34.     }% i9 g3 k2 Q" q  G
  35.     // 创建扫描控件
    - J6 u1 E8 g& L5 m
  36.     function startRecognize() {
    0 Z5 _" c2 j8 ~
  37.         scan = new plus.barcode.Barcode('bcid');! j, J$ s: a; l) A
  38.         scan.onmarked = onmarked;
    : p$ U$ @& \6 A5 K
  39.     }
    $ ~8 n3 }' Z& p
  40.     // 开始扫描) i0 \% [- _( ^" V( p
  41.     document.getElementById("startScan").addEventListener('tap',function(){7 i6 F0 }  @- w% p2 b. O
  42.         startRecognize();  z  S/ {8 e5 p
  43.         scan.start();, w. k+ j* T3 X  j
  44.     })
    # X4 r  ~. Z# W+ D
  45.     // 取消扫描2 ?9 S8 {  E- d7 B& |0 }! Z
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){* m% h9 g  _. g, _/ l- B! k
  47.         startRecognize();8 P' w5 L! P/ S! \, n2 {1 e0 _  ]
  48.         scan.cancel();+ g; n7 `7 h5 O9 l2 K% H9 h
  49.     })
    3 E. b& N" z  h
  50.     //  开启和关闭闪光灯
    3 I* a5 p% U$ z2 @
  51.     document.getElementById("setFlash").addEventListener('tap',function(){; ~; Y" F- c$ g; a
  52.         startRecognize();3 P! G  _7 U% D  _) A
  53.         isOpen = !isOpen;5 M0 F* x/ i/ X/ ~, e# P
  54.         if(isOpen){" f" T6 d3 e0 ?9 C6 A- M
  55.             scan.setFlash(true);; p0 q% `& g% p0 K4 s) r
  56.         }else{9 R% D) Q! _0 u
  57.             scan.setFlash(false);
    9 d7 O$ p$ _  T/ Q. X# T+ }
  58.         }) P# x' b$ @( |. H/ O2 c
  59.     }). P6 Y3 V# p# |8 O
  60. </script>
      C: ^' Z! U- V' U
复制代码
. i* K) g: V' D" M# w7 \1 s
效果图什么的就不上了,和前面提到的文章中的效果图基本一样。
5 B( V" A- g2 W9 M" f1 a, N. [
, L# }/ x7 M4 A9 ~- V& j7 F) s




欢迎光临 cncml手绘网 (http://www.cncml.com/) Powered by Discuz! X3.2