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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。 ! u9 |* a/ t& p* o- U. M& b. S
以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些: : K9 e: I# a; R9 ?% ~* `+ F( G
《【iOS】AVFoundation架构下的原生二维码和条形码扫描》
* B" f  J9 ]+ N: h《【iOS】CoreImage原生二维码生成(一)》 0 l. H% a& ^# E3 Y8 S7 }
《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》
  Z; E) {. r+ f1 \+ R$ S在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。 ! d; x- f2 M; U- x
原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。
2 E; K3 S1 f3 m( s* m/ i/ g% _直接上代码,注释都在代码里面了。
, t3 c/ J* J) W/ U; R4 g6 Y6 a3 q( i, ?! r
  1. <body >
    9 Q' f0 B7 I# h: T
  2.     <header class="mui-bar mui-bar-nav white">
      u0 Q: Z6 c3 _+ ]
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
    * {9 e( L5 J0 ~
  4.         <h1 class="mui-title">二维码扫描</h1>0 k- H) K/ C  B1 S7 }5 P
  5.     </header>
    % ]0 g" F0 i6 \+ l" _; k1 k
  6.     <div class="mui-content">* }" B+ u% l8 R+ b" L" O- F
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>  j# P1 t2 x! A  `2 F5 ?+ G. d
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>- J, Y0 j& ?) Z$ o  R, {4 C
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>
    0 {4 p2 @2 p+ H- s
  10.         <div id= "bcid"></div>
    1 N+ K1 u: L# D, j
  11.     </div>5 @2 X; b, E- t, g2 q2 p9 ^- J2 h8 R
  12. </body>/ r- J' Y, r# {9 J
  13. <script>5 |" z( o% s* E, E
  14.     mui.init({
    4 v" k. _6 }4 F. Q$ M3 t# T* q
  15.         swipeBack:true //启用右滑关闭功能
    ! o- r* }. I2 l
  16.     });
    ) [' B5 W" P- V3 t! ^
  17.     var scan = null;
    7 r0 g0 ~  V/ e: R; ?' t- P
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭
    & c( j) U; h% J5 S$ m* n
  19.     // 条码识别成功事件5 a. O, c: S  N7 V; I6 J
  20.     function onmarked( type, result ) {
    - n+ S& `( |3 L2 m! E$ S
  21.         var text = '未知: ';1 w6 g. r6 A' c/ [7 K
  22.         switch(type){
    . q1 }: K  @" w' _4 P# Q0 J( C
  23.             case plus.barcode.QR:
    0 s  D7 _& T7 D1 J3 ]1 i
  24.             text = 'QR: '; // 二维码
    * @  c# Y) b. o3 U8 i
  25.             break;
    ! _% H+ [: p8 z6 x% U- x3 l/ G
  26.             case plus.barcode.EAN13:
    # X" o# s& e! y+ r( c8 X0 ~7 l
  27.             text = 'EAN13: ';
    + j6 n/ N& U3 l2 \
  28.             break;
    - N. j7 z! b% M: A) g1 u
  29.             case plus.barcode.EAN8:
    2 [  j( i; ?' \4 g' S4 v  R: r* i
  30.             text = 'EAN8: ';
    3 X; ~* v4 u- J& R; g2 `( A
  31.             break;
    3 b7 e4 R# `4 o
  32.         }
    - X& b- s2 i! H# k8 V3 Y
  33.         alert( text+result );
    + ]. Y' Q! d5 V: t6 G* |9 ?
  34.     }6 R; L! U( S8 p% p+ W& C, [
  35.     // 创建扫描控件4 g6 E7 |0 ~. p
  36.     function startRecognize() {
    # a2 N, m  G) ~/ V, v  [2 O, O6 K
  37.         scan = new plus.barcode.Barcode('bcid');( X' Y# t2 m$ r
  38.         scan.onmarked = onmarked;
    $ o/ b6 W( x% }7 [2 q! G: G
  39.     }3 H0 w, ?8 y* f; a" L& C
  40.     // 开始扫描
    1 e# K; k* L7 E+ }$ }' g
  41.     document.getElementById("startScan").addEventListener('tap',function(){" m4 e+ z' _9 D, I+ O
  42.         startRecognize();  |3 H9 \# }% G, w4 V
  43.         scan.start();
    : q. H! g% v/ N. W' W  _
  44.     })2 e/ y% o# Z4 G2 ]4 h- x
  45.     // 取消扫描/ J6 F5 Y2 q/ R6 O# ]- j9 c; q
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){, f2 {3 U* W. x( Y% `6 Z) C9 M
  47.         startRecognize();/ _& d4 }) M7 R, [# k. L- t, C
  48.         scan.cancel();( L0 V7 u& ]; O
  49.     })
    # P9 m: V8 V7 w4 l
  50.     //  开启和关闭闪光灯1 U8 }+ u1 Q  O% R
  51.     document.getElementById("setFlash").addEventListener('tap',function(){4 }7 V9 J9 r/ E! U
  52.         startRecognize();# n+ }  E, N3 h" c
  53.         isOpen = !isOpen;
      m# _  E5 u1 G. h4 B, c
  54.         if(isOpen){( z3 _+ ?$ C3 N) E
  55.             scan.setFlash(true);5 h7 f( ]0 u7 z8 L. w* A& ^1 g
  56.         }else{. \- L6 m1 C$ l% ^- Q1 Q
  57.             scan.setFlash(false);) i) }& E0 J. K9 S! w% r
  58.         }
    8 f/ m4 p0 s( Z: X& o6 {" I7 ^  \# q
  59.     })
    : p" ~1 K# c5 T
  60. </script>8 m! R5 d$ r. e5 _- k8 y9 r9 f
复制代码

4 N) |2 z+ d8 F. l  d, N) f% c效果图什么的就不上了,和前面提到的文章中的效果图基本一样。4 K. Y- f( M$ |5 c# R, u
/ ]3 `. @9 l; o) _( `" O+ _5 ?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-1-30 15:04 , Processed in 0.056024 second(s), 19 queries .

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