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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。 : @. v* O9 _5 s
以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些: 3 D, M$ t7 K7 l! c+ E: q$ t
《【iOS】AVFoundation架构下的原生二维码和条形码扫描》
; L/ ?5 K% b8 C9 {$ n# w6 S《【iOS】CoreImage原生二维码生成(一)》
" L; X" h; ?0 _7 D4 V: K《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》
5 r/ u+ A( F5 Q3 i7 E在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。
8 Q+ F0 F& x/ I  U原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。 . F" {7 ^9 l$ H2 V# A& W. @
直接上代码,注释都在代码里面了。
0 m+ i9 D4 T$ Y2 K/ {* z& l
$ C" r' W# C5 z! M
  1. <body >' m/ q2 b, e0 V
  2.     <header class="mui-bar mui-bar-nav white">& g. _7 Q" M& W, P0 l6 H  P
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>/ [5 e# E$ l. u; t* ?  k/ E1 \
  4.         <h1 class="mui-title">二维码扫描</h1>5 d. x9 g3 C, }) F- P% ^
  5.     </header>
    5 M/ }7 Z# I1 p5 F2 `
  6.     <div class="mui-content">
    ) W  W1 ~" i% J( M6 o" u  j
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>* |& k. V# U8 A' w6 a% d! \% \0 p
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>
    . k0 p0 ^: z1 t8 F$ x' m; d
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>
    3 G: L7 B5 [2 M' |# g; _) U2 j; Z* |
  10.         <div id= "bcid"></div>
    2 Y, p, n6 L$ |
  11.     </div>7 V7 r# p9 A7 {% y# T& k' H6 {! B
  12. </body>9 X. O- I! Q; q* l; m0 v
  13. <script>- x2 U/ B0 {/ [& V1 r# h
  14.     mui.init({. U4 C' c9 _; p. g' ~, x  }3 j
  15.         swipeBack:true //启用右滑关闭功能  U) l4 d# C9 I3 _
  16.     });
    6 r4 V8 A0 D* {' M1 W! J, Q& ]
  17.     var scan = null;
    1 h3 b+ v( m5 F" _. q% E% [3 M
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭1 y9 o3 F1 K- A" W. L
  19.     // 条码识别成功事件
      M* n) p% G; n8 x3 q0 k
  20.     function onmarked( type, result ) {
    % I/ B+ a" ~, Z1 d8 t8 w7 h
  21.         var text = '未知: ';0 E2 B7 H* K9 n" `7 x' n! @
  22.         switch(type){
    / |0 R6 z/ @0 [- E9 }4 Q$ ]! E
  23.             case plus.barcode.QR:1 K* M0 W! k0 a* L$ s2 I
  24.             text = 'QR: '; // 二维码
    6 H* N& Z- x8 F5 i
  25.             break;8 n8 Z- H' F* B3 }1 o8 Y. t
  26.             case plus.barcode.EAN13:
    - a' T5 H* u& U2 C
  27.             text = 'EAN13: ';8 l, e! `* w+ ~4 K) Q' n! ?$ U& v
  28.             break;
    1 C+ C$ i! }4 c
  29.             case plus.barcode.EAN8:7 r+ v7 w8 O, \  f& _* n2 I6 x5 ?: u) s
  30.             text = 'EAN8: ';% }0 f' P( A! n4 s% S' W) o! e5 b
  31.             break;1 g! T9 C" O) M9 z8 t& h" y
  32.         }4 W4 ~1 V  l) Z
  33.         alert( text+result );2 G( I7 E/ p3 m" m' Z
  34.     }
    5 }( w1 i% h; n. w' o2 I
  35.     // 创建扫描控件
    4 H% c2 |8 k* u; n* R2 I
  36.     function startRecognize() {9 f* t' V& }3 k1 r8 ^- a
  37.         scan = new plus.barcode.Barcode('bcid');
    & x# f* W. i* P) u/ n
  38.         scan.onmarked = onmarked;
    2 j) j; L- t* z  N9 p; I( B9 V
  39.     }
    ! Q, Y" k$ g, a8 I, L% w; B9 ~
  40.     // 开始扫描3 ^8 P0 c- M: K4 Q" q* p9 ?1 N
  41.     document.getElementById("startScan").addEventListener('tap',function(){3 w" F5 D% t% A) P# r
  42.         startRecognize();
    & ?1 ?4 d& W1 y+ l# M
  43.         scan.start();, A5 F: k2 D. ]* v% g) q
  44.     })
    ' F" o' M' _2 M5 f, n
  45.     // 取消扫描- Y8 E; o- J- f* U' z4 \$ _0 D% r& T
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){
    9 i8 A. y$ y  @# y: h
  47.         startRecognize();
    + m- t- @1 Y8 W: x* v
  48.         scan.cancel();
      {/ q' z: b8 O
  49.     })
    ' T4 n; A8 _& M( }7 f! \+ f: n
  50.     //  开启和关闭闪光灯
    8 N* o' ]: P6 @5 Q2 u/ @
  51.     document.getElementById("setFlash").addEventListener('tap',function(){+ a& G0 X6 j- K  s
  52.         startRecognize();4 }  V5 j# s: I" ~, t: @
  53.         isOpen = !isOpen;% s8 v  C0 M+ O
  54.         if(isOpen){4 a7 l) ^6 p4 G3 \3 o# {
  55.             scan.setFlash(true);
    - t- ]0 h& |# V; h" N  w4 h! }
  56.         }else{
    : O. h7 r6 Q' t( F; o- r, K8 g
  57.             scan.setFlash(false);
    ' e6 @: E: [: Z( g3 H0 F
  58.         }3 q* Z( E) `% V
  59.     })" O9 O9 N  z- F
  60. </script>
    9 Z9 ]0 J. w/ x8 J" Z* b( ^
复制代码

5 O) E* ?3 r/ {: h1 }效果图什么的就不上了,和前面提到的文章中的效果图基本一样。5 S3 ~4 W* g+ A+ f

  s+ T/ J1 Y  O9 o; P
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-23 02:17 , Processed in 0.108325 second(s), 22 queries .

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