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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。
5 H3 N* W. I# ^. I7 t% ~3 W以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些: ( ^$ u. A) d4 }; k: Z0 M
《【iOS】AVFoundation架构下的原生二维码和条形码扫描》 6 l9 @( ]! Z5 M6 Q  o4 M/ L
《【iOS】CoreImage原生二维码生成(一)》 ! x/ {$ [* W* S2 t
《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》 - h: N, ~+ u0 ]: k  c7 Z- {
在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。 $ U2 Z) b( ?# {$ L/ L
原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。
3 X$ Q$ l- c* W  y7 [& H直接上代码,注释都在代码里面了。6 f" Y6 v1 X' f: [

  a8 W$ X1 J8 i9 L- n, m8 O
  1. <body >
    . Q. {- o7 d7 d! S& _
  2.     <header class="mui-bar mui-bar-nav white">
    $ J7 ]8 b  d5 \5 w
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>, @  m: d- j# C- h' n
  4.         <h1 class="mui-title">二维码扫描</h1>. i- R/ u9 U' d6 {+ H: c
  5.     </header>
    7 ]. U; X& Y/ G+ Y" P. ]8 \* b! D
  6.     <div class="mui-content">) x2 I" p7 a2 ^4 D3 G1 x5 a2 t  W
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>
    6 h3 E% ~! f$ K
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>8 d7 z4 {3 k  J
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>
    ; b# |5 d- q4 n
  10.         <div id= "bcid"></div>5 x/ K+ D3 h- `$ w- o7 |
  11.     </div>7 x! j! N0 H4 V+ a! b
  12. </body>% i! v* m+ ]. i# q0 z6 T
  13. <script>3 W6 Q  N9 n! |1 |2 n9 w
  14.     mui.init({- c& `* `/ c/ R0 A8 T) [) K7 B
  15.         swipeBack:true //启用右滑关闭功能5 N/ D. o- G* e  \! b
  16.     });1 G3 D" m$ H/ r+ t; }0 K8 ~* `( P
  17.     var scan = null;% W$ P/ o& h; |2 E+ r% L% q
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭! l$ f6 t  L3 ^
  19.     // 条码识别成功事件
    " T; R% L1 C8 G
  20.     function onmarked( type, result ) {
    4 l9 n# d5 ~0 A2 }7 a/ e
  21.         var text = '未知: ';
    5 `8 M6 q1 T- m4 ?! W) o, b- l2 Q8 ~& A
  22.         switch(type){
    6 i& y. ]% S: r6 ~  k
  23.             case plus.barcode.QR:
    , P5 X8 B: i2 ]3 [
  24.             text = 'QR: '; // 二维码
    5 n6 W+ u& C: H2 x! B& ~
  25.             break;- F4 X" p% t& L$ C% K) w, X& h
  26.             case plus.barcode.EAN13:# w9 N$ N3 u/ ?7 @4 L
  27.             text = 'EAN13: ';
    " e" s- h. P, Y- u8 H% N" l! n
  28.             break;
    ; [# P2 A( l" g( W/ z
  29.             case plus.barcode.EAN8:) g5 K9 J* V0 F2 r) x) k0 q
  30.             text = 'EAN8: ';9 w% ~- p0 ?& B6 I' ]+ p
  31.             break;6 N% K7 y+ Q' j, S. u* `
  32.         }
    ( d( a* t2 p- D0 `* K( `2 F
  33.         alert( text+result );& {' [4 N/ D; V8 I: C/ D6 z9 b* m
  34.     }
    5 C0 L/ a4 P# V( k; a! x  {
  35.     // 创建扫描控件6 @# l; u! @9 O2 u  o" n
  36.     function startRecognize() {
    ' U3 i$ C8 z, J/ h6 c9 G1 P) V: \/ G
  37.         scan = new plus.barcode.Barcode('bcid');
    + w3 _$ H' G% `! H, |1 Z" B/ t
  38.         scan.onmarked = onmarked; , n; u4 b' u5 Z* F/ L2 L
  39.     }
    / U# Z3 I5 U0 I& V4 W0 i5 h2 ]% n
  40.     // 开始扫描1 W& J" F. \( {. h3 N! g, l
  41.     document.getElementById("startScan").addEventListener('tap',function(){' p& Y$ j$ E7 G: ]
  42.         startRecognize();$ u- W8 N% d0 Y0 ^( D1 X# b8 v% ^( E' k
  43.         scan.start();
    , H% S' e' k7 H. M
  44.     })
    ! L$ j% u% W9 Q" N9 V/ z6 S
  45.     // 取消扫描! [, F7 x8 b; q8 C3 c/ q
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){( y/ S1 G  l: a1 n$ I  \
  47.         startRecognize();
    & i, p( u8 L# [  H! v
  48.         scan.cancel();5 l$ V) O. V  G  z3 D
  49.     })
    " O9 }2 Y: @& }2 F1 f) m
  50.     //  开启和关闭闪光灯
    - q- k- n  b0 Q! {9 Q
  51.     document.getElementById("setFlash").addEventListener('tap',function(){
    ( N: u. z5 _* h" l( M
  52.         startRecognize();
    : j1 }7 c8 \( G
  53.         isOpen = !isOpen;+ H4 M6 H, ?1 @1 T7 R
  54.         if(isOpen){
    * Q+ {, G# Y7 ?! g  I$ u7 i  F
  55.             scan.setFlash(true);' A/ Y9 E# `6 l
  56.         }else{, ^4 A4 C8 B8 Y
  57.             scan.setFlash(false);
    : ]/ m, e" T1 @$ z: u  a
  58.         }% {4 J% y! j/ T* |$ g
  59.     })
    # ?! V4 u: ^, u6 u+ {2 q
  60. </script>! N' W8 B7 M  P" k& S- r
复制代码

5 B! x. R7 G5 f( F" x& o! V% V效果图什么的就不上了,和前面提到的文章中的效果图基本一样。
0 U3 Z, A6 J/ J" k' L* w# N1 Z3 \8 i3 U# \
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-7-20 00:31 , Processed in 0.053935 second(s), 21 queries .

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