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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。
' u+ x  s7 O2 Z% [! A以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些:
9 M( V3 C$ t$ P5 Q《【iOS】AVFoundation架构下的原生二维码和条形码扫描》 5 @9 i- [+ k3 O; U. n! x
《【iOS】CoreImage原生二维码生成(一)》 . B$ @; ^) n0 O" b1 l
《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》
! A* i0 D# s( V( Q5 H在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。
3 M1 m2 S' g/ p2 B原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。 - \5 _+ C3 |: N) v! d) f0 K
直接上代码,注释都在代码里面了。
0 L/ @3 c4 L' [5 U, l  m) Q
  h/ g# i" ]* C* V" n! K
  1. <body >
    - F9 ^; `: F" p, v7 U
  2.     <header class="mui-bar mui-bar-nav white">
    & j7 F0 K  I9 e7 m; G5 }5 i
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
    7 H7 N+ ]5 h! k2 O1 D: H+ D
  4.         <h1 class="mui-title">二维码扫描</h1>' B% _% q5 |, k9 I3 D2 Q& E
  5.     </header>4 s% A- W' ^: a1 z  `7 p1 q1 K% o, F
  6.     <div class="mui-content">* \. Y) J9 m& W; s7 n" V5 T
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>
    0 s( K# \6 P* I  U1 I- n) T
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>7 p5 h* |2 |; A+ ^& @; j
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>
    9 V5 z' j+ {% X( J
  10.         <div id= "bcid"></div>
    , T' j& |; B  A" f( w
  11.     </div>8 j) @, h& z1 Y/ H! C
  12. </body>% s' Y# m) q  ^. r2 e7 r
  13. <script>0 a% M" C3 `0 O* h; M3 M
  14.     mui.init({
    ( D6 {# O5 u. N5 X7 {
  15.         swipeBack:true //启用右滑关闭功能
    9 j! n+ B7 ^5 ^$ y. F+ g& E/ |
  16.     });4 j+ J4 b5 K; v) ?9 r" B
  17.     var scan = null;
    ; t# _$ z- w5 X" W5 ~/ K! b/ M% a( q
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭
    6 n6 a, A4 D; n& O
  19.     // 条码识别成功事件' H4 B- s) e& Z
  20.     function onmarked( type, result ) {0 E/ B; Y+ s0 m
  21.         var text = '未知: ';
    . Y# e) e) e5 h4 N$ B8 O, a  E
  22.         switch(type){8 }2 a9 Y9 t# f' W
  23.             case plus.barcode.QR:
    1 Y& E* v7 A9 R' H7 L3 ?% p7 U' U
  24.             text = 'QR: '; // 二维码+ [+ e- B' ]$ K$ A! ]6 G
  25.             break;
    $ @- ?& ^% K# I. H" a! D2 o6 o
  26.             case plus.barcode.EAN13:7 y2 b8 `' c( J. D" E8 @
  27.             text = 'EAN13: ';. f8 X3 T4 q, O( i* @
  28.             break;
    6 C: J+ s6 @7 G, y0 o! p0 u1 U
  29.             case plus.barcode.EAN8:, g0 k5 c0 ~6 n/ A& d( N
  30.             text = 'EAN8: ';# @! a. D6 k! ~- K, v! E7 H/ J
  31.             break;
    8 U6 o8 L  e. P# {7 B$ u
  32.         }
    2 ?8 H+ c! P/ s2 o  t1 |
  33.         alert( text+result );" X$ K4 P, E* ^6 l, q" T9 F4 L
  34.     }) s6 j. |% |9 N9 h3 B; e3 d
  35.     // 创建扫描控件
    ( w9 ]9 d2 a* l- S# l6 M/ i1 K
  36.     function startRecognize() {; b, C: x: [9 T
  37.         scan = new plus.barcode.Barcode('bcid');, e. q) V8 o: t
  38.         scan.onmarked = onmarked; ) ~* B8 F* d; T! ]
  39.     }6 u9 l+ ]; C2 N' O* R& R8 c
  40.     // 开始扫描
    * i( i7 b% g" J
  41.     document.getElementById("startScan").addEventListener('tap',function(){& x' U2 Y0 ?( X" `2 s
  42.         startRecognize();1 P" ?. k) `" z/ v/ g  F. G4 G
  43.         scan.start();8 F0 S! r: c2 C1 f
  44.     })/ S1 p, `. K, E) l
  45.     // 取消扫描
    1 ]' |8 k& Z8 E8 B# R$ L
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){. Q$ Z, b" p: S! b7 C( W( T6 U
  47.         startRecognize();9 \1 ^1 p# G* d" p3 z9 i
  48.         scan.cancel();
    # |# p2 }2 G) I0 z( @$ x
  49.     })6 o! W4 D4 G4 A- P8 E' u
  50.     //  开启和关闭闪光灯
    1 a; e  f- [- a; b# a' d( Q/ r
  51.     document.getElementById("setFlash").addEventListener('tap',function(){
    ; h7 \7 S" H: }2 R, {
  52.         startRecognize();5 I  U6 v7 P4 \9 c2 L5 a
  53.         isOpen = !isOpen;
    # {. V4 u7 N+ O" n" I0 J
  54.         if(isOpen){  z) A; w9 r: c8 z' f& U, Q' H
  55.             scan.setFlash(true);( o3 Q/ N: z7 l4 j  W3 H& c6 o
  56.         }else{. o6 a$ s; W2 q! r- Y
  57.             scan.setFlash(false);
    $ e' J% l' q" |7 h$ [& [' p2 G
  58.         }
    % c2 q$ c7 \+ ]; q5 w: H( T+ k" X. l
  59.     })
    # u% w- r& K6 ]4 r- V& {# D
  60. </script>% }$ b8 W( i( n, t! Z* m, a) K
复制代码

/ o, L" |4 c8 ^& ^效果图什么的就不上了,和前面提到的文章中的效果图基本一样。) b7 T3 ]5 p* k" n; E

* U% Z1 H$ J( O1 E! Q4 F  e+ K4 s
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-1-30 17:37 , Processed in 0.046536 second(s), 20 queries .

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