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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。 - s% v- Z, L' z3 w. p, p
以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些:
% R& f/ z$ R5 T0 F  b' L《【iOS】AVFoundation架构下的原生二维码和条形码扫描》
- |  K2 C% C; X《【iOS】CoreImage原生二维码生成(一)》
% _+ b8 T1 S" @5 X6 ^《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》 " T' u1 l! g- \
在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。
8 D4 |' l, J" J: x( J原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。
4 B/ W5 m5 r5 a3 B7 M直接上代码,注释都在代码里面了。
- ^6 \7 f- T" ^# y
4 v9 i6 A2 p* h  w3 |" Q0 m
  1. <body >) D) ^. {" I! C5 a0 a5 `
  2.     <header class="mui-bar mui-bar-nav white">' w+ o- r6 h% |" _; j9 W& e+ I
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>4 @8 }) Z2 _8 N4 b% O
  4.         <h1 class="mui-title">二维码扫描</h1>
    ) N7 d2 p$ Y" ~
  5.     </header>' A0 X5 b0 t4 W% p
  6.     <div class="mui-content">7 f# F# B: r+ O& f! z
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>6 W+ X% J0 q6 X* i$ H
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>- x- T; s/ t3 T" }6 d1 V
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>
    " z: p2 b# `8 w9 g
  10.         <div id= "bcid"></div>
    : ]! N. v5 [3 ?4 s* {- ^/ V8 Y
  11.     </div>$ `- V. J+ j  @" {6 k. u) W3 J! Y# _
  12. </body>. s5 Y0 h7 x9 Y1 d% q, ]
  13. <script>1 R( q1 r7 P$ C" k: ^  X; V. ]
  14.     mui.init({
    : s% Y( r. f7 m/ M1 i
  15.         swipeBack:true //启用右滑关闭功能
      Q* k: s- T+ Y
  16.     });
    ' K0 J6 E3 l  N6 ^
  17.     var scan = null;
    & p6 }, ~9 i  U  E/ _. U
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭
    7 v( p2 ?1 e" z# m5 |
  19.     // 条码识别成功事件
    $ \' t1 U) O1 @4 T( Z, E% i
  20.     function onmarked( type, result ) {
    & w, y3 s, V: j$ K" i& u
  21.         var text = '未知: ';
    2 r& @) d5 A9 F; Y0 e" r8 K
  22.         switch(type){
    - a/ i* a$ g+ g0 v& {
  23.             case plus.barcode.QR:5 o- ]( j" E- C5 {0 c9 M* I
  24.             text = 'QR: '; // 二维码
    2 G; t# ~% w1 G, U2 p9 ~# I" p
  25.             break;
    " l" D$ b( H+ A' ]! y' o
  26.             case plus.barcode.EAN13:7 I/ A. m4 p! c; s. X
  27.             text = 'EAN13: ';
    9 b: N$ h% Q, _
  28.             break;
    ! Z% l) ?/ m. t5 x
  29.             case plus.barcode.EAN8:
    1 @3 W3 Y! i8 G8 G! {
  30.             text = 'EAN8: ';( [) b. o/ Z4 [, ^- I4 |
  31.             break;' w9 ~9 F, }6 F  g! m" S. @
  32.         }% a, U, n, V6 }, W# U' s
  33.         alert( text+result );
    9 {+ ?; r+ n/ ^+ M1 D- c3 e. n
  34.     }; Q- m! s% \% S. C( o
  35.     // 创建扫描控件  U: q  v; u& V1 s( h6 C$ E
  36.     function startRecognize() {
    . ?' N/ T' m: h# R$ ^' }
  37.         scan = new plus.barcode.Barcode('bcid');5 s; P! v& w% m0 `
  38.         scan.onmarked = onmarked;
    1 y, q& }3 }" P. B' G4 V5 F, `
  39.     }+ ^; V0 r4 f% f' s' D9 r
  40.     // 开始扫描
    # h8 q. y+ @2 a# `
  41.     document.getElementById("startScan").addEventListener('tap',function(){/ \0 b, Z' ]8 V5 b: G6 c9 o
  42.         startRecognize();
    2 W- n3 b2 Y+ ?( V1 p
  43.         scan.start();
    % R4 q4 w" i7 b) R5 Z' b
  44.     })/ l* j' Q4 W6 [% p- ^
  45.     // 取消扫描
    ' o( Y2 l) g6 o' t: Q# X* L  @! ~& a
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){5 Q7 S" ^- @$ T% G% j9 @. U" u0 |
  47.         startRecognize();
    8 x" u0 t/ C0 l6 P1 h
  48.         scan.cancel();
      n0 E$ k% M7 Y3 Q
  49.     })
    9 M. ~; S( p% i5 k0 w% Q& n, f
  50.     //  开启和关闭闪光灯
    $ x' H, [9 W+ T9 y+ Z8 d) U
  51.     document.getElementById("setFlash").addEventListener('tap',function(){
    6 Q! x3 ^8 P& C/ o: d
  52.         startRecognize();' U5 R& s/ }7 M& N7 s) ]; h# I
  53.         isOpen = !isOpen;
    6 `& F$ s" p9 a. l' L
  54.         if(isOpen){* \9 H( A1 j! s9 }
  55.             scan.setFlash(true);. i' |. {! P7 h
  56.         }else{
    " Q" z) O% p7 L5 _4 B" g6 d4 j
  57.             scan.setFlash(false);
    7 \* M- n2 D$ I! ^2 u2 |, J
  58.         }" y' F) w) k. V* F' G0 a* {! Z
  59.     })
    . Y1 Z, D- C/ B6 i' b
  60. </script>& l( V6 N- f8 i8 O8 X
复制代码

1 `9 h6 K8 t! `8 Y7 m  _* `效果图什么的就不上了,和前面提到的文章中的效果图基本一样。- M1 ^# j( |4 B
1 }2 z5 T. u: H0 o6 K7 R- a
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-4-30 23:54 , Processed in 0.064907 second(s), 21 queries .

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