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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。 0 r- j+ v4 {6 O8 ]( G3 E  r
以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些: 6 t  d+ ~+ X9 D8 h* n
《【iOS】AVFoundation架构下的原生二维码和条形码扫描》
; l0 d# l' [# v( _( n' b( n% C& \8 }《【iOS】CoreImage原生二维码生成(一)》
5 w: ?- h& p; B% k6 ^5 _4 ?" Q2 j《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》 3 y! f4 B; f8 C+ i; Y$ B8 [
在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。 ! o2 C; U7 L. ]1 A6 L
原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。 - S5 `3 c/ @2 l9 ]
直接上代码,注释都在代码里面了。
3 `6 r6 j& L" Y/ N+ d$ o! Z: f& `
, D5 @9 [1 t7 |8 {8 D# Z  f
  1. <body >
    0 Q0 T! q2 A) [" S9 c
  2.     <header class="mui-bar mui-bar-nav white">* B$ B1 X4 N, L2 D: j
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
    % Z# ^, k5 D* x' F8 e
  4.         <h1 class="mui-title">二维码扫描</h1>
    3 s- k) e6 Z2 e: J+ q
  5.     </header>, j- G1 q0 }/ ]/ D7 ?
  6.     <div class="mui-content">  F  w- _- l0 P2 m
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>
    2 ^; E6 q: a8 ]+ H% {) X( ~
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>- {! D4 h* }& B, Y4 p% S, r
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>! X# v3 s5 y) t# ?
  10.         <div id= "bcid"></div>" z, J  o; B4 \
  11.     </div>
    ; J5 Z. l$ l6 n- F5 Z" y. l
  12. </body>* i3 ^/ v" Q1 X$ S/ _2 Z7 ^
  13. <script>
    5 x' _6 s9 `  R! l5 w5 E9 e1 p/ B
  14.     mui.init({
    # z& ?+ B! ~- @# u. k. y+ S" m' U
  15.         swipeBack:true //启用右滑关闭功能! ?8 `8 t" `  V  u1 @" \' W
  16.     });
    / \( x1 ^. t$ B9 @" C& o
  17.     var scan = null;
    8 N1 Q9 `4 v, j# {3 D+ k
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭9 M9 l; D6 s$ H# ~$ v) |
  19.     // 条码识别成功事件
    . n3 Y6 C5 C2 k+ I, L! N5 b
  20.     function onmarked( type, result ) {
      o4 |, N6 z2 x% E
  21.         var text = '未知: ';/ P" {9 ^- S6 Y7 [$ B# b- T7 X
  22.         switch(type){
    # U+ _5 H# T  H8 @. P& C
  23.             case plus.barcode.QR:
    $ S" V0 ^) Q5 ?4 A% K; d) i9 Q2 T
  24.             text = 'QR: '; // 二维码; ~/ H; Q2 S: G% d& s5 A3 B
  25.             break;
    ! @& a! R5 ^7 m5 Z
  26.             case plus.barcode.EAN13:
    ) q5 L0 L+ n9 |' Y9 q- m$ j2 U# l
  27.             text = 'EAN13: ';
    # y6 X# X" n$ e3 t) T3 u
  28.             break;( _0 ?8 }8 a. W0 ^& w$ R0 L
  29.             case plus.barcode.EAN8:1 V" N0 {6 |# E/ n
  30.             text = 'EAN8: ';
    $ p' v) M% o4 i6 a) x; w. G0 I( M
  31.             break;
    ' a. Y" `! s* C! N1 V! B  R
  32.         }" }+ R8 N$ r; l# p& q
  33.         alert( text+result );
    - O. o+ m' B0 ~) P0 m- M, H
  34.     }) {9 h" m0 _6 n5 k( n
  35.     // 创建扫描控件
    ; }; o' f+ t! Q
  36.     function startRecognize() {
    ( A* B3 o7 x3 a. F) w
  37.         scan = new plus.barcode.Barcode('bcid');9 ^0 T; ?! L  _% Z8 j
  38.         scan.onmarked = onmarked; % \* L- ^0 h/ U- A5 y& |
  39.     }
    2 r+ [& R6 B+ f% y; l! }
  40.     // 开始扫描7 X  O- m( ~4 C( `$ f3 O8 }" w
  41.     document.getElementById("startScan").addEventListener('tap',function(){
    & f; [1 k1 l8 M" y
  42.         startRecognize();
      T. b8 t  g$ C) T  `2 W' M% b
  43.         scan.start();
    ! N) z# _0 I2 t5 D- J
  44.     })
    , ~* r5 d+ }: i, `
  45.     // 取消扫描
    + i5 \7 m4 g1 }+ k+ V
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){
    1 {& [; y+ ?1 M* Q$ f3 [% C+ B
  47.         startRecognize();
    1 ]6 B  o4 S  [" e( ^
  48.         scan.cancel();+ B0 Q# E& Y& r2 @6 B) w( ^
  49.     })
    $ w1 U4 \+ n% v! k% p
  50.     //  开启和关闭闪光灯
    ; {( f5 ^+ b8 q! O% C
  51.     document.getElementById("setFlash").addEventListener('tap',function(){- Z3 t7 }' I4 r) `, y* n, n
  52.         startRecognize();; T+ `! T6 ?3 K5 Q
  53.         isOpen = !isOpen;2 C5 i. d0 m9 V2 m& f
  54.         if(isOpen){
    9 X8 u) {6 e- b* S3 d5 }' v5 q
  55.             scan.setFlash(true);/ |& P/ E7 A% t& H4 ~  M0 _  N
  56.         }else{
    ! \7 L! _. B: }0 X3 ?8 e6 @
  57.             scan.setFlash(false);1 i  U) f' n2 f; ^, }; a( x  F; @# ~
  58.         }; E: _9 A- N! }' p0 Y: J3 L* s
  59.     })
    4 c! \  U) G" h2 T
  60. </script>& v' _# `/ D* l& x; W
复制代码

# z* W& X. e1 k- J6 _) r2 L4 U效果图什么的就不上了,和前面提到的文章中的效果图基本一样。
2 e: X0 M& x) D$ g# b/ D& C; M7 e; L5 s0 y2 ^: a
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 21:49 , Processed in 0.111589 second(s), 21 queries .

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