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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。
7 ]5 L. q) N5 x- P4 w以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些: ' s2 N: J* s) ^# r6 W7 z; u
《【iOS】AVFoundation架构下的原生二维码和条形码扫描》 3 q% o1 m+ F+ m. H! @; p
《【iOS】CoreImage原生二维码生成(一)》
9 R- w7 E& _- Q# Q3 b《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》
3 v: n; H5 ^. x1 v. ?在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。
8 J, j+ F5 w4 C, T/ N原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。 - T8 m0 Y5 p( F
直接上代码,注释都在代码里面了。5 W2 e6 {: V- V% i5 }# }( y

  D7 ]4 b7 P$ P5 Z" w1 ~$ C3 k  O# _
  1. <body >& A' m: ^- k5 o+ E. v
  2.     <header class="mui-bar mui-bar-nav white">  H' L5 P) {( e) u0 }  ^( n
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>+ {0 A  ~. p/ m
  4.         <h1 class="mui-title">二维码扫描</h1>; Z1 n; W" f# Y( I3 u" l: N
  5.     </header>
    7 a2 S5 A& \( X# d& @" J9 t( N* n
  6.     <div class="mui-content">8 _8 `2 w7 B* Q  Q2 j8 W% A+ _
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>2 b( ]  T( F/ \0 s
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>
    2 M: B+ E7 \# |/ j
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>* n$ Y) |6 K/ S8 K  W
  10.         <div id= "bcid"></div>9 _  i$ u1 x8 C8 t
  11.     </div>/ _8 q! ~9 G0 f& v0 O# c1 q1 }
  12. </body>
    8 U( a' }0 k) o  J: q  r- J
  13. <script>
    9 N% V9 X6 n) _3 C
  14.     mui.init({
    # C+ a1 |5 d1 [: z5 @2 Z' y
  15.         swipeBack:true //启用右滑关闭功能/ [1 D! ~6 f1 f0 T+ y2 P
  16.     });' c4 h$ X3 `) t
  17.     var scan = null;. z: F9 Q+ |1 K! e
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭4 |0 V  a# w/ {, n
  19.     // 条码识别成功事件" e. z" W# T1 e" X" g) _8 y4 j
  20.     function onmarked( type, result ) {
    * {2 l2 m$ y+ {& b
  21.         var text = '未知: ';
    3 A/ h6 @' w6 n+ {
  22.         switch(type){
    ! C0 u3 t3 ?' H. ~
  23.             case plus.barcode.QR:5 Q9 Z9 B; |, S2 p( T) T
  24.             text = 'QR: '; // 二维码
    $ ?8 L& A% b9 z# M' _
  25.             break;
    1 X3 }5 j4 ?4 b  i8 B* |
  26.             case plus.barcode.EAN13:
    / J* t2 P3 r0 P1 |3 |
  27.             text = 'EAN13: ';
    3 p' d! m% I- U# O( i# x
  28.             break;
    5 `- ~0 M+ D- Z; j( P% h
  29.             case plus.barcode.EAN8:
    9 O7 W# F) C" J5 [/ S8 u
  30.             text = 'EAN8: ';
    6 C: J9 o. [/ q9 m/ M2 g
  31.             break;
    , s$ X& D% y# O
  32.         }0 O+ g/ ?+ C  F3 c7 R1 o" x
  33.         alert( text+result );
    ) R4 F1 W5 }3 U) k  }
  34.     }
    9 e5 a4 A  c0 w
  35.     // 创建扫描控件
    2 k: L+ k$ `. b
  36.     function startRecognize() {1 h. E1 s8 H7 l! ^, g9 F
  37.         scan = new plus.barcode.Barcode('bcid');
    ! T5 F+ C$ z. e% u1 ]( Q
  38.         scan.onmarked = onmarked; ( `7 ?) @& p& J3 X+ u. Q
  39.     }
    + `7 N1 ~2 d; m; J+ J+ p
  40.     // 开始扫描
    8 s9 E5 n+ b  X
  41.     document.getElementById("startScan").addEventListener('tap',function(){
    4 w4 n& F' C: ]3 [
  42.         startRecognize();
    " \/ v% b; F/ Z8 j* x' c! O5 S* a
  43.         scan.start();) P- H! {$ E4 `
  44.     })$ Z$ l& o5 I" P, L* |
  45.     // 取消扫描
    9 l% I5 s$ Z9 g1 e* L
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){' l2 P3 Q0 B% Q) M0 _& [4 }; Y9 [0 J
  47.         startRecognize();
    - g$ Z/ g2 l2 V2 a# F- x1 ?
  48.         scan.cancel();
    1 i0 H0 \; U* d: W
  49.     })
    0 c. x, y- [& V. }7 Q5 e
  50.     //  开启和关闭闪光灯8 s% D; ~" K# C' n$ G
  51.     document.getElementById("setFlash").addEventListener('tap',function(){. C7 g. i8 R" q
  52.         startRecognize();
    9 ]2 Y. s- P+ V
  53.         isOpen = !isOpen;( r# V# F+ N- i6 B, L/ }
  54.         if(isOpen){4 s0 b6 a- I7 g) r/ [; Z0 ]
  55.             scan.setFlash(true);) P% f! I7 A; _, k! p4 Y
  56.         }else{
      R0 R( O$ S( E5 N  Y# g  `
  57.             scan.setFlash(false);/ i; X  Z4 Q( x$ h
  58.         }
    $ f/ c2 g) F! K" B
  59.     })2 m* ~# Q: o- Y9 Z# S9 {/ K9 ]
  60. </script>/ ]0 }. w1 v! L, Z9 ~9 g
复制代码

* Q5 {& J: _/ m效果图什么的就不上了,和前面提到的文章中的效果图基本一样。
2 t) N- k% U5 e# ~! B( u
7 E6 {- {+ s2 P% l1 ^
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-19 01:12 , Processed in 0.118787 second(s), 21 queries .

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