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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。 ( P- t' U/ l/ g# v/ c7 o# C
以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些: $ N7 U( M8 Q9 }: `
《【iOS】AVFoundation架构下的原生二维码和条形码扫描》 % J* M7 R" g+ }) |  w8 z# n# U
《【iOS】CoreImage原生二维码生成(一)》
6 T! |' R! ~: j* W0 c: u0 M- U《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》
9 I$ R' i  Z! N& `在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。
4 O# f2 E7 z3 J" `8 R原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。
* ^! `" j  I7 P1 S( B; q7 a" ?直接上代码,注释都在代码里面了。/ x2 z  c$ R! [8 f) U

2 a( I2 A" z" R/ v% D1 {
  1. <body >
    ' s- g* `, u( w, _! r) l
  2.     <header class="mui-bar mui-bar-nav white">, M. i/ ^. M& n5 U) k
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
    ' C; g) e- P  ^6 Z
  4.         <h1 class="mui-title">二维码扫描</h1>$ M# u; X4 Q$ E
  5.     </header>
    & Q0 h( D7 f/ X0 N  p
  6.     <div class="mui-content">
    2 S4 G& e7 j6 V- ^7 ^3 l
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>0 e  H, c# t- v& k- i8 P" ~9 r* z
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>: E8 K" d& g8 d# v/ ^+ i2 `
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>. W/ }6 k4 \: F/ n  a
  10.         <div id= "bcid"></div>: ]0 Z* P0 t1 c/ c" |
  11.     </div>5 i2 E/ T* U  x4 s) U% ~* Q  J8 t5 f
  12. </body>8 \+ U; ^: A/ K6 P: P: @9 a
  13. <script>* y' ~: F3 d1 f" _, G) O* ~6 `# b/ y
  14.     mui.init({
    - a, a+ s# ~0 m- ^# @
  15.         swipeBack:true //启用右滑关闭功能; S" O' w; c3 c- n! p
  16.     });
    7 I0 L/ ^. ]$ i2 A1 x
  17.     var scan = null;6 v4 ^! p) I( W
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭( m. ~" t: ?5 F' m
  19.     // 条码识别成功事件
    9 G4 b" s0 Y0 p; B( W; M% U2 F9 {
  20.     function onmarked( type, result ) {+ |6 u" u+ L: |! J; a& r. d0 _
  21.         var text = '未知: ';3 v  L  [: u# ~+ I1 B$ G8 m/ G
  22.         switch(type){
    - v8 X0 k1 I+ g6 g7 Z
  23.             case plus.barcode.QR:9 a/ V! F3 m% \2 ^
  24.             text = 'QR: '; // 二维码
    ) N+ [8 y1 \; v$ T4 W
  25.             break;% I( j  C5 I9 O0 z% p, _
  26.             case plus.barcode.EAN13:
    1 X! M+ J' m  F: `' @, [
  27.             text = 'EAN13: ';
    2 D% D0 u! w) i
  28.             break;) }1 A  S  f% f8 ?7 D
  29.             case plus.barcode.EAN8:
    1 N  E5 S# E) K5 N9 z1 T, O
  30.             text = 'EAN8: ';: N. F  ~2 u; n* M& j. R
  31.             break;; b8 {9 }2 R/ n! B3 g2 m$ {
  32.         }
    ; N2 }- j8 f/ U5 |3 W  v
  33.         alert( text+result );- G9 H  @" v* l# B+ q) T
  34.     }' Y. C9 w$ M( }0 d4 k" s
  35.     // 创建扫描控件  c1 n  b+ N& n
  36.     function startRecognize() {* F/ M. o3 _1 a7 o3 D7 x" Q
  37.         scan = new plus.barcode.Barcode('bcid');
    : V- {& a4 @8 k6 ^& K0 e$ l
  38.         scan.onmarked = onmarked;
    " }! l0 O6 W/ k+ Q! L
  39.     }
    % ^4 r4 D; `3 F) n* P7 v7 o
  40.     // 开始扫描" K! ^* W' b+ E8 [. u) P) _8 g
  41.     document.getElementById("startScan").addEventListener('tap',function(){: Z3 g7 x% d& V" m" }% c* |3 k
  42.         startRecognize();9 A: T8 c. o9 l1 U
  43.         scan.start();1 S: A2 k; C* X  u
  44.     })
    4 [6 t, C* e9 c" d; I/ b+ S9 [
  45.     // 取消扫描
    ( ^6 M% [( G3 B2 e
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){9 r* b" Z3 |, y" e
  47.         startRecognize();
    ( @7 ?& A" |- o, p
  48.         scan.cancel();5 y* h, K3 ]" B( t0 x
  49.     })
    ' f) G1 a) B4 X8 E
  50.     //  开启和关闭闪光灯+ i* w( w( y: G0 x5 D4 z
  51.     document.getElementById("setFlash").addEventListener('tap',function(){! N1 ?/ w$ |/ ^/ d9 W- R9 c7 J2 u
  52.         startRecognize();4 g( G# h3 o+ r* F
  53.         isOpen = !isOpen;( X; `* G: p' _  w) Y" b
  54.         if(isOpen){
    ( O0 B# @8 C5 d& L0 s7 U, X# i
  55.             scan.setFlash(true);
    : k$ u0 L1 `5 i& o
  56.         }else{
    2 a2 ^( a4 w% R7 r
  57.             scan.setFlash(false);1 y' Q3 I" v/ ?* r- p  g7 z% F
  58.         }% F  H+ b5 B% ^( L# k% j8 m
  59.     })
    3 m% i" q- p2 q4 `- @
  60. </script>; F/ Y+ Q+ v1 \* S/ w: ^: V  h
复制代码
& Y& j' [/ h  M# T" P
效果图什么的就不上了,和前面提到的文章中的效果图基本一样。
) [! e/ e8 @, {& u, q* X' H# g! n- [. Q- T. \% [" m
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-17 20:20 , Processed in 0.065880 second(s), 19 queries .

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