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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。
$ g. H, {+ M7 L以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些:
: [9 v) t9 L* q. }6 |% m2 z《【iOS】AVFoundation架构下的原生二维码和条形码扫描》
; k2 y5 M8 Z. A  v4 j7 r《【iOS】CoreImage原生二维码生成(一)》 2 {& n- a/ U) p1 M7 j
《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》
( }# u3 U+ X4 b. |# C, F7 l在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。
3 y; t: ]/ k: L' \' m0 s原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。
( e/ q- ?  j; ^! \- S  `直接上代码,注释都在代码里面了。1 w. Q  l5 ]" D( j

# ^: ^- Y. Y3 x- ]
  1. <body >
      f: n% A- ]/ c
  2.     <header class="mui-bar mui-bar-nav white">
    * j" R- X  w/ j0 k6 e6 J8 B8 o
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
    8 K4 U2 \' I3 E) w, P# V
  4.         <h1 class="mui-title">二维码扫描</h1>, h& }) w. k, T3 Z
  5.     </header>
    3 |$ s5 t" c0 O/ a
  6.     <div class="mui-content">! B+ m/ j+ y0 a( P
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>9 t$ y4 `6 }$ e2 g
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>
    2 p) @) y5 v- @2 ]! F
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>) R1 l, {  J. t4 Q1 _- q
  10.         <div id= "bcid"></div>
    3 |& k8 K8 E5 D( A; L
  11.     </div>
    + d" B/ }! Y: E  c8 b
  12. </body>
    + U" {: Y8 I; X5 Q* B
  13. <script># O6 u3 J& p, H
  14.     mui.init({
    3 V' a  t6 q* O* c! k9 N. C4 P) e
  15.         swipeBack:true //启用右滑关闭功能4 r$ B( e8 K; M4 [
  16.     });
    / o, j( X8 K. l" l1 i
  17.     var scan = null;
    - F- V2 |6 U+ w" G( d0 o4 t
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭
    / p7 c1 g; m' ^5 v; ~
  19.     // 条码识别成功事件
    ; U7 C; @, v% n, _5 |2 s0 i$ V0 R9 b
  20.     function onmarked( type, result ) {4 V' Y0 ^8 j0 ]$ E% l% F
  21.         var text = '未知: ';0 Z% o% C7 `3 J- P! L/ H2 U
  22.         switch(type){/ P7 g" J/ `1 _" y0 b$ X: q
  23.             case plus.barcode.QR:+ Z( m, r4 U0 D3 O% M7 `
  24.             text = 'QR: '; // 二维码: X& P# n% N" K( R" b
  25.             break;
    / B$ f( P0 d% T  n! b' J7 ]7 a
  26.             case plus.barcode.EAN13:
    / `) h% w0 a- v+ n0 p  g1 H' Y% w
  27.             text = 'EAN13: ';& F( O, r* W) s4 E( I; t- |$ ?& t
  28.             break;0 ?/ c$ g" }6 D
  29.             case plus.barcode.EAN8:
    & b8 b7 L; J, C3 ~! h3 e7 N
  30.             text = 'EAN8: ';
    # Q! g1 s0 M* W* X2 k+ M' V1 Y
  31.             break;
    1 D1 [# S0 m. \4 U- \' d1 Q
  32.         }' r' i7 x% X2 Q7 ?& `" g& c/ ^
  33.         alert( text+result );) F) h# @" h, {. ]/ @$ q3 `4 X
  34.     }
    % q+ r6 ]* J8 V' x
  35.     // 创建扫描控件/ `5 G' f% x2 ^4 Q# P( J$ d' F+ _. q
  36.     function startRecognize() {, P0 s  @$ Z! q1 P3 ^4 n% H
  37.         scan = new plus.barcode.Barcode('bcid');
    9 n- O# Y5 p/ i0 |0 j5 N& O
  38.         scan.onmarked = onmarked; $ T/ Y/ j$ b' ~" P' u
  39.     }1 M5 s/ o! z& L+ P& `
  40.     // 开始扫描
    8 D" m! R; Q  v7 H/ E& Y* y8 \
  41.     document.getElementById("startScan").addEventListener('tap',function(){
    7 f( t/ h. N' ^
  42.         startRecognize();
    9 a, n, o% i: {
  43.         scan.start();* Y$ `% \3 G0 _- x, K) Z" y
  44.     })
    / c# h) ^3 J, E  G0 o% U& L
  45.     // 取消扫描( m: s* I( G; `/ F. n
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){
    , E& n5 @* b: v) h% _% P5 {) }6 w
  47.         startRecognize();
    ; u+ l" D* f* x; n5 _  f, p
  48.         scan.cancel();+ R# K6 Y7 y7 b+ d
  49.     })
    3 o/ K0 y, E0 c
  50.     //  开启和关闭闪光灯  E/ T( @7 ]. m$ `/ z' J- c
  51.     document.getElementById("setFlash").addEventListener('tap',function(){( t! K" e5 N. W  }* X
  52.         startRecognize();. H  X8 ?+ ?! ]3 l0 t
  53.         isOpen = !isOpen;
    ' K& G9 L+ L+ C# h" |0 O
  54.         if(isOpen){( y9 e3 n* K; k/ b( ^/ [) b6 y  P
  55.             scan.setFlash(true);
    2 o( U  z2 s0 x$ F, p
  56.         }else{
    . T+ V6 E% e$ J" B8 }) Z
  57.             scan.setFlash(false);
    * |* H' H  J. A9 m: G
  58.         }. N  F! ~( e7 F3 _4 I
  59.     })
    2 w# Z4 @% e5 D1 ^  h! r  U+ |
  60. </script>
    : c5 M/ G) Z( b* ~, p9 a4 R( ^
复制代码

: J$ U# d$ T1 i0 O. E效果图什么的就不上了,和前面提到的文章中的效果图基本一样。, L. d# e2 I+ f
/ L5 ^6 C* P2 o/ t" e) Z5 h1 L
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-8-4 10:10 , Processed in 0.064315 second(s), 20 queries .

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