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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。
  G# \' t; |0 }- }! X( `: i以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些:
! |+ i, h* q( {$ B: Z& l% h《【iOS】AVFoundation架构下的原生二维码和条形码扫描》 * o  ]. z% @9 J+ ^+ m
《【iOS】CoreImage原生二维码生成(一)》 ! L" s, J* I4 d" E' w0 V& @
《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》
! @( X/ m$ @9 v& R2 E) |6 M在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。
" I4 o! }- P$ s% O8 ~原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。
# k9 x* d$ Z& S直接上代码,注释都在代码里面了。! o2 X9 b4 O  R% h/ w. r$ q' H

; I5 U5 Q* p2 n" X$ o
  1. <body >
    + I% b1 D. ^" a6 E% n
  2.     <header class="mui-bar mui-bar-nav white">
    * d- O1 [( B/ @" p2 W. \: K# K
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>2 K. v& R- C2 r' n2 Z1 T
  4.         <h1 class="mui-title">二维码扫描</h1>' b: y3 D6 L$ h; t  g* E8 o( w" e* d5 O
  5.     </header>
    , z, S2 f7 L3 x
  6.     <div class="mui-content">
    0 B7 W7 E5 h  m$ @( g9 {+ \) d
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>4 L0 q$ p; R  p" i# c8 M  L
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>
    9 a( X8 r/ e! \! h3 i
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>
    & J  A4 Y; T9 b4 w/ G* z2 w
  10.         <div id= "bcid"></div>$ @) a$ \+ c2 J; S# m
  11.     </div>
    4 W" {8 x; C# T  v0 H
  12. </body>) q  e2 V/ f0 h3 Q  G
  13. <script>- T) B* X8 m$ }' S3 W
  14.     mui.init({
    1 o% |5 Q4 K. X/ x" f- |7 }
  15.         swipeBack:true //启用右滑关闭功能9 [2 R2 M/ \; f( f! D
  16.     });5 d5 a' ?$ a& k) [: @' C
  17.     var scan = null;
    1 z# T0 c2 H6 m
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭6 `3 K" T* u' i
  19.     // 条码识别成功事件0 a0 T0 A% G! t9 H4 b! S& y
  20.     function onmarked( type, result ) {
    ( H0 Y2 Z: g9 s% v/ p
  21.         var text = '未知: ';  _$ Y+ z" C# P) h& S$ x+ g$ k
  22.         switch(type){
    & M4 l, |1 U" U0 @
  23.             case plus.barcode.QR:
    4 {; Z- ~- L1 F( h5 N% U
  24.             text = 'QR: '; // 二维码
    2 q) r, `) {% `0 u+ O1 H& a8 d. |8 q
  25.             break;
    5 y# W& D; u( |) u. K' F+ i
  26.             case plus.barcode.EAN13:
    & e& L$ m* s, S# I
  27.             text = 'EAN13: ';
    * K: n4 ^. ]" i
  28.             break;. V5 ~/ V# W  ^1 V# J# ^
  29.             case plus.barcode.EAN8:# G2 |5 P- h6 J9 D* F
  30.             text = 'EAN8: ';% f$ a) U" S, v1 H
  31.             break;
    9 x. G% k; H% `
  32.         }& \6 Z- X- o# e+ X6 _/ a- e2 `! ?
  33.         alert( text+result );1 P7 G8 R- z3 J" _& F
  34.     }! Q' t- ?! `# P
  35.     // 创建扫描控件
    3 ~& @% i$ L# M4 d
  36.     function startRecognize() {$ m6 P: Q# G; P8 T1 J' M. E7 t0 ~2 J
  37.         scan = new plus.barcode.Barcode('bcid');  o6 o8 g( S4 V! m. L; |% d
  38.         scan.onmarked = onmarked;
    $ ^2 L% m' G2 m0 v
  39.     }
    " w) B+ H4 @! P: n7 a/ l8 g
  40.     // 开始扫描
    3 i! F9 _8 ?3 Z' z! ^
  41.     document.getElementById("startScan").addEventListener('tap',function(){
    + z( {# W8 J3 A. g3 X
  42.         startRecognize();
    3 H* O0 R: r* g9 |& |
  43.         scan.start();+ H. F# w, B$ c% K* R6 V" l
  44.     })
    1 G. i* F5 \: I" X$ F# H
  45.     // 取消扫描5 _, g* [. p- k7 W
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){4 Y, C* Q1 O! S; h8 j4 F& U
  47.         startRecognize();1 M% S" ^1 @; k
  48.         scan.cancel();- v8 Q* j3 f7 h
  49.     })  }8 z! ~+ {) N3 Y, d8 g
  50.     //  开启和关闭闪光灯
      ~! ~; w. m9 y' b
  51.     document.getElementById("setFlash").addEventListener('tap',function(){# b4 t: B$ L5 b
  52.         startRecognize();
    6 S  l, A9 A8 H% D; `+ v, K
  53.         isOpen = !isOpen;
    / L1 c6 p6 \4 w* b0 ^7 Q; E
  54.         if(isOpen){
    0 d1 a* R6 u. g0 z: F
  55.             scan.setFlash(true);
    & t* c# I0 w& x( x; q9 V
  56.         }else{
    ; V9 }, a$ O- ?1 y" H
  57.             scan.setFlash(false);
    % u( O" I% Z$ k2 ]/ F5 q5 B
  58.         }3 y( J0 n6 u* V. U# ?! M2 N' y
  59.     })
    # e& n3 J4 |# v1 p# }8 k! D
  60. </script>
    . J9 }, H- v3 i3 z* v
复制代码
; Z; I; ^, `& P2 j! x2 u/ Y% x
效果图什么的就不上了,和前面提到的文章中的效果图基本一样。% X. N9 }$ g) X/ W; {5 ?; M
6 T4 V3 \# b0 j
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-8-4 10:52 , Processed in 0.059092 second(s), 19 queries .

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