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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。
2 X; [  R" K: ~1 ]6 h以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些: # p( l6 `6 ^5 \4 q8 |6 b! I
《【iOS】AVFoundation架构下的原生二维码和条形码扫描》 ( Q$ D8 O3 _# b
《【iOS】CoreImage原生二维码生成(一)》 . b  O; ?+ H3 k
《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》   [( _$ Y# q" o2 x* t0 ^+ k
在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。 ! O# u5 e+ n2 R5 T0 a
原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。
  V' s( U4 f6 A9 ?直接上代码,注释都在代码里面了。: I3 k. ?8 F4 B4 e! n& J
  e) d7 Z0 |( r' |
  1. <body >8 W; G8 H6 U4 t: \
  2.     <header class="mui-bar mui-bar-nav white">2 b4 K+ d6 `) q- j* e# q1 K
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
    ' ^) c4 F3 F( K
  4.         <h1 class="mui-title">二维码扫描</h1>$ l( n0 \" ^, C' U# Q
  5.     </header>3 X0 n3 o1 y3 U$ f6 x
  6.     <div class="mui-content">* R6 ?3 b6 u+ x0 v. z1 x. o, G
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>$ ?2 w  g+ y4 O" j7 B5 K
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>9 A& |/ Y! ^9 ~$ I4 a
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>
    3 H7 U. m) @3 b( H" J/ E
  10.         <div id= "bcid"></div>. x) Z& U$ s; X0 K. w
  11.     </div>
    9 J- G6 @' ]2 `: E
  12. </body>
    " _. a7 o$ \3 X7 j5 W' ]
  13. <script>
    ' {+ D/ B1 m( j0 R* C$ e$ N
  14.     mui.init({3 e( g) K  }: ]# e( h: a$ I
  15.         swipeBack:true //启用右滑关闭功能
    , g5 E) g( \! }: `: h. u
  16.     });
    + @2 o4 L$ T! B$ y7 p
  17.     var scan = null;
    7 q2 U; O* f, V9 v7 ^9 `
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭
    ) o7 O; H5 y$ E8 U- f
  19.     // 条码识别成功事件
    $ e' z/ {. A. q0 Z6 p) _9 P
  20.     function onmarked( type, result ) {. x# b5 |5 X- f
  21.         var text = '未知: ';
    9 j* Z7 ?) Q/ e- i
  22.         switch(type){/ x) a& T, s' H/ m/ e7 s
  23.             case plus.barcode.QR:
    4 e& o0 k9 j" V0 L4 y6 r
  24.             text = 'QR: '; // 二维码
    * }0 x8 l& l! ^& Z" s. }
  25.             break;
    ( N/ e) O/ p$ Q0 a( c/ R
  26.             case plus.barcode.EAN13:
    & D+ Z; v- c+ W2 S. e# x% {
  27.             text = 'EAN13: ';
    1 }4 @: _" O6 ^. [
  28.             break;
    . C! e; b. J% d6 w- ]
  29.             case plus.barcode.EAN8:/ `( p5 R6 g8 F6 O) h9 }
  30.             text = 'EAN8: ';
    * Y, T8 y; i# w5 U% G* [9 |+ y  O
  31.             break;# z7 A/ F1 C3 K+ e9 p
  32.         }, v0 |/ l3 {4 c2 e; G
  33.         alert( text+result );. U5 U6 i0 J* s
  34.     }4 D& ^/ J3 X( p
  35.     // 创建扫描控件
    2 r" D8 ?. A9 ?7 D  C+ F" v" \
  36.     function startRecognize() {  y. A/ V( U" m' \. V
  37.         scan = new plus.barcode.Barcode('bcid');
    " _0 ]" I: v) O% }# m
  38.         scan.onmarked = onmarked; 2 G1 J3 T* P: Q9 K" I8 O
  39.     }" I( z. p1 e" K7 W) I; `
  40.     // 开始扫描1 \1 t0 L8 ~% Y5 q% p8 j
  41.     document.getElementById("startScan").addEventListener('tap',function(){7 ?6 d. |- g8 m8 X
  42.         startRecognize();. H/ t1 i) r3 O* U6 x1 z2 F% v; J
  43.         scan.start();) G1 Y/ ~: B; `1 Y5 X! x
  44.     })
    * w; j( E* G- N( v
  45.     // 取消扫描* N- o7 {& S& N1 p
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){3 Z7 _5 J. Q& n/ n8 L  \* G2 D
  47.         startRecognize();& S5 `8 ~" @/ C( ^
  48.         scan.cancel();3 u/ L9 Z& m# m# }6 }
  49.     })
    " b7 W' B! }& L7 v. P
  50.     //  开启和关闭闪光灯
    & U. D( d4 j/ a
  51.     document.getElementById("setFlash").addEventListener('tap',function(){
    9 F' H- h/ h; Y
  52.         startRecognize();+ _3 e; B$ S3 i2 f
  53.         isOpen = !isOpen;
    * d' k, ]* @6 Z- G0 L$ q
  54.         if(isOpen){0 v; c: n- t9 A# W
  55.             scan.setFlash(true);5 W0 J+ {6 b6 q; l
  56.         }else{
    * j$ n) W% g7 r
  57.             scan.setFlash(false);) W* A. l: |; E: U( e" p
  58.         }( R! r4 c& @2 t0 t
  59.     })( H9 C8 o' ?; S6 G6 C7 b4 V" F  q
  60. </script>
    - s' |( Y- N4 Z( J0 h
复制代码
4 ]4 y* D' A/ t/ J( c  Y8 q4 O
效果图什么的就不上了,和前面提到的文章中的效果图基本一样。9 r" ?, e* {! A" A/ \
' P- u; U  W# H5 M- P+ k
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-9-22 04:11 , Processed in 0.052892 second(s), 19 queries .

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