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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。
* b* ?  f4 ~2 r$ L) j  Z% g) Q2 O以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些: 1 y; [% c; x: L' L  }
《【iOS】AVFoundation架构下的原生二维码和条形码扫描》
: x2 O7 U9 ~4 d& V6 V0 J《【iOS】CoreImage原生二维码生成(一)》
+ M6 \, n, k0 J4 V* v# x《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》 % d% `- g7 }) A" g
在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。 0 P  n, w% I- i8 g" d  V+ H7 O0 K2 ?
原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。 , h6 C3 S& H/ C# Z
直接上代码,注释都在代码里面了。
% ?, \$ w3 j4 N
* N& e7 M6 W0 A' k1 A5 t$ U- J: C
  1. <body >$ j! Y$ a5 D0 w. d6 Y3 }
  2.     <header class="mui-bar mui-bar-nav white">
    - e; E0 g  y0 I- t9 Y5 V8 v9 }4 o
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>% }+ Y9 y' a6 o1 H. x; }
  4.         <h1 class="mui-title">二维码扫描</h1>- J- p8 Z; B5 _7 ]$ ^: g. n" O+ |8 t
  5.     </header>; p* Z7 O6 h. X. W/ B2 B: Y
  6.     <div class="mui-content">: O7 N$ g- e2 l
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>9 |, v, E9 @" v6 h
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>
    5 v! M1 q2 l5 v/ ]3 B8 l6 |
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>
    6 I. d6 s8 [# i. [: E0 s, Q8 ~
  10.         <div id= "bcid"></div>
    ) f& s9 u# ^" ?1 o0 S, ^2 i
  11.     </div>
    : N  ?1 v3 d& _5 @. a9 @, C7 |2 `5 b
  12. </body>1 T5 y2 l* w/ E8 I" g) R) c
  13. <script>
    1 ~! W1 ]$ c8 \3 P1 d
  14.     mui.init({
    , t# ~% D$ _- |$ m  u# W6 \
  15.         swipeBack:true //启用右滑关闭功能
    , h* {  M9 X- R
  16.     });  M- G( `4 [% k3 M" [7 e& v, N% |
  17.     var scan = null;
    ) l4 ]5 ^# `& l" N
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭5 g6 v( r: r  M4 J
  19.     // 条码识别成功事件6 V' W0 X1 B3 L
  20.     function onmarked( type, result ) {
    . Z1 r/ k: V$ m# M7 S
  21.         var text = '未知: ';. D* n, C6 x9 B+ H5 i
  22.         switch(type){
    % E0 d2 y! B* _; \+ ]
  23.             case plus.barcode.QR:
    ; _5 v( S+ i' b* |+ u7 h
  24.             text = 'QR: '; // 二维码  S8 _: `0 Z2 r1 a* W# N% E. J
  25.             break;
    ) _) b" l  ^" S' R  ]# R6 A1 v
  26.             case plus.barcode.EAN13:
    + E/ e. i+ Z5 R0 `
  27.             text = 'EAN13: ';
    6 k7 C$ E! j4 L" T
  28.             break;
    ) O% W/ k7 v( h) X7 g$ ?
  29.             case plus.barcode.EAN8:
    $ z" c4 A( S0 V0 i. `  {6 V
  30.             text = 'EAN8: ';
    * O. j0 A8 u0 _6 Q8 V% Q9 ^
  31.             break;
    ) O" `$ s* o/ u. O* r9 O8 w
  32.         }
    ! H9 E& D- E$ q$ {" b; H5 h+ n
  33.         alert( text+result );
    : a  C9 w+ h2 c
  34.     }
    * B5 W3 }6 |1 Q+ X2 Y3 c% ~
  35.     // 创建扫描控件
    / s; k0 @- \0 W" V( B# e
  36.     function startRecognize() {$ A; p* y1 h8 T
  37.         scan = new plus.barcode.Barcode('bcid');- w2 x# w0 }* n! Y
  38.         scan.onmarked = onmarked;
      x, g1 |. p) r# i6 Q6 e
  39.     }( K1 q' m9 c/ n, ]
  40.     // 开始扫描
    " A$ v4 s/ j* l$ E: x2 d" f9 \
  41.     document.getElementById("startScan").addEventListener('tap',function(){* {( H9 ]1 ^" q% N
  42.         startRecognize();4 p$ S3 a  b1 u6 A( E
  43.         scan.start();1 G& `+ P+ B  g6 E, H% [
  44.     }). T; J  W1 `- K+ I
  45.     // 取消扫描
    5 R2 W! T3 X: Z" ?$ Y
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){
    % [; r0 r' ^2 S- m5 c
  47.         startRecognize();
    - n) E2 L7 C5 ]" \, J
  48.         scan.cancel();
    8 q& B- P: C) f0 c8 M
  49.     })
    . v7 w/ d' Q6 `) P) H+ b: j: b7 _* p
  50.     //  开启和关闭闪光灯0 C# B/ Q  J  d: @
  51.     document.getElementById("setFlash").addEventListener('tap',function(){# O2 u* i% w7 k  r" ^
  52.         startRecognize();$ S2 P1 k3 s9 ?/ }& N
  53.         isOpen = !isOpen;8 L& W/ k1 ?" D
  54.         if(isOpen){* z# ]7 V% d8 x# z; q" l6 b# v) s. `4 L
  55.             scan.setFlash(true);$ ^4 G4 g, `# s! r* a# L! }
  56.         }else{% M7 b, |; q; }# t% t) Z
  57.             scan.setFlash(false);4 u, c9 ?2 `; v# i3 U
  58.         }
    % b* Q1 C" Y, O6 P" k) W# @5 T
  59.     })
    ) j# X: M4 A. _, n$ L; b) a  l6 N  u
  60. </script>. K# h! ?- a6 M% w
复制代码
3 d# q- }; z9 D7 l- k- o5 ]9 e
效果图什么的就不上了,和前面提到的文章中的效果图基本一样。, w; u( r8 h; `2 `' c1 V
; ]  X7 Q4 r" O: c
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-18 21:52 , Processed in 0.147815 second(s), 19 queries .

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