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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。
, G; u) ?2 |2 z8 @# T4 B1 x+ I! F以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些:
1 F- z) I% a# R' A- ?《【iOS】AVFoundation架构下的原生二维码和条形码扫描》
9 y. U# S: A3 ?$ Y8 P$ L( Y《【iOS】CoreImage原生二维码生成(一)》
3 J# d; _& f) N( j3 y: c' m《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》 ! _  }' ~7 O) S8 B* S
在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。 ; R  y5 V4 v. E6 R' N$ p
原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。
. d* [7 L# N9 K8 O4 k; C% g直接上代码,注释都在代码里面了。
6 \6 g9 C& {0 Q8 ]7 j6 T  S& h5 S
  1. <body >
    * ~5 B6 V0 c8 n  Z/ k$ c
  2.     <header class="mui-bar mui-bar-nav white">1 N; z+ b  N$ G& i5 `5 ?" L
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
    + F# z3 ~& f7 @
  4.         <h1 class="mui-title">二维码扫描</h1>* ~8 q& ^+ ]9 I+ |' G% `+ H
  5.     </header>
    ( d- s6 o1 Q) h2 r; Z" K5 y' A  u
  6.     <div class="mui-content">) V. M% _# Z$ _4 R6 M
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>' D6 n/ U: }0 q! k1 M5 q! F
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>: g; R* l# K5 }# f
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>
    3 {) M, N9 k2 a% f$ O
  10.         <div id= "bcid"></div>! d5 ?% ~8 p+ s) ]* U
  11.     </div>
    % K" P! `5 {% d  ^
  12. </body>7 k' J+ ?1 C# ^; ]# p* `6 f  t8 O
  13. <script>8 ]* R1 o2 b$ ]8 t
  14.     mui.init({" C7 @; ~6 M+ B5 L$ H( |& V  u
  15.         swipeBack:true //启用右滑关闭功能
    8 z- j" ?8 t' i
  16.     });
    - p8 l/ m! S/ ?! c" ]/ @! l
  17.     var scan = null;
    0 w6 C! D: W3 b
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭3 y7 d) z! A  Q  A2 U. h
  19.     // 条码识别成功事件
    1 z5 Q" K: |3 X4 _5 x
  20.     function onmarked( type, result ) {7 H& ?: G( f, R+ T2 j* S
  21.         var text = '未知: ';
    & g8 S" B; _) ^! A9 h( q& v
  22.         switch(type){
      t& f5 O: C, t
  23.             case plus.barcode.QR:
    . U1 ^( ]. S- _( C5 _1 l7 B
  24.             text = 'QR: '; // 二维码2 R+ T+ i+ J4 Z' Q0 n& C. Y5 G
  25.             break;
    , q' \" o9 v5 j' y$ f$ L7 Q+ r
  26.             case plus.barcode.EAN13:; Q  G& I& w% w3 o* _
  27.             text = 'EAN13: ';# F/ y) X, c$ F6 v( I$ n
  28.             break;0 c- B- X( t& v
  29.             case plus.barcode.EAN8:
    6 r5 l" c! a) F8 `
  30.             text = 'EAN8: ';' L( T$ W; I! _) \8 @1 Y% Y
  31.             break;0 U& c! Z  c6 \4 P* a
  32.         }$ w- D( O# `9 p! `. y0 d; g
  33.         alert( text+result );
    $ Q( b3 l4 Y4 _( G
  34.     }0 i1 E+ T7 e% v
  35.     // 创建扫描控件
    1 Z3 w% h5 U0 U$ ~0 @" P$ U1 F
  36.     function startRecognize() {
    6 J- J) U- k6 k! m$ W3 a% c
  37.         scan = new plus.barcode.Barcode('bcid');
    % R! ?! W( o" X5 y9 {% f
  38.         scan.onmarked = onmarked; + d, ^9 O8 H6 K. i5 X
  39.     }
    5 l$ Q1 @- h8 W4 O4 V5 _# R) Q, `
  40.     // 开始扫描1 t# h/ Z* t: p1 ~! ?* B9 }
  41.     document.getElementById("startScan").addEventListener('tap',function(){, d" P! j0 I7 |- i
  42.         startRecognize();
    5 K6 f+ ]7 N0 g9 I' ~* Z; V2 y4 P/ Q
  43.         scan.start();
    ! E# e) @5 t/ ^+ k/ j5 j
  44.     })
    ; t; d. G7 w- _
  45.     // 取消扫描3 \+ I0 W5 b4 \9 p; T& b
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){
    ; i. E+ i" m4 x
  47.         startRecognize();$ A% F* Y1 j1 Q# B4 u; \5 {# g+ Q$ n
  48.         scan.cancel();
    0 f( A& e' P; D* g3 Y
  49.     })
    . e+ a( J# V, p' t
  50.     //  开启和关闭闪光灯
    2 k/ O7 D' a2 l' c4 E
  51.     document.getElementById("setFlash").addEventListener('tap',function(){
    " y, [6 H* R3 \
  52.         startRecognize();& `. r- r% i; ^; Z6 O1 M1 }
  53.         isOpen = !isOpen;! g3 g2 t: W. r& i
  54.         if(isOpen){5 c3 f% ]6 l% e! M
  55.             scan.setFlash(true);) s  T6 t& q+ O4 z. L! U/ M$ G) A
  56.         }else{
    . L" `# c' I/ \% p/ Y( l7 ~
  57.             scan.setFlash(false);  \! x: C& F: X+ E& q; Y
  58.         }
    ) O4 C& X- [1 }
  59.     })* y! z" m! G( `  `8 I
  60. </script>
    ; E; O& N6 L% D1 V. y) X5 l
复制代码

6 B! t: h0 s$ |# z4 p效果图什么的就不上了,和前面提到的文章中的效果图基本一样。% \/ w0 a4 v, A/ z: Q8 `7 z# z

/ }1 n6 {; m* m6 s1 `9 X7 R
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-1-30 20:40 , Processed in 0.056936 second(s), 19 queries .

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