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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。
. n4 ]( T2 f" m& v, _2 u5 T以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些:
$ D/ ]" k% t2 Z( h《【iOS】AVFoundation架构下的原生二维码和条形码扫描》
( A/ k3 i+ ~4 D1 f: o2 C8 @3 N& m《【iOS】CoreImage原生二维码生成(一)》 4 F; G! ~; x6 i6 s  ]
《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》
! a" d- c- g4 M& ^+ j  i6 X, [" T在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。 1 z0 Q4 \: \2 T4 F6 Q: ?& V3 C) F& x
原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。
4 W: m3 Z- f% d7 H直接上代码,注释都在代码里面了。
; ~5 R& S- D4 H# D' n( N7 M0 A6 L* J
  1. <body >
      b* y7 i' V# Z; G
  2.     <header class="mui-bar mui-bar-nav white">
      h3 I! W3 m; v4 R
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>) S% b6 x* _3 r3 _/ T# w! T* Y
  4.         <h1 class="mui-title">二维码扫描</h1>
    2 {# d  I% X7 X  g. q6 l0 e) \
  5.     </header>
    % `6 Y; ]! }2 S0 j: f; S) i
  6.     <div class="mui-content">* p" a7 S/ E+ h' E- A& P$ b; D+ Y
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>
    3 E3 u) N& E$ y9 {/ C3 G8 z( v# B& e
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>
    6 k6 J$ \/ ]3 U- ~& P8 `
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>! H8 u2 r, c( }1 u
  10.         <div id= "bcid"></div>% h; T2 ~: d, i
  11.     </div>
    % s& n+ [1 ^2 L
  12. </body>! i! B' J5 D9 R
  13. <script>
    0 F' R+ J1 l" W% |% U
  14.     mui.init({
    1 P# }! a* t$ i
  15.         swipeBack:true //启用右滑关闭功能
    $ }3 n" R; W+ }" A! p5 x- n
  16.     });5 N* x% p% B$ Z8 W% u
  17.     var scan = null;7 [/ X+ c; d4 W6 c6 }
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭
    : Z- e' D0 Y8 {. F
  19.     // 条码识别成功事件
    / `8 |/ s( [; {1 s3 h) x
  20.     function onmarked( type, result ) {& `: M" U7 e; m8 V  a! Z% F! |
  21.         var text = '未知: ';
    " n: Z. S- \/ e  r% O
  22.         switch(type){
    % X8 G$ e8 }5 P) ]7 G
  23.             case plus.barcode.QR:
    2 D8 a7 l5 Q. I  @' L" u
  24.             text = 'QR: '; // 二维码
    # c# i: g3 q/ @( y
  25.             break;
    2 _' H/ p! k8 V
  26.             case plus.barcode.EAN13:
    4 r. s% F! {: k
  27.             text = 'EAN13: ';4 R# E6 j+ ~" E) F
  28.             break;
    . w; c. P+ v1 U9 y- H: B
  29.             case plus.barcode.EAN8:2 P  i- m! r- d' p: q
  30.             text = 'EAN8: ';
    8 }9 @+ Q& B% W0 m( p" V
  31.             break;% ~. S: y# c6 s* I* `
  32.         }* W; r+ L3 y9 J' N* z
  33.         alert( text+result );
    8 \6 Y0 G/ a: _9 \0 W: p& X8 u0 X
  34.     }
    ' a' h5 j# Z0 j1 }: V
  35.     // 创建扫描控件
    7 }' I4 [, p, G1 N/ G4 j
  36.     function startRecognize() {
    , O. U/ O, l% V7 X: a; M
  37.         scan = new plus.barcode.Barcode('bcid');  V$ Y1 y- i- `
  38.         scan.onmarked = onmarked; ; x- H3 Y5 c  R; m; q" S+ i9 ?
  39.     }
    7 y7 @5 O- m0 F5 X
  40.     // 开始扫描
    # G9 w: R! y. i/ _
  41.     document.getElementById("startScan").addEventListener('tap',function(){
    8 e1 P, u) K/ V
  42.         startRecognize();$ F' y1 q8 W2 X
  43.         scan.start();
    $ n  I# e- `- {: w3 v* |
  44.     })
    + n' K0 E0 N* U5 f& _
  45.     // 取消扫描
    1 ?3 P4 s' \) u
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){
    ; l5 A3 v# b* I" L2 G% C
  47.         startRecognize();3 F# p+ ~( M( g; H( p
  48.         scan.cancel();7 V+ C. A) Z! s7 V  H9 S) i
  49.     })7 v' n  i8 W. q$ W) m6 p, c
  50.     //  开启和关闭闪光灯
    ' R) m# g# V9 Q( P% J' D
  51.     document.getElementById("setFlash").addEventListener('tap',function(){, N2 a: {% b2 b. t
  52.         startRecognize();- c1 M$ a( ]0 H
  53.         isOpen = !isOpen;9 z6 T8 m1 N7 S3 x3 n( z
  54.         if(isOpen){
    4 T9 ]. T  f3 \
  55.             scan.setFlash(true);; W& M* x5 V3 O% I
  56.         }else{# o  h+ Z. T; e' X. F. G
  57.             scan.setFlash(false);. K* J& Q5 _; T; M
  58.         }: \  l- v" B3 [6 {
  59.     })" ~7 b& }  _' T8 N
  60. </script>4 @9 j8 O8 U; R3 o
复制代码

% L  ]+ o& J$ ~( T' ~& f% }/ S效果图什么的就不上了,和前面提到的文章中的效果图基本一样。
1 F( g8 i+ W0 i7 m7 v& w+ G: M
+ Y9 G  Z: H) G
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 20:51 , Processed in 0.109708 second(s), 21 queries .

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