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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。 * c1 N4 R3 h( v7 J+ q$ P4 R) v
以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些: ( L4 F4 f0 a. }  G
《【iOS】AVFoundation架构下的原生二维码和条形码扫描》 " h" i, R7 X- \& ]2 ?( i
《【iOS】CoreImage原生二维码生成(一)》
2 F5 K# u8 R- @4 I) G6 }《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》 ) U8 c; G$ B$ I7 `
在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。
: R/ Y& I- O$ l, c" c+ K5 X9 X1 C6 x原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。
5 @: K  N! f+ n6 J3 t4 j+ U' ^直接上代码,注释都在代码里面了。  I. d! N( V8 A5 U6 t# [) C4 L

& {2 w7 K* z" j) t
  1. <body >; r9 R8 L% M$ t- w
  2.     <header class="mui-bar mui-bar-nav white">: H! k. B, n+ p5 o& o
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
    % H- r% }  M7 E. {4 j/ E2 z3 O
  4.         <h1 class="mui-title">二维码扫描</h1>
    # H: O1 m7 o6 f% z" [
  5.     </header>. ^+ F$ B& W9 ~' B1 _- W
  6.     <div class="mui-content">) \, q2 g) q% J0 g2 [) a
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>
    $ n& O+ b" J, A, N$ V! }. d; r; q
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>
    : ]% A: F/ t4 ~
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>
    % |4 e+ I8 O4 n3 a
  10.         <div id= "bcid"></div>  `% _3 Q) N3 l, c  a0 y
  11.     </div>
    5 F: w! Z7 m- K
  12. </body>
    * h& G8 a$ B; O! y5 V. f  p
  13. <script>
    9 Q, v% U' J; i- s
  14.     mui.init({
    , X) T$ c) J8 M  g5 P# ]
  15.         swipeBack:true //启用右滑关闭功能
    & e5 |! d( M) {/ ~
  16.     });
    . g4 M+ N% B7 w8 Z; Q' X
  17.     var scan = null;4 h/ \& X- a5 I8 R! O0 u6 u% k
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭
    6 K$ U! K8 E: [1 \! W) m
  19.     // 条码识别成功事件' W9 d  j7 @0 D8 a
  20.     function onmarked( type, result ) {  ?6 Y& e  N6 S8 B
  21.         var text = '未知: ';+ p6 [  t5 O  e4 @
  22.         switch(type){
    9 @1 X$ \: k$ X- v' h1 x7 b, c# U
  23.             case plus.barcode.QR:
    # }2 j& ~% k! J$ G" ]& N& q
  24.             text = 'QR: '; // 二维码
      _: M% E% I7 P# G% v
  25.             break;7 o+ J8 e. A( p
  26.             case plus.barcode.EAN13:
    / o% r' N2 @/ J8 O! t) q
  27.             text = 'EAN13: ';
    % {* R8 j. d/ T" s0 d& K
  28.             break;/ q0 W% W# F; l& u2 R
  29.             case plus.barcode.EAN8:
    " J" d( a0 R  n. S( o6 L- m/ R3 l
  30.             text = 'EAN8: ';7 X: L3 S5 L& c# M1 d6 i4 `
  31.             break;
    0 n' ~2 k2 D. s5 l& d$ s" p. {
  32.         }
    0 H- \8 F2 Q& b! y: j
  33.         alert( text+result );3 [" l8 `( n8 K) b
  34.     }! S, l+ ~9 W* U( S: w0 G. G
  35.     // 创建扫描控件. G2 _6 w& Z* `+ y4 |  a
  36.     function startRecognize() {  R$ O' d5 e* L8 j* I
  37.         scan = new plus.barcode.Barcode('bcid');
    : y( J4 k8 x# x1 |
  38.         scan.onmarked = onmarked; ' ~0 z- t: ^7 A
  39.     }
    ) V( p8 a% `7 J; X% C3 i
  40.     // 开始扫描( K" f0 v: ?$ _( `% C8 n
  41.     document.getElementById("startScan").addEventListener('tap',function(){
    * V& u, y3 {. {5 h' m
  42.         startRecognize();  \" y0 l- ?6 o4 e! L
  43.         scan.start();
    0 J' ^/ k0 Q, a6 `0 R
  44.     })* }$ q0 w9 K1 ~0 ?
  45.     // 取消扫描. e" F: x# X" f% F# @# ~  R9 ^
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){
    9 Z- {" U5 @2 C0 Q/ N
  47.         startRecognize();, E8 h# F8 `: S( O2 C
  48.         scan.cancel();5 ]5 m6 I) f$ x1 f1 K! h: L
  49.     })
    % x3 b. i) [5 ~4 _$ U  c
  50.     //  开启和关闭闪光灯" K  p' X/ T# ~& k
  51.     document.getElementById("setFlash").addEventListener('tap',function(){% n, s! `/ [# q5 t# ^
  52.         startRecognize();
    8 H1 P' t5 {4 G- v% k
  53.         isOpen = !isOpen;
    : E: A, I9 W# p' X  y
  54.         if(isOpen){
    9 R) C7 D) d2 w/ M; g# r+ R
  55.             scan.setFlash(true);: W: u& o  ]& c/ ~+ B# s
  56.         }else{: N% e4 l4 Z# w/ s) B
  57.             scan.setFlash(false);, W6 D" H' h- l6 s# h
  58.         }
      `  h# u. ~# m$ u' D) q
  59.     })1 o7 T3 a. a; e6 m$ m" n
  60. </script>
    2 q  K  U  s' f1 R9 n7 Q
复制代码

$ n# {" ]: h. |& K# t2 H5 _& C* [效果图什么的就不上了,和前面提到的文章中的效果图基本一样。/ u( ]& f5 j, i: R8 H& L

' ~* ^( ?. ~+ W7 B! |
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-7-21 10:29 , Processed in 0.065488 second(s), 21 queries .

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