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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。 2 B& _% G0 ?: M) R
以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些:
! E) Z9 {' n- m- X《【iOS】AVFoundation架构下的原生二维码和条形码扫描》 ) J* X  \7 C" ]7 A1 V6 B9 a* Y1 Z$ L
《【iOS】CoreImage原生二维码生成(一)》 / v1 H( M% a6 H, }0 ?: r8 y1 @
《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》
( |3 r" c4 e6 s1 d在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。 , e  Z0 z4 K$ |* p- ]
原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。
( N: j  I, X6 l0 P% V; N- ^( Z直接上代码,注释都在代码里面了。' I% Z1 @2 L' H1 h1 t' t; u. e9 d; M! j
  m  t& ?4 }3 b; }; r
  1. <body >* `2 o* |! m  u3 {, d: j+ z, d
  2.     <header class="mui-bar mui-bar-nav white">
    $ f* |- `4 {7 O4 w* E# R
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
    0 D* H" Y3 C+ Z9 q
  4.         <h1 class="mui-title">二维码扫描</h1>
    * y2 h* c2 e9 p: x) d
  5.     </header>
    9 S) j9 J6 O- o- P6 j. @' ~2 f+ T
  6.     <div class="mui-content">8 a) {1 p2 i5 s& O$ v
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>
    4 B1 l3 @4 Y4 A4 l6 w4 z- Z' s
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>& i, D9 v% {" z& x- s8 M. [
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>0 |+ K: H& M' W6 F( ^
  10.         <div id= "bcid"></div>; i! u" q2 {0 y( e, ^7 j& s
  11.     </div>/ U3 C- v. d1 S) c( e
  12. </body>: i& y4 W- [8 S
  13. <script>5 a& Z5 l+ F" h) \$ ^& P/ z
  14.     mui.init({9 P' G0 c5 F  d& T  R
  15.         swipeBack:true //启用右滑关闭功能
    3 d- u- H( \: u6 f* _! _
  16.     });
    ( U4 h2 t) U" {' P& H4 \6 u
  17.     var scan = null;# {$ K' [; O/ ?) k; J7 p0 e
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭0 g: g  l$ i9 W- Y: e6 J
  19.     // 条码识别成功事件
    & l# J( E# Z$ V) H3 N7 E
  20.     function onmarked( type, result ) {* `/ Y+ t4 `( g# y) ~- O' Y- Q7 z
  21.         var text = '未知: ';
    # `7 N2 {  b  i$ R
  22.         switch(type){7 D7 d! c0 z5 {  C% a' y  b
  23.             case plus.barcode.QR:/ ]; R9 X% o  C6 W' l4 w
  24.             text = 'QR: '; // 二维码
    5 o% P  `9 ^- ?% ~1 K0 B4 ^
  25.             break;
    ( x  a, v- [1 o- {
  26.             case plus.barcode.EAN13:
    4 ^1 P9 D+ L) ]8 _% K: `
  27.             text = 'EAN13: ';  z; e$ [0 T3 t& z9 {! T
  28.             break;
    : J6 \& ~: y0 K6 W
  29.             case plus.barcode.EAN8:
    ; `$ B  I3 x. a( [3 Q
  30.             text = 'EAN8: ';
    ) Z3 v! v* v( j- U# s
  31.             break;
    , j. x7 G! {2 l4 y1 v
  32.         }3 O. Q' j" A3 X) d1 l
  33.         alert( text+result );
    ! @' i  |0 r, x6 z, a1 n( W
  34.     }
    1 m) i2 {. Q' z4 U- S4 _
  35.     // 创建扫描控件
    1 B" g% M% n) }0 M, {0 U3 {
  36.     function startRecognize() {
      m% h, t6 ~, r- {" G) T
  37.         scan = new plus.barcode.Barcode('bcid');
    " [. g9 B& W* V& z* |% q& ~, B
  38.         scan.onmarked = onmarked; ' y/ h  c4 D# q4 [
  39.     }& K+ S* H8 @+ g" h' d0 X
  40.     // 开始扫描! \* z* ~) @' _/ M& g
  41.     document.getElementById("startScan").addEventListener('tap',function(){
    4 r1 x/ J) t  M- @5 R: n/ s1 K1 o
  42.         startRecognize();
    ) U1 ?1 ]1 f: K# ~* M
  43.         scan.start();
    . W. W* S1 L  F$ O2 h. B( b. d
  44.     })
    & }) L; S6 j& v- m  l4 B8 Y8 n, I
  45.     // 取消扫描
    # X  c( [/ @4 l" v0 W
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){
    . G6 i% O8 R+ W% Y
  47.         startRecognize();2 y+ N4 n1 `  F* \) d$ z
  48.         scan.cancel();0 z& @# M) m+ P; b0 D
  49.     })
    . V" H0 v/ _9 ?
  50.     //  开启和关闭闪光灯
    . N7 t0 U. ?1 ^7 J0 |
  51.     document.getElementById("setFlash").addEventListener('tap',function(){
    6 p' \! `" g2 [2 P* q! I) R
  52.         startRecognize();
    1 L7 [' ]: q- X6 s4 y7 d
  53.         isOpen = !isOpen;
    * B/ f8 K7 \! ^1 g3 H2 J
  54.         if(isOpen){. ~# Y9 g4 O- G% J7 X4 E
  55.             scan.setFlash(true);
      `, |9 x6 Z  C9 F
  56.         }else{" y. b- {: @' `" I% N
  57.             scan.setFlash(false);
    ) B- ?# c6 Y: F6 I
  58.         }
    5 P2 f' Z: A( y: {* D" Z; w: P
  59.     })
    . l! L4 O$ R* L  I
  60. </script>
    7 }6 L0 @. o0 V( V
复制代码
: j7 p' b/ F2 |; v* A
效果图什么的就不上了,和前面提到的文章中的效果图基本一样。
. Y9 k: D# C$ a/ I8 g! I
+ i/ O* y* q, n6 T9 E( E7 C$ m
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-9-21 03:13 , Processed in 0.064730 second(s), 19 queries .

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