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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。 6 Z5 l8 V4 Z, Y! u& O; n
以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些: . L2 U& b" [% m3 F  }
《【iOS】AVFoundation架构下的原生二维码和条形码扫描》
  X7 ~$ U/ f4 ^1 }+ c8 Z5 J' B《【iOS】CoreImage原生二维码生成(一)》 : U- s5 g6 U$ H0 h" A, O
《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》 # F8 N" N  X8 P; L
在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。
! ]  b6 \, B+ D4 F# {8 o  e8 i原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。 $ x3 h+ N* n! c% d3 `" Z
直接上代码,注释都在代码里面了。
( }* K6 N( n3 d1 o3 G! A( k1 O) V' q; j3 C, D( X
  1. <body >( g0 I6 r& t+ R: O
  2.     <header class="mui-bar mui-bar-nav white">( x, ~. l* v/ d7 }& j) E
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>. |- I! c+ Q) X, j: ]7 d
  4.         <h1 class="mui-title">二维码扫描</h1>3 A" c4 ?# ~; d5 X% Z, O9 @
  5.     </header>
    ; f+ Q+ b% X' e. v- O
  6.     <div class="mui-content">' y7 u/ D2 y: |
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>5 ?2 k9 d1 r% n" u( Y& O
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>
      j8 n( W  |7 ?
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>1 t" |) U7 n: e. i+ m, \
  10.         <div id= "bcid"></div>
    $ b0 G7 i. D  h0 v5 p, C
  11.     </div>
    ) z" Y" b/ ?# v2 ~, H4 r( Z
  12. </body>
    * d& p! ~) \7 E: b
  13. <script>% g- d" [6 F) a6 g- p" ?
  14.     mui.init({8 ^2 g, @: n" D( g+ r
  15.         swipeBack:true //启用右滑关闭功能
    5 W- @9 [4 ?# Z+ ]2 j3 H9 L! r
  16.     });- H9 O5 a" _$ d
  17.     var scan = null;. {: R1 w# L2 o2 q/ ?
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭
    % Q0 I6 a) X( G  x
  19.     // 条码识别成功事件& C  h( J' V' d2 S5 _) [# f
  20.     function onmarked( type, result ) {
    / D9 F! x  h0 J% ?2 l/ t
  21.         var text = '未知: ';
    # {$ J5 s# N$ O; k7 z  y# F. X- q1 y
  22.         switch(type){( ~( H& a( V5 J0 L$ Y2 V
  23.             case plus.barcode.QR:
    , l) a; [0 r& O+ H! _3 u$ Y
  24.             text = 'QR: '; // 二维码# u; \2 c+ V  r' P) ]: E
  25.             break;7 ?$ R' N) q0 c4 |* |
  26.             case plus.barcode.EAN13:; `' V& K; e# E) Q1 p9 f
  27.             text = 'EAN13: ';4 q  k  d9 i8 B7 V3 b( R8 k5 u
  28.             break;
    & V9 x: e; T: h* }
  29.             case plus.barcode.EAN8:% ~2 ~# P5 R' |  [/ I
  30.             text = 'EAN8: ';& Y# x: y3 u0 p
  31.             break;
    $ [" g* w, w# k( a
  32.         }: T; U+ d8 D4 {$ p( [6 ^. Y
  33.         alert( text+result );
    4 K* i) W! e2 b+ p. e! V
  34.     }% V( R6 y( E; u. _
  35.     // 创建扫描控件
    4 A& z! ^& k/ a% k! x% `1 z
  36.     function startRecognize() {
    8 ]9 T! `4 Z( q! ]
  37.         scan = new plus.barcode.Barcode('bcid');* L) g% a1 T/ X* n$ ]9 ~& G; t
  38.         scan.onmarked = onmarked; 9 Y6 l& J! \0 U1 y2 U# G
  39.     }
    ! V. |. @7 V( {* P
  40.     // 开始扫描1 h- M& J1 z' ~6 d8 ?1 b5 N+ A
  41.     document.getElementById("startScan").addEventListener('tap',function(){
    5 J  I# ], W7 N% ~- }8 Y1 b: ^
  42.         startRecognize();4 d9 _$ j8 U2 N8 a
  43.         scan.start();0 A5 j6 L& G$ s# \  U6 e9 A+ f
  44.     })
    ; x$ z7 S5 R) }8 W2 `) n7 v7 e
  45.     // 取消扫描  H, M9 \  w) R
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){
    3 O* o% q' x; b2 ?
  47.         startRecognize();+ L) J* N/ K1 j8 Q
  48.         scan.cancel();
    & N; r$ C6 N/ \3 K, S# g
  49.     })" P7 {8 B  f& h% V/ c% r
  50.     //  开启和关闭闪光灯+ |5 i4 q/ M2 L6 T; @5 y
  51.     document.getElementById("setFlash").addEventListener('tap',function(){
      P3 W5 s" r$ E+ f
  52.         startRecognize();
    8 _7 T' P& v! D7 Z
  53.         isOpen = !isOpen;3 f1 B$ d! P. t- @
  54.         if(isOpen){8 L! l2 y6 s. d
  55.             scan.setFlash(true);
    9 C  e: _+ t6 [+ }4 e
  56.         }else{9 o7 p' a4 t2 q( q
  57.             scan.setFlash(false);( c0 w/ s; ?/ N0 A- q  W
  58.         }; P; i  d8 F, J
  59.     })
    & E  J* }$ b  B
  60. </script>
    % ?$ {7 J5 J* V4 u
复制代码
0 h1 r, b6 u: b. D1 b5 K! S/ [
效果图什么的就不上了,和前面提到的文章中的效果图基本一样。+ g# N* ^$ C& q+ g3 d' A

. p/ p. u# W; T% c5 U- P6 v/ K
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-17 14:14 , Processed in 0.111672 second(s), 19 queries .

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