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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。
& W8 s9 @5 h! Y8 ^& a以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些:
9 {" C: r3 \/ h《【iOS】AVFoundation架构下的原生二维码和条形码扫描》 / k9 z( A* t' z
《【iOS】CoreImage原生二维码生成(一)》 2 Q" t! J, k1 c; R! S* f, [9 |
《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》
7 P; S3 q8 z7 c' y在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。 1 R1 O' h* }. `# C4 G' N
原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。
/ n) t' \8 X/ b$ j1 u! ~直接上代码,注释都在代码里面了。
  p) W- C8 y- z+ v: d7 G4 i. J$ V+ X6 ^; S4 O
  1. <body >) y0 O: |9 v/ E# I& t$ Q* J$ Y7 r
  2.     <header class="mui-bar mui-bar-nav white">; Z5 @# ^, Q, c
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>6 F& s# x1 ~8 ^' ~  F, W+ s/ C6 a
  4.         <h1 class="mui-title">二维码扫描</h1>
    ) `  }% U# a6 @3 s
  5.     </header>
    9 j9 i5 D: ~" L2 W' t# P3 f
  6.     <div class="mui-content">% s- r8 U* a) ~9 ?+ n1 l
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>5 s. w  Z5 Y3 t; y* J8 ?. d* P
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>
    . X- X  q6 v$ L1 s& _/ a
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>
    ! j! P# @6 Y6 A. U1 k  P( j
  10.         <div id= "bcid"></div>. v% G9 `. U3 X
  11.     </div># [+ k; i1 w( F* ]
  12. </body>
      N: T7 ?6 P8 ^' j
  13. <script>  A+ X6 G7 ^5 K
  14.     mui.init({
    2 x+ F/ G) H6 `7 y: T/ L; H' A, t
  15.         swipeBack:true //启用右滑关闭功能; Y. J1 U, `& m) e& i
  16.     });. Y/ s4 e2 {7 x: Y# n1 Z9 n% {: O& i
  17.     var scan = null;  y# ]/ W% Z0 h$ @" e, |7 r3 l3 R# h& J
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭
    ' f; U6 d  {" s) t4 J: ]4 R: x9 b" P
  19.     // 条码识别成功事件# g5 m& M; [7 `/ P- G4 F
  20.     function onmarked( type, result ) {  n0 _9 P5 r: \; d: U) @0 ~6 g
  21.         var text = '未知: ';
    - D" ~5 N/ F# V( t8 w5 e6 b1 \% T
  22.         switch(type){  _  `! ~4 K3 ~; w9 f1 Q' H6 m
  23.             case plus.barcode.QR:. e6 }: _( s$ O4 C
  24.             text = 'QR: '; // 二维码$ d9 ]5 Q8 d9 d* u
  25.             break;; P. Q9 [& m. O
  26.             case plus.barcode.EAN13:$ G  g0 V+ p/ G
  27.             text = 'EAN13: ';
      D1 u# _* t6 G+ ~( D
  28.             break;+ R( J! Z, a3 L- X5 M1 `0 W7 n: @" h) ]
  29.             case plus.barcode.EAN8:
    6 R2 q" L' R4 c# b
  30.             text = 'EAN8: ';
    ' o9 b3 x* Y. k* \; u
  31.             break;
    0 H( T6 a5 I  w
  32.         }
    5 T. |5 H; y' t8 `3 j
  33.         alert( text+result );6 [. A" j9 Z9 j9 Z' T4 b, Y* d
  34.     }
    $ F: w" n6 e( a7 H0 V. {! Z* R) w
  35.     // 创建扫描控件
    5 Z, S9 g1 z" ~- d" k
  36.     function startRecognize() {: g: F! d6 c1 Q
  37.         scan = new plus.barcode.Barcode('bcid');6 J* Q( Y4 r  X) `
  38.         scan.onmarked = onmarked; # b  Q5 T2 b/ m7 ~: q
  39.     }
    - {2 ^* B( Z) T% u- w
  40.     // 开始扫描
    6 R' a/ h0 B; B' W; P
  41.     document.getElementById("startScan").addEventListener('tap',function(){3 i7 w6 l; E7 s
  42.         startRecognize();
    % i6 m6 a; ~# k6 F4 M- M1 @
  43.         scan.start();# F) _* p1 ^1 _$ j/ t, V) h- V
  44.     })
    4 m; [& ], k. P5 F8 j
  45.     // 取消扫描
    ; [" F8 K( T7 i* _; u) D
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){0 p: ^2 _8 U  J! X% k
  47.         startRecognize();
    4 U9 H3 n/ L3 A  N' u( A, L
  48.         scan.cancel();
    * \3 Q$ u& ], B$ p0 M
  49.     })
    * `1 u& W) ^# F6 K, J2 f7 [
  50.     //  开启和关闭闪光灯
    ) J7 m, V& v' P, Q, k: }
  51.     document.getElementById("setFlash").addEventListener('tap',function(){
    * l3 P1 f  L9 a+ A$ @8 `+ g& \& w
  52.         startRecognize();
    + {- g1 r& Y% Y- e" K: g
  53.         isOpen = !isOpen;
    . V5 r# [) i5 f2 y' y' ?, O
  54.         if(isOpen){
    & B6 i. n) r* X( s( n# Y+ u; u
  55.             scan.setFlash(true);& c5 C8 B7 t+ [6 [3 D
  56.         }else{% d1 i- |" h$ e; R& I' y
  57.             scan.setFlash(false);$ k7 H6 V8 H) j' I
  58.         }! t& T" {$ N5 q
  59.     })( Z* O1 i4 G0 L; ~0 j$ E' N+ p
  60. </script>
    / B  @1 \! E2 B: E9 g# Y1 E
复制代码
4 t4 u: Y6 f& U4 L4 U
效果图什么的就不上了,和前面提到的文章中的效果图基本一样。
' \- Y& ^& v6 ^* j. i9 Y
7 k# n# [" g, K! r9 ^) ?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 23:39 , Processed in 0.105343 second(s), 19 queries .

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