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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。 5 S, Y; q: U/ N1 v& u2 F3 Y( `
以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些: 7 G. X; o) d; ^. d* m! \
《【iOS】AVFoundation架构下的原生二维码和条形码扫描》
, d* K9 ^4 z; h1 F) {: I) g《【iOS】CoreImage原生二维码生成(一)》 ) J2 L- H& Z. t/ _' A6 G
《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》 , H/ L8 ^3 `+ c$ i0 v9 T
在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。 " s2 T9 W9 p/ ~6 E. J+ I& |
原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。
) u# }" `& D) ^1 e8 G1 C直接上代码,注释都在代码里面了。$ @0 G3 A6 q7 ?4 X/ A
+ [+ T9 j9 S7 S: F' u
  1. <body >
    2 {+ ^+ h4 _; k. p: O. F8 j' r$ e8 F
  2.     <header class="mui-bar mui-bar-nav white">" U$ Z% E' R2 d7 @2 g; W
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
    3 R) T+ w; u3 H# a6 q* b, e. ~
  4.         <h1 class="mui-title">二维码扫描</h1>
    $ D: Z% k- D$ B% W# S+ k, y' [
  5.     </header>$ b  P# V9 x( n% @! t
  6.     <div class="mui-content">: t% G7 h8 d7 l2 I2 ~6 X
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>" j" }4 h4 |/ B
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>* b6 F. H! o& z# ~/ z( V
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>; i8 \( W& B1 `; \
  10.         <div id= "bcid"></div>6 g% T3 `3 s$ B; p& P
  11.     </div>
    5 l4 Q+ M2 V6 v, p# z- N2 l
  12. </body>
      L6 q8 ?( l" \' t- G2 a
  13. <script>
      J7 v+ A3 M: w6 a9 B" z' q
  14.     mui.init({8 r  J, _1 m# o! o4 o
  15.         swipeBack:true //启用右滑关闭功能
    2 ~* C% [# t. `! g& _) k) ^4 y
  16.     });2 k- V& g  [) |# F( |3 W3 ^
  17.     var scan = null;* U5 j3 z7 D4 h. n7 J
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭
      t- {. E+ Q3 R
  19.     // 条码识别成功事件5 C6 t  v' D4 D
  20.     function onmarked( type, result ) {
    " F- k3 U7 m6 X2 x8 p
  21.         var text = '未知: ';
    + ^1 d6 H: X3 A
  22.         switch(type){
    & \; f! A) R4 z3 M
  23.             case plus.barcode.QR:" g9 Z. N, C: m/ A6 I; Y, l
  24.             text = 'QR: '; // 二维码
    ( ^; _- @  T! b& W/ z) J
  25.             break;
    - s8 J$ @3 m; C- H% G8 W  y
  26.             case plus.barcode.EAN13:
    * w2 S+ h: P* O
  27.             text = 'EAN13: ';: X9 C" U1 \: z! Y' x  y
  28.             break;
    ! g2 a3 }- m( _; F' r3 ]/ V
  29.             case plus.barcode.EAN8:, _  T# L1 n: X
  30.             text = 'EAN8: ';; o% O+ j( i2 [- g
  31.             break;( r3 ]$ N( T% O5 y; ], f8 E
  32.         }3 F4 Z0 C2 M$ G
  33.         alert( text+result );
    - B+ X6 r6 t! m( w+ S
  34.     }
    ) @6 O; \+ Y5 J6 V- E
  35.     // 创建扫描控件
    , Q2 W0 j5 z% ^* N9 s0 h9 r* W
  36.     function startRecognize() {
    ( Z# T! z# {+ P
  37.         scan = new plus.barcode.Barcode('bcid');
    ; C( Y) V% g1 c$ @7 z8 W
  38.         scan.onmarked = onmarked;
    # N# D0 X  G0 e0 H
  39.     }
    3 F( t. ~/ T+ d; {# \
  40.     // 开始扫描1 s7 E0 ]+ L1 |# _  T2 i3 T4 s$ k, d
  41.     document.getElementById("startScan").addEventListener('tap',function(){5 }- J  }# i" t. w( W
  42.         startRecognize();
    ( F1 U+ }* ?* O  Z$ }
  43.         scan.start();
    2 I8 e: b3 a3 i, f% Y- {8 f
  44.     })
    ' R! V. d. @0 d, K# Y
  45.     // 取消扫描
      G6 `  y, S" z
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){
    : S) i* S$ U  d
  47.         startRecognize();8 b/ q# V! S+ D+ c6 l1 w
  48.         scan.cancel();
      t4 G$ t9 {0 X7 w; \: f
  49.     })% @) s" W3 z4 R& t6 T
  50.     //  开启和关闭闪光灯
    3 Q- K7 y! M# V6 M9 |6 i4 e
  51.     document.getElementById("setFlash").addEventListener('tap',function(){3 B: O  p1 c, L. `  i; d
  52.         startRecognize();5 d. m7 X) G5 e+ g; L2 t- x' `
  53.         isOpen = !isOpen;% h- \; o/ a7 l
  54.         if(isOpen){
    7 D" ~' @+ O; e% x( H6 x+ W
  55.             scan.setFlash(true);  c0 b% H( ]1 O. h& b
  56.         }else{7 f- u. k+ G. W9 f) [
  57.             scan.setFlash(false);7 E3 V7 i! U3 U+ @) e
  58.         }4 m/ h* Q1 w% Q8 ?8 U0 J
  59.     })
    $ A2 P0 Y# C& z& x, D
  60. </script>7 g# [. p3 t, f1 l7 O' D4 M. S
复制代码
$ q! w! _: R9 W& d5 U
效果图什么的就不上了,和前面提到的文章中的效果图基本一样。; \$ J, S: p, C' v) w

6 I! H8 ?- p* k6 ?7 M
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-16 19:00 , Processed in 0.058794 second(s), 20 queries .

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