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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。
6 p+ V) I; @7 ]7 _8 P以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些: " o* y/ p  \# _! w1 ?. X: k
《【iOS】AVFoundation架构下的原生二维码和条形码扫描》
# {; e# ^# z) O/ n《【iOS】CoreImage原生二维码生成(一)》
- [5 D% x3 b( U: Y1 ]$ ]0 }: j《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》
$ P. ?- @" r7 U6 E& R在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。
, {; z9 x6 N" |( x" q" P0 d% N原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。
/ w* p' I1 |; L/ i$ ]. |/ E+ m直接上代码,注释都在代码里面了。
9 T& n5 H7 |( J/ {6 n" ]  i) m5 H3 d) m/ A5 C
  1. <body >" _$ M( ]8 {$ u3 r, h. I2 k: t+ }
  2.     <header class="mui-bar mui-bar-nav white">, v& i+ L: M" r3 c0 T! [
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
    4 T7 j- A9 \: y8 p  [, ^" L
  4.         <h1 class="mui-title">二维码扫描</h1>7 d/ g4 ?9 {/ S/ j0 @
  5.     </header>
    ! f) R/ t& X" ]- q5 o* T7 t* t; D
  6.     <div class="mui-content">
    - }; w  b' \/ R
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>3 ]9 K0 h' U- i
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>
    " m: j5 Q7 K, J6 ?$ b3 F# E3 Y! V
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>" Q. V  j8 v3 I1 x7 V0 R" m/ p
  10.         <div id= "bcid"></div>
    ; h+ Y& f" i: o( [1 O) E
  11.     </div>
    0 ~7 w; n. q+ p
  12. </body>
    ( r$ Q( @8 d6 W7 J" K5 a; Y) _6 S$ r
  13. <script>' D/ _: H3 e: J; g( b3 @& c
  14.     mui.init({
    / R0 B  _$ v7 {. U& Q9 R
  15.         swipeBack:true //启用右滑关闭功能0 i: j# @( Q! m
  16.     });# N7 d: s  f. S- H3 n7 ?
  17.     var scan = null;
    ' X, @  P: I" G* B9 y  i" i5 w- g
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭
    : ~& Z( O% B" w" u3 D& B* ]
  19.     // 条码识别成功事件
    , L. i9 z: d: P, L
  20.     function onmarked( type, result ) {+ k. C$ K' A% t6 o
  21.         var text = '未知: ';
    % r( w% @* q6 H
  22.         switch(type){
    3 M# V/ k" ^' q. A
  23.             case plus.barcode.QR:
    0 V- ?7 D0 z( ^7 ~6 y
  24.             text = 'QR: '; // 二维码
    # Z6 B8 |$ _+ Q4 {+ l6 F& }
  25.             break;+ d; l) ^2 p3 C! a+ A
  26.             case plus.barcode.EAN13:* m+ F  o% a# X/ \1 Z% {7 [  q- f" r
  27.             text = 'EAN13: ';# `' \& R4 r7 C. \' A2 z" X: \! S4 w0 R
  28.             break;
    # L0 u) v% c! O% T! Z0 T
  29.             case plus.barcode.EAN8:
    9 @3 s2 G/ z9 }: E0 m+ S3 h0 p
  30.             text = 'EAN8: ';8 C- {/ r4 S  B
  31.             break;* X) D( {" I% z: x$ T) q
  32.         }
    ; @- b# y7 \  E' E  {$ c" R! V
  33.         alert( text+result );6 O  X% K. I% D# Z* W2 f
  34.     }. Z" |+ |7 h' _+ K( ~
  35.     // 创建扫描控件9 _( }% |+ V# ?, R+ M: J
  36.     function startRecognize() {
    + {! s7 ]" G: ^$ y
  37.         scan = new plus.barcode.Barcode('bcid');
    ) S% X$ `# S( O6 M( V! _# `9 ^
  38.         scan.onmarked = onmarked; - Q' T, O- ^' X* Z9 I
  39.     }( A& Y  E, b: K/ o; A" e
  40.     // 开始扫描
    0 r% ?4 x2 H' U) v9 X
  41.     document.getElementById("startScan").addEventListener('tap',function(){
    & W6 U9 _2 c3 _, ?9 M
  42.         startRecognize();
    + p3 `* U/ c  ?/ y
  43.         scan.start();6 m) L! ^3 D& N
  44.     })
    5 {1 }$ W- |% V; S3 T8 H
  45.     // 取消扫描0 O. F4 ^0 c6 H
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){+ D+ Z! q% e- _6 }0 ?
  47.         startRecognize();; G9 }+ _2 E4 l4 G* i5 ^) H
  48.         scan.cancel();
    $ Y7 \" W5 Y; i3 S% g- L5 b; ]& a
  49.     }), Z2 c2 L- S0 A( C
  50.     //  开启和关闭闪光灯0 `$ s$ \5 C# W6 R/ m. z
  51.     document.getElementById("setFlash").addEventListener('tap',function(){
    5 U) e0 R5 V$ }, L" `2 n
  52.         startRecognize();- o! X/ X- w9 X) O$ M, k+ ?/ k- x6 S
  53.         isOpen = !isOpen;; l" L$ s# F5 a9 W
  54.         if(isOpen){
    2 m8 m( ]) K4 g/ X5 @
  55.             scan.setFlash(true);& J6 K, O% T* O5 |8 P0 z- v
  56.         }else{9 D& u9 s: f6 [3 ?8 z
  57.             scan.setFlash(false);2 ^( y: I( e! I3 e
  58.         }0 ^% s- i7 l7 h
  59.     })
    1 ~' ?3 c9 }0 F: f: R7 l! y
  60. </script>2 _7 i8 S; Y" ^+ K% `
复制代码
9 J1 ?& L' _& G8 C8 k
效果图什么的就不上了,和前面提到的文章中的效果图基本一样。
$ w' t/ B# I7 T
, o0 P# o. j; ^; ]# V( N. d; l
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-17 11:07 , Processed in 0.109063 second(s), 21 queries .

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