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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。 6 H8 X: Q9 ^9 x! A& v) P" _* K
以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些: * W) A! O4 D/ _$ a' T5 |" i6 Z
《【iOS】AVFoundation架构下的原生二维码和条形码扫描》
! R+ g* f- e3 v: p《【iOS】CoreImage原生二维码生成(一)》 8 T5 Y* o8 J. K6 A, B
《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》
7 g" `2 c( g% n6 z在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。
( Q% d. _4 N$ i; U+ v原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。 7 L: N0 {0 x2 x& Y! x  J
直接上代码,注释都在代码里面了。2 Y! x1 t$ o# Q* x

' {2 r( n' B( m6 p6 Y! z; Y! Z; i+ L
  1. <body >5 C# V( c* x" W9 c4 l. Y
  2.     <header class="mui-bar mui-bar-nav white">$ W" T4 T; |6 q2 g, W' H
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>/ r8 k; v3 X% U/ n1 Y3 y+ z( m
  4.         <h1 class="mui-title">二维码扫描</h1>% h# E; b& Z* c
  5.     </header>
    " f+ a5 V2 t' F* Q& y. l. J
  6.     <div class="mui-content">  q8 v0 f# P- S
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>2 v- f( C: @7 x/ \) O
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>' T- M6 N2 q6 f5 j
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>
    ' E  l: |  B) N5 f: ?. v
  10.         <div id= "bcid"></div>: X2 H' b: K. \3 C( y0 _
  11.     </div>
    , q# e* @# [( w, V
  12. </body>
    # h/ ?( k3 g. T. t& V' e# D
  13. <script>
    . [1 a- r8 W0 _- ~: q7 e
  14.     mui.init({
    - @4 P! y4 K1 [# f* ~% U1 m
  15.         swipeBack:true //启用右滑关闭功能
    6 F' E4 B" ?0 r1 g7 D
  16.     });: M; w! y& J. k2 \9 }, v2 k
  17.     var scan = null;
    * u* f7 i: e3 Y/ m7 Y
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭
    / Y* _; H3 N" R4 Q
  19.     // 条码识别成功事件/ G% w8 h( l: O% e  g2 x
  20.     function onmarked( type, result ) {0 {$ v, S: E) y$ ]
  21.         var text = '未知: ';
    6 g) ?1 }" R# o  i# l
  22.         switch(type){( L# _3 ]; U; Q% O$ c. Z
  23.             case plus.barcode.QR:
    : Z5 h0 q& ]" \, B% D
  24.             text = 'QR: '; // 二维码
    5 Z- E( p/ O% B! W; f* S0 r
  25.             break;2 f, b& _1 S$ N
  26.             case plus.barcode.EAN13:
    ' g7 y: f5 D. p+ |
  27.             text = 'EAN13: ';5 s- [* x2 H. `& R$ `
  28.             break;" E# P* @3 u* j* [
  29.             case plus.barcode.EAN8:& V; m+ M5 w* ^5 \
  30.             text = 'EAN8: ';, c- z0 i) p, m$ {& {4 \) S- `" J! L
  31.             break;  [- e6 M% C) s4 P
  32.         }
    ; T7 [0 Q# H) q8 X1 o9 v* s
  33.         alert( text+result );* w: Z8 L/ a  |  o. X5 J3 ?* @
  34.     }
    8 S6 i' y# u2 e: j1 u+ s
  35.     // 创建扫描控件0 ?( F5 C' P5 U' C7 ]
  36.     function startRecognize() {
    7 k6 I/ o  z# w
  37.         scan = new plus.barcode.Barcode('bcid');
    ( l* R: }% H0 N! i, C- w2 }4 Q
  38.         scan.onmarked = onmarked;
    5 z) v/ {- a/ q) |  A
  39.     }
    1 v% [6 B3 c! j* J1 y, ~! W
  40.     // 开始扫描& ]: q* Y4 J3 F
  41.     document.getElementById("startScan").addEventListener('tap',function(){/ U& D( e) X' R4 l, w+ E. z
  42.         startRecognize();
    9 }9 F" i+ _# Q' F, U8 a
  43.         scan.start();8 }- Z# ^9 j. J" b  r7 ]% ^
  44.     })
    ) ]! B6 d! X) |. h' F$ h" J$ ~
  45.     // 取消扫描; ?3 n& M; _# D+ h
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){
    9 [" {0 o1 r: p& G, l
  47.         startRecognize();6 r' r. x  w9 [: |% [9 O
  48.         scan.cancel();! J8 t6 J/ S* F  Q: q2 p
  49.     })
    : g5 ~( E1 m& m
  50.     //  开启和关闭闪光灯' E8 O  i  U. G* H& Q2 b
  51.     document.getElementById("setFlash").addEventListener('tap',function(){! w- b" g$ [6 `& F
  52.         startRecognize();
    % p) r2 k) h8 r. O; M+ G% M3 R" j
  53.         isOpen = !isOpen;
    # _9 A% E( |1 f; Q& b% x
  54.         if(isOpen){
    6 n8 }6 r2 \' n; }+ ~- W6 S5 d
  55.             scan.setFlash(true);8 q! v' X7 |8 u
  56.         }else{
    7 h9 N2 O! ~/ @/ O" H: r8 }8 j
  57.             scan.setFlash(false);- K# K$ g! M6 r5 |- A% R9 I3 G' `
  58.         }
    2 R$ X1 T/ Y& l' |5 e
  59.     })+ h7 M: x. m3 `2 U# J% z
  60. </script>
    9 i& ?9 A4 j# I( X2 r: P' @
复制代码

( W! S2 w" |# _效果图什么的就不上了,和前面提到的文章中的效果图基本一样。
' X/ e$ [* k6 l* J) d3 g# c+ V( x* h" d: O3 S- r
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-1-30 15:05 , Processed in 0.060075 second(s), 19 queries .

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