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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。
/ p# Q, U) ^3 O0 g* y! x以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些: . G2 }) H( l" t$ k- ?% v. Q
《【iOS】AVFoundation架构下的原生二维码和条形码扫描》 3 A7 E& j3 x0 Y
《【iOS】CoreImage原生二维码生成(一)》 8 [2 t7 `: x' |
《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》 ( D: Z9 V/ _2 |! P4 H
在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。
! B/ l. Q" P9 c! [2 N% d2 P. _原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。 % Y% }& R5 q* D) I$ t
直接上代码,注释都在代码里面了。) d8 A0 D6 E1 g1 c- z* v
$ l; F' M8 @! {& y& ^
  1. <body >
    9 _; q' D) d) r5 v
  2.     <header class="mui-bar mui-bar-nav white">
    ) }  d3 y' a8 M
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
    9 e6 z. u) Z3 n
  4.         <h1 class="mui-title">二维码扫描</h1>
    8 ^+ ^( I/ k- V
  5.     </header>1 y' ~. O/ P: M3 Y
  6.     <div class="mui-content">( {: ]% x/ f( d' v
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>7 |5 Y' T8 P# R" {" W- U0 [% M
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>6 [0 Y0 F: F, \( m: X
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>
    ( S  F( `3 Z0 W& W+ m
  10.         <div id= "bcid"></div>- W- z3 X; s0 _' v+ Y9 V
  11.     </div>( [" i) Q7 k4 p% m: j' O, [6 C- p. m
  12. </body># m* u$ W% [( q" Q
  13. <script>, z4 [" ^0 e5 N' a
  14.     mui.init({+ F! P! a: {$ H( ]* q, S7 y
  15.         swipeBack:true //启用右滑关闭功能0 D( T+ R+ b  V* I4 F4 Z
  16.     });8 n* k2 i5 U# t( f
  17.     var scan = null;
    : \& U# u  X" \: y' s
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭, b  h& o/ h6 E' E
  19.     // 条码识别成功事件
    $ R0 w; R& X4 `9 A  A% i2 T$ v
  20.     function onmarked( type, result ) {1 S( S- E+ l6 t3 l. m: j% V
  21.         var text = '未知: ';2 b. x- q) g" [
  22.         switch(type){
    2 c8 H4 @) N# T# }) {
  23.             case plus.barcode.QR:) s1 @2 p9 }- z% M1 ]  |) p6 Y
  24.             text = 'QR: '; // 二维码
    , L6 L$ s8 L3 g) i$ j
  25.             break;9 K8 e, w+ K1 Y; B  {& E% ]  g4 s
  26.             case plus.barcode.EAN13:
    ! X+ d+ g: B$ `! D
  27.             text = 'EAN13: ';
    ( J( ^9 T$ f8 y4 S# E) Q2 j( E  L
  28.             break;
    $ y& N: Y( X/ G5 b* {, S  a0 \1 b8 W
  29.             case plus.barcode.EAN8:) ^( h- u: B' |& _9 A# _( r
  30.             text = 'EAN8: ';# V7 U+ j/ f, C  q% e/ _# Y+ [
  31.             break;* h+ W3 O9 a  ]/ N4 a
  32.         }
    & K5 U5 E+ u8 q: g! R
  33.         alert( text+result );- J. i8 w9 n: w" P3 A' ~
  34.     }9 B9 }* ]' ?  u, N7 }
  35.     // 创建扫描控件7 z8 Q, x8 Q& }
  36.     function startRecognize() {- P: W$ X/ \7 J3 N2 y7 |* G
  37.         scan = new plus.barcode.Barcode('bcid');' O7 o$ t' b$ t- D* C1 {
  38.         scan.onmarked = onmarked; : S0 v2 z! |, F& q. m; O/ A! B2 E
  39.     }
    % }6 [# b! ~4 }3 J1 R7 O  P
  40.     // 开始扫描
    ) c$ k; x; [& k
  41.     document.getElementById("startScan").addEventListener('tap',function(){
    , @# M5 p, V3 Z' G+ h2 E3 {
  42.         startRecognize();3 Q' F6 T2 s9 ^2 _
  43.         scan.start();
    9 C3 K5 M1 C4 Z  S# K
  44.     })
    ' G  _# k+ H* I0 J# C# d3 B
  45.     // 取消扫描
    $ `. e& c4 C: i7 a
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){7 ~1 w9 H* _; S9 g3 U9 U& q
  47.         startRecognize();5 @$ s6 X6 d. ~* |
  48.         scan.cancel();
    0 v: A% T1 y9 v/ L5 w% i" g0 W
  49.     })
    6 D" T) z! `2 e/ _
  50.     //  开启和关闭闪光灯
    $ Y8 @/ B  L3 n4 F" a
  51.     document.getElementById("setFlash").addEventListener('tap',function(){
    1 {8 N, ]- ^" D  T4 \1 c
  52.         startRecognize();
    ! a/ P* i2 B' t! u3 {/ H1 p
  53.         isOpen = !isOpen;6 e/ O0 n2 r- y1 i% h2 {0 L. u
  54.         if(isOpen){! ?% S* E1 Y5 w  C. }6 j
  55.             scan.setFlash(true);% c0 G- L* k8 {0 R' U9 A' o
  56.         }else{3 A' R9 G9 L0 g2 L6 I% T
  57.             scan.setFlash(false);
    # G  [0 G/ e% ?  z: n# `
  58.         }
    ' {! K1 C" Z' J
  59.     })
    4 }* C: B) t8 c0 r8 k: ~) t- y
  60. </script>
    * n  B0 r) r/ ~+ M: A- _
复制代码
( r% B1 T& D- u; U( t0 N3 J
效果图什么的就不上了,和前面提到的文章中的效果图基本一样。
5 Q; [- v: J7 X8 A8 R& s
; M$ M2 s% N: K* e( s" Z8 G0 N
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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