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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。
6 c7 E# s0 S% L$ u9 u以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些:
( P7 M, W& ~* b% C3 ?《【iOS】AVFoundation架构下的原生二维码和条形码扫描》
: c) y! p, _' u' `6 _《【iOS】CoreImage原生二维码生成(一)》 - H; y# n' S& O. J6 P9 r
《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》 0 C% h/ W9 y0 C- e
在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。
0 p! _0 }% c# b0 I- k1 J% M8 i原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。
0 X- r+ \& z3 S2 E6 w9 E直接上代码,注释都在代码里面了。
. n1 C& K. k7 S. M0 f0 Q( @: i4 H: ~/ g7 [1 b, R( N2 x1 V
  1. <body >* C8 `+ x$ Y( Z  ^' D( I
  2.     <header class="mui-bar mui-bar-nav white">0 t; ~3 I# J/ }2 A  B' t* S
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
    # B( N. c5 J5 Y: q0 C
  4.         <h1 class="mui-title">二维码扫描</h1>
    6 q( S  \+ f8 A# F! u$ _. i# z. [
  5.     </header>4 J% ~6 I* @4 C# U. \
  6.     <div class="mui-content">9 D! C3 u1 T7 b. o3 a% J' A
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>- N; w) w' Y/ x* u8 o
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button># F  `1 B  Q* b- \
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>& f$ M! W) @" I! g
  10.         <div id= "bcid"></div>
    6 V0 M: ?- J3 f7 t
  11.     </div>2 M0 q2 P$ G0 p+ y2 q
  12. </body>
    ( U; n' |% ~- ]' {1 o- o/ n
  13. <script># q( N" Q, l9 v$ ~4 d
  14.     mui.init({! P0 D/ D/ u! r( ^. h9 u- c
  15.         swipeBack:true //启用右滑关闭功能
    / I  v; t# k; w* z3 |$ O
  16.     });
    ' |0 f% |& C. Y& v' q
  17.     var scan = null;
    6 r6 l! S- Z3 G9 t- Z4 }
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭
    ) q( ^2 X0 w8 m$ }; K6 n8 z
  19.     // 条码识别成功事件
    2 P5 h9 g) }5 Z+ Y( H& ]! R
  20.     function onmarked( type, result ) {
    % m! _( ~0 I+ w/ q, o
  21.         var text = '未知: ';& |; }: t9 v4 R- F3 V! }2 E) ]
  22.         switch(type){
    0 g/ D  m; l( }0 M3 B
  23.             case plus.barcode.QR:" u. [+ w- j% Q- j
  24.             text = 'QR: '; // 二维码
    2 E4 d! m+ W" {/ u
  25.             break;
    * {) d( }/ @) _
  26.             case plus.barcode.EAN13:" p! y$ \$ l" r. t8 |& f# O6 j
  27.             text = 'EAN13: ';% x, V. x0 [; u+ F
  28.             break;# f. _8 H1 `+ {+ @4 [) V5 ]" }7 ]
  29.             case plus.barcode.EAN8:
    7 |0 ^4 z- u- b. H7 V0 a: p
  30.             text = 'EAN8: ';* a+ `3 Q4 l, B
  31.             break;
    6 A: w7 q6 W7 W5 x, x" Q
  32.         }! z$ G/ L8 `8 \# X# h! K7 ]0 }
  33.         alert( text+result );
    % L# A- ?) Z: r* A  v$ K  h! j
  34.     }/ F5 x  V0 K5 l/ @' c; v
  35.     // 创建扫描控件
    ) r% n3 }) U; ^3 @% Y9 V. }. V
  36.     function startRecognize() {
    5 S" N  ^) S! [6 O1 [
  37.         scan = new plus.barcode.Barcode('bcid');
    4 x; E; |5 E2 h6 W! ~4 k
  38.         scan.onmarked = onmarked;
    / `& i" ~: g$ s' @) H7 V: o
  39.     }- F  c  S3 X) I
  40.     // 开始扫描
      I8 V5 t! O$ i- y3 L
  41.     document.getElementById("startScan").addEventListener('tap',function(){  `& ]0 W% p# ~/ m0 h  Z& y
  42.         startRecognize();- _4 @: m4 ~: x2 ?. y
  43.         scan.start();2 }" W# ^$ A" U- K
  44.     })
    * B& B0 h: |6 Y; ~" [; Q0 w
  45.     // 取消扫描
    0 z/ Z' q, p3 C5 g* A
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){* O7 \- T0 G# z& K, n) d) y
  47.         startRecognize();+ Q( a( f$ R' o% Q: o) a) W
  48.         scan.cancel();
    , |/ l0 o- W3 z: \3 P5 k  c
  49.     })
    $ |0 c) Z! J- J% N: s% _
  50.     //  开启和关闭闪光灯0 t+ L" X: {" Z3 M0 f+ V
  51.     document.getElementById("setFlash").addEventListener('tap',function(){
    9 K' [+ _- H! E8 U- I
  52.         startRecognize();
    * }* K3 x) E; o: ]9 a
  53.         isOpen = !isOpen;
    * }2 _2 R+ r) U+ j! M
  54.         if(isOpen){4 v/ B; R% c# ^- k
  55.             scan.setFlash(true);
    9 [3 ?( D7 d3 N# d. w6 h
  56.         }else{
    ; G' Z. x- W$ j+ x: y1 W. G: \
  57.             scan.setFlash(false);5 n6 y; i: q2 {9 b9 @1 l
  58.         }
    2 H" x/ s# F( G7 k1 E& h
  59.     })7 O: Y0 }: R; I1 q8 T" Q7 d0 F5 l
  60. </script>- r6 \0 U/ ^* g! w+ k
复制代码
/ r8 F( B) m, `  A1 ]
效果图什么的就不上了,和前面提到的文章中的效果图基本一样。* W9 Y9 r4 x' ?- }, `$ h$ p; E) i' O

5 v5 g8 ]$ h0 A. t6 ^1 }
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-16 18:51 , Processed in 0.050088 second(s), 20 queries .

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