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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。 " o  R$ |' c( j$ Q5 X( c( E
以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些: 0 a! [  I7 g0 T% G6 H6 O
《【iOS】AVFoundation架构下的原生二维码和条形码扫描》 ' u: p3 n6 R# V
《【iOS】CoreImage原生二维码生成(一)》 & \6 z% N' W$ {3 m* P+ R* A( I  u
《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》
0 z8 |1 f' ^4 w0 q4 S% c/ M在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。
2 x" O2 m( i0 P. q! _8 L* w& m原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。 " |4 r3 N& Z# y: ^* n
直接上代码,注释都在代码里面了。
) u2 z% T4 K, w0 H2 `3 T0 }/ `
# m, D" b6 k3 C' Q( W  B: {, |
  1. <body >
    ' [# d6 w. r; t/ `
  2.     <header class="mui-bar mui-bar-nav white">9 r  ~& k. Z* A' z5 a+ {: O# F
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
    0 |+ i" N7 i: n+ x: I$ I/ ]4 i7 `
  4.         <h1 class="mui-title">二维码扫描</h1>
    # x4 J9 y+ e8 W! k* B+ J! M
  5.     </header>; j, c! {/ _! w
  6.     <div class="mui-content">9 f+ j% a* v4 V9 C" Y$ b- t: c
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>! }5 @7 u: U1 l
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>
    , Z) X) `! Q# W) w& b, ^- z8 P
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>
    0 [2 W) O4 X: ]2 _8 c6 R
  10.         <div id= "bcid"></div>
    ; f# f& M5 f8 X: Y, L" v* d" ~$ `
  11.     </div>
    ; b: ^' ^* j" [3 r4 S. s& z
  12. </body>/ x) H, A* p0 [+ O4 U( c5 y6 A9 |, E
  13. <script>
    5 X; a" c3 A" z0 @" m% K. J% l
  14.     mui.init({' Q$ A- C3 M- ^* f: q: N8 g( e
  15.         swipeBack:true //启用右滑关闭功能9 f7 g6 Z7 N( H1 h% F% @2 K& ]
  16.     });. P3 }" ~, h. F/ w" H
  17.     var scan = null;
    ; J2 n2 y' p7 H* u3 l: Y, j$ G
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭7 c, V  e$ ~: H& ^: d* H
  19.     // 条码识别成功事件: d( q, |' `& M6 m
  20.     function onmarked( type, result ) {
    3 H, G( ]7 u8 e- i" `
  21.         var text = '未知: ';
    ; @) S6 O& i& v+ ~4 u8 j9 Z
  22.         switch(type){9 E: g5 @" Z( a. r6 n2 b
  23.             case plus.barcode.QR:! D0 N" ^: \( U% s0 T& t& O. q/ q
  24.             text = 'QR: '; // 二维码9 @  f' Z: r( i: b" U8 ], x5 H
  25.             break;$ M: f7 |* V7 {( m. m4 {* O6 F- ^& k
  26.             case plus.barcode.EAN13:- V+ e6 p. z9 u
  27.             text = 'EAN13: ';
    ) q& \+ d: `+ `5 q( [; \
  28.             break;9 Y2 v6 v$ S. U0 ~7 _) ~7 y/ P
  29.             case plus.barcode.EAN8:( O3 {& [0 Z+ H: f% w' x" |' p
  30.             text = 'EAN8: ';
    ( Z5 b; h4 V: W0 z
  31.             break;
    % `/ g7 d& M8 i! e
  32.         }
    1 `6 p9 v7 q& D
  33.         alert( text+result );
    / ^) c/ S2 M: Z6 g5 E% s
  34.     }4 k9 ?1 L3 B! u, B! U  {2 u. O
  35.     // 创建扫描控件* K( a8 g; ?, O
  36.     function startRecognize() {
    * [# D/ [' U& o; d
  37.         scan = new plus.barcode.Barcode('bcid');
    % s8 E# x8 g& ?  G: k
  38.         scan.onmarked = onmarked;
    % X' x1 x: |" f3 U& X+ X3 `& S
  39.     }% V  _, A" s6 M) v: Y
  40.     // 开始扫描4 H* t. ~  t( e
  41.     document.getElementById("startScan").addEventListener('tap',function(){0 ^2 p  z) m6 Y8 M, X$ ?# H
  42.         startRecognize();9 s! B# H9 K2 |
  43.         scan.start();
    2 Z- E: G* o) L9 y5 e7 |
  44.     })
    % C6 m! e8 |/ z; ?
  45.     // 取消扫描2 m" I$ b9 s" O! p% s
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){
    - x0 w3 V& p% `6 F$ M5 P+ d' c2 }2 q7 ]
  47.         startRecognize();
    6 M9 Z8 O( M2 e4 u
  48.         scan.cancel();0 l  z0 q# |; i% O
  49.     })$ v. t: q. D7 q$ u! b3 N7 D
  50.     //  开启和关闭闪光灯3 }. x6 \. s% c+ |8 F
  51.     document.getElementById("setFlash").addEventListener('tap',function(){6 h2 f$ H) t& N6 }$ V0 S: d4 T
  52.         startRecognize();; `5 i/ M" j5 Z; M
  53.         isOpen = !isOpen;0 O$ W" w0 a; i
  54.         if(isOpen){
    : L, |4 x* t- ]  c: {
  55.             scan.setFlash(true);0 a+ T8 v9 q4 m# N1 e$ s
  56.         }else{
    / o' Y1 @  k4 `5 r" V7 q! Y
  57.             scan.setFlash(false);1 j% c, M# N' Q2 y- b# u
  58.         }
    . S: E1 Z% X% v
  59.     })$ Z! B  R* D- S+ n7 v' t+ ~! {
  60. </script>+ R0 G: a3 }8 f1 U, {
复制代码

& `; S, c# I; V# x* Q) y效果图什么的就不上了,和前面提到的文章中的效果图基本一样。
% n) I+ i$ W3 P3 I) ~5 S0 R9 K9 n- a) M4 ?& Z! t5 h0 `* [( ?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-23 01:30 , Processed in 0.110583 second(s), 22 queries .

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