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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。 5 |& O1 u5 `- ~/ ^- t2 y- ?
以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些: . Q( @# v9 O0 d( ^
《【iOS】AVFoundation架构下的原生二维码和条形码扫描》
! |$ b2 G- o) S# g+ |# k《【iOS】CoreImage原生二维码生成(一)》 2 O$ g  n1 k0 n4 O# y: N
《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》 ) ^$ u3 V- W7 I, @( t$ u# `9 u( K
在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。
8 T# `# W- _% C& \/ q: i; q6 k: Z原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。
9 z' e& \8 C5 n直接上代码,注释都在代码里面了。" F# ~7 ^( O/ ~# y

3 K" s2 [. B2 P4 @1 [
  1. <body >
    ( n( U  m7 b' D. N
  2.     <header class="mui-bar mui-bar-nav white">
    ; v* n8 H2 A; V6 ?* C
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>, O9 @2 C$ J4 E0 e6 m* A
  4.         <h1 class="mui-title">二维码扫描</h1>% i2 j) c, F& W3 D, e7 I1 r% ]1 {
  5.     </header>- q+ N5 S' m7 X: ^) s' Y9 r. E
  6.     <div class="mui-content">6 ~: y' @5 L3 x7 d
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>& a5 n6 x( |7 C0 z- Z: Y
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>
    * ~8 {# U0 ]+ R. @0 \
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>
    - F! D+ c, `) G" t, ]2 h
  10.         <div id= "bcid"></div>
    + s+ p" A* n% m. N* i+ t
  11.     </div>
    + V4 c: m1 x8 I
  12. </body>
    ( z! E0 m" s% C- _# D) d6 |' U; J0 N
  13. <script>2 h0 s0 ?! d- b3 }" y. X
  14.     mui.init({
    8 `% w# l; r. K$ p% ]  f
  15.         swipeBack:true //启用右滑关闭功能! @  w0 ?5 f& d: a* k
  16.     });$ W: r/ t9 A/ ?7 A
  17.     var scan = null;
    & M9 `9 a) e, G3 b# r0 u- {* x
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭) `. k* X% d( ~. Q, S$ E' l
  19.     // 条码识别成功事件
    * g; h+ ?4 b. N- h& v
  20.     function onmarked( type, result ) {
    6 }0 ^- F4 X0 R$ F. g" d6 i) ^' R
  21.         var text = '未知: ';
    * w3 o1 [" @; ]
  22.         switch(type){* ^4 \; O; y2 G
  23.             case plus.barcode.QR:4 Y; X2 ^; [& r' _* b0 q
  24.             text = 'QR: '; // 二维码* t9 L% O# [, [+ q- t
  25.             break;
    8 [4 |* h+ i' H7 {! s) M: Y5 J  G
  26.             case plus.barcode.EAN13:0 J9 j+ k% s# M, B- K: |  t. x( W$ T. b
  27.             text = 'EAN13: ';* z8 x# l5 K% e; V
  28.             break;- m- r$ q$ p. X! d
  29.             case plus.barcode.EAN8:
    # o9 p: `7 [& G4 _; G1 S
  30.             text = 'EAN8: ';
    ; n$ f$ G: I3 `( [/ r" r
  31.             break;
    ; S4 N# n- m& P, P3 m1 A9 Q) D
  32.         }
    " k4 m; T$ S' v9 t" R
  33.         alert( text+result );( e2 ~6 ^2 G) \9 x
  34.     }& P: r1 F, P0 d5 A( W
  35.     // 创建扫描控件0 M# n' ]9 q. k" l
  36.     function startRecognize() {
    8 T0 m3 C6 b2 L  U' J
  37.         scan = new plus.barcode.Barcode('bcid');
    * J0 E# g0 X! y& R" }) }
  38.         scan.onmarked = onmarked; , h4 N. ^" S9 C1 y: T- J3 I
  39.     }2 b( H, j# P% X$ n" S
  40.     // 开始扫描2 @2 C& T* }9 e2 P6 z3 J
  41.     document.getElementById("startScan").addEventListener('tap',function(){2 u1 a/ D% ^# m/ x/ A7 h( q0 ^7 B4 D
  42.         startRecognize();
    2 J" A& [& m; Y! t1 I/ g
  43.         scan.start();
    ! B' W& o3 `- x3 b( J( X
  44.     })) L9 C0 H" p2 F6 U. n5 K
  45.     // 取消扫描
    , x/ |8 `2 S$ K' ?2 k8 Q  s
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){
    ) ^8 ]3 |0 x: _9 S- l
  47.         startRecognize();! G6 e# I) m/ Y$ x; u) }
  48.         scan.cancel();$ S, U, y8 f- o/ w
  49.     })
    * y* T( j( n/ b! a7 X# F5 {0 d
  50.     //  开启和关闭闪光灯
    . ~' G/ p( T7 p* ]# t& f
  51.     document.getElementById("setFlash").addEventListener('tap',function(){5 Q' U0 P" m' D  g5 w' B/ e! |/ M
  52.         startRecognize();1 l  n* l0 }2 ?' w4 M, m' j
  53.         isOpen = !isOpen;+ @- [6 }3 b: f3 e
  54.         if(isOpen){. g0 o2 a" |7 v: _
  55.             scan.setFlash(true);) l, I& M+ g+ R, x& k$ b2 c
  56.         }else{& Y: C! ?9 t! Q- I9 x
  57.             scan.setFlash(false);
    0 w4 W1 \+ l" x0 _* g
  58.         }
    * U4 k* V/ T4 S! E0 J' |8 _
  59.     })
      _! C# N/ U7 r; S% {
  60. </script>$ ]0 c. o  d5 n6 @8 J4 ~4 B
复制代码
: b3 I8 z4 d! j& f8 ^1 b! O5 w4 n
效果图什么的就不上了,和前面提到的文章中的效果图基本一样。
1 H7 m; k- h- B5 S# K4 X
4 E, @; U: J6 X7 ]% P8 a7 Y+ y- T9 I
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-6-15 06:53 , Processed in 0.108242 second(s), 21 queries .

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