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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。
8 I! B- u/ |+ F- s以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些:
, K0 N' c* {7 A/ x! _3 Y《【iOS】AVFoundation架构下的原生二维码和条形码扫描》 3 X1 t: U' I5 l+ S( _2 {2 W, @
《【iOS】CoreImage原生二维码生成(一)》
. W6 {/ g2 ~) a7 z% h《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》
2 `9 X; C3 j6 W在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。
) c$ X+ A$ B$ ]原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。
6 |, _4 f5 L. x直接上代码,注释都在代码里面了。# N0 Z$ |. Z8 U" f$ J! H5 B

8 h- Y4 _% \8 K: e9 @4 F' J
  1. <body >+ y9 |7 X: b% r$ x! s$ j- H& B/ s- }
  2.     <header class="mui-bar mui-bar-nav white">
    + H4 Z) ^. B/ Q
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
    2 `3 M' A+ B+ z% f6 _! D& p9 }0 q
  4.         <h1 class="mui-title">二维码扫描</h1>6 C! F  C- b* u4 P$ y& `
  5.     </header>; g4 U  [# _# x
  6.     <div class="mui-content">
    & C; u$ A0 }/ L
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button># m8 |$ J5 {7 m/ s/ v8 j4 i
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>
    0 A" \' I, U$ b0 i* b- M
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>
    5 v, x5 x0 {+ N3 [" `- U
  10.         <div id= "bcid"></div>3 r; }) Y  I, Q% W. p- p
  11.     </div>
    5 ]! M& K! _" y3 o, W5 Z, e) W: i
  12. </body>
    1 k( D+ {3 t  g: {) [; O4 I
  13. <script>. A: e; X" _: a6 P. h
  14.     mui.init({
    ) v2 Y; ], k9 z/ L5 ]/ w# i
  15.         swipeBack:true //启用右滑关闭功能( W! \+ Q4 [, C
  16.     });
    5 T3 n& P1 ]& `) r- j5 g
  17.     var scan = null;
    8 X: `+ {, z* F- o3 t3 q3 i
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭
    * w7 h' ?3 t% k" s
  19.     // 条码识别成功事件
    ) H' z7 |. ?& `3 V) \
  20.     function onmarked( type, result ) {, _% k& {1 U2 L: e
  21.         var text = '未知: ';/ d  d3 M1 e% g
  22.         switch(type){* ^, V! i7 _( W5 B: n3 I. _5 @/ w
  23.             case plus.barcode.QR:
    ! d8 c3 D2 s; a
  24.             text = 'QR: '; // 二维码$ R% o" {! D4 U$ R1 \, ~" K4 i
  25.             break;
    / U3 g$ Q2 \' i3 L% B1 G2 [
  26.             case plus.barcode.EAN13:& b( ], g: U3 X  Q
  27.             text = 'EAN13: ';. B* s9 P" w+ U+ J8 }; |! I  c
  28.             break;! V/ A+ v  s* {+ q" Y0 s
  29.             case plus.barcode.EAN8:+ G; J$ Z/ [+ ^7 k' i6 f# @
  30.             text = 'EAN8: ';
    ' x$ s& s& i8 R
  31.             break;) X5 E; u  [$ H# \0 w
  32.         }
    9 e1 ^0 L6 `4 ]. U) b4 }
  33.         alert( text+result );( J8 T' U- W- e
  34.     }6 |3 q: n7 [$ v" d
  35.     // 创建扫描控件" g$ f" {2 [' R' t* L! `! V4 M5 A# c
  36.     function startRecognize() {
      N# K5 Q% p! q1 s
  37.         scan = new plus.barcode.Barcode('bcid');
    . [1 _: _# Z& w7 W; o4 I) l! v
  38.         scan.onmarked = onmarked;
    3 L! D& b' g9 T
  39.     }( V3 O' Q2 k: M4 H- I- b
  40.     // 开始扫描
    0 W/ P5 e* C$ o( q5 k% x
  41.     document.getElementById("startScan").addEventListener('tap',function(){! t! U$ M# b. s; L1 H
  42.         startRecognize();4 U- l+ a: _( G% B" I4 \
  43.         scan.start();
    ( U/ J2 {/ v  Y7 C' K
  44.     })0 P' H/ e+ A. n/ l5 X5 G5 p6 d
  45.     // 取消扫描
    9 x! c6 w2 u# X. _# ~  U; g
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){; w: ?: m3 Q- \' b( T4 t) O  R7 a
  47.         startRecognize();
    ! c* B1 Y; b6 q! k$ ]# ?/ F* E6 W
  48.         scan.cancel();
    " l- [0 M; `$ [
  49.     })( u5 J: O+ Z6 \+ G( [) Y
  50.     //  开启和关闭闪光灯: n! E2 |6 N) a2 e
  51.     document.getElementById("setFlash").addEventListener('tap',function(){
    " K5 @! z: m$ m5 q9 u. c  b# A
  52.         startRecognize();
    0 E* q3 Q. \1 O. B
  53.         isOpen = !isOpen;
    1 A8 f  Z+ h1 i$ I# B. W/ J
  54.         if(isOpen){
    9 l# y" j5 |* w  ]( z
  55.             scan.setFlash(true);3 X5 m* o8 C8 Q$ B% K* \
  56.         }else{
    " ?7 A6 o& m7 I: b2 N1 j
  57.             scan.setFlash(false);% Q3 w$ t5 P& B, M& i/ r. x- n
  58.         }6 `# ?+ m$ v' y$ k& B
  59.     })- U4 `3 p) i  e: D
  60. </script>! Q, p5 ?- s0 G$ y3 S* F' f: K$ b
复制代码
& A1 f2 H. I+ o: ~
效果图什么的就不上了,和前面提到的文章中的效果图基本一样。
1 f6 ]' L" b& I! J) a6 H( s3 [1 F0 Y
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-17 10:58 , Processed in 0.151219 second(s), 20 queries .

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