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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。 7 i# M  s: H% ]( I7 A
以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些: ; T9 y% C+ W) L2 _% w/ H% `- @
《【iOS】AVFoundation架构下的原生二维码和条形码扫描》
) R, M# m- a# b《【iOS】CoreImage原生二维码生成(一)》 $ H- N1 N3 ?& x! C6 D9 u' J7 ^& W
《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》 7 E. _" O7 i7 p( ?& Z' F2 Z5 N
在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。
5 `# n- E. E) g0 v3 N原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。 6 v, Z) t  l" O. V& A+ C* G* t
直接上代码,注释都在代码里面了。& n7 d! i4 ^# r( D- L
( c7 \, D5 F) W* D
  1. <body >
    1 y, Z) G/ g! }" r0 r/ Q9 M
  2.     <header class="mui-bar mui-bar-nav white">
    / a$ F, l( V; _8 m  A2 S
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
    3 N* A1 M7 y9 L8 ~$ w
  4.         <h1 class="mui-title">二维码扫描</h1>4 N! v5 Q; S2 x" r
  5.     </header>3 e9 s/ A. \: f% W0 p( _
  6.     <div class="mui-content">  @3 r  _" p2 H& }
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>: F4 G/ y- [/ a/ f% _0 d7 {, \
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>. T! ]* F, y, H' t! Y
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>
    . h! @0 a2 F$ F/ a
  10.         <div id= "bcid"></div>$ B3 F+ s, B- E) T/ p4 O
  11.     </div>
    # z* W7 r! ?& x* @
  12. </body>2 z! S5 {; g1 k
  13. <script>
    2 _' _- P' {. ~2 x. n
  14.     mui.init({
    : e6 T" t0 l+ V4 I5 O
  15.         swipeBack:true //启用右滑关闭功能8 C3 T' X  W" u
  16.     });
    / s3 c% }1 O% q2 E5 q* U
  17.     var scan = null;
    ' @! n, k! T, e) ?: ~7 u
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭
    7 a7 y+ \$ |0 L' A0 p
  19.     // 条码识别成功事件
    ( u$ f% G3 q4 T1 J$ Y
  20.     function onmarked( type, result ) {
    ) y- P$ l6 _; a& h; F1 m' _" L' z2 }
  21.         var text = '未知: ';8 m) E- q; U. ]: [+ \1 i7 z* S
  22.         switch(type){3 t8 r+ G: g- E2 R6 J& L# }8 z
  23.             case plus.barcode.QR:$ J7 S+ u5 y, A
  24.             text = 'QR: '; // 二维码
    ' e, W3 I2 T% e' Q: C2 ~
  25.             break;% _$ E* X. \$ g
  26.             case plus.barcode.EAN13:
    * }% G3 B8 f4 }: y5 n5 l2 T3 t  ~
  27.             text = 'EAN13: ';
    3 P9 O1 J0 q1 L
  28.             break;
      q* B: z- T& I# B. k8 |
  29.             case plus.barcode.EAN8:! k2 M" n5 P/ b% F: s3 A$ f' h
  30.             text = 'EAN8: ';& O) w6 `( W/ x# o9 @
  31.             break;
    5 d; |& ~% d" R3 T( E- {! |' w/ u
  32.         }5 l, v  d7 M5 _* ]5 j3 C
  33.         alert( text+result );
    / z' g6 Y- c4 r2 q" d. b' Z+ O
  34.     }
    + @3 E6 V0 i% ?, u: H, f; M+ h- Q
  35.     // 创建扫描控件; N- Y( b; O+ r8 V' \$ j+ g; T% I! S- Z
  36.     function startRecognize() {! G; H7 }- t1 I  W& y" N) R* A
  37.         scan = new plus.barcode.Barcode('bcid');4 [' i( V7 Z7 p: c6 }( h' J2 N# V
  38.         scan.onmarked = onmarked;
    * M  |" @0 o" i2 S  A5 U
  39.     }
    0 a9 v5 ?2 W. l& D, s; u# ^4 c! G$ r
  40.     // 开始扫描% j; {8 T' f/ U
  41.     document.getElementById("startScan").addEventListener('tap',function(){
    1 ?2 t5 I( E4 d4 ?1 _
  42.         startRecognize();
    9 w$ y7 G& N0 d: F. |3 `
  43.         scan.start();" O+ P9 R8 c- N; N  o- w9 K
  44.     })
    2 }! J5 f# q) |4 S0 y% }
  45.     // 取消扫描7 c  R6 m9 G( P: y- K/ M( I8 O& o) P# K
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){0 V1 X0 Q2 a+ L4 J) L
  47.         startRecognize();
    1 W4 x( |! ]7 i0 `: r2 m4 l; O
  48.         scan.cancel();
    * o% s" I( v( A" r) B* e
  49.     })0 Y1 n. C: a9 n( F6 f7 T
  50.     //  开启和关闭闪光灯" h+ |8 b: [( @) [4 x
  51.     document.getElementById("setFlash").addEventListener('tap',function(){
    : |7 T5 u$ \+ }/ f5 M
  52.         startRecognize();' f9 j+ w' |' j" t
  53.         isOpen = !isOpen;
    + o: \2 r0 i1 K4 b
  54.         if(isOpen){
    4 X& @9 Q( F, \7 \: p- S4 u: {0 r
  55.             scan.setFlash(true);' _. o& w: A* M
  56.         }else{0 c, [2 |/ U) u$ Y7 Z; ?! ^
  57.             scan.setFlash(false);6 X3 u4 E% W8 ^: T
  58.         }& S1 B* U# O$ T) G
  59.     })( T6 ?/ U' U/ U* ~+ I0 p
  60. </script>5 C5 k- f! J7 T4 m. q
复制代码
, Q) s5 r, x5 U# _
效果图什么的就不上了,和前面提到的文章中的效果图基本一样。4 k! q! @; p8 L, p6 O
4 |/ |* C8 D! d8 `. i
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-4-30 23:03 , Processed in 0.053936 second(s), 22 queries .

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