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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。
4 u7 F/ _9 ^) P/ S, j; C& b* L以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些: + l" ~; h0 q' t1 e. ?1 ~5 g1 e
《【iOS】AVFoundation架构下的原生二维码和条形码扫描》 & ^" h2 n& g" A* J; Y* D$ N
《【iOS】CoreImage原生二维码生成(一)》 8 k# F7 q. q: A
《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》
7 A; t# I; F# h/ U在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。
( ^6 s/ O( A! G+ K1 ~: _& H原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。
5 e; E  y! v6 q) ^: a直接上代码,注释都在代码里面了。
1 l+ O2 B5 z2 k% t" _* j* v1 o! r( q
  1. <body >
    # v) O; `6 l, f
  2.     <header class="mui-bar mui-bar-nav white">
    1 l( W+ ]  X$ R& ~- l
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>$ B) e1 b8 g2 ]" ?
  4.         <h1 class="mui-title">二维码扫描</h1>/ P2 \  f( c: K
  5.     </header>
    5 E+ ], C  h. \$ _; p
  6.     <div class="mui-content">$ z0 a) t% I9 f0 |. `0 R
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>
    6 n; w5 }* n' X$ L: @* X
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>7 J: O4 G9 C( k6 T2 r
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>5 h2 H  q* y+ C% s) V5 B( b$ |
  10.         <div id= "bcid"></div>9 h& u2 m+ H. Q- u9 D' S. j
  11.     </div>- q. L8 p# R0 J8 h( W+ i
  12. </body>& R, p& C1 O$ c
  13. <script>: m7 m0 ^3 q* ?3 d2 Q# B1 m8 ?
  14.     mui.init({& e; w6 H; ]: O+ \. e) P
  15.         swipeBack:true //启用右滑关闭功能
    - N) R/ S- ~& @5 i1 y
  16.     });
    , f  U# N/ K- f' O7 e" X8 X
  17.     var scan = null;
    5 ^  e1 N' b, P
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭5 z5 q" v3 L6 ~7 N: P/ E
  19.     // 条码识别成功事件
    $ _/ X9 T( m( d! f; B& F
  20.     function onmarked( type, result ) {2 w2 a/ `) p1 V6 o: b: c
  21.         var text = '未知: ';
    , ^$ W, \  h; G+ P
  22.         switch(type){
    3 V5 T# v% u2 b/ f, ^$ A
  23.             case plus.barcode.QR:
    & ~- k; L$ X6 V' |; H
  24.             text = 'QR: '; // 二维码$ k9 a. a. y( Y" P- Q
  25.             break;
      H; ]" z' S5 o* m* r, J
  26.             case plus.barcode.EAN13:7 R) |- `0 z$ R7 s7 o
  27.             text = 'EAN13: ';
    1 Q  X: v" z) `  |+ {
  28.             break;
      G( R! w  f+ Z# o# ^* K
  29.             case plus.barcode.EAN8:7 Y- q* e& _3 ?' n' Z7 i0 s& B
  30.             text = 'EAN8: ';
    $ P$ ~9 V) j8 [
  31.             break;
    # p7 Q' V: F+ i# J3 d. K
  32.         }
    6 j( q3 a7 ]* m0 F
  33.         alert( text+result );
    3 D# c8 a: l' s: f) ^  F
  34.     }3 K7 {3 E* ]" {' C3 k% i
  35.     // 创建扫描控件* g: u8 o3 c  b; L8 f8 Z8 S
  36.     function startRecognize() {6 V# ~$ T0 H# P- K- n
  37.         scan = new plus.barcode.Barcode('bcid');% t3 v* l! ?6 M' `
  38.         scan.onmarked = onmarked; - X+ s' q1 Q) y% v) _
  39.     }4 c! m8 m, h% z0 N9 Z! ^! p5 P
  40.     // 开始扫描
    8 w2 J1 v2 ^9 o1 Q$ d- p3 V
  41.     document.getElementById("startScan").addEventListener('tap',function(){
    2 c( @3 o' I4 U  l% T( S9 K
  42.         startRecognize();" Q, {& K; p8 F0 g, m( Y4 H
  43.         scan.start();+ e2 }3 b# ?( \  [( w" y9 v
  44.     })
    3 c. N/ y; ~; ^
  45.     // 取消扫描
    & s+ ?( Q( z- X
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){( h. u! H8 Z8 G, i4 N; c
  47.         startRecognize();* w) w6 S- ]4 O9 J" e( ~% h2 z
  48.         scan.cancel();
    7 A5 x$ L! U! T" a: I
  49.     })& I% z& m3 ~$ }$ u/ h0 z9 D6 ]
  50.     //  开启和关闭闪光灯! r2 U/ M* T. u, G" r/ N# O
  51.     document.getElementById("setFlash").addEventListener('tap',function(){
    6 k, x9 D% t' _% l3 \
  52.         startRecognize();
    0 Y& C( ^/ x* r) w5 ~$ u
  53.         isOpen = !isOpen;
    5 b3 l" s$ K3 e# N7 ]' N
  54.         if(isOpen){! q  l& [$ E7 h+ J- R3 ^# b
  55.             scan.setFlash(true);
    7 ?+ B8 T" a) `
  56.         }else{: D+ t& L9 H( L6 y
  57.             scan.setFlash(false);8 f) v/ n! q( N" K5 I" I
  58.         }' s' |, l* g; f2 l  t
  59.     }), R8 S* [6 h7 d  ]* M
  60. </script>; R4 V/ ]4 ?! C% ^; X
复制代码

9 c& z# z: P. @+ q; f! r9 C$ Q  l; T效果图什么的就不上了,和前面提到的文章中的效果图基本一样。
* w) P9 t* C- C$ L0 B2 J& s4 V  k! ]; h1 ~1 Y$ ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-1-30 19:02 , Processed in 0.055124 second(s), 20 queries .

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