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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。
3 E! p% w! h7 M# E以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些:   y8 C3 O0 G0 h
《【iOS】AVFoundation架构下的原生二维码和条形码扫描》
6 j) R9 W4 A; M. n2 s2 [9 n( z《【iOS】CoreImage原生二维码生成(一)》
2 }7 B! J  `" a8 N《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》
& a2 L7 K" ?6 t: D# s2 A" o1 P在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。 8 G6 P/ A, [! p9 L% i3 {
原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。
- f8 g5 Q2 _7 ^; U+ v) X$ c直接上代码,注释都在代码里面了。
6 {6 z# m- X, n  `
5 S5 M  U7 B  v. \1 [7 y/ {8 S6 `
  1. <body >
    ' y9 S) r4 D% q0 {( |1 q- o
  2.     <header class="mui-bar mui-bar-nav white">
    % @4 a% p' B0 e( @
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
    , A" q5 j+ {3 g2 \  a, Y
  4.         <h1 class="mui-title">二维码扫描</h1>/ ~' \' m6 W) S7 J/ m# m0 y( L
  5.     </header>7 I5 D9 o4 C  u+ v
  6.     <div class="mui-content">! |) C/ O  X: U$ P, ^' I
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>1 {" H7 [2 y. g2 \; V# Q6 b1 v
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>
    - i" O. m& T5 C! K! w9 S
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>  q3 P1 D# c; j; U! P+ e
  10.         <div id= "bcid"></div>; T8 m4 g' w" _4 G+ B
  11.     </div>( D" m, b6 y+ J( z1 A1 h. d- @
  12. </body>
    ( d' X% `$ d; T/ w/ `* j3 M- b
  13. <script>
    4 b" A' F2 v7 a; ~
  14.     mui.init({
    * P3 c0 t- m& w& ^  F
  15.         swipeBack:true //启用右滑关闭功能) W& Y& d6 q! D% R4 f7 z
  16.     });
    ! ^" i- S/ t5 b
  17.     var scan = null;6 }" c7 P* i, z; S, X( ]8 T
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭
    - m; @' d* G; q4 u4 y9 j6 [
  19.     // 条码识别成功事件
    ' c& t6 n4 s& M7 a! K8 ?6 r
  20.     function onmarked( type, result ) {
    & I5 R* b" W; [: U' J- c# P
  21.         var text = '未知: ';
    ( ^2 N8 A( E8 C! k) c: Y# O6 z
  22.         switch(type){/ Y" ]' c) p  d6 s
  23.             case plus.barcode.QR:
    . n5 \9 a/ w( j  s* M( C8 n; E
  24.             text = 'QR: '; // 二维码
    : n' L9 c$ G' ^* L
  25.             break;( ]; B. t6 w' m$ m1 X
  26.             case plus.barcode.EAN13:
    : I9 i3 o. R; b, n& y0 U
  27.             text = 'EAN13: ';4 P# N( X$ s! K. s. x
  28.             break;) G* }, a* u) {7 H# s
  29.             case plus.barcode.EAN8:
    & p5 Y8 G* d0 y. m: r
  30.             text = 'EAN8: ';* K: h* a, h. Q: k8 J/ R
  31.             break;
    , F7 D9 f# n7 D  G" [
  32.         }
    + z5 d& I( F1 ], E4 o5 n* w
  33.         alert( text+result );
      i8 \6 M4 n: }) f; M( _2 y# J& o
  34.     }. f& Q8 _0 L0 P# d6 L# L$ {
  35.     // 创建扫描控件
    5 T& s0 z9 r9 z- P# T3 Z2 D; q
  36.     function startRecognize() {
    , H0 a' {% t' z& p$ f' z* S
  37.         scan = new plus.barcode.Barcode('bcid');
    7 b, l* J& _: g7 Z9 F, J. t
  38.         scan.onmarked = onmarked; ; s: U. h9 h& r7 V* l/ p
  39.     }
    4 T. ]& `6 q( ?6 R0 C0 M" Z
  40.     // 开始扫描1 i6 M4 \& m4 f! D% d- V/ _0 A
  41.     document.getElementById("startScan").addEventListener('tap',function(){
    - r2 G: j$ V9 z& P) W( {9 z
  42.         startRecognize();
    6 o- h- M% x- i; f3 Z
  43.         scan.start();
    + [- ]: ], H4 ~! a4 L8 e: E
  44.     }); a! V! M' x- B/ E
  45.     // 取消扫描
    . m4 F: Z0 w7 b7 y% M; _
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){0 D3 Y9 |+ h4 L  y& y) d8 S* B
  47.         startRecognize();2 b! A& k, U5 M' x: }  {8 ?0 }
  48.         scan.cancel();
    5 O' P8 v- Z& d- b$ h
  49.     })" K6 D) r7 a. ^3 v0 p2 B! J) ^
  50.     //  开启和关闭闪光灯
    ; n: S; R8 w0 l: A
  51.     document.getElementById("setFlash").addEventListener('tap',function(){
    / f2 u( Z, J5 v, V- V1 k4 X
  52.         startRecognize();
    : z; q% @6 J9 s0 `# t# |1 a
  53.         isOpen = !isOpen;
    & R6 X; B9 a- b- z
  54.         if(isOpen){
    $ k4 b; d0 x. W2 d. b4 }$ e2 }9 Y: L
  55.             scan.setFlash(true);
    ( x  F# c8 j/ _) o9 L
  56.         }else{1 d/ B" U0 }0 y/ C5 f; _
  57.             scan.setFlash(false);: O/ x. W! R& y, |; C" |* W  \
  58.         }
    7 v: x( X1 m$ A* t
  59.     }), ?7 @9 L/ m4 \, V1 Q, s
  60. </script>& O7 M7 v9 b, Y0 A  n; z' A
复制代码

6 w, V$ S5 ]* I- j% |效果图什么的就不上了,和前面提到的文章中的效果图基本一样。) ]; P- R/ Y. Y+ H. Y
& g, s: n9 p) o- [: T  j
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-1-30 11:39 , Processed in 0.046588 second(s), 20 queries .

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