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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。 ( H2 g! \$ O/ @
以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些: 9 {* r. _  a, o- n; ?# l
《【iOS】AVFoundation架构下的原生二维码和条形码扫描》
" Q, C% ^! o/ M8 g" O# ~《【iOS】CoreImage原生二维码生成(一)》
" P9 Q, b; B) u" O  ?《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》
3 X- r: [( |# n" Y在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。
! _; u% }2 R/ c1 [9 h4 e原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。
: A: U: t9 q# C- c直接上代码,注释都在代码里面了。/ q  @4 u4 S, r0 N, P
/ Y# u! z+ J9 Y. O8 a8 I: [2 Q3 o$ U* ~
  1. <body >: B2 l  X9 O4 A% ], ]1 g8 I( P! U
  2.     <header class="mui-bar mui-bar-nav white">+ U  X0 m" ^' |1 y) k
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
    3 B" c, e9 w0 A% k2 j3 v
  4.         <h1 class="mui-title">二维码扫描</h1>( l0 X% h. M; k2 t
  5.     </header>$ R3 z& |/ i$ T0 L
  6.     <div class="mui-content">4 e" J  ~8 z. j
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>
    , Y/ ?# d7 n6 A% k7 L( P3 W; m/ i3 m
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>. x; Y$ v6 N: Y
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>/ N7 W& j! \! S3 \1 f/ z
  10.         <div id= "bcid"></div>
    4 D& Z& I8 e: S. b
  11.     </div>
    " r" X( |* Z" p( C0 p3 U
  12. </body>
    4 O; O* E! o5 ]; s' W, J! F
  13. <script>7 i7 p0 M% K9 ]% G
  14.     mui.init({# [; T* |( h$ @) b/ w* g+ ]
  15.         swipeBack:true //启用右滑关闭功能) p2 W: E+ @, ?$ j. m: u
  16.     });
    5 X: J" h8 t. _9 e  V
  17.     var scan = null;
    ! J" J3 C0 Q6 O; V" o
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭" q8 e8 @1 L1 B! j" I
  19.     // 条码识别成功事件
    - `& R4 b0 Z  s; q
  20.     function onmarked( type, result ) {
    3 I8 w  P: P1 F) C
  21.         var text = '未知: ';. o. }9 V2 D9 W" a4 ^
  22.         switch(type){# K' n% L+ ~1 y9 G( B: y
  23.             case plus.barcode.QR:
    , o  f+ H" |% K
  24.             text = 'QR: '; // 二维码4 {. y4 X: v1 f% R4 z
  25.             break;
    : q# Y; S  W5 w
  26.             case plus.barcode.EAN13:* j$ [) N. S0 o$ l. a2 z+ G
  27.             text = 'EAN13: ';
    ' ^4 Y3 e, I9 J
  28.             break;" J0 E( b1 ?8 F) {7 s
  29.             case plus.barcode.EAN8:+ p2 m" O, Z' }* Z/ I* K. x
  30.             text = 'EAN8: ';
    ; |! {! v: t( Q% R0 f/ f# r& \- `6 v! ~
  31.             break;
    : a- h5 s) x* a8 J
  32.         }( B0 i& R" {$ q+ L  I
  33.         alert( text+result );  D, C7 v8 H' y8 M" @& `
  34.     }; V' E# I4 t( _, x, _: O+ U
  35.     // 创建扫描控件9 `9 Z+ C4 F* k# o# L6 ]) r
  36.     function startRecognize() {
      h* w& {1 S( a* s* U
  37.         scan = new plus.barcode.Barcode('bcid');+ T# w$ {4 E1 @* f' o1 g
  38.         scan.onmarked = onmarked; & O: D. D0 ?3 m+ L* g7 m7 T6 W& Y8 ?5 g( R
  39.     }
    $ G* t8 C! D' x
  40.     // 开始扫描
      H2 _6 D( v. ~
  41.     document.getElementById("startScan").addEventListener('tap',function(){
    & ^$ |, o- E) @$ n& `
  42.         startRecognize();2 x4 X; k+ ]: h9 a+ j
  43.         scan.start();/ `! v" Q; {" R8 ~" U5 X: e* W5 R
  44.     })
    & Y2 u& g. m# K. e- h$ o4 J6 N3 B# D
  45.     // 取消扫描, R% w1 y9 w% U3 e' q' w
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){
    ; r0 m5 d( L+ u4 J; N
  47.         startRecognize();0 ]; o2 ]* b+ P% ^& s$ K
  48.         scan.cancel();3 \% [7 q' b  ^$ I
  49.     })8 Z  |0 O5 x8 |2 d$ x# x
  50.     //  开启和关闭闪光灯
    + J1 p2 Z- I9 h  q# @$ O
  51.     document.getElementById("setFlash").addEventListener('tap',function(){3 J2 G" I; r! X7 r- @* G* k5 x
  52.         startRecognize();5 V1 n8 A! H- u. O1 D$ S! c* S% O
  53.         isOpen = !isOpen;
    0 h' h3 C* O4 n: @; N1 q) ^: I' e/ u3 Q
  54.         if(isOpen){. ~2 u' L8 K; j6 S8 T& A: R/ ^, M
  55.             scan.setFlash(true);0 N: j7 Y1 H. V8 v7 {# E; G
  56.         }else{5 _6 }$ S- m/ F2 M
  57.             scan.setFlash(false);
    4 Q* V0 v7 u) D6 S. n4 W( ?/ f
  58.         }
    ( N+ B( @/ @- _
  59.     })
    8 k# l( c, c' e7 k; D# M. @
  60. </script>
    ; i& m) B4 G* j8 t# }
复制代码

+ r5 j5 m2 d9 J2 O0 ^效果图什么的就不上了,和前面提到的文章中的效果图基本一样。
0 b0 t2 I" F0 L- F( M& i% Y( I
( ]; g; a7 D% U1 {' M( a0 j( C
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-17 18:25 , Processed in 0.069975 second(s), 20 queries .

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