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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。
* a/ m/ B; W) ?6 D6 v以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些:
5 a, @# \. \0 C6 |《【iOS】AVFoundation架构下的原生二维码和条形码扫描》 # p4 Q/ p, F; ]% o# f7 `2 H0 s
《【iOS】CoreImage原生二维码生成(一)》 1 R, \  ^2 O2 \+ l7 ^
《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》
* U8 y+ |( n1 K; J8 W+ b在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。 2 w3 `& D& Y, T, i( g& \
原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。
  K2 H" T' M( n直接上代码,注释都在代码里面了。3 r( c/ b! L! n$ _; q  n2 B

* _- J: h5 c/ d( B7 X
  1. <body >
    7 j; r* L% {* X" C2 }* K+ p
  2.     <header class="mui-bar mui-bar-nav white">
    5 k7 t- r. d7 }+ i9 c
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
    ; \8 s9 g  ^: O8 I/ A
  4.         <h1 class="mui-title">二维码扫描</h1>
    ( k! a: L4 N4 r% f! j
  5.     </header>
    ' ~+ R- _9 F6 L% ?
  6.     <div class="mui-content">$ M  M+ ~) I: Z; \* g
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>. C: z6 a% F9 h$ P
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>5 k0 \( C: y5 r/ W- f  ?( R
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>
    4 G* M) Q/ m: H+ R9 T2 L- j
  10.         <div id= "bcid"></div>  }9 t" w+ G$ e; z% W7 e( o! Y
  11.     </div>
    ! ]; G6 b; N; z; z. |
  12. </body># ]$ ]: @- Y6 H; s* L
  13. <script>( L( y3 ^7 h; O. V/ {
  14.     mui.init({
    + k/ U/ o2 g, S+ f  _( L
  15.         swipeBack:true //启用右滑关闭功能
    2 r1 P! d1 M' }8 |$ \
  16.     });
    3 Z: g& x7 N1 o8 ?! {+ |
  17.     var scan = null;
    / V- j4 j$ ^. h+ W# J
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭; n# J5 P6 g$ ^1 I, u, S  E: y9 t% H' f
  19.     // 条码识别成功事件8 j) W) }" X' k: F) ?
  20.     function onmarked( type, result ) {
    5 V% U. Y6 A( I7 @+ C5 [
  21.         var text = '未知: ';( B- v; k- I. X$ B- k7 A5 ^
  22.         switch(type){$ a! T. a+ ]1 X/ e3 E, q
  23.             case plus.barcode.QR:
    ) Z$ D, }% `7 b3 h4 _& K$ T
  24.             text = 'QR: '; // 二维码
    / y( R- {6 q! x, F! r
  25.             break;
    * {/ W/ i- V4 f/ m  U8 ^" [
  26.             case plus.barcode.EAN13:1 M1 i0 ^" d; X6 H
  27.             text = 'EAN13: ';
    - j. ^, a8 q( u: p) Z
  28.             break;/ F8 x5 Y. q+ ]6 G
  29.             case plus.barcode.EAN8:6 D- Z5 ~; ]0 d
  30.             text = 'EAN8: ';
    . h; a4 r1 ?. e, D
  31.             break;7 _; `% a! Q8 T" F- d: w, [: w
  32.         }
    9 d% f. n6 v( q7 \0 F0 Y
  33.         alert( text+result );
    8 h$ X2 @% y) Z' [4 ^# P
  34.     }
    7 t+ p) f# A' K5 w, t& f$ i6 _
  35.     // 创建扫描控件
    0 W6 J0 l# }/ A: `
  36.     function startRecognize() {9 u# c/ w0 {7 n6 ~
  37.         scan = new plus.barcode.Barcode('bcid');
    ) f) {+ g+ j5 r1 b: ]0 Y$ x
  38.         scan.onmarked = onmarked; & i5 I/ n* T3 Y& c
  39.     }2 k2 Y0 ?# p* i
  40.     // 开始扫描5 h/ D) P/ e2 o% x3 F9 N- t
  41.     document.getElementById("startScan").addEventListener('tap',function(){9 N2 A& i% |. @% z9 k; r( `* I
  42.         startRecognize();' i! [  F8 h0 n7 W$ s, r. V
  43.         scan.start();! m3 J$ |- P, ]& A. i
  44.     })2 h: z, {3 j/ E# U
  45.     // 取消扫描) X& i. t2 {2 r8 [
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){
    * \- }; z5 q+ O/ p$ o# h; [
  47.         startRecognize();. }; N* N+ I; |% {0 P
  48.         scan.cancel();
    " z  q  q3 b! p; X. }1 R
  49.     })/ s! c' a7 |! V: w  y
  50.     //  开启和关闭闪光灯
    4 A- Q/ @8 F! e: s: l% c
  51.     document.getElementById("setFlash").addEventListener('tap',function(){; u2 \0 h# X! F% m  q: t
  52.         startRecognize();+ Z3 p$ H4 N4 U/ Z" B: J
  53.         isOpen = !isOpen;
    8 z0 w3 n6 c2 l+ G- i: k# z
  54.         if(isOpen){$ j& G) @' v& Z. X
  55.             scan.setFlash(true);
    : z: U; j: I( A. m
  56.         }else{# F  ?+ ]' q; k" K/ T
  57.             scan.setFlash(false);
    : B. m2 j. `- F$ y' o- J2 [7 m& t
  58.         }5 k" X- h7 f! i6 Q2 O! @) N
  59.     })
    + C7 v8 j' v8 i: }9 d
  60. </script>
    4 J) ?+ v5 A* y; ]) x  o
复制代码

3 |+ w! K: ?% [2 \效果图什么的就不上了,和前面提到的文章中的效果图基本一样。+ V. A- V+ |3 g5 ~- A- h3 l2 v5 l# B
% d4 p2 a. F/ l" Z* Y8 z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-8 19:25 , Processed in 0.119901 second(s), 21 queries .

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