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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。
1 z- C* d, A# Z) v5 q  R5 R以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些: ( A9 C* Q/ a" j
《【iOS】AVFoundation架构下的原生二维码和条形码扫描》 # G) x3 E3 E: M2 }( f
《【iOS】CoreImage原生二维码生成(一)》
1 c" t7 ^) L5 T. Y# e《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》
" _: T5 [0 ^; p在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。 ( y) ?, D+ p7 `5 T
原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。
/ U8 p/ ]0 G: E$ n) p7 a直接上代码,注释都在代码里面了。3 m7 j" h% G# ?+ W. R% R$ K1 u. ]

4 [) ]9 T7 k' o) ^1 U
  1. <body >
    $ k+ a1 q2 K! [
  2.     <header class="mui-bar mui-bar-nav white">9 a) h1 n/ ~/ O( X5 k4 m0 q; v2 n
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>. e# ]  _% s, n$ }- E6 r4 @6 o
  4.         <h1 class="mui-title">二维码扫描</h1>; m5 u- ^6 ]% E
  5.     </header>
    ' t$ ^1 x/ b) X; x/ H; ~1 @
  6.     <div class="mui-content">9 @6 Q9 z  A" S* ^4 Z4 b4 a
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>
    " ^5 Z/ h  |9 Z% n- J% f
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button># D/ P" L. f/ w0 A8 a, ^4 s1 \
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>) ]& x. V, c, g1 A# }* C
  10.         <div id= "bcid"></div>
    * X4 {8 D9 @  Q2 Z1 j+ J# |
  11.     </div># o7 c2 d& v" B) g' i, W( z5 H! t
  12. </body>
    : i* b- B% T$ _/ A  t$ G0 Y
  13. <script>
    , v# v' p# k5 s8 J) l" U5 g0 s1 Y! u
  14.     mui.init({
    ) ?/ r0 _6 {. H1 y9 R4 d
  15.         swipeBack:true //启用右滑关闭功能
    5 H- p. m0 E1 o) i6 n
  16.     });
    + ^* }7 _1 e! N8 C8 V+ `
  17.     var scan = null;
    ; c: p! R0 x+ W" g  ?6 S( z9 P' o. {
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭
    1 |4 ]2 b: }4 U
  19.     // 条码识别成功事件
    / n$ p& ]) M0 n9 l4 U/ o' k2 a
  20.     function onmarked( type, result ) {
    7 u! c7 ^. `4 y" \8 I+ m( F: p
  21.         var text = '未知: ';
    # @0 d& R8 _+ a: x, i* ]
  22.         switch(type){
    , S/ k2 q4 H  p
  23.             case plus.barcode.QR:3 P6 F+ x. x, G5 S1 r
  24.             text = 'QR: '; // 二维码% z& b+ X4 q$ G3 O; m$ V
  25.             break;
    ; c! N* Q6 S6 W$ f
  26.             case plus.barcode.EAN13:
    0 a& Z7 v. o. m' Q8 a
  27.             text = 'EAN13: ';+ f3 C% G- U( n( {, f0 o
  28.             break;
    + K* }% _; ?: A$ K$ K$ x, j
  29.             case plus.barcode.EAN8:
    9 X* }" @/ Y! g
  30.             text = 'EAN8: ';  C4 k0 Q7 s7 W* F9 R7 Z
  31.             break;, U/ q9 p/ q+ l
  32.         }$ k3 O$ o  }: E  E* M) W
  33.         alert( text+result );
    5 E* q' Q1 D* G& l& Q& ?
  34.     }/ L7 t' z7 q# T4 u
  35.     // 创建扫描控件
    ) n4 {5 l( ^. Q5 @* S3 m! h/ C
  36.     function startRecognize() {! R# w6 f7 Y: \1 }  j! l
  37.         scan = new plus.barcode.Barcode('bcid');
    ( G" V$ q) L% g7 [* M0 N
  38.         scan.onmarked = onmarked;
    ) ~: @( N6 I6 d9 Q. x$ N
  39.     }6 E: ]# x" o# T8 v
  40.     // 开始扫描
    * F; J7 W7 h. m1 e
  41.     document.getElementById("startScan").addEventListener('tap',function(){3 g0 A2 u6 V3 p. I" `
  42.         startRecognize();* h% e+ U; z2 c/ T1 e; ~
  43.         scan.start();$ m' y( J$ }) g
  44.     })0 @+ g) i. x8 N: b8 `
  45.     // 取消扫描
    5 m4 C  }# B% z. ^" `# s
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){
    . M! E. p1 W% b7 f0 M% M
  47.         startRecognize();2 V( ]) N/ T8 T6 e% L: z
  48.         scan.cancel();# |* k8 u( W3 V! c1 x, Z: U8 W
  49.     })
    . {  C2 ]# P' {* ]
  50.     //  开启和关闭闪光灯
    ' {) z7 m4 [' Y$ K; I
  51.     document.getElementById("setFlash").addEventListener('tap',function(){
    ; d: {$ a0 C% t" ?, u) @3 e
  52.         startRecognize();
    3 K* e8 ]$ p8 _& m' I& g
  53.         isOpen = !isOpen;7 ]' _/ y- H9 X9 i
  54.         if(isOpen){) \3 o/ b' k9 i8 e0 [7 y
  55.             scan.setFlash(true);( p0 U4 h3 v; H2 `' ^
  56.         }else{
    8 I. P% n# h/ ~3 x5 G7 j; ]
  57.             scan.setFlash(false);
    $ W! u: _9 p* Q' S& N+ B! j; G
  58.         }
    ! i  v  k0 O" \3 {2 r' V3 V$ X3 T
  59.     })
    9 O2 `. S. J  Q! p) |
  60. </script>( @2 b) Z' O( ~
复制代码

% O4 z9 C; F. ?" [" i" z+ I0 i效果图什么的就不上了,和前面提到的文章中的效果图基本一样。7 z5 R) c" v) `  ]  x

& L- q8 G9 s, q8 b5 H) h
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-6-4 12:57 , Processed in 0.055684 second(s), 19 queries .

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