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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。
* h. a% Y* h8 w4 X$ X2 v以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些: $ T/ x! `& g; b
《【iOS】AVFoundation架构下的原生二维码和条形码扫描》
; g- B. r/ n! l7 r# b( _《【iOS】CoreImage原生二维码生成(一)》 ) Q& A1 }; ?" Z3 o0 r( l+ V. W) w
《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》
3 I0 S, a2 v! b# j在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。
: b1 e" T# b) l# s' W! K原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。
9 l4 X# v) n0 T% `4 f. @' Q直接上代码,注释都在代码里面了。
4 _' b7 Z5 O, x! y% B3 g9 T8 y
# b' @: m+ Z0 D) C  f! @* h. u
  1. <body >) M* b2 H; S/ M, @
  2.     <header class="mui-bar mui-bar-nav white">
    ; P, b# h1 C) B) L) N& {% i! `
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
    - T" J- n0 F' {* n
  4.         <h1 class="mui-title">二维码扫描</h1>
    " C1 r, E* V  A$ L1 y, ?( z
  5.     </header>
    1 X) K5 m9 h. J% z1 n& W. ?
  6.     <div class="mui-content">
    - \# W8 d8 B$ a8 Q( D4 Z2 L4 M4 m
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>  y, z9 J7 ~8 E  _( K* W* B) O
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>6 O4 Y) I5 m1 }4 ]* |
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>$ ~5 n3 I7 [! x. H  R
  10.         <div id= "bcid"></div>. d2 h5 H; l' D% d
  11.     </div>
    5 s, v. V" ^: m! Z
  12. </body>
    5 e! K# L3 {1 K
  13. <script>
      Y3 o9 ?- J1 q6 X5 t8 R2 H1 T8 v: {
  14.     mui.init({& z  [& F" P) k& y# e7 D
  15.         swipeBack:true //启用右滑关闭功能
    8 r  R- h; ]" k3 R  k
  16.     });! ]& L8 A' A, w  d1 {* ^- ]+ r: a
  17.     var scan = null;
    0 j! f* N/ D  ]4 b: r2 p8 D
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭
    + h& n. b2 k: D8 f0 @! e. \
  19.     // 条码识别成功事件
    # e( |4 [/ {6 u6 z+ b
  20.     function onmarked( type, result ) {' b6 [! ?9 I: j: ~4 n0 _
  21.         var text = '未知: ';5 d. }' h! K1 W! Z8 u
  22.         switch(type){
    7 \6 ^* p  B; }0 h" ~2 n
  23.             case plus.barcode.QR:: G8 O8 B8 S2 w1 g
  24.             text = 'QR: '; // 二维码
    , R6 t% t8 s8 |" N
  25.             break;: U- A( A' `; B+ a$ f) v; G
  26.             case plus.barcode.EAN13:
    ! S3 C3 z' |: k" h- |
  27.             text = 'EAN13: ';3 U+ J2 R0 c$ F' V; I5 X
  28.             break;0 U# S# @0 m3 }& y) s
  29.             case plus.barcode.EAN8:+ V/ p2 \* j4 v& g0 n  R
  30.             text = 'EAN8: ';6 f" s! d9 D* B9 M" F# J
  31.             break;* _4 e  r% S" L
  32.         }, A3 M( q* _. P: o3 z9 i  E
  33.         alert( text+result );* m' P- s3 Z* e, P6 R3 C
  34.     }0 \- r/ m: Q7 X) X
  35.     // 创建扫描控件
    7 F( ~+ L% R3 `& u
  36.     function startRecognize() {  f+ e- T6 t2 }2 [
  37.         scan = new plus.barcode.Barcode('bcid');( z; }+ n& S% s; @+ Y  }6 h
  38.         scan.onmarked = onmarked; & a6 s+ R5 V1 g
  39.     }& n; {* _" A7 h) B) I
  40.     // 开始扫描6 Y0 _- h+ @* I2 w7 u
  41.     document.getElementById("startScan").addEventListener('tap',function(){) K6 ?$ [; Z7 Q( B5 B
  42.         startRecognize();
      P8 R+ g5 V  s
  43.         scan.start();" _$ H, Q) m2 [
  44.     })
    9 s) o& @9 k/ @, i9 U
  45.     // 取消扫描5 Y9 l0 c3 z6 c4 P
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){7 I8 w/ P% H2 ^8 x
  47.         startRecognize();7 U/ g! Y* P0 U/ n( j' v8 }9 J
  48.         scan.cancel();' t3 e5 d- _' K" H( D
  49.     })' n9 e9 V  S: k8 b* |
  50.     //  开启和关闭闪光灯
    5 g1 X/ K$ l6 ^# i9 W" }
  51.     document.getElementById("setFlash").addEventListener('tap',function(){. `  B# h% _7 r8 }: N: X  g
  52.         startRecognize();4 b1 X- J  h" \- ?3 e
  53.         isOpen = !isOpen;
    ' \1 G* B: X9 D; w  w
  54.         if(isOpen){0 ]$ X" A! t1 q
  55.             scan.setFlash(true);
    9 R! g* `. s6 s" A
  56.         }else{1 p  J1 Y9 R& [- z8 |, y3 i& V
  57.             scan.setFlash(false);
    ; V  ^" U& s3 v% I3 N+ q+ }2 R
  58.         }
    6 ^3 b/ x" h, ]0 h
  59.     })
    , j9 ^7 a3 T$ m1 t, R
  60. </script>+ O3 p% c. ]5 [1 o: C4 T
复制代码
  V% N5 ?. O; z. u) z
效果图什么的就不上了,和前面提到的文章中的效果图基本一样。
7 W1 _" B; u% Z! z4 J# |* }* J- U" v! t3 T6 n
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-17 20:21 , Processed in 0.054946 second(s), 20 queries .

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