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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。 & |' _7 ?7 c+ N9 r, [9 B# Y
以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些:
5 Y) X. v: Q& K  N! c8 [9 Q' D《【iOS】AVFoundation架构下的原生二维码和条形码扫描》
5 }6 D& Y6 N$ _- ?《【iOS】CoreImage原生二维码生成(一)》
/ }! ~8 D5 y0 R《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》
+ x! g+ u, O0 K7 ^) T3 {在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。 * c0 \) f. d5 _* Z0 A
原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。 " t: L. Q) n" L$ o9 b6 n
直接上代码,注释都在代码里面了。. s5 _0 G: F! _( B. @  J$ {* f
0 W: f  W; K1 ?  \# T+ s
  1. <body >
    ; T% Y. j0 G4 o+ O; i3 H6 j  d* t, n
  2.     <header class="mui-bar mui-bar-nav white">
    , Q7 Y" g' }7 [
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>4 w( j4 X) R3 e7 h
  4.         <h1 class="mui-title">二维码扫描</h1>! B* I5 u/ h% E3 h8 S5 l, a$ p3 d$ s& U
  5.     </header>
    + M) Y/ y5 u! E/ l) j+ |, L0 J
  6.     <div class="mui-content">" t+ E  w3 A+ E3 C/ A, f
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>( M5 F3 N  d& A0 I- k+ r6 [
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>1 P$ T# L- o) `: g  H! ?5 Y1 V- ]
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>
    & [+ Q( m8 ^. W, f
  10.         <div id= "bcid"></div>$ `; `+ a" H' ^, o4 u
  11.     </div>5 ]+ s# i" S) A* L, V; O( V% _- ~
  12. </body>) ~- y* S2 V0 Q6 _1 E" i
  13. <script>3 v. s3 L  c0 ~, R- w: }
  14.     mui.init({" n+ S! T7 t( y: _7 ~+ \4 H
  15.         swipeBack:true //启用右滑关闭功能
    . x+ |/ Z" C/ C/ E
  16.     });4 h+ R4 f3 `1 g0 t, b
  17.     var scan = null;
    3 B! U8 ^$ S& H/ D( p$ Z
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭
    * Z( S4 \2 e5 l0 r! L8 H/ A
  19.     // 条码识别成功事件
    ; E: r* W" D0 p
  20.     function onmarked( type, result ) {7 |' n4 J/ x: \" ?2 R
  21.         var text = '未知: ';0 m0 e. F4 ~2 [3 b
  22.         switch(type){
    - F( C5 h. n* U, D6 ?# E4 Y
  23.             case plus.barcode.QR:! N$ w" n) c* i7 J. G! X
  24.             text = 'QR: '; // 二维码
    . b' C( T  w9 ^  {0 D
  25.             break;
    5 c/ g) C2 h3 M
  26.             case plus.barcode.EAN13:
    5 S- D1 m/ K5 u( u( h
  27.             text = 'EAN13: ';
    % ]' @( M/ y1 g7 S
  28.             break;
    / Y, y4 i8 U$ r4 i7 V1 v
  29.             case plus.barcode.EAN8:
    : ?/ x$ `( \0 J, i
  30.             text = 'EAN8: ';
    " V; y6 F" @1 t* x
  31.             break;
      j. V! d. G% P# s; b, ]
  32.         }
    ) K- U" D! H% w; Y7 B8 b+ u9 F
  33.         alert( text+result );) f# R& _3 q# I: M4 I
  34.     }' }- d: h/ S. {4 Q& ~) V
  35.     // 创建扫描控件
    : j! y+ X+ H. M$ W
  36.     function startRecognize() {5 M4 `4 @( k) q( M9 P; g1 M- i7 N- d
  37.         scan = new plus.barcode.Barcode('bcid');1 r" `" R6 q* r7 T$ V/ K
  38.         scan.onmarked = onmarked; 9 c& Z- O  |. c2 b
  39.     }
    $ ]6 p% J& H3 X$ ?5 _& y! K
  40.     // 开始扫描
    5 e4 p! ]: l+ `( B! M8 ]
  41.     document.getElementById("startScan").addEventListener('tap',function(){, u3 Y3 v9 Z: E' t9 X2 ^
  42.         startRecognize();( ?+ q5 x! N7 c. ~& F6 _9 e3 E8 g
  43.         scan.start();& b) ?& n* f% U! i/ G% l6 D. Z
  44.     })' e1 X+ h/ Z) ^
  45.     // 取消扫描
    + U- c# R) B; M2 S, s  d/ H8 r# ?
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){6 I  c" r+ g9 N  M% Z; [! B# }
  47.         startRecognize();
    3 s3 R& E2 J, O% q3 s8 n8 U* h
  48.         scan.cancel();
    2 @" D. B# D6 Y% L+ Z! o- J
  49.     })$ G  N0 u- _5 A# {, \
  50.     //  开启和关闭闪光灯
    0 C2 S. b  s) {9 }  V
  51.     document.getElementById("setFlash").addEventListener('tap',function(){, F0 ]# z# F7 i" }, V$ D
  52.         startRecognize();
    * v1 R7 I5 P; X4 Y3 i8 ?
  53.         isOpen = !isOpen;; ?, k# E6 r7 r/ ~% E  T5 [
  54.         if(isOpen){  e2 n2 Q- Y2 U, J
  55.             scan.setFlash(true);
    # F: p; \5 a3 H+ z
  56.         }else{- o2 M$ r6 f1 U7 X
  57.             scan.setFlash(false);
    + U8 j# h. ~2 W5 q, M/ f* `- C
  58.         }; E) a; U, T8 A* N" U! O
  59.     })" ^4 R0 m& g' \0 z( d
  60. </script>
    " m: N9 F% g$ Q
复制代码

  g' n& ~0 ~, I* g8 F- T效果图什么的就不上了,和前面提到的文章中的效果图基本一样。; R2 T" g5 e& a8 q0 z! T& r
7 Y( @) u! Z7 C5 h- C
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-6-20 05:21 , Processed in 0.055556 second(s), 22 queries .

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