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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。
$ }- D. b, L( Q0 K2 l以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些: 3 A- I! i! ^. ?
《【iOS】AVFoundation架构下的原生二维码和条形码扫描》 * ?% u4 g- E* B5 `$ R
《【iOS】CoreImage原生二维码生成(一)》 & R$ e  {/ y: y
《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》
* L2 E# ^0 N/ E3 Z在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。 6 p: z* o! ^$ k3 L! c) Z" [
原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。
+ }+ P/ u" v7 E# e1 o直接上代码,注释都在代码里面了。" Q" S5 I4 K) Z! c% R
1 t* A7 t0 ?# q# a. u! N/ A6 T, B& s
  1. <body >! F/ m( h( D4 r3 }) p
  2.     <header class="mui-bar mui-bar-nav white">9 b" u1 S2 A  \4 U
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
      _; I/ ]& a: ~8 e4 o) x
  4.         <h1 class="mui-title">二维码扫描</h1>
    / H7 C) E3 s+ J! y+ Y+ f
  5.     </header>" D( O$ E2 u5 I4 K$ z
  6.     <div class="mui-content">9 J* R! r' Y2 [8 h
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>
    8 Z# `) m! m1 a0 t* e
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>
    . [. j/ z9 v) h, q% R8 R
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>
    4 G4 g7 u7 }2 e( b
  10.         <div id= "bcid"></div>
    / M. p2 g4 _* w7 a
  11.     </div>
    / [5 R: {  @8 C  |
  12. </body>3 L9 ?$ E  `, V  w! l  S
  13. <script>
    $ ?$ d6 Y: w# q/ R2 o) l6 w4 Z
  14.     mui.init({
      z5 K+ a# Z" S  J/ y- L( N- ?9 u
  15.         swipeBack:true //启用右滑关闭功能
    + b; N7 T0 E6 @5 W$ C( C
  16.     });
    9 \/ U" ^9 \- x! V
  17.     var scan = null;" D& m$ z) ]/ [
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭
    + J' f$ Q. K6 @  J% {
  19.     // 条码识别成功事件
    6 P+ z( g9 ^) Q+ Q4 B1 }! P- A
  20.     function onmarked( type, result ) {
    + l' u  R% _2 \# Z) H! b9 X( }
  21.         var text = '未知: ';
    " J1 o* l# d  Q, {+ M$ w
  22.         switch(type){+ \% N2 r) P& U% F' b, X7 m" ?
  23.             case plus.barcode.QR:" K+ ]' z! R! ~* R1 P( l( o3 }
  24.             text = 'QR: '; // 二维码3 O' R, e6 |! j3 ~: \1 l" ]
  25.             break;
      J0 r' ?! S/ y" D
  26.             case plus.barcode.EAN13:
    3 U4 f1 j! f8 O3 J
  27.             text = 'EAN13: ';
    / A  [0 D8 }, [+ a! o
  28.             break;6 u9 ]6 L9 X8 ^6 U5 j
  29.             case plus.barcode.EAN8:& f- J5 K5 \* |# K8 C- Y
  30.             text = 'EAN8: ';" T* \0 }% `- i+ C
  31.             break;. K1 C2 [% w% }: D
  32.         }
    # ~+ U4 u' q9 m9 J' J  q
  33.         alert( text+result );
    ( n& ?$ m/ h, K6 q- Z* r4 V/ B  n
  34.     }
    $ `4 F  l6 r+ J+ z4 ~+ n
  35.     // 创建扫描控件
    5 J* s' \& b5 l( K) e1 s
  36.     function startRecognize() {4 ^/ n* Y, N* C# J
  37.         scan = new plus.barcode.Barcode('bcid');/ r8 p4 N5 m8 N$ Y) ~
  38.         scan.onmarked = onmarked;
    : H8 a1 q/ N" S. T/ Y
  39.     }
    # F* ?& F) s/ P* e: O
  40.     // 开始扫描  N0 S) S+ o! d5 p& @
  41.     document.getElementById("startScan").addEventListener('tap',function(){
    5 f- G% ~- {7 t4 d3 [- r' J6 d
  42.         startRecognize();2 i/ O1 @8 \  o1 s3 s+ P' K0 Y
  43.         scan.start();& n4 W2 @' _- q
  44.     }). ]+ C" W( a# X6 ~' T# W: w2 u/ N3 I
  45.     // 取消扫描7 D: o: E0 V( s+ v8 N3 Y8 @
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){
    ! x3 K6 s$ N+ n! n
  47.         startRecognize();( S1 s% L8 ?  K1 H+ `* {# r0 C. ~, m
  48.         scan.cancel();* m2 T  F3 h  i( R3 w' I7 \
  49.     })7 v5 G  ?4 G, y$ ?+ U, K
  50.     //  开启和关闭闪光灯3 Y- s- h5 c" K9 G9 ?) Y! w, c; w) d
  51.     document.getElementById("setFlash").addEventListener('tap',function(){
    7 s6 P, \1 A* _' q9 ]( A) H0 g
  52.         startRecognize();" Y; N5 y5 M' c5 [; |; F, Y
  53.         isOpen = !isOpen;: `, I0 c" }1 t
  54.         if(isOpen){
    / h2 R: }0 k8 m* G% }: N' w
  55.             scan.setFlash(true);/ O1 g# h" @# F  a- N4 i2 H
  56.         }else{/ {2 d& Z' i7 O% i
  57.             scan.setFlash(false);
    3 f. @8 F# b: j; x. c
  58.         }
    , v4 G8 W' Y  q
  59.     })
    * m# P5 g8 ]% j3 x; \" {, w
  60. </script>
    $ z. \1 V$ K6 a# s6 r" I
复制代码

- o8 w0 E+ o7 K! x: y% O2 E效果图什么的就不上了,和前面提到的文章中的效果图基本一样。
# I5 E* `% r7 H( F1 f
3 y% Y! Z2 [8 G+ k
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-5 10:02 , Processed in 0.147490 second(s), 19 queries .

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