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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。
& E, S- k$ e5 j6 c6 W/ M, g以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些: - N8 [  U- H9 M7 P
《【iOS】AVFoundation架构下的原生二维码和条形码扫描》
; _4 B( B8 X( Y% v3 v9 B. N! X《【iOS】CoreImage原生二维码生成(一)》 " o0 t/ b7 L) Z* Y
《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》 ; u6 X7 M0 j6 X" [  W! V
在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。
  i1 F; I+ s: F+ }9 y原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。 / {( C6 M% Y8 v4 p$ p
直接上代码,注释都在代码里面了。# P: ]4 R) |' U8 s+ J

0 O* y$ |! @$ e$ s
  1. <body >3 q5 @# q5 J6 ~$ I& H+ F2 V) }: y, P
  2.     <header class="mui-bar mui-bar-nav white">! Y9 b+ J8 R+ {- m
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>% |& |' [8 q  T4 N4 F2 A  t+ t( f
  4.         <h1 class="mui-title">二维码扫描</h1>& ?6 i1 o; d: d' S' {
  5.     </header>& h! {0 [5 w' R5 s6 F
  6.     <div class="mui-content">
    2 @- H. ~# q7 M3 i3 g2 T# D" Z. A6 J
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>+ }& A4 d1 I5 T; m! L' ~
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>. Z# Q9 @  @. `2 A
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>4 f+ W- ^5 C2 }+ E0 F* s
  10.         <div id= "bcid"></div>! n  `. I. r1 H
  11.     </div>$ F" h2 z' O5 g1 X
  12. </body>
    + P9 X2 Y" y# i" I6 n
  13. <script>( u" C! c" }/ x% C- \& R7 }
  14.     mui.init({
    5 V. i9 Z/ @; N. \; k$ p9 q" t$ Q) r
  15.         swipeBack:true //启用右滑关闭功能3 k1 \1 d0 x" `
  16.     });( _! q$ n5 j4 Z' t/ t- }5 H
  17.     var scan = null;, D% i$ q  T8 I) m; l1 v( p; z
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭
    $ B' Q+ ~' v) [; @! o: y1 B( S
  19.     // 条码识别成功事件
    , w) j1 w: B  E' g* u& R+ \: _
  20.     function onmarked( type, result ) {) G* k! X, b( {6 Q$ `8 Y
  21.         var text = '未知: ';1 u8 j+ p, i7 i
  22.         switch(type){
    0 x8 Q0 ]( ?0 Q( U1 s& m  \
  23.             case plus.barcode.QR:3 z5 D: U% {$ O- I7 ~# c* |' K9 B$ I
  24.             text = 'QR: '; // 二维码
    # |" R( I5 U! s
  25.             break;8 h9 Y' }/ i# ^+ T
  26.             case plus.barcode.EAN13:9 [. d: `' [6 c* \& J2 Y3 ~
  27.             text = 'EAN13: ';
    ' H7 a7 y+ v: @  s7 ^- W
  28.             break;2 l( ?- M4 J* d! _$ S) y/ h
  29.             case plus.barcode.EAN8:+ j- }6 F# {$ ?! p& d/ I9 y/ B
  30.             text = 'EAN8: ';  f0 b% l9 _  F8 p4 X
  31.             break;* r$ a; ^2 a& V, s
  32.         }# Q4 X4 F; a# l' u! }
  33.         alert( text+result );
    ! R" {) D. P, g# X/ _1 p- u
  34.     }' Z. p. j/ }# W
  35.     // 创建扫描控件+ h! _5 t+ ?/ T4 w! U' c- [8 c
  36.     function startRecognize() {+ m% Z) |: k' Y, J( Z) W, V6 s6 G
  37.         scan = new plus.barcode.Barcode('bcid');
    / }$ a9 a) V. G6 W  a! W6 C
  38.         scan.onmarked = onmarked; + }+ |/ g1 E4 d3 ?
  39.     }
    & W. n, `8 w% l- L7 j' `9 p& C2 _% w7 N
  40.     // 开始扫描
    . N- D: J: b# q
  41.     document.getElementById("startScan").addEventListener('tap',function(){' x) O4 }/ e- C4 S" q, M2 R  I
  42.         startRecognize();5 p/ y: I7 ?4 [! l
  43.         scan.start();, Q* V8 m4 _. C
  44.     })2 c% z' C5 M7 H2 K5 M5 ^9 J3 [) W
  45.     // 取消扫描
    + S2 A, k# u* @6 R+ Y
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){+ y7 B. w) p" u& G4 M6 y/ _& }) n+ y2 m
  47.         startRecognize();
    ) n/ x$ X! q1 Y
  48.         scan.cancel();8 S' ], z! z- H' u
  49.     })/ l; q  P  g9 W+ Y. x  R
  50.     //  开启和关闭闪光灯
    % X$ b+ Q- {, h
  51.     document.getElementById("setFlash").addEventListener('tap',function(){
    ( u' z- v  x" d- i
  52.         startRecognize();
    + `  s1 |; L" t6 Q9 t
  53.         isOpen = !isOpen;
    & f) H: \( T. c$ O
  54.         if(isOpen){
    ! {0 v5 m2 ?$ f2 X& R+ t$ M! Y
  55.             scan.setFlash(true);
    / E2 z# A+ W, q
  56.         }else{
    - \" ^, b9 R! o7 C( {
  57.             scan.setFlash(false);
    5 \. a9 W1 E; U3 b
  58.         }7 {  z: @6 \8 F3 ]5 z+ S8 T% I4 g
  59.     })
    + T; n+ q8 N1 A- z
  60. </script>
    4 X% r: F+ H, l! x
复制代码

& @# e) i- `0 c' ^& E* i效果图什么的就不上了,和前面提到的文章中的效果图基本一样。* I' F+ i4 v( k3 |, [3 S9 v
. D7 o% @. [9 G8 P3 f
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-17 22:02 , Processed in 0.072945 second(s), 19 queries .

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