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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。
: ~8 y3 Y" K; H6 I, ], D以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些:
- z! ]6 G$ O7 Q! \6 K《【iOS】AVFoundation架构下的原生二维码和条形码扫描》 8 S8 W5 o" F9 S. R( k% s5 }8 h
《【iOS】CoreImage原生二维码生成(一)》 . g( d8 g# x' r" z
《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》
2 f" Q9 H! ]( r6 \( ?6 K* Y在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。 - I+ \. X, |. q; c( @
原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。
8 {4 B# L8 H) G% G6 R5 A% ?直接上代码,注释都在代码里面了。
; B# W. k/ p5 K0 w
8 [; m8 Q# p$ C! U, K1 ?4 s, w" [
  1. <body >% H: O% C% z2 k/ b' _
  2.     <header class="mui-bar mui-bar-nav white">
    + H, D9 P: v' w4 S8 U% M
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>" w+ j% I9 Y0 b% S  h' G' i/ ]
  4.         <h1 class="mui-title">二维码扫描</h1>
    . s' D% V/ c0 f, H) d# @& S. ?, Q& D
  5.     </header>: n; h9 P- @# Q+ c
  6.     <div class="mui-content">
    3 I( L; p( u$ e$ R. T
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>
      c  u1 p* i9 I) s7 o  m) a
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>% H( ?3 `1 i' I: o2 x) @
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>, b1 H( ]! t* w7 e: P
  10.         <div id= "bcid"></div>
    # N4 _7 b7 o% R. m5 R4 d1 G) F
  11.     </div>; r3 l' b2 i  S$ U  Y2 C2 D9 T
  12. </body>$ i# v4 ?/ B7 j$ `; }: a+ M
  13. <script>
    $ A7 }+ ?/ M* h0 g) w: a' q
  14.     mui.init({
    " e3 z5 D( V. h/ f
  15.         swipeBack:true //启用右滑关闭功能
    8 ^* h* f: j) t& ~% U# j1 e
  16.     });
    ( P7 N! t+ w9 T
  17.     var scan = null;
    5 @. o  l2 t& y/ @) v- j
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭
    5 V1 V, K' X" S6 C8 _
  19.     // 条码识别成功事件; d* Z& V3 X5 f+ q- d
  20.     function onmarked( type, result ) {
    ! o  n" C) X3 J+ @/ }9 ~+ B+ b
  21.         var text = '未知: ';; J8 p7 ^: W0 y7 |0 [
  22.         switch(type){' c9 _9 c: V" e! m1 `
  23.             case plus.barcode.QR:0 z2 z$ }1 a) V. e
  24.             text = 'QR: '; // 二维码
    7 z- E8 z6 }# M- q; X
  25.             break;+ v" B# s: m  ]0 S* f/ T
  26.             case plus.barcode.EAN13:
    0 [+ M8 Y- C, U2 F" {
  27.             text = 'EAN13: ';
    , W& q( z5 j7 w1 e- `4 B
  28.             break;! k; B4 V! O1 ]
  29.             case plus.barcode.EAN8:
    # ~8 s& H, C% z' Y9 Z
  30.             text = 'EAN8: ';' c1 l5 d" A) U. T
  31.             break;
    / k1 O8 x5 H8 f" i  f8 V
  32.         }& b7 ?- c8 r7 T" y
  33.         alert( text+result );" K/ O7 Z' U; O9 m1 m+ H# k6 }9 L
  34.     }
    # z% p# U8 I7 n, F  c' P
  35.     // 创建扫描控件
    3 q$ j( Q) d" l; A4 H
  36.     function startRecognize() {/ }0 J, d; A- c% f
  37.         scan = new plus.barcode.Barcode('bcid');
    . D( \/ l. y5 X& c  s- f
  38.         scan.onmarked = onmarked; 8 D( l; j# |. b; O- b
  39.     }
    * \  v! c! ]' Z1 j8 x
  40.     // 开始扫描
    0 h# Q$ o- l( M% E- J# K
  41.     document.getElementById("startScan").addEventListener('tap',function(){
    , }# O0 Y! S0 m7 \- T: z
  42.         startRecognize();
    ' I0 p4 W0 r+ u; t0 C
  43.         scan.start();
    * M' G( E2 C5 P
  44.     })
    ( [6 R7 D$ }7 A1 w# @% s9 Z6 q
  45.     // 取消扫描
    2 }- D1 ]4 |, {& Q0 d6 F
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){
    7 S! D& }7 S, O; u8 b- j8 u& q
  47.         startRecognize();- J5 ~0 c- v8 R/ K1 D, i2 H
  48.         scan.cancel();
    3 `7 ~$ Z2 }9 U6 }1 |: O; `
  49.     })
    ! P% k- I; l9 u6 E) Y/ `( S
  50.     //  开启和关闭闪光灯
    * `4 `5 f3 B: b
  51.     document.getElementById("setFlash").addEventListener('tap',function(){
    / a* J0 M. \# g) t7 @8 d
  52.         startRecognize();
    2 }& K5 W- z3 O1 R  e. i
  53.         isOpen = !isOpen;
    * G! `' y1 C3 T2 ?
  54.         if(isOpen){
    ! Y% `* v7 |# u8 r0 T
  55.             scan.setFlash(true);
    % o9 ]# i3 O! }
  56.         }else{
    + m  b) U2 t; Q" B0 M
  57.             scan.setFlash(false);8 V3 Z7 W5 v' l5 t! _# @7 @
  58.         }
    * P3 ?5 q9 \6 ?8 o6 V$ y9 ]
  59.     })7 V" R$ S' f( b, O/ {
  60. </script>2 G+ y* K: B* `; f& b
复制代码

7 b+ n' W4 l6 e% o! \  ]3 p3 y效果图什么的就不上了,和前面提到的文章中的效果图基本一样。
/ H9 h2 V, Z. [5 a( r$ m# O% B7 ?0 N
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-1-30 11:35 , Processed in 0.053608 second(s), 19 queries .

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