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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。 ) [2 w2 V, K$ T2 k
以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些: . |  s$ E# }* ^; k8 |5 C
《【iOS】AVFoundation架构下的原生二维码和条形码扫描》
9 a. R' G" k/ t4 K- ]《【iOS】CoreImage原生二维码生成(一)》
8 x7 p5 c( [" M1 c《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》
3 {$ O: T5 N+ H, ]& ?' A在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。
0 A2 t6 I9 g, x9 m7 R原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。
$ ]6 z& B) `* c5 }5 J直接上代码,注释都在代码里面了。. D0 i( g' `! S& [, P! M

8 j9 L  e0 m+ t
  1. <body >
    / ]) B# Z" G# D! M( q
  2.     <header class="mui-bar mui-bar-nav white">2 l2 o2 ?3 q9 C
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>8 q7 O% }$ N9 p# I/ X0 U1 \
  4.         <h1 class="mui-title">二维码扫描</h1>' R5 l: i; Y  o
  5.     </header>
    ' y2 r, U: g% k% K+ r& o' d
  6.     <div class="mui-content">4 w4 ?# i' y" g7 ?
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>
    2 h' l% {0 c. O! v& K
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>5 x3 [! l- d' B4 K" n' V* e9 m
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>2 \/ y3 s9 i, F0 g# K
  10.         <div id= "bcid"></div>
    : w( H2 ]1 N& o2 ]# d) f8 i
  11.     </div>
    . b. s( b- l/ q" f' t1 v: h
  12. </body>
    4 t) e. h+ k$ P, `2 O
  13. <script>4 V9 }% W) x6 m: v5 [6 S5 o) \
  14.     mui.init({0 s2 b/ A* A( ~! z4 l( a( {. F% A
  15.         swipeBack:true //启用右滑关闭功能
    4 t8 s9 S* }2 f+ t3 X& S
  16.     });
    7 J3 W5 H' V3 K7 g" j7 I
  17.     var scan = null;: C; |( F3 |# }" n! L
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭
    ) U  I( n: h# i9 p, a5 Q: ^
  19.     // 条码识别成功事件, N# T, r9 m' _6 ~
  20.     function onmarked( type, result ) {
    ; S5 Z+ I+ M9 [5 e1 U
  21.         var text = '未知: ';
    - L5 ^- x; i% U" G
  22.         switch(type){
    0 }( }6 }* y6 E* m/ _
  23.             case plus.barcode.QR:. P. v4 w# h) }" B7 z
  24.             text = 'QR: '; // 二维码
    6 N, x4 |1 T2 j& m6 E
  25.             break;  \$ u$ a7 Z% `) B! d: J, L
  26.             case plus.barcode.EAN13:/ ~# Z% p0 w4 [# m" {! F
  27.             text = 'EAN13: ';
    . q" B0 n& R9 I! |( [( M2 |0 L
  28.             break;3 s1 m3 ~" c0 |" Y/ j  |& E
  29.             case plus.barcode.EAN8:
    * n+ G1 N. T0 g  e% V
  30.             text = 'EAN8: ';  D0 W! `; |( k; y' x
  31.             break;
    % [6 s2 ^1 }2 y3 h
  32.         }
    0 O$ P5 A8 v1 g0 l& y2 g. n
  33.         alert( text+result );
    / {# B" v- S' o
  34.     }, W- \3 g: ]) b( O  @
  35.     // 创建扫描控件) T2 C  U) F, j& L5 t/ j
  36.     function startRecognize() {! o6 ~; F! d( a/ z
  37.         scan = new plus.barcode.Barcode('bcid');% y. o$ i6 A, g
  38.         scan.onmarked = onmarked;
    . F' ^- v4 X2 d9 ~" N' L
  39.     }
    % j3 {  |& y" [: X' F/ [
  40.     // 开始扫描( ]8 J. E: l' k* S# i: n' G
  41.     document.getElementById("startScan").addEventListener('tap',function(){; i0 F: F- r4 x; Y
  42.         startRecognize();7 F( P/ b) E% k+ W2 c" d
  43.         scan.start();
    ! V  n! g! z( Y3 _" L
  44.     })
    # U5 L, [& {# [$ ]
  45.     // 取消扫描
    - Y9 H( J9 r" h0 }+ D( ?* h
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){
    ! j0 e- F: \0 D
  47.         startRecognize();9 S+ l: _) N+ ]# J3 F
  48.         scan.cancel();( m/ l2 E3 v$ l& {2 r& c
  49.     })) F& n' K! x2 C1 U7 T  J
  50.     //  开启和关闭闪光灯
    * Q; Z, ~" I7 v' k4 K# r# g& F8 ]" P
  51.     document.getElementById("setFlash").addEventListener('tap',function(){
    9 H0 S9 o# ]0 R* b
  52.         startRecognize();
    $ d8 f' P; F; N* g. H, s& Y
  53.         isOpen = !isOpen;' E* H. x5 P, y, t
  54.         if(isOpen){) w& b% |) E) x; d) m' S
  55.             scan.setFlash(true);
      @# G* ]) E4 i, y) b/ X+ `1 `
  56.         }else{' `9 C/ r) l8 G6 X  A
  57.             scan.setFlash(false);/ k9 q. e, F; C2 o- ^+ l
  58.         }
    ' g# p: _$ X+ M. O
  59.     })
    3 g) }$ q4 s: l8 @* T2 E6 d
  60. </script>. L" D! r4 X+ m! k0 _
复制代码

5 S7 J$ `7 F6 A5 V* @& D效果图什么的就不上了,和前面提到的文章中的效果图基本一样。  H) a' @3 G8 V2 d

) q0 @6 w+ h' p3 W, e' O, X
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-7-20 00:33 , Processed in 0.061472 second(s), 20 queries .

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