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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。 7 k+ p0 K" @3 @6 e) M  ]
以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些: 6 F2 Z$ y& q  P3 a& J8 [6 u
《【iOS】AVFoundation架构下的原生二维码和条形码扫描》
2 P/ o8 ~$ n6 e% h7 V《【iOS】CoreImage原生二维码生成(一)》
5 M0 g' [! H& F  L0 p6 r; `7 Y7 N《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》
- q0 b$ a. n5 X' L0 y/ p在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。 & y/ G6 m% ]2 O5 `$ e
原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。
) i3 v5 ^$ S$ ^1 b! q直接上代码,注释都在代码里面了。
) Z1 v2 l' w4 [0 a, M' B2 n
% j( \8 I  V% n3 I# D! R
  1. <body >
    2 s" I5 Z; b5 `' x# j% V
  2.     <header class="mui-bar mui-bar-nav white">1 u4 d6 j2 k! H7 v+ d* k3 N. W, ^9 n
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
    : N: L/ Y; ~  f) Y
  4.         <h1 class="mui-title">二维码扫描</h1>
    ' n1 S" h" L2 `4 {0 H
  5.     </header>
    : i9 N6 C4 N9 G) T
  6.     <div class="mui-content">0 H% r  t4 w$ E; G
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>5 {, P4 [2 I" w' ]
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>8 q% ?3 H/ O8 h4 v( S
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>
    ' _- N$ s# J) @5 C* Y& `  q
  10.         <div id= "bcid"></div>" E( Y' j5 {! Q6 i5 U- l/ p" r
  11.     </div>
    " K9 o/ E$ v7 j- W" H8 A. j0 x$ n
  12. </body>
    " c6 M0 `/ m6 e% `
  13. <script>
      r, J/ L' j  B6 o/ g# C
  14.     mui.init({
    + s. P; ~  O: O! C, N/ v' i1 J
  15.         swipeBack:true //启用右滑关闭功能
    $ g$ N; [+ t1 n' C  Y
  16.     });
    , n5 M  @% [  p  N
  17.     var scan = null;# v' Z# j! `; ?2 ~7 o3 N6 R8 j- b" Y
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭* K9 F+ g! W/ w  u& u
  19.     // 条码识别成功事件4 r# i7 f$ t/ V+ L/ x5 t
  20.     function onmarked( type, result ) {' s2 q$ U5 H2 `3 i% I! Q: a- L1 a2 F1 ~
  21.         var text = '未知: ';
    ( b3 b4 t3 J4 K" d( Y
  22.         switch(type){5 F) e8 d# O' t& ?1 u. W
  23.             case plus.barcode.QR:
    : V$ t4 X/ U/ d" V9 w2 u
  24.             text = 'QR: '; // 二维码$ A! V% h( ^3 T) z' j+ J# ~2 g
  25.             break;& u+ R4 z+ t) D$ Z' D! H
  26.             case plus.barcode.EAN13:
    ) z5 }( w! [  {, t
  27.             text = 'EAN13: ';8 y$ K3 R" ^/ X0 `' O9 s; W
  28.             break;
    ; b; U; q% `& e4 _$ K! j# S% p
  29.             case plus.barcode.EAN8:$ l; o3 R( E6 A, E8 J
  30.             text = 'EAN8: ';
    ; `, O- l% V6 A  v$ ^0 T6 u
  31.             break;" C3 n  L2 z& U  \4 m' r2 N  s1 {
  32.         }
    9 q. o8 [9 C: [
  33.         alert( text+result );
    ' J1 _. n2 M% V
  34.     }
    " n4 U2 x6 t: o$ S$ `1 D
  35.     // 创建扫描控件4 f9 F: c6 p/ k1 S) F* f" k+ j
  36.     function startRecognize() {8 z- J; U6 o$ Y+ u. E! U) T8 L
  37.         scan = new plus.barcode.Barcode('bcid');2 r( k5 ^/ k  ?& e& b( Q% |+ j
  38.         scan.onmarked = onmarked; 8 ~# S% V0 Y3 u
  39.     }9 m2 F9 }6 R5 y9 R7 |
  40.     // 开始扫描
    # s! q" r- c! t( H1 }4 k3 ?  C
  41.     document.getElementById("startScan").addEventListener('tap',function(){% I! @  n$ |' N0 k4 H4 |
  42.         startRecognize();
    * Y: @8 c  r- I- O* d( Z  Z1 H+ P! F
  43.         scan.start();
    , m" M; r& a$ N0 C; W5 Z( }% t  S
  44.     })
    # _) D( g$ A: e+ N3 g7 D
  45.     // 取消扫描
    3 E8 u2 b  N: B/ c7 }1 J- ^# }* ^1 j
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){
    9 \, `! ~% y# W3 P  H4 S9 U! X8 }2 J
  47.         startRecognize();0 A6 X" V- b' k2 [
  48.         scan.cancel();
    ' Y5 e* d' T4 V, ?
  49.     })
    ! }7 i0 k7 \& y) a+ b, q) L7 I
  50.     //  开启和关闭闪光灯8 w8 s) d( a, s' Y& J& p8 X
  51.     document.getElementById("setFlash").addEventListener('tap',function(){) H- k6 s( O* z% @; t; ?; R
  52.         startRecognize();  G7 \8 ?& }0 P  {" P8 [
  53.         isOpen = !isOpen;
    * l6 B3 a% c2 Y+ b7 Y2 E* \
  54.         if(isOpen){
    9 m/ ^0 m5 e6 M
  55.             scan.setFlash(true);
    ! d# ?1 ^; Q; L5 P! q6 n+ L
  56.         }else{: }( e$ G- E' J; p5 o
  57.             scan.setFlash(false);
    + ]% g$ |; L4 s4 q3 I' j
  58.         }
    ) I! n0 h4 ~! _+ E2 P
  59.     })
    + \5 ]; R" ^4 e$ v$ ~2 H% ^" i
  60. </script>
    + k  C; J# ?) J9 V8 _( o& j% M: p
复制代码
+ ?. M& P, |  A' A  ~% F
效果图什么的就不上了,和前面提到的文章中的效果图基本一样。
, m1 ~' E* J/ ~. }2 l/ h- r" k/ b0 e. Y# k) X& q0 x% z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-8-4 11:46 , Processed in 0.051347 second(s), 20 queries .

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