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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。
( C: g  k8 h, F3 z( ?以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些:
: Y% B2 ]3 v, j. e" F& l《【iOS】AVFoundation架构下的原生二维码和条形码扫描》 - v6 W5 u/ R" L! _# A( S
《【iOS】CoreImage原生二维码生成(一)》 # t. r+ h  s3 ^( Z4 F3 o! j9 F
《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》 2 n( R  N" D) `" l, T' e" U5 F; A
在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。 " D! r8 A; h* U6 a2 J
原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。
8 R7 k! D  ~# P. ]9 U: y: u, q直接上代码,注释都在代码里面了。
8 S+ g! h3 }7 R2 @
" Q+ j+ M& n+ u$ Z# N, U
  1. <body >6 f  D, I- |1 a' H/ I  k/ ^
  2.     <header class="mui-bar mui-bar-nav white">6 a1 T6 D" k% z+ p
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
    ' \- O' O% K+ O3 O! M
  4.         <h1 class="mui-title">二维码扫描</h1>0 e5 Y" @  ]8 P" H* H9 S
  5.     </header>3 D' T9 Y# S+ \4 p3 h% V, e: G
  6.     <div class="mui-content">
    2 A2 Q  b0 ^1 O, G# k3 v& i
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>5 \" m2 ^) x+ A/ V4 ~$ h+ ?/ c
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>
    ; l! [) r' f* ~; J, V( m% N
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>
    * A4 w$ `$ f2 F: Z/ k
  10.         <div id= "bcid"></div>8 W  {. p; w. G( ]& f& t
  11.     </div>
    2 m( E; f+ u; \+ w4 C: D# y- B) ~
  12. </body>  n( I  R7 e0 `1 ?7 ^* c
  13. <script>
    2 }9 f6 ]5 Q, ]" f9 a, D& k
  14.     mui.init({0 E* Q* L/ B* C+ z- F
  15.         swipeBack:true //启用右滑关闭功能
    8 p3 ~( P0 v8 p  `
  16.     });" z7 S3 T: Z6 X5 x" u" B% y  G2 a  ?
  17.     var scan = null;( ]4 c6 a  a% @: |: L
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭. E. i; f4 P# ?
  19.     // 条码识别成功事件4 E2 n# I' O( _) R! w+ @3 L
  20.     function onmarked( type, result ) {
    5 M+ n/ d9 C2 f5 c) P
  21.         var text = '未知: ';( _) X, r  ^" Z
  22.         switch(type){
    . S' R, V: ]( G4 Y' [0 @4 u
  23.             case plus.barcode.QR:8 q& z5 ~. x& f* d
  24.             text = 'QR: '; // 二维码7 g% i" G% M# J, f3 z
  25.             break;# m( V- [( U2 @* ~$ b1 X
  26.             case plus.barcode.EAN13:6 o5 T; x; L* V0 i8 B
  27.             text = 'EAN13: ';# y7 Q# b( c2 v5 u
  28.             break;& X& F- y% ]& e# _, X( f' [; ~2 N
  29.             case plus.barcode.EAN8:
    9 N& E5 F6 B* ?- W6 K3 a
  30.             text = 'EAN8: ';
    ( c4 F, }. a2 N
  31.             break;4 Y2 I5 ~) _/ ]- J
  32.         }" h2 o: Q# e2 L3 n( J, m# @# @% {* g
  33.         alert( text+result );
    2 F: W2 N- `9 a5 ]  o  l4 p1 S
  34.     }. O" d% \" @' ?0 V5 `1 O: I; v* P
  35.     // 创建扫描控件( o6 U1 N0 O! x. N, H' ^- _
  36.     function startRecognize() {4 h% w8 ^; v. A+ V
  37.         scan = new plus.barcode.Barcode('bcid');2 F+ \& a$ L6 n5 E/ u/ |: a
  38.         scan.onmarked = onmarked;
    8 V3 ]& _$ N4 T* h. P" Y
  39.     }
    - \% Q$ \/ K. v% B1 y
  40.     // 开始扫描
    - k5 _4 w9 b5 q. r6 K6 ~0 c/ c
  41.     document.getElementById("startScan").addEventListener('tap',function(){
    & f2 X- ?! y% D) I! L, L
  42.         startRecognize();. N  M2 u- A# N/ I- ?# {8 w
  43.         scan.start();+ Z% P& O) ~# F# g4 s
  44.     })
    * ]) a! y6 k: a  t
  45.     // 取消扫描
    & D6 I- F1 l, d% Y  ~( }) X
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){
    / ]- i; k. i5 b( t& D, {
  47.         startRecognize();' D' K5 ~% n$ T' S
  48.         scan.cancel();
    8 F2 i, Z/ n& l2 ?! X% P+ ]8 O0 l
  49.     }): I+ V7 I! J" G6 c
  50.     //  开启和关闭闪光灯
    # t6 f8 i) ]+ s0 k" ]# _8 |0 e
  51.     document.getElementById("setFlash").addEventListener('tap',function(){8 P9 v; I2 T; L/ x( x
  52.         startRecognize();
    / T8 R7 C4 S8 X! d
  53.         isOpen = !isOpen;
    0 x  x5 Q% C8 T2 i5 `
  54.         if(isOpen){6 A' V+ Q: {8 \& X. H' p& W
  55.             scan.setFlash(true);
    : `" `8 X2 F4 L8 f. b
  56.         }else{; a7 u' H0 g! z- {
  57.             scan.setFlash(false);
    ; t' u# S/ x$ O2 O
  58.         }3 ]/ g. R8 H) V0 p4 h$ k
  59.     })$ i5 _. J  i+ _+ F' e* f" E
  60. </script>
    ! D! i) M# k# I6 O9 A6 m, h
复制代码
: u, k2 E2 {3 B9 v+ G) |0 I( D
效果图什么的就不上了,和前面提到的文章中的效果图基本一样。
6 S$ O( ~! b9 A2 q
2 y1 m4 f0 w$ |4 Z2 w
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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