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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。
8 W. W* X$ Y6 z" x, M- O: `以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些:
' Y5 V' d: M. I0 Q( C' W1 v《【iOS】AVFoundation架构下的原生二维码和条形码扫描》
0 D6 B" @! m+ H+ I8 Q1 w6 p6 O《【iOS】CoreImage原生二维码生成(一)》
- U, X4 @4 L! _! k: m《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》
( ^5 N8 k9 u( P* L5 e! \在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。 % g/ v' j6 _3 a: N  R0 B
原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。 ( H! w+ W0 ]/ J2 ?
直接上代码,注释都在代码里面了。
  E/ u; F/ _+ ~3 r$ ]- @- z( X- S3 V# r4 B/ u+ t
  1. <body >
    + `! L' B: l# L! }; W3 F9 L
  2.     <header class="mui-bar mui-bar-nav white">
    * Q/ |, l3 _6 Q; e
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
    8 i, m; j0 O) {  h! M  H+ [
  4.         <h1 class="mui-title">二维码扫描</h1>* b9 p& i) A5 e
  5.     </header>
    6 i3 Q  `$ B. _( j
  6.     <div class="mui-content">- t, G/ {, v  r5 G2 @  r+ U8 L2 Q
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>
    : Z. b4 H) T! u% N) e
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>0 V9 q$ _/ C! J# G$ }! @
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>: \, h3 Q' `% j" H* n, Y: J, T
  10.         <div id= "bcid"></div>
    # ^; H# ]  r/ }/ r, v) e
  11.     </div>; s4 T$ h0 C6 ^+ H/ k" ^" h1 `
  12. </body>
      I# Y" T; n% s& J
  13. <script># b2 S- C) e5 O! G* \
  14.     mui.init({
    % N$ c5 t( K: `* Z' k9 m: ?# d% z
  15.         swipeBack:true //启用右滑关闭功能$ f1 n, x" R0 w# I% p" e3 A) H
  16.     });
      E; G5 ^2 @! n) {* I. j
  17.     var scan = null;
    ; p; @7 I7 v5 m+ S
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭' D: O% O' i4 L- N% P
  19.     // 条码识别成功事件# {1 ~! v% Y; W5 F, }# Q: S2 v
  20.     function onmarked( type, result ) {
    * d7 `6 q% S! d% {, g+ D, {- G
  21.         var text = '未知: ';. W# x9 I' t( r1 X
  22.         switch(type){9 z3 S; A1 X9 M- N& y
  23.             case plus.barcode.QR:
    7 e5 q8 ?" y1 y2 ?
  24.             text = 'QR: '; // 二维码
    ; d( X6 g! m% ?. A6 e5 W$ |+ _
  25.             break;
    4 H2 j/ `+ Z5 D0 l) E/ s- @
  26.             case plus.barcode.EAN13:
    ' M5 N: S$ u4 q3 q3 f/ i5 p
  27.             text = 'EAN13: ';
    6 H- i# @+ m, ]
  28.             break;& s  Y+ l% ^: w5 C  S8 C
  29.             case plus.barcode.EAN8:0 t$ o  t& l8 q/ u# B8 C7 r
  30.             text = 'EAN8: ';
    . Z1 x" M! H+ J
  31.             break;  P" |  _$ v1 ~: N
  32.         }
    & q( x, Q5 ]5 S2 @
  33.         alert( text+result );
    8 Q' U; z7 I' W) Y& m) Q4 e/ s
  34.     }
    ( K9 A- f; x% P9 M2 W) g
  35.     // 创建扫描控件. V' F% o+ n+ Y  V, T3 {
  36.     function startRecognize() {
    " v( U  e/ w/ Y8 Z. {  q7 R2 h( `
  37.         scan = new plus.barcode.Barcode('bcid');+ ?/ h9 E/ V' s3 M: Y5 u3 w
  38.         scan.onmarked = onmarked; . e' u& M0 |+ b0 b- |- v7 N
  39.     }
    4 q% t$ D3 P) A- V2 V
  40.     // 开始扫描
    ' G8 ]. P; x" z$ B  g8 p
  41.     document.getElementById("startScan").addEventListener('tap',function(){/ r7 {& v* h6 Z$ [- i
  42.         startRecognize();, S3 D# T( g, f* Q2 B
  43.         scan.start();
    & D& m9 C8 f1 k3 M
  44.     })
    " t* P$ E5 m: d
  45.     // 取消扫描/ y6 E+ V8 v$ S6 m4 h
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){
    " o% Y4 D: ~7 [) x2 m! a$ i
  47.         startRecognize();
    $ _! d3 S( c" X$ ~! g3 P" w
  48.         scan.cancel();
    / r- }% m$ ]( Z: S
  49.     })
    6 b, w6 K( j1 N
  50.     //  开启和关闭闪光灯; @* U) N: L6 s8 j  _' S
  51.     document.getElementById("setFlash").addEventListener('tap',function(){
    2 f, ^, T. Q3 L0 a7 o2 `8 t
  52.         startRecognize();
    1 E5 k5 Y' e% ~3 e+ _- y; L. k
  53.         isOpen = !isOpen;* }9 Q0 j' v. c" {9 @9 |! |9 e
  54.         if(isOpen){3 W/ c) w, X6 L2 ~
  55.             scan.setFlash(true);3 T$ S8 a8 h$ H. F3 }
  56.         }else{4 w, g1 A0 s( m0 L
  57.             scan.setFlash(false);
    / ]0 ]2 f  l+ A: W/ ?1 v% d
  58.         }( F1 u& ~' u) `& a, M
  59.     })
    5 j' D. S! y+ t6 k& J- ]
  60. </script>
    ( \. ]( B- r) Z, s/ ~1 ^! A0 z
复制代码
5 o! P- x! X6 ~1 |% b- H' N
效果图什么的就不上了,和前面提到的文章中的效果图基本一样。: M* g. t1 S- O0 o6 T* U0 x

+ O6 P5 @9 ?0 U! x7 I4 s' ?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-20 05:21 , Processed in 0.124092 second(s), 20 queries .

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