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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。
  R+ m0 r# K5 B9 Q+ f3 j2 I以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些:
' q! f8 C" y1 D- s& `; e% N+ ?《【iOS】AVFoundation架构下的原生二维码和条形码扫描》 1 i( }" l& j* j  h, c
《【iOS】CoreImage原生二维码生成(一)》 ( q# r7 L8 J0 B
《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》 & C6 h" X6 j' ?$ M7 _/ A8 L7 O
在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。 2 L- U$ e& D* f1 c
原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。
' z4 ^- u' k$ ]$ p  q6 o4 |直接上代码,注释都在代码里面了。
. B' f1 E4 ?& ^7 G+ J$ ]; [( I6 t* e1 b- ~4 a
  1. <body >. l) f: f& E4 m/ ~7 ~! H
  2.     <header class="mui-bar mui-bar-nav white">
    / `3 h, t" z0 f. \) ?" z
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
    6 X5 V& n. z& M  }
  4.         <h1 class="mui-title">二维码扫描</h1>" t4 o9 x7 L% `+ ?0 L
  5.     </header># N0 N9 ]% E: i0 B% M
  6.     <div class="mui-content">' _3 e5 t, f$ Y% U& ?! v! q9 E
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>
    : `! a: j! B: ]+ j1 r, x) A, ?
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>
    * z: U1 g1 u: N: @! d' j, g
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>7 c, ]6 O6 j% r5 e8 a
  10.         <div id= "bcid"></div>5 @6 Q5 G6 w- f+ b8 \2 a/ K: L
  11.     </div>* Y# _0 Z5 Y  H' {0 S6 ~  m
  12. </body>7 O) F$ h6 c' l
  13. <script>6 r% z5 d( m' M% ?+ ^
  14.     mui.init({
    * x" k. O5 Q! ?. B
  15.         swipeBack:true //启用右滑关闭功能9 M  G- T8 O# s  J
  16.     });0 g% U0 k: J* ^
  17.     var scan = null;
    * F% T/ k: w, h: e3 K! ]7 \
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭8 s& }) k  K) m; A2 P" y
  19.     // 条码识别成功事件% i* K$ M. I* I
  20.     function onmarked( type, result ) {
    , n; _  ~! A6 f- d8 y7 j* @( l; F
  21.         var text = '未知: ';
    8 E, K6 Q3 j4 b! @' J  o8 O' J
  22.         switch(type){
    ' @4 A1 [8 V0 D" p) Y; Y7 f
  23.             case plus.barcode.QR:) `& d* e+ N$ N) }; {; ]* W
  24.             text = 'QR: '; // 二维码
    " a5 P4 L' \2 J$ a
  25.             break;8 R! ?3 J8 d$ U  d. }
  26.             case plus.barcode.EAN13:2 H9 U: \$ k4 M. \# @. C" h
  27.             text = 'EAN13: ';/ t/ @7 f" x& Y6 s) W; E% Q
  28.             break;
    4 s5 ?0 ^% D. }  ~
  29.             case plus.barcode.EAN8:5 a, u' K9 m' \) K. p
  30.             text = 'EAN8: ';) _% D$ }) k+ h6 b5 E9 I1 D7 c0 l
  31.             break;& ^: t: a( ~, u- D
  32.         }9 m- |$ i! }0 y6 v  k
  33.         alert( text+result );6 U7 e- V$ U- J5 J2 ^( O
  34.     }
    4 \( r: n9 P, w4 Z% R
  35.     // 创建扫描控件8 Q5 F$ I# x8 X4 s: I
  36.     function startRecognize() {
    : C" N& t; @$ L2 r7 B( d/ U' b
  37.         scan = new plus.barcode.Barcode('bcid');% W: t, ^( @. ^0 t  [, k; Q0 l7 ]
  38.         scan.onmarked = onmarked;
    % W$ `4 H! e& Y; k. G' t& u
  39.     }1 a+ Q5 }; I& H, k; _
  40.     // 开始扫描
    8 }3 b* E( }/ ?. g1 r
  41.     document.getElementById("startScan").addEventListener('tap',function(){& I- n- M- t/ Q# Z
  42.         startRecognize();
    8 n2 k6 j9 X) e% M; d
  43.         scan.start();
    0 B$ ~/ r* \/ b1 a- g1 Q2 Y0 E
  44.     })9 q- c6 a; e/ U! e9 R6 i( v. Y! P: y0 A. Y
  45.     // 取消扫描. k. {8 w7 |+ @
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){8 s- U; u2 ^* W8 ]& U" p# m
  47.         startRecognize();, E* r7 W0 ?5 V# S  l, m
  48.         scan.cancel();  j  |) S% @7 t; y/ Z2 v5 q! {
  49.     })
    ) l# O/ Q  ]1 ]* G# G
  50.     //  开启和关闭闪光灯; X; h& Y- G/ D  o9 c# p2 z
  51.     document.getElementById("setFlash").addEventListener('tap',function(){
    $ x4 Q: M- F  Q3 `' q7 ]
  52.         startRecognize();
    " ~3 c' b8 B2 G( k5 Z( M- `
  53.         isOpen = !isOpen;$ H* ]- V0 H. c0 W
  54.         if(isOpen){
    * }: z) L$ f  D9 b0 j; E
  55.             scan.setFlash(true);
    & Z% v: F$ F, |2 j6 S
  56.         }else{* Z1 n! R- }! D6 A$ f. Y' g0 K
  57.             scan.setFlash(false);
    , @# I) F7 U6 t) L' f1 F! q1 o$ s
  58.         }" m3 X8 p$ k6 x& w2 \/ P
  59.     })
      T' h& }3 q: L4 ^9 }
  60. </script>
    ! }8 A$ [5 h: o1 z
复制代码

' C' ~; x* |! X- j6 V0 f) O! j9 J效果图什么的就不上了,和前面提到的文章中的效果图基本一样。7 _3 e0 v2 f0 Y7 X& Q

- x) m* V$ T6 h$ I# P/ c
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-1-30 14:42 , Processed in 0.052105 second(s), 19 queries .

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