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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。
! ^4 l' v( O/ o& m3 `/ y以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些:
1 c4 L$ Z( c& W  X( @, J9 M# _《【iOS】AVFoundation架构下的原生二维码和条形码扫描》 , P" I$ ]  I3 D* `" c
《【iOS】CoreImage原生二维码生成(一)》
3 y( }' r" l; m- B7 y& v# p1 p& P% o《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》 2 b4 n; E' t8 S3 f
在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。 ( [* w0 c6 n- C" o8 s( u
原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。 5 `4 w% \8 Y1 s* v6 L% o7 S
直接上代码,注释都在代码里面了。0 `$ i1 |6 g% e
8 _4 }0 j7 \* F4 C  B3 _
  1. <body >, {. p2 w( {1 U
  2.     <header class="mui-bar mui-bar-nav white">7 [. E0 b4 \( F. ^
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>4 F1 U8 N3 |8 p0 }. S* `, T# B
  4.         <h1 class="mui-title">二维码扫描</h1>4 e# E# h1 Q6 A. ]! _( M& u/ t
  5.     </header>0 F4 z$ x9 b4 m4 ?/ y
  6.     <div class="mui-content">
    5 W' z% D/ m. |- v' @
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>- m/ r' t2 m5 ]1 B
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>2 T) p* ]1 d5 k7 J0 Q  m
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>& O0 }" M  R/ {& x; `/ \4 x
  10.         <div id= "bcid"></div>
    5 Y+ n* A  S4 e0 z" y' b8 i
  11.     </div>
    6 u4 x+ l- \: q
  12. </body>
    9 G1 F! z" O/ ?3 f" S3 i
  13. <script>
      ?/ T" }, w% `
  14.     mui.init({' f5 c7 T4 j% R7 \2 {1 [6 |1 u
  15.         swipeBack:true //启用右滑关闭功能5 y7 r# E3 \# u* e* s
  16.     });! R- g: |5 Y  r) {8 U7 z
  17.     var scan = null;
    / [8 p8 ~+ l7 |" J9 A1 l4 h) _0 J
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭
    & x$ s% _. ?: F$ }1 |
  19.     // 条码识别成功事件
    : K1 s- p# x0 s/ O: m/ U3 w
  20.     function onmarked( type, result ) {! U. `+ N# R0 G  m
  21.         var text = '未知: ';
    ! t* X3 u! f$ B' @
  22.         switch(type){+ n6 k5 b. k1 y; I, Z' I
  23.             case plus.barcode.QR:
    % T/ J" a/ E; z
  24.             text = 'QR: '; // 二维码% i4 ^; l) B; g7 o
  25.             break;1 _1 D% t8 x2 d7 N6 N
  26.             case plus.barcode.EAN13:
      N6 C7 d: |" o$ i) c( k0 y
  27.             text = 'EAN13: ';' j+ z; p: }/ H7 s
  28.             break;
    / t0 T4 b+ F' L0 g+ x
  29.             case plus.barcode.EAN8:
    * B4 O' v" @  q, F7 x* [0 f
  30.             text = 'EAN8: ';
    7 X- I; \$ }* w* @& i: d
  31.             break;3 w' I3 r/ W* u/ X
  32.         }
    0 [; R" G  t" d9 q
  33.         alert( text+result );! b$ N* h7 V2 j- w- ~, @
  34.     }* g" f3 p. x1 ]
  35.     // 创建扫描控件; t- r0 X, G" v3 B8 d2 y/ I
  36.     function startRecognize() {/ U! Q6 d# r6 S. J% |9 ?/ _
  37.         scan = new plus.barcode.Barcode('bcid');! j1 p( X3 p" r- w
  38.         scan.onmarked = onmarked; . r1 r) g: L  ?- W: S  M
  39.     }
    7 |/ q! N7 G* R% R* P. b- @
  40.     // 开始扫描
    7 W* H. Q" f3 I  l5 g
  41.     document.getElementById("startScan").addEventListener('tap',function(){1 q) I1 O+ Y: F9 J* G7 ]$ s
  42.         startRecognize();1 M/ b% J* k5 {: m( z, e
  43.         scan.start();, L+ z0 G4 @* ?6 H* S- e( K4 S
  44.     })
    / C$ d+ _1 e9 _$ Q% C8 w
  45.     // 取消扫描
    $ `' u3 Z6 v/ L
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){" v8 U. k) e' y$ V3 K
  47.         startRecognize();
    ( @$ t5 ?, T7 D8 g7 R# B% ^9 W
  48.         scan.cancel();- c, X# o5 i, r- \1 {: p! K
  49.     })
    " u# j% D& w& [6 \: }9 \7 B
  50.     //  开启和关闭闪光灯
    ( P# E) |' g! c8 }3 R5 X* w
  51.     document.getElementById("setFlash").addEventListener('tap',function(){5 v0 e, h1 d5 e
  52.         startRecognize();
    ' m: X. c3 U  E8 Y% m
  53.         isOpen = !isOpen;
    9 M' C2 O6 \0 ]% W+ H: l% ?
  54.         if(isOpen){
    ( B$ f3 j* \9 J- U5 T
  55.             scan.setFlash(true);3 i, `# Q( K" ?
  56.         }else{
    / k  l+ i( r9 }# S5 E
  57.             scan.setFlash(false);( U2 Q& _1 L. c& y6 T. l
  58.         }
    3 l3 |; [" t; K' S" A4 H; U
  59.     })
    & H& A. W) V! j. z' j4 K
  60. </script>
    9 W- L+ u  G8 p+ P
复制代码

8 a2 j! M( k# R5 d1 z- J效果图什么的就不上了,和前面提到的文章中的效果图基本一样。2 q4 P1 G: C; k( W1 m1 h8 r5 n& J) z

. g: [' I5 l! b; Z' \6 k
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-8-4 11:45 , Processed in 0.050628 second(s), 19 queries .

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