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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。
2 r: Q% G- [4 O2 q& R8 r以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些: # }+ s9 f  a' U1 I& \
《【iOS】AVFoundation架构下的原生二维码和条形码扫描》
# h. A; q. t$ K% l) }《【iOS】CoreImage原生二维码生成(一)》
8 T: B. t$ f) Q- m# E《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》
5 c+ \2 K' x4 j' h; s8 x在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。
! d3 P0 r( r1 z- ~+ w0 u$ u( Y( [原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。 4 P0 U! @- T% m4 Q3 u
直接上代码,注释都在代码里面了。
+ h+ N1 s2 H% M- e4 ^/ C0 U  ~% u8 W% `- f
  1. <body >0 {2 x3 A4 B* y4 }" E
  2.     <header class="mui-bar mui-bar-nav white">
    ( i& t5 S! ]( C1 w  C0 E
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
    ( Q1 l2 ?' a3 B0 S$ T1 |
  4.         <h1 class="mui-title">二维码扫描</h1>
    5 W! V+ S! F/ g, R$ P/ r
  5.     </header>3 [' o4 [2 R4 q  G* d; L, i4 \
  6.     <div class="mui-content">: O8 h9 x4 X  m, p
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>: Z1 s$ A1 @) p: Z2 N& Y3 h; ?
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>
    & A, K  @- `- Y- D# v
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>' S; h5 [+ W7 O6 f5 d+ J
  10.         <div id= "bcid"></div>) U, F% S. K8 Q
  11.     </div>  M1 q: V9 b" _# w. a6 B  N8 T
  12. </body>' J! x" y7 H+ x& g+ ?
  13. <script>
    . V8 T$ J3 d! s0 g; s
  14.     mui.init({5 W( D# e1 v0 t: J+ |. L" L
  15.         swipeBack:true //启用右滑关闭功能
    6 W% s: {- p1 E
  16.     });3 C. E, z  L( k; D8 q( s2 j
  17.     var scan = null;
    + G* B: x3 J* E5 z- Y4 @& z
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭
    ' C7 S( W2 k8 j+ r
  19.     // 条码识别成功事件* ^" ]. S1 L; ~0 D, S! B! j
  20.     function onmarked( type, result ) {& D( W2 m" W+ ~2 D
  21.         var text = '未知: ';$ j( ]0 Q0 v/ j( l" y$ V6 b
  22.         switch(type){# f! {/ m3 B0 o2 e
  23.             case plus.barcode.QR:
    4 u, R( g0 J0 a1 B
  24.             text = 'QR: '; // 二维码' O; u: I0 V* N/ ~$ ^
  25.             break;
    : K5 t, {) w, G' r8 n- \  Q1 t
  26.             case plus.barcode.EAN13:
    ( U( h$ \. O( L' l4 K( \) U4 k
  27.             text = 'EAN13: ';. m! z6 X! r& e# S
  28.             break;/ v' F+ X0 I2 ], u. n
  29.             case plus.barcode.EAN8:
    5 g- I2 @6 v, v: k# ?: B% [" t
  30.             text = 'EAN8: ';; w& G4 E% _" y& o
  31.             break;, w1 _# J" |# a$ g( F
  32.         }4 e$ B, @6 w# u9 ?
  33.         alert( text+result );
    0 Z) g; x7 O6 y9 |( u
  34.     }
    & i+ ?2 s; O6 s
  35.     // 创建扫描控件
    9 N3 B& {3 k9 A5 a2 `
  36.     function startRecognize() {
    6 o- z' T( t; T' r# S
  37.         scan = new plus.barcode.Barcode('bcid');# W, n7 S! B; s% G  U
  38.         scan.onmarked = onmarked;
    . t: m, E" w6 O) n' ~% M
  39.     }
    4 A. u% L* J# ^2 b9 N9 D
  40.     // 开始扫描4 J3 ]1 y) J' Q
  41.     document.getElementById("startScan").addEventListener('tap',function(){: d7 f, A  o. H7 e8 N
  42.         startRecognize();0 e; s2 G" S) J4 t
  43.         scan.start();
    * c& X! J1 F; _, O
  44.     })
    # U+ a0 c0 u0 M& [2 h5 `
  45.     // 取消扫描
    , s  O0 l, K( z
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){
    3 h! k. T9 C  K6 k& }- O9 m" y
  47.         startRecognize();+ ]# v: w9 A1 U  Z8 u3 H' e* Z8 G2 k; D
  48.         scan.cancel();+ q" c: f, K3 F; k2 c, y8 l8 h
  49.     })
    # {. _/ t$ X7 F/ E
  50.     //  开启和关闭闪光灯
    3 F3 p- M! i2 V! Y' Z% x
  51.     document.getElementById("setFlash").addEventListener('tap',function(){
    ! D  Z2 w8 L8 Z! B+ e! J( D0 i
  52.         startRecognize();. p) r0 p- |) ~! \2 Q) G
  53.         isOpen = !isOpen;8 I6 F) Q7 _" v5 Q& W% ]- b1 S
  54.         if(isOpen){
    # o2 N( p$ J1 j  ^/ B- _8 O
  55.             scan.setFlash(true);* X3 C. X$ h8 r% C! r; k3 c
  56.         }else{) e) ^) ?9 u& W% R4 f8 H& s
  57.             scan.setFlash(false);+ N9 X4 ^+ e( W. _( b7 M
  58.         }$ K( s" D4 `; E& X5 D# H- N' ^
  59.     })
    0 ~! }2 T$ O2 Z. i% R
  60. </script>5 \: M/ _" I0 H) P0 V" i( U: R: C
复制代码
/ {8 ?  q3 {% L! p% y& ~; E: C& z3 Q0 W
效果图什么的就不上了,和前面提到的文章中的效果图基本一样。& A' Q; x4 {1 G4 s' {  T2 m
' q! S8 u) h9 w5 ^- r
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 20:03 , Processed in 0.111895 second(s), 20 queries .

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