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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。 1 Z0 U9 V5 q% N
以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些: 0 v5 Z+ C6 x9 t* c/ H
《【iOS】AVFoundation架构下的原生二维码和条形码扫描》
1 W! O7 [9 b, u《【iOS】CoreImage原生二维码生成(一)》
7 U7 @. X; Y6 T$ Y《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》
+ e; q7 ?0 Z1 d  P0 U在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。 5 ]; ^) X# @4 K
原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。 5 B2 ?2 `9 g' b
直接上代码,注释都在代码里面了。; `" T/ G5 E) {3 d0 ?5 y3 g

5 X  Q8 c; r3 M
  1. <body >
    ) s0 r# A' p- q. ^/ o( z
  2.     <header class="mui-bar mui-bar-nav white">
    , ^/ y$ p$ [8 V; o/ a6 E
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>% F/ z+ d3 C" x5 Q- b4 C; t- \
  4.         <h1 class="mui-title">二维码扫描</h1>$ Y5 H) E  \% f4 v* |+ {; A0 B
  5.     </header>6 t! V! U: D6 Q; R  A/ j# H9 j
  6.     <div class="mui-content">+ O5 i$ I2 J. i4 S  w7 r7 s
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>( L+ [. q2 G# r( Y% {7 P
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>
      _' c3 M# S0 A
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>
    & D; k2 ?9 |) j/ X' G
  10.         <div id= "bcid"></div>8 ?( P& b& ]3 s# f
  11.     </div>/ j: s! o& o5 O9 D2 |" b( e
  12. </body>/ x  D6 @* c3 {; p
  13. <script>, G; [6 B1 X0 R+ I
  14.     mui.init({
    $ k: c9 p7 u! W; D3 M0 _' x% k* O
  15.         swipeBack:true //启用右滑关闭功能
    / S& ^, u. a+ [- ?1 |
  16.     });* f3 x! C. H2 h) ~- U
  17.     var scan = null;
    ) K% w, t* [0 l1 l7 M5 h
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭
    3 o$ t  z0 g; @4 X
  19.     // 条码识别成功事件
      t8 H0 ?" T. z3 g1 o+ S
  20.     function onmarked( type, result ) {
    ' R! P, F1 n" y( r
  21.         var text = '未知: ';$ d; _0 L8 f- n8 P& a
  22.         switch(type){
    6 @" d& D; m2 [. q$ `! I3 C
  23.             case plus.barcode.QR:# L! T0 b. C' N
  24.             text = 'QR: '; // 二维码( j9 X. v  w$ B2 |3 A( l* i
  25.             break;
    7 J4 D2 T% p* l. [7 u3 B
  26.             case plus.barcode.EAN13:: V( m+ \$ X1 U+ p
  27.             text = 'EAN13: ';
    ( m5 W* G" H# V2 \$ y
  28.             break;
    ; g* W  ~9 F4 C; E2 ~4 Z$ D
  29.             case plus.barcode.EAN8:' _$ V. K7 l- |7 Z( O7 L5 F9 V0 f
  30.             text = 'EAN8: ';
    9 z6 W- m4 l' |+ o8 I
  31.             break;
    8 L4 u2 l; V# I. J" y/ C
  32.         }
    + O* _8 Q7 p/ b, S/ q6 W
  33.         alert( text+result );
    4 H2 Z; x0 Z& n) M
  34.     }1 P1 i1 I7 [9 E
  35.     // 创建扫描控件  I6 H; u, Q; I9 m
  36.     function startRecognize() {
    4 ^. ?4 a- l% h. M
  37.         scan = new plus.barcode.Barcode('bcid');
    4 W$ \+ ^4 y0 g, |" _# V
  38.         scan.onmarked = onmarked; , ?& h1 Z  n3 L/ T* j0 W' G
  39.     }  W* q  @3 E& a, W$ g
  40.     // 开始扫描: H/ M" b7 b  J8 M  K( l/ P: f# F
  41.     document.getElementById("startScan").addEventListener('tap',function(){
    * h  g+ S9 t) m% S
  42.         startRecognize();
    / z# q/ x: G8 g3 I! B- z
  43.         scan.start();0 U. M1 s6 O) L
  44.     })
    # h4 g; B% L1 y. J/ q2 _
  45.     // 取消扫描
    / K: {; o4 d2 w: i8 w; E
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){: _/ g" w) h, n
  47.         startRecognize();
    2 ?& V& {3 _3 L6 h8 @' K
  48.         scan.cancel();2 D2 o, i" N2 D1 e, T4 Q
  49.     })
    % L! G# e, [7 o, M8 O( p
  50.     //  开启和关闭闪光灯
    % g: L$ `. {3 V7 }7 H$ T
  51.     document.getElementById("setFlash").addEventListener('tap',function(){
    . ?) f8 u: X6 }& M/ i+ K, n
  52.         startRecognize();
    4 L' l3 O$ J% Z' I, V" m
  53.         isOpen = !isOpen;
    / d2 B  Q4 T4 \& d
  54.         if(isOpen){; j! S' _. Z$ ]! Q3 y1 C3 c
  55.             scan.setFlash(true);
    # D% |9 w0 H: x
  56.         }else{1 g- ~  V: z- _( X/ S& T: }- p
  57.             scan.setFlash(false);
    + \2 R8 W* I4 L6 G4 k+ y, M& z
  58.         }
    # p3 e2 E# T8 o5 U, p% P
  59.     })
    # {4 p. g& J/ ^! l; M
  60. </script>
    $ m( A0 Z( ]# U/ {/ |$ @
复制代码
6 g( H0 h2 Z* s& L" S- A
效果图什么的就不上了,和前面提到的文章中的效果图基本一样。( U& s& {1 i: t2 D- m8 H  J

1 D/ e0 \, C. d0 M" V
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-23 01:18 , Processed in 0.120890 second(s), 20 queries .

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