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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。 ! I) a0 W3 B9 v; @# h) c; D7 c1 O0 m
以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些:
$ B1 I0 |' N! b《【iOS】AVFoundation架构下的原生二维码和条形码扫描》
, `& M) Y- Q& k% g  ?《【iOS】CoreImage原生二维码生成(一)》
6 Z$ S/ b+ c8 k- R, A+ U《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》 / P, A' O* Y! R" C! L9 G! b
在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。
3 y* P2 p: H  Y原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。
. z- I+ k1 [8 E1 k直接上代码,注释都在代码里面了。
& I# M8 E. u& M0 _1 i3 C' j3 D& f$ g, c0 P  }
  1. <body >7 H' M5 r8 U" ?3 ?; }
  2.     <header class="mui-bar mui-bar-nav white">$ z3 m. k* k6 `  R
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
    5 j0 _8 N+ v* }
  4.         <h1 class="mui-title">二维码扫描</h1>2 C( o) P1 f) ^# T
  5.     </header>
    / V; E& @; O. c0 }! ]
  6.     <div class="mui-content">. U/ E/ [7 V' }& X' @; g" j1 ]
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>+ {9 a8 F! B, l, J0 U5 S
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>
    % D7 Q7 O1 h, q. \, V4 ~7 c$ l
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>
    7 K8 T/ B3 G! v9 M4 U2 D7 P2 n
  10.         <div id= "bcid"></div>' E% l- m3 x! U$ M$ ^
  11.     </div>
    - \$ q4 V; `" I8 _* l6 f: ?9 }3 \
  12. </body>
    % s* R0 m- A! U4 ^5 l
  13. <script>  M$ y# _: O3 i
  14.     mui.init({
    9 s4 O4 R) v7 ~" a
  15.         swipeBack:true //启用右滑关闭功能. l$ v1 T3 q) R4 G1 a
  16.     });
    ! m5 k4 G0 _6 U7 P& U; E
  17.     var scan = null;
    + p3 M0 B# L/ `  z
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭
    * O6 D$ U& N1 W; P/ c+ \
  19.     // 条码识别成功事件
    6 [: @; J0 l" I% f
  20.     function onmarked( type, result ) {
    ; c! s( a8 a1 R) t' X
  21.         var text = '未知: ';
    0 D! `: X: U" `0 g) X
  22.         switch(type){
    0 ~/ r4 R3 X6 w8 Z! t
  23.             case plus.barcode.QR:' a; F# Y7 U8 _  N+ M
  24.             text = 'QR: '; // 二维码/ }+ N; t1 _+ g( `8 X( G
  25.             break;
    ' ?( f. `6 n( D! A. y+ f3 m
  26.             case plus.barcode.EAN13:
    0 d; K6 r9 s/ S
  27.             text = 'EAN13: ';
    ( g7 w3 o& ]0 e# I8 M$ O) b0 a  _9 W# w
  28.             break;$ i/ x2 y  m9 J6 b& r
  29.             case plus.barcode.EAN8:
    ' {7 t' o/ U" [' i: l3 m: y
  30.             text = 'EAN8: ';
    & b( {' q- ]4 D2 o( {
  31.             break;
    % L/ I% G& P& G3 W/ X6 O7 M) v
  32.         }
    2 s8 R% y' o4 S4 D5 k: t6 C$ J7 m# _
  33.         alert( text+result );5 d9 E* h* c1 C& {* T+ p' l6 T% k
  34.     }
    / x) ?4 k1 w" V/ t/ |  o+ r, R
  35.     // 创建扫描控件
    4 k$ [2 T- F3 h# ~( [
  36.     function startRecognize() {2 j% G( k! K; ?- |& t/ T2 O
  37.         scan = new plus.barcode.Barcode('bcid');
    4 q4 ~/ a, o  R; @$ z$ C- {! y3 A
  38.         scan.onmarked = onmarked; " r% c6 R- b0 y/ _, S
  39.     }
    . A+ N$ ~) ~7 i0 ]' w# Z6 m
  40.     // 开始扫描( s6 g2 M; y, q  V5 D$ K
  41.     document.getElementById("startScan").addEventListener('tap',function(){
    3 j6 k( Y. ^9 n, B8 C7 x7 r. I% P
  42.         startRecognize();0 i$ F; `( j9 R9 O  q
  43.         scan.start();! I% p! g2 O$ x$ k
  44.     })) Q( B3 J; D% ]/ v/ E5 f( Y
  45.     // 取消扫描
    , j% W; t7 I: m1 L* X
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){# B. M5 M2 F+ U1 @9 q( c
  47.         startRecognize();
    % M% z5 G& \1 ?) n' R
  48.         scan.cancel();% X" h1 s7 Z7 d, d
  49.     })8 D$ u2 T: o/ T. _' ~5 Y& ^
  50.     //  开启和关闭闪光灯
    9 ], y, j& `3 j
  51.     document.getElementById("setFlash").addEventListener('tap',function(){# i0 u4 O7 C, ~9 X' P/ g! A: v
  52.         startRecognize();; q/ y# H  `* ]* e9 B
  53.         isOpen = !isOpen;& p2 j0 R, O0 v: I! X
  54.         if(isOpen){2 U, I- a- ^5 `( p7 c% V# G: Y
  55.             scan.setFlash(true);$ r7 H( f4 O* E- B- O( q7 Y2 U
  56.         }else{$ K% A5 Y& E$ V0 {
  57.             scan.setFlash(false);" l2 p8 S' G8 s& h2 B- W
  58.         }
    ) o7 y! p6 T7 w1 j: ^, F
  59.     })  b6 k" s, L) t" o; X$ I  q
  60. </script>
    * W& z6 {. W# B7 A' m! E2 Q* H1 f0 ]
复制代码

/ o& ?% b  ^* E3 L9 b2 y/ F' y效果图什么的就不上了,和前面提到的文章中的效果图基本一样。$ v7 D4 c* w7 J7 f6 j+ V6 x7 \% {
6 S/ I# r0 n+ c& V$ [6 G  k" C  c
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-6-4 09:33 , Processed in 0.054954 second(s), 22 queries .

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