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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。
# P" x+ S) O0 E7 @以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些: 4 u# u! X  F: E5 K6 _4 W
《【iOS】AVFoundation架构下的原生二维码和条形码扫描》 ( y3 g" K2 W/ U
《【iOS】CoreImage原生二维码生成(一)》 4 k% z6 R7 C" W$ P, d) f8 }# U
《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》
3 Z' }2 ^8 T* z, k( q/ x" ?3 Y& X在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。
! ~+ t' O2 n0 L/ n& p7 J- O原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。
3 Z7 D: A( y' K' L5 s5 f. z直接上代码,注释都在代码里面了。# O! b( C4 \  V, E  S: x) T, ]# t

! A. `- b; P( O9 F( a
  1. <body >7 h9 k" s" Q( z# p. J/ Q
  2.     <header class="mui-bar mui-bar-nav white">- d% [" [$ K; ]
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>. `- H5 F1 F7 k. X
  4.         <h1 class="mui-title">二维码扫描</h1>
    ) m5 W+ O" n  F8 K, [' V  Y3 q
  5.     </header>
      u0 }% ]' \6 y9 N2 Y& t
  6.     <div class="mui-content">
    ) `& I8 K" b# L: A$ b) m0 p
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>. e: h$ {! ]( X1 X- @4 M; w
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>
    $ v2 o) e: \/ n3 t( R
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>: W; m) }" k" c- k+ b7 l
  10.         <div id= "bcid"></div>
    % f/ u- n$ _+ q# L
  11.     </div>' i. E- n. _5 U; r. T
  12. </body>
    , L8 h- c' X! S* o4 y& `
  13. <script>& F) b& V( f- O/ z- H/ Q0 G3 g6 R) b
  14.     mui.init({0 {: E6 V' T# @* N4 ]$ L
  15.         swipeBack:true //启用右滑关闭功能
    ' L  n3 O! H" u" E
  16.     });1 c% s% J) Z" }
  17.     var scan = null;
    " P. z7 p' P2 K( s  |5 ^
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭4 V6 ?* g" y6 f; s
  19.     // 条码识别成功事件# j+ R. c, O) @$ E( P+ ~
  20.     function onmarked( type, result ) {
    + }+ v; k* y  u9 f8 ^5 t
  21.         var text = '未知: ';
    & m$ y2 F/ J, r5 O  K8 B
  22.         switch(type){
    ) {& C' F! O# k8 z+ s0 \
  23.             case plus.barcode.QR:; E. z' y4 W$ f( C, k
  24.             text = 'QR: '; // 二维码) _+ E  G* W# l3 V
  25.             break;
    - f0 n7 M2 ^8 X9 z  Y! A1 f
  26.             case plus.barcode.EAN13:, q" `# W9 m. s# n
  27.             text = 'EAN13: ';( w' n6 t. N1 p  n$ k$ T
  28.             break;
    ' P- X0 X  o2 h7 M0 A1 R
  29.             case plus.barcode.EAN8:# @+ I/ f- H# h: T. z
  30.             text = 'EAN8: ';9 u7 ^. A3 V9 n# W- I
  31.             break;; t8 k5 O2 J! H. [; x7 t- O
  32.         }( e* U4 f$ t1 B  ^
  33.         alert( text+result );% G: Q& z* v! m# R' h6 q
  34.     }4 I0 }( h4 o: {# r* |; R  K
  35.     // 创建扫描控件
    % t: o! a& y5 G7 W* y+ o
  36.     function startRecognize() {$ J8 ?0 ]) h8 ], _
  37.         scan = new plus.barcode.Barcode('bcid');5 k1 P' O# s  ^5 _
  38.         scan.onmarked = onmarked; ( t0 j2 _. r% e1 r* b4 i4 e, W
  39.     }
    . u, ~. I/ D: `3 j+ Y+ L  O
  40.     // 开始扫描
    8 B+ Y# x4 q1 ~' {( o& a
  41.     document.getElementById("startScan").addEventListener('tap',function(){8 O+ \4 R/ A. Z3 v( S, b# b4 @' b
  42.         startRecognize();9 ^9 s% Z) t) m' }' Q% _% r" I" m
  43.         scan.start();: C4 S: s' O' }  o2 ^
  44.     })
    * I6 d8 ^9 z& s
  45.     // 取消扫描/ r1 s* s7 S" s8 {7 i2 F) e
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){0 ]* q, ?  o- q. Y
  47.         startRecognize();) l% j" O0 o! \: U+ V
  48.         scan.cancel();
    & C0 V& ~' C4 G
  49.     })- G4 z( M6 l  G, b. i' ]* P+ z! {
  50.     //  开启和关闭闪光灯
    2 n/ y" r7 e! Q
  51.     document.getElementById("setFlash").addEventListener('tap',function(){
    2 G  I! ]% l6 f* J
  52.         startRecognize();
    1 @$ A: o5 I* M# P
  53.         isOpen = !isOpen;+ G/ z8 N- ?  x/ s, Z" e1 y, K
  54.         if(isOpen){' ^2 L7 {- W+ p* t: K  y( J# T/ ~/ |
  55.             scan.setFlash(true);
    7 i$ g+ N5 V' U) w* s* X
  56.         }else{
    0 X: Q! Q& T% \  G2 @/ ?1 R( s  H
  57.             scan.setFlash(false);5 N  r9 k* M9 [- N
  58.         }
    ( j: f) }& E; o( x0 ]& A
  59.     })) B; }7 u5 Z3 u3 [. F
  60. </script>" o4 j- V4 `! S/ m+ x
复制代码

0 O1 N( P8 g0 Q0 Z7 O效果图什么的就不上了,和前面提到的文章中的效果图基本一样。
3 g1 n+ `8 h5 W/ r# \$ `
  U: @! k. @4 e2 J% I/ o$ c
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-4-30 23:02 , Processed in 0.055006 second(s), 21 queries .

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