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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。 . J9 Y, ~2 `; F0 U8 J' a) _9 r3 _
以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些:
) m4 z8 J9 W) u( K: u' R& C《【iOS】AVFoundation架构下的原生二维码和条形码扫描》
+ g) y, {7 a% b# V6 l. g- f《【iOS】CoreImage原生二维码生成(一)》
) q1 b$ m: K2 [+ P6 T7 X2 P; t《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》 0 n* y; h4 ?6 f' Q$ x* N
在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。
( Q3 }- c0 r6 I: D原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。 3 G6 W0 d$ V5 r& M+ z; I+ ]
直接上代码,注释都在代码里面了。
. [2 n8 V* w" J7 \/ x, L3 a; o' s
  1. <body >( z0 Q. p% f' B" Z2 [
  2.     <header class="mui-bar mui-bar-nav white">& b4 b: }$ n* b5 `. o
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>7 O( p- W' k9 H" E/ l( L! G
  4.         <h1 class="mui-title">二维码扫描</h1>1 K  @* Q1 ]7 o7 w
  5.     </header>
    * k5 [$ C4 P" F) t# H' w. n3 P$ L+ _
  6.     <div class="mui-content">1 J# P# r, G1 o* }  f- s& P
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>% t. M- }) u$ r1 d
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>
    ; V9 m; D" _/ L# T; R" i5 ~2 g
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>* ^& F1 ^+ ?$ [
  10.         <div id= "bcid"></div>
    7 g% j8 A0 b$ M7 D8 H0 ?
  11.     </div>- V9 u5 A" O& j/ C5 A; t1 `6 @
  12. </body># q3 j0 U& A% _
  13. <script>
    ! @% [2 V  M' X/ T
  14.     mui.init({
    ( {4 d3 |3 H; A$ c  }# P( o
  15.         swipeBack:true //启用右滑关闭功能3 b% I* m3 v( V0 _
  16.     });
      ?4 C% F4 X% M6 S/ z; X
  17.     var scan = null;- A7 I+ @3 B- T. U
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭
    6 F* V6 m' I% D
  19.     // 条码识别成功事件
    3 U: a8 n# ]: i! V7 r+ T% M
  20.     function onmarked( type, result ) {$ y: n4 b7 p  k5 v
  21.         var text = '未知: ';7 K/ o1 l; @, _4 l: j/ L2 ]
  22.         switch(type){
    % a# K+ D* l* |
  23.             case plus.barcode.QR:* {5 P; [% q: q; i9 j
  24.             text = 'QR: '; // 二维码
    6 D* B4 y$ q( T. O
  25.             break;
    1 t5 n# i- r0 L# K
  26.             case plus.barcode.EAN13:5 S! y  C8 z8 ?( d9 W: n5 O2 ]
  27.             text = 'EAN13: ';& z* f9 c. J  v: Q+ _7 P0 ^
  28.             break;" |. D0 k6 Y9 _+ [& [7 i' T* T
  29.             case plus.barcode.EAN8:! p) Q* z4 U/ U7 g
  30.             text = 'EAN8: ';
    $ |5 t4 B0 e9 m( K# C+ ?
  31.             break;
    ( W. a: X3 o. k
  32.         }+ F" O* I. o& g+ b/ ~+ L
  33.         alert( text+result );
    4 X, Z' t' a+ ?8 Q2 U" u+ Q
  34.     }; Z8 t. C) _* j2 s) C  _
  35.     // 创建扫描控件2 E, H4 P9 {: O: ?6 W- a
  36.     function startRecognize() {
    0 ?9 D8 W$ R2 u1 j% G/ S  W& f! ?
  37.         scan = new plus.barcode.Barcode('bcid');& ^, x$ ~8 u' W7 r/ d, W8 q+ C# J
  38.         scan.onmarked = onmarked;
    . p3 f! E% g  a- h/ V- y* Q
  39.     }
    ) N2 ^8 N2 k( B7 `5 Z' b
  40.     // 开始扫描
    " i* [& @& Z9 E) ]7 Q2 C  w
  41.     document.getElementById("startScan").addEventListener('tap',function(){+ o- h; _/ N$ S! I0 f! R
  42.         startRecognize();' ?* p$ ~8 b5 Y+ ?
  43.         scan.start();( h! X9 Y2 u! y. u' y  q# d
  44.     })
    ; p% g5 d2 w( R7 |) z
  45.     // 取消扫描
    8 D' b% ~/ G' u' i' k
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){5 b3 C4 S9 k0 D- p/ w# s
  47.         startRecognize();
      e5 m+ E3 ^  E8 o  `1 ^, S4 m
  48.         scan.cancel();
    ! f. q2 Z* a# _' T; z' H' B9 y0 n
  49.     })
    $ K1 ?" U2 L8 W$ J
  50.     //  开启和关闭闪光灯5 t$ ]+ y; y* F, n
  51.     document.getElementById("setFlash").addEventListener('tap',function(){
    % ]' N9 `5 `1 K; [# N) _* s
  52.         startRecognize();
    - Q' m) Y2 [- V
  53.         isOpen = !isOpen;2 ?, ~9 q* {7 }* g
  54.         if(isOpen){% t4 k% I% n$ i6 D
  55.             scan.setFlash(true);/ B) f6 @( v" r5 n6 H; W
  56.         }else{
    ; R% V: V4 N9 }# c
  57.             scan.setFlash(false);2 r- H0 R. ~) H/ {& I) ?
  58.         }
    / b8 O5 z" l1 x, t& ]' ?
  59.     })
    - h8 y: p% u! W4 W! X, w8 D: P
  60. </script>
    + D% E5 ^3 W8 }9 Q9 E' L
复制代码
- N/ `3 Y! j! a, v
效果图什么的就不上了,和前面提到的文章中的效果图基本一样。2 G) Z; E. ^5 o6 P

1 h2 Z* I! Z4 t. N
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-3 21:49 , Processed in 0.123059 second(s), 19 queries .

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