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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。 4 H! q- `/ L: t5 D" g- p  x) s
以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些: * r7 p# @, F* V' Y9 D% ?
《【iOS】AVFoundation架构下的原生二维码和条形码扫描》 " N' u1 f  g) f- j. _! i- |
《【iOS】CoreImage原生二维码生成(一)》 , M! x/ w+ X0 T/ T& G" t# S+ I4 C4 k
《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》
2 \9 c& F- I/ ]4 [9 R9 E7 @在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。
( H: b2 t2 T" u( i# _& j6 _- o原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。
5 T. }) O- }7 M: ?, g直接上代码,注释都在代码里面了。5 I3 w5 n. f9 X- w! b- l8 e
: J& e# x; N' a( L: L
  1. <body >
    " A5 A+ M9 Q: c( [- w3 H
  2.     <header class="mui-bar mui-bar-nav white">2 K* d; b( c* f! U
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>% Q' \5 }6 ^% m! Z
  4.         <h1 class="mui-title">二维码扫描</h1>/ ?! O3 p# h, f+ l/ ?, p1 G1 f
  5.     </header># s0 a% g! o! p$ @5 w
  6.     <div class="mui-content">6 ^: g. e; m# k0 j8 K6 S9 D
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>: R- }9 E  K( a9 ?& C% d! ]. J1 v( `; g* `
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>
    4 m9 t# o4 l9 q9 `3 i8 t+ o
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>
    + M9 J% D9 f+ H' l
  10.         <div id= "bcid"></div>3 O2 D  N  v( Q
  11.     </div>+ q# k4 C" ]0 ]+ A* e+ ^7 H3 g
  12. </body>
    4 L& J0 p8 f% R$ R  ?( P6 o
  13. <script>) O$ o/ C# _7 L# m/ f' Z
  14.     mui.init({
    ) m0 S  [' _6 n7 N" }( W: }
  15.         swipeBack:true //启用右滑关闭功能" \; V! u2 d# \7 P. a, V9 |, n! `
  16.     });
    3 R9 F* z' c8 F1 t: O
  17.     var scan = null;% \5 j5 j, a0 T- x, F2 }+ ~
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭
    % s* [1 z1 t' X' q/ l
  19.     // 条码识别成功事件! c  N7 _* S4 S1 Y9 f* ^
  20.     function onmarked( type, result ) {
    ; U8 ^5 ~8 q1 V9 w& E2 t+ t2 D
  21.         var text = '未知: ';
    . a8 Q0 b7 n0 Q7 K
  22.         switch(type){5 Z* h, E1 q: I
  23.             case plus.barcode.QR:" g0 R" f6 A8 k+ U
  24.             text = 'QR: '; // 二维码
    9 y8 F3 Z0 s  ]5 k2 f
  25.             break;! M! L9 v& Y0 d0 S- W. |; F
  26.             case plus.barcode.EAN13:
    1 V9 m: H+ H1 g6 C. h
  27.             text = 'EAN13: ';; n1 l( ^3 U% a& h! K& b. J
  28.             break;
    : N- M: D7 U0 X0 e* ~( h- C
  29.             case plus.barcode.EAN8:
    0 u8 j3 i. O( e) M+ z
  30.             text = 'EAN8: ';  V/ w( a- f1 L0 I$ ^/ y
  31.             break;& r0 l0 v9 `9 Q! F8 W% y: }9 T3 g
  32.         }
    4 ~: d! b# a1 G7 l. a+ M
  33.         alert( text+result );
    ! a: g7 `6 @! L8 O) C% U! [" A
  34.     }
    ; s6 c8 e5 _0 y; h( K) b
  35.     // 创建扫描控件
    " t( z* k& I" T& v+ M" B$ O
  36.     function startRecognize() {
    % U( f$ |, `2 ^8 D" f
  37.         scan = new plus.barcode.Barcode('bcid');8 k* T! h5 D9 v
  38.         scan.onmarked = onmarked; ! K( }9 |; F6 r: q3 H( C  r+ \
  39.     }
    7 _1 H4 ^! H. T1 Q$ t6 s
  40.     // 开始扫描* O" c9 p' x* p% z+ ]
  41.     document.getElementById("startScan").addEventListener('tap',function(){
    3 t' g; J7 J" U! v# l. z# w
  42.         startRecognize();' Y' f9 w+ k% d$ H: H+ S% [
  43.         scan.start();
    ) t: K- j2 s; c: E- o" x
  44.     })
    - p6 ], v1 |# ]8 Q1 W4 M$ b
  45.     // 取消扫描
    0 o, _9 H0 f. \& ?) o* g7 X) z
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){
      b: J7 O" S/ ^6 s( X3 r. r; O
  47.         startRecognize();* ?, h% y6 |1 y, s2 C
  48.         scan.cancel();. S2 L) K1 O$ A( J" j
  49.     })7 f7 y: C  A. d6 Q
  50.     //  开启和关闭闪光灯2 o% @8 n! a2 U2 M
  51.     document.getElementById("setFlash").addEventListener('tap',function(){: A' [) I: T8 x2 k# u* a# J
  52.         startRecognize();
    & D8 C+ l7 x/ I2 V
  53.         isOpen = !isOpen;
    ) f# j! ]- Z0 y1 I0 s! w
  54.         if(isOpen){, F3 v4 o+ S* L/ T. M- R
  55.             scan.setFlash(true);5 h! {  H: l1 ~+ j. L
  56.         }else{
    3 P/ |% l' D. k+ ~/ V% w$ O( d- E% _
  57.             scan.setFlash(false);2 U) P: e  R  x9 r7 k
  58.         }
    ' s! b6 Y6 t, l, ?' d8 ^1 s
  59.     })6 i* p! ^* C" j" S* U' b
  60. </script>
    " ~2 `& F. @+ O. b4 \
复制代码

# b' s7 r4 ~5 P2 y% ~效果图什么的就不上了,和前面提到的文章中的效果图基本一样。
1 a) p5 ]$ T4 j
9 A9 y: J5 D. ^8 H' Q
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-23 06:43 , Processed in 0.120169 second(s), 21 queries .

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