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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。
. c) s0 S( R, A6 d& {7 i" i, I" t7 M以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些: ( ~7 U# F5 J% `( q) q& c2 C7 b
《【iOS】AVFoundation架构下的原生二维码和条形码扫描》
2 W5 v5 H  R+ B. X4 A; L" N《【iOS】CoreImage原生二维码生成(一)》 0 p: d; E, `- }; m5 W+ A4 v
《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》 ' r2 Y. Q; {4 [
在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。 . n9 o. |9 l; E# Z
原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。
: i, E' }" m8 G7 _直接上代码,注释都在代码里面了。
% P( N  ~) n# G/ s+ q, S
9 @& I/ P* K# {, B9 V- R
  1. <body >
    ) d8 }6 R. A6 J. Q/ Z" X
  2.     <header class="mui-bar mui-bar-nav white">
    - h- Q$ W; d/ e1 Y! A
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
    ( l& X4 G7 B8 W' @! y8 S
  4.         <h1 class="mui-title">二维码扫描</h1>1 a- C2 c2 k* c& G9 I+ J, O) F
  5.     </header>8 S0 ], |( u. ^, ~& T+ ^4 ^
  6.     <div class="mui-content">
    - w. C) w: ?3 E4 S; n
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>
    ! n+ S* D3 v9 q
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>
    ) W) T- t) y6 ]: O
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>' I% A5 n$ ~$ n8 D% ~/ a2 j8 D$ ^
  10.         <div id= "bcid"></div>
    : ^; ~  _0 f& `
  11.     </div>
    # `5 z4 q" z. Z' k
  12. </body>8 S& v; X# i/ U, L: ]) U7 {
  13. <script>
    8 R, g& A0 n$ |. `+ V
  14.     mui.init({
    1 `, j: b  B$ I, @7 b4 \+ o
  15.         swipeBack:true //启用右滑关闭功能
    9 g$ M+ \1 p7 [" H2 C# y
  16.     });
    0 S) N  a; n6 F& \5 R- [
  17.     var scan = null;
    4 C3 e* z/ i) q( j& K, y
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭
    ( X7 ]  j, h- B$ J
  19.     // 条码识别成功事件
    4 Q) M' W* \" R& v/ i
  20.     function onmarked( type, result ) {
    2 f) v/ x* o6 }) }
  21.         var text = '未知: ';2 n8 S9 Z. J7 d0 J. J
  22.         switch(type){
    ; W1 g: j# g/ `5 [' Z
  23.             case plus.barcode.QR:) Z5 N7 u; V; [; N, j. E) I
  24.             text = 'QR: '; // 二维码; z' f) K* x7 x- Q8 l
  25.             break;0 E1 l8 [0 M. }! s! E$ {
  26.             case plus.barcode.EAN13:
    6 L1 X+ f& h6 ~$ _
  27.             text = 'EAN13: ';' j8 r6 x$ p5 n
  28.             break;
    & s+ t7 J# g" ?: k! Y7 R' K  q
  29.             case plus.barcode.EAN8:
    ; O0 v% q6 j& U- G3 H
  30.             text = 'EAN8: ';
    ) [: o  n0 z& J, g- G" M6 |0 \
  31.             break;
    / o2 z7 s% L8 c' [  Z" V# j! L( Y$ S9 b
  32.         }/ J& Z0 Y* f: K2 V+ p
  33.         alert( text+result );
    * W3 @% w* u6 r9 [/ E
  34.     }: b- S6 o3 D! I# t' M) D$ ~
  35.     // 创建扫描控件
    & x% M& O: W$ I: F" n& X
  36.     function startRecognize() {7 z" B+ w: d2 [/ O2 W. r: l
  37.         scan = new plus.barcode.Barcode('bcid');
    + r# g* }1 p* E) q# t
  38.         scan.onmarked = onmarked; 1 d/ r8 Y- O* q; _& K
  39.     }
    & ~9 x' Q; L/ `8 K+ ^" o
  40.     // 开始扫描
    . e/ q% P9 @0 ?6 i) f
  41.     document.getElementById("startScan").addEventListener('tap',function(){0 V5 R; O) T5 p7 [' H6 x( K
  42.         startRecognize();
    - v3 t- m0 D0 N: k2 N6 Y1 M
  43.         scan.start();
    9 P! R: S7 M) f7 s+ m
  44.     })
    ! Z4 ?/ m) {& m* ^! c" e
  45.     // 取消扫描
    0 d1 N7 C+ i$ O
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){6 c+ I' F. o1 K2 P  N! b
  47.         startRecognize();
    0 R9 P  k* t& T# T4 r' k* L- _, v' h
  48.         scan.cancel();6 b# T$ z. d4 b& I; @2 P5 q
  49.     })
    $ o/ U4 L' i; ?( t  c! t, c
  50.     //  开启和关闭闪光灯
    * G' \) z2 ^( Q6 n7 V0 [5 g8 H4 ~
  51.     document.getElementById("setFlash").addEventListener('tap',function(){
    : C: u! r; Y2 L) K* U* H
  52.         startRecognize();
    7 A* t0 z+ C. p. h6 W% Y* C
  53.         isOpen = !isOpen;7 [0 u% B% j) h8 d. S. B: V
  54.         if(isOpen){
    . I% Q8 c. Z0 L5 X5 [+ i( c$ X* T8 K
  55.             scan.setFlash(true);1 L$ ~: f  y% P! C
  56.         }else{- h* F* r3 C* I% A) P
  57.             scan.setFlash(false);
    ' B/ l5 Z* D9 I  g7 A% I
  58.         }
    % C* j' o* B) x' {/ j
  59.     })
    6 [$ i( d1 K5 p* Q
  60. </script>8 O: X0 z+ M" v/ _3 d
复制代码

/ i  _$ f, N* r5 F" l) ]效果图什么的就不上了,和前面提到的文章中的效果图基本一样。
7 P1 S" N6 q) V, t! L3 \9 W) D6 d2 R  ~: q
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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