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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。 , Y3 Y! r( R* ^- S8 }  Q* c' S
以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些: 8 ?: D" H2 [$ k0 v
《【iOS】AVFoundation架构下的原生二维码和条形码扫描》 + k" S- w7 {; H' r: I
《【iOS】CoreImage原生二维码生成(一)》 + h* z6 ~  `+ V6 C" p2 B/ _4 d
《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》
; S) C2 N! \6 j6 c在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。
6 r, J! }, |% W- d- ]" [原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。
* m4 p2 J, i5 q! E% s' y- x直接上代码,注释都在代码里面了。
8 u$ a  j0 p& w; t
3 g" X1 P  [) O
  1. <body >( h, q' O5 l3 d3 W& G1 H* [
  2.     <header class="mui-bar mui-bar-nav white">( }1 H* v6 P$ T  I
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
    ' H( e2 n& a" }3 p+ ?9 {& E
  4.         <h1 class="mui-title">二维码扫描</h1>
      ]8 ^- @% l" @8 X2 A0 d
  5.     </header>0 b$ u" R. m" ]2 V$ k1 m. s
  6.     <div class="mui-content">
    ! s7 V8 L& q" U! g, E! a
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>2 K1 K  i2 a: I, J& J; _4 l6 c
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>; G/ m/ j+ I; @1 h
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>; n$ |4 {1 F' A) E/ w9 a5 c; `
  10.         <div id= "bcid"></div>, g  d0 P$ C% E. j2 W' I7 e5 D
  11.     </div>' T5 J2 P9 I  ?) f
  12. </body>
    # Y% Q1 R3 s1 Q2 i( x0 t9 Z
  13. <script>) l7 N# E) r- Y% c
  14.     mui.init({5 }- J6 b8 |0 ^3 H  Q; X
  15.         swipeBack:true //启用右滑关闭功能) A! [0 T, B" d/ a) [* t
  16.     });, R# K; I1 V. `/ q3 Q/ f5 y
  17.     var scan = null;
    + `: u# w8 v2 U* A5 L
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭
    2 U4 l: q! @; E6 r5 b8 R
  19.     // 条码识别成功事件8 ~7 n  X4 p0 Q0 u
  20.     function onmarked( type, result ) {, Z  `% |4 e; ?, m2 o4 e0 X
  21.         var text = '未知: ';
    - Y3 ~. a/ m! @  v
  22.         switch(type){
    4 n! z/ q6 @# B
  23.             case plus.barcode.QR:
    ( J& P. y8 Z% Z2 C. e3 ]7 }
  24.             text = 'QR: '; // 二维码
    " k, x* T) V& \7 o
  25.             break;
    ' L8 l, c# D  |- f/ z5 z
  26.             case plus.barcode.EAN13:
    5 J5 ]. ?, W8 ^; Y
  27.             text = 'EAN13: ';) @% N* r1 Q4 l; v0 s
  28.             break;
    & C" C; b) O: |% a4 d& K, J$ u
  29.             case plus.barcode.EAN8:
    " E" f; }/ J* D) s; ^  ?. c
  30.             text = 'EAN8: ';% b; P9 X1 y% W4 c- s/ \
  31.             break;& y/ R6 o+ J# c* b, i
  32.         }9 u. |% h( R' H8 G" s3 _. u6 j2 k
  33.         alert( text+result );
    / v/ y: q$ h" j4 b4 j
  34.     }
    ( H3 m/ }0 f" Q- L, y/ t
  35.     // 创建扫描控件$ T! v# c4 Y2 b: F  ?) b
  36.     function startRecognize() {
    : u" e2 B* C/ p" E% s  u  W
  37.         scan = new plus.barcode.Barcode('bcid');5 Q. P1 R0 L* _+ o
  38.         scan.onmarked = onmarked;
    " H+ E+ T  `) u
  39.     }/ T8 s0 |6 F& N1 F" p4 d3 y7 u. O
  40.     // 开始扫描( O- V- `& K9 W! v; p0 Y# n
  41.     document.getElementById("startScan").addEventListener('tap',function(){9 F% H) T. x5 r
  42.         startRecognize();2 p& g8 F4 Z1 E3 g& k9 ?
  43.         scan.start();
    ' {3 Y# h4 ^7 c& m7 l2 t7 n
  44.     })1 F& j' P- {) I, e* r
  45.     // 取消扫描
    ) L2 H( D5 f% J5 u% s
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){
    + ]2 L6 R7 c! t: [- r" m, Y8 `/ H
  47.         startRecognize();
      r! Q( a4 ~5 j, i0 j
  48.         scan.cancel();
    7 A& K& \1 `; f# \, q  k' i
  49.     })
    9 C! L8 \- u/ ~9 E% U
  50.     //  开启和关闭闪光灯
    / E1 T. l' q5 F& _
  51.     document.getElementById("setFlash").addEventListener('tap',function(){
    3 f  }. g% n3 k$ W. P* M3 A
  52.         startRecognize();5 k, k0 d# J( S( B4 P- ~
  53.         isOpen = !isOpen;9 b7 d- d, j+ b- ~2 S
  54.         if(isOpen){% W! A( Q$ |& g- l# \7 a2 L
  55.             scan.setFlash(true);
    * J& J, t( R) I. w( C% G1 ^* \
  56.         }else{  q' o% g3 r' ^9 V: y
  57.             scan.setFlash(false);& W0 O9 z# W5 V/ x2 X
  58.         }& Q4 H6 ]- d) _- e
  59.     })
    ) _% y1 Y/ ?  }8 j1 N" p
  60. </script>
    ) O" E1 y: ^2 p
复制代码

7 D" |6 N) [* C* X% z效果图什么的就不上了,和前面提到的文章中的效果图基本一样。& D# c" q" b2 G
9 c# W3 w1 _( j  ]4 N
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-5 14:27 , Processed in 0.114096 second(s), 20 queries .

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