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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。
$ E% M2 @$ s+ ~0 L4 f以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些: & n) s" @$ m- k; @
《【iOS】AVFoundation架构下的原生二维码和条形码扫描》
1 F5 v( k  P! Y! N  Z! }2 v" o《【iOS】CoreImage原生二维码生成(一)》 4 E: H5 O. `3 [; N' x
《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》
. Q4 q! O& C% \6 a  k5 o在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。 ; x# W) E. K  g, E
原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。 ( U& x# y5 o1 m. U
直接上代码,注释都在代码里面了。: Q3 n4 B# Q  x- [; z
+ h2 h% [, b9 c" j  p" G
  1. <body >2 G8 O* H3 N$ |& p
  2.     <header class="mui-bar mui-bar-nav white">
    ( [; R6 f+ R3 x. n5 f
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
    1 Z5 G+ }+ T1 W! f$ C0 B( w
  4.         <h1 class="mui-title">二维码扫描</h1>( p+ R1 T" r) t- Z5 [
  5.     </header>
    7 w3 E3 V' d  I0 ~$ D
  6.     <div class="mui-content">% [- B* m* F1 i% j. }7 x
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>
    $ ~. W$ K2 g. f' C
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>  X% C# u4 u4 G0 \
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>9 s5 L3 ^& f2 B1 C6 R/ g: `' l
  10.         <div id= "bcid"></div>
      O* _8 g- ^) }
  11.     </div>
    * [6 p, p; Q# v4 F$ U. k& J
  12. </body>
    6 w9 q2 D8 W5 X9 c# [  R: |. l
  13. <script>! U4 ?$ H" T' e& f6 U
  14.     mui.init({
    % Q8 O+ e# l$ N% q5 ?' [3 n+ ~
  15.         swipeBack:true //启用右滑关闭功能/ u* I) `/ {: j* i" c) E, ~- Z9 U3 g
  16.     });
    , X- N( I$ v$ p7 f7 k
  17.     var scan = null;
    ; Q" e9 {, X# u* N/ k0 x8 j) m) v
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭
    4 @7 w1 q8 }! ]
  19.     // 条码识别成功事件2 c1 ]' }% S& z
  20.     function onmarked( type, result ) {- G* h0 x* m) h7 Z0 F9 ~/ `: J
  21.         var text = '未知: ';) R3 C$ }& K, S# v. v! Y
  22.         switch(type){
    ( ]. P% X4 `6 e
  23.             case plus.barcode.QR:
    2 B- ~7 J! m( z2 x9 w
  24.             text = 'QR: '; // 二维码1 U7 r% Q* h8 T2 @5 Q: |( I& G
  25.             break;
    & l/ [" X1 S* [2 n% T) e8 x
  26.             case plus.barcode.EAN13:
    ( u9 i4 D! b1 y3 {1 e+ T
  27.             text = 'EAN13: ';2 _9 R4 }7 _" D: A2 K. g' b
  28.             break;
    2 P( p" L9 e8 x/ B/ u- H
  29.             case plus.barcode.EAN8:3 L( y( k0 @8 a8 s6 _( _
  30.             text = 'EAN8: ';
    & M- \! m1 O( d
  31.             break;6 N2 M- @- {% ^& m: U( [1 I) a
  32.         }1 L2 I& Z: T0 ]
  33.         alert( text+result );
    / {# W# @) u& E& X8 o( e; b
  34.     }
    , {" j- G4 Z& J0 x8 L
  35.     // 创建扫描控件
    ' [* C' D) I/ c7 N
  36.     function startRecognize() {2 f* L; a8 [6 Y8 k& K" e! e! u
  37.         scan = new plus.barcode.Barcode('bcid');
    ( L: P0 }% T* `4 w+ k; o* o
  38.         scan.onmarked = onmarked;
    ' V0 l* i6 Q/ S4 p) U. @' b. a  Q
  39.     }
    : s; y$ K4 N1 k. e4 t7 I
  40.     // 开始扫描( c' r: g! L  j/ Q* ]
  41.     document.getElementById("startScan").addEventListener('tap',function(){; ^7 N8 `! _2 m" H: C0 ~! C" `
  42.         startRecognize();& L% M9 |# E2 L- v/ Q8 }/ k
  43.         scan.start();
    ; i' ]* z1 v8 E& M% T' g
  44.     })
    ) r. p2 Z$ m: v. B- y& j0 d- g
  45.     // 取消扫描
    9 F, t& ]. r# B5 L# l" V6 z
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){* m' E8 q# A) B
  47.         startRecognize();7 i% u! H0 e* o2 t" {1 M
  48.         scan.cancel();
    6 w9 c6 N( s" a5 Q& i" \, y
  49.     })
    . c7 `8 ?8 k; M4 I& @
  50.     //  开启和关闭闪光灯2 _# r# y8 ]: }8 \; s
  51.     document.getElementById("setFlash").addEventListener('tap',function(){
    # D/ s0 G0 w" o$ x8 \' u" c
  52.         startRecognize();6 b% L  D. D3 V
  53.         isOpen = !isOpen;
    " d& B8 Y+ O$ }' v. P, {/ H* J3 w! n
  54.         if(isOpen){
    4 m! f' R9 ?0 g
  55.             scan.setFlash(true);7 w5 X* W6 U2 S% c8 U% N
  56.         }else{
    ; t) h8 a% n& T6 H( O$ m5 q
  57.             scan.setFlash(false);
    ) W2 K- O1 f- a
  58.         }7 D/ t8 d, h8 n8 V) G( Q5 f, x4 l: R
  59.     })) c, o# x* d, E
  60. </script>0 `: d5 r* {0 v! D$ C
复制代码

& B% P! b" o0 x6 R效果图什么的就不上了,和前面提到的文章中的效果图基本一样。
. q" S3 P- ^* Z1 i$ r% Z4 u
* H1 e2 F: m9 j: [
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-9-21 16:36 , Processed in 0.126939 second(s), 19 queries .

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