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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。
0 e8 Y, C  _- E6 G8 T5 p以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些:
/ p( q/ h& B, z1 H& @《【iOS】AVFoundation架构下的原生二维码和条形码扫描》
' l- Z7 ?, D; W; b《【iOS】CoreImage原生二维码生成(一)》
$ B0 v9 T0 I% P0 }《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》
- h0 ]3 C- X& E9 i4 P& _5 F. ]9 m在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。 : N) r% U% V* U. t
原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。
+ S0 u; T( R6 U: i直接上代码,注释都在代码里面了。$ `- S& g9 f! m3 f7 |6 F, t8 m7 b

$ X4 P5 |, a# Y) G! X( k
  1. <body >  m) z$ O4 n, R' K* \
  2.     <header class="mui-bar mui-bar-nav white">
    3 N: g; A$ T, }8 S' G, W
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>8 M$ L) k3 @2 o$ l; K
  4.         <h1 class="mui-title">二维码扫描</h1>( N! n. K6 r5 r. N6 N9 d! u
  5.     </header>
    - }$ K2 I1 ?- S  W
  6.     <div class="mui-content">/ R+ K' L/ a# p
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>7 C( O/ p5 L' R. h1 g' {
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>
    : H7 y! O/ O+ Q8 x; y8 B
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>
    + d* W5 a( e: ?( ^  X
  10.         <div id= "bcid"></div>9 w9 S1 y$ X' s2 _: Y& a8 r
  11.     </div>
    9 a9 V$ G2 M/ }% T. T4 o2 Q
  12. </body>
    * }+ }: L3 l& F
  13. <script>$ y  r1 E2 P  R* b
  14.     mui.init({
    ! ~# \7 B0 c+ z1 t* P; C
  15.         swipeBack:true //启用右滑关闭功能
    9 h, ]2 v) }9 v2 K$ m* u/ n
  16.     });
    8 I' X7 D$ ~9 T: d
  17.     var scan = null;
    : T9 b6 g' s6 @3 s$ O
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭9 S' [. b; j: h( y
  19.     // 条码识别成功事件/ Z6 n& |% B$ v' P
  20.     function onmarked( type, result ) {
    + c0 K0 y3 o" o/ ]7 L1 ]
  21.         var text = '未知: ';
    - ^' r$ O* ?; {8 {5 W
  22.         switch(type){
    $ j, G0 G- o  U2 B; f$ E# B
  23.             case plus.barcode.QR:3 X  c. e; c- [8 s7 [" v+ P% P
  24.             text = 'QR: '; // 二维码
    % Z9 `/ F( |5 ]" ~% S: L6 v) N
  25.             break;& B; W2 x& X% }1 Z5 X9 u7 `  @
  26.             case plus.barcode.EAN13:( e! D9 B6 Y% E) _/ V2 a
  27.             text = 'EAN13: ';, y/ q! @6 @: P5 n+ T# L
  28.             break;
    % G3 K  i2 K% L- N& C
  29.             case plus.barcode.EAN8:: l) m6 z4 h: N8 p# W/ n! ?0 d
  30.             text = 'EAN8: ';
    6 L7 i1 x4 f$ Q( ]/ K
  31.             break;
    5 Z$ w# ~4 G. K' B/ n+ J
  32.         }
    2 P% E' I6 S. X) G0 |8 ~2 F
  33.         alert( text+result );
    6 T/ X: p2 U2 v; S8 j9 `
  34.     }' X; Y3 E! J4 A4 `
  35.     // 创建扫描控件1 A8 }7 d( P& w1 i7 j
  36.     function startRecognize() {
    9 P6 r* t, o$ c
  37.         scan = new plus.barcode.Barcode('bcid');0 P% ~+ u. U5 ]% i( [
  38.         scan.onmarked = onmarked; - `, f. G- _1 p% Z+ M  E$ N# `3 `
  39.     }* V; r0 a8 H# y7 G
  40.     // 开始扫描* Z- f5 Z/ h4 t- i
  41.     document.getElementById("startScan").addEventListener('tap',function(){
    , H; }' L, D5 w' _) @  v, |3 l
  42.         startRecognize();
    2 X4 H! E/ ^) n, ~1 L4 g: v
  43.         scan.start();
    0 v+ D: Q8 e5 U9 h0 y0 X
  44.     })- P+ i6 r, @, ~+ D: \
  45.     // 取消扫描
    ) a( s, R  e" r1 a; \5 i! ?
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){( u% o- f5 L0 E
  47.         startRecognize();
    0 j( V" n, G' d
  48.         scan.cancel();9 a, b2 _4 i: I! F' A5 O( l
  49.     })
    6 u6 u2 ]$ U" v& ]' g
  50.     //  开启和关闭闪光灯9 i. {1 a9 ?! V! M
  51.     document.getElementById("setFlash").addEventListener('tap',function(){
    2 |7 D5 D% }, y' o# U
  52.         startRecognize();5 D0 T: v# G, `3 o6 D1 @( i
  53.         isOpen = !isOpen;' K) k+ [1 c9 @8 j- L8 `! {
  54.         if(isOpen){% R5 t9 C" }  q0 t  X) c2 }% P5 r! B
  55.             scan.setFlash(true);
    9 M  L9 s8 X. O0 W- q, [! q
  56.         }else{
    4 [6 w6 x+ B* b9 a+ p8 g1 `
  57.             scan.setFlash(false);2 l! k0 h+ ^- A. R& W: @6 M
  58.         }: s4 i" ?8 k8 g( Y( d
  59.     }); n. l, C$ g0 Y; q- |  O
  60. </script>
    ( |3 q: \6 @5 E4 }# i
复制代码
2 W0 [* }6 L: o0 j2 y
效果图什么的就不上了,和前面提到的文章中的效果图基本一样。  Z: e" {; \, k5 y$ J( x. n; M4 Q; X
& l2 A  C, s  ?! D
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-5 06:39 , Processed in 0.117531 second(s), 21 queries .

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