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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。 : j- i. I! [; ]1 Q
以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些:
8 t, R+ o& k* |4 p3 k《【iOS】AVFoundation架构下的原生二维码和条形码扫描》
- b- ^5 }9 V# d《【iOS】CoreImage原生二维码生成(一)》 5 q* s4 l3 Q/ U: N" L5 V4 ]
《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》 % Z' N# b- f& T; R' w
在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。
# D% W- N- x- X. [' ]* K! }原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。
: F6 h( {0 }2 g. e3 P直接上代码,注释都在代码里面了。
9 z" D- }# M9 l2 H+ Y0 e& ^
" c: v% K3 ?/ R0 j2 t
  1. <body >) s5 A% E8 A( Q
  2.     <header class="mui-bar mui-bar-nav white">
    # V1 R" J. e" K9 I3 F% p- `
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>. C; P8 N+ k4 F8 G$ |$ H# U: }
  4.         <h1 class="mui-title">二维码扫描</h1>/ ^" M$ }: K& Q4 \3 W( b% d3 s  n
  5.     </header>0 D" n6 L. e7 n' R- ], Q
  6.     <div class="mui-content">
    + D& v8 K5 U+ {6 B* A' s( a
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>( ]- J4 D) o- A* S: p$ L8 D
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>% ?/ @8 }$ u% T
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>7 }1 \% d$ O( X7 _
  10.         <div id= "bcid"></div>
    ) h1 O& K% J' e; }, J8 }; ]
  11.     </div>
    # K" @- ~; w5 O5 S. `
  12. </body>
    5 |/ ]9 m0 X& C1 d) z5 x  R
  13. <script>( x; d2 t9 F' D! s9 ]! \
  14.     mui.init({; e* g% ]) P$ V; R; F' d
  15.         swipeBack:true //启用右滑关闭功能
    $ M( x5 Q3 I' W# ]  h9 x( E5 A
  16.     });
    ( u. P' Z( `) H2 Q( R
  17.     var scan = null;
    # q, _2 P9 I3 i6 E% y! E: `
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭6 u  A8 q# [! W( @6 s& v
  19.     // 条码识别成功事件* t; [" T9 ~/ r: r5 H- @- k
  20.     function onmarked( type, result ) {
      s3 A& \# U  g" b
  21.         var text = '未知: ';
    % I: r" ]+ s1 u* Z9 A3 P' e4 @
  22.         switch(type){
    ! l& J5 X( G7 i5 D3 w$ S: s1 J- R
  23.             case plus.barcode.QR:0 y+ ~! r, j& M( l9 L$ W
  24.             text = 'QR: '; // 二维码
    7 O* T+ d) E3 x# O
  25.             break;$ G. R1 d$ ~) p' k' m
  26.             case plus.barcode.EAN13:
    6 n2 O. m) y. K, a1 T. F
  27.             text = 'EAN13: ';* }  {% S6 k2 z  z
  28.             break;
    ; T3 Q* ]- z$ ~! y2 r7 }6 ]4 `9 W$ n6 t
  29.             case plus.barcode.EAN8:
    1 I/ i$ c7 q7 K
  30.             text = 'EAN8: ';! D. L6 D4 j4 b, M* A
  31.             break;
    * u/ T: V" @1 q9 o
  32.         }
    * F- k2 M; p* _1 M7 F2 Q0 U; B7 R
  33.         alert( text+result );! ]. E0 f; t$ j. x" p
  34.     }1 o( j/ T* |0 Z0 v6 X3 G  f9 J4 O
  35.     // 创建扫描控件
    " E, ~, p: H2 ^9 L( a8 I6 E
  36.     function startRecognize() {, Z; c4 T$ X& S- e  A  r+ @
  37.         scan = new plus.barcode.Barcode('bcid');
    : P9 l4 p6 {% m+ G% D- s
  38.         scan.onmarked = onmarked;
    9 y* Y8 v; t  `0 W9 g
  39.     }
    8 N, Q2 l  Y! f- B& Z7 {! O
  40.     // 开始扫描& y& b/ H3 p- f! K2 y1 n7 J% R
  41.     document.getElementById("startScan").addEventListener('tap',function(){4 x7 E4 J  @8 d' N( I
  42.         startRecognize();9 f5 r( v% f: V4 O
  43.         scan.start();
    ! U4 T+ S8 \8 k3 C
  44.     })- A, k% F. M4 e  @6 ?) [
  45.     // 取消扫描& u1 \. v2 C* ^: V! Q5 |+ g$ X0 J
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){
    3 s! ~( L7 f/ G; N6 ?8 u
  47.         startRecognize();/ F$ z7 c5 B7 n% _
  48.         scan.cancel();
    5 W1 E9 Z! D/ r/ p  X" X( u  j" p: d
  49.     })! f6 m+ V+ z' H$ W( X
  50.     //  开启和关闭闪光灯/ U2 `2 n9 H' o. ^! {
  51.     document.getElementById("setFlash").addEventListener('tap',function(){3 m0 X) e% s; T# Y8 N- ~
  52.         startRecognize();
    ! y' i' }: Z1 Q  {( q/ I, s
  53.         isOpen = !isOpen;
    ' z. P/ q* M! S5 ^2 |7 ~
  54.         if(isOpen){
    % T: W% f# z7 s9 A" I( b- R; C' U
  55.             scan.setFlash(true);) d8 @; A' |1 R, S/ |% S5 H& g
  56.         }else{: a% [/ ~+ i8 @% v; W. U" f
  57.             scan.setFlash(false);
    2 p+ l* r" ]9 F; a& m& [2 F
  58.         }
    1 ~: k+ t$ c8 ^2 o# T$ ~
  59.     })8 ]9 X& Q' u; p6 ]- [
  60. </script>* F+ p, m' _0 t; ~" e
复制代码

- z8 e7 X2 F+ T# z7 ?7 g: z效果图什么的就不上了,和前面提到的文章中的效果图基本一样。4 F; d2 b7 l+ B  x0 R

, |+ N+ Q, N, w1 x! N5 o
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-1-30 15:01 , Processed in 0.047973 second(s), 20 queries .

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