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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。 / s& B$ O$ L, O! ?& s* u6 J
以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些:
4 p5 z9 H( S; X5 ^! m/ g5 T《【iOS】AVFoundation架构下的原生二维码和条形码扫描》
9 ~0 |- c8 j) s( p《【iOS】CoreImage原生二维码生成(一)》
7 W" s5 p4 a5 D' v6 |6 R《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》 / `3 K- `0 E5 y% U, t7 i! i
在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。
" Y0 U; Z) {( I9 Y- g( \' y' z原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。
) C/ E8 c; L2 X4 y/ H直接上代码,注释都在代码里面了。2 p8 c, Y4 W. a4 [$ ^# _
8 x4 v: a: F9 a0 R5 ~5 Q
  1. <body >
    . ?% H: R1 l' i' }
  2.     <header class="mui-bar mui-bar-nav white">4 A- I( s, _* |: c( L; z
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
    , q* `7 ^8 P0 m8 s  P
  4.         <h1 class="mui-title">二维码扫描</h1>  B" |! f  @; |  @# z
  5.     </header># N+ |' i! M- p, t( G
  6.     <div class="mui-content">" _6 I; \& R( U3 v: K) S
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>
    ! j- L8 _0 {$ ]1 z& T$ X* g
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>8 Q/ Z' G9 M& u* \2 _
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>6 D$ A4 P3 F  N, s
  10.         <div id= "bcid"></div>7 x# i* [9 W8 l
  11.     </div>8 ^1 v3 I. F7 q- O
  12. </body>
    " n/ }+ d3 M( h
  13. <script>& P  b4 a" M. g; K* I/ ^
  14.     mui.init({, N1 Y  a" @4 L
  15.         swipeBack:true //启用右滑关闭功能
    % D  U' H2 W4 w' |5 w4 v
  16.     });8 H- G& n" L6 ?! C
  17.     var scan = null;% V: k1 G% ?0 _; ?0 i
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭
    ; U8 W) c% o, q0 z* }
  19.     // 条码识别成功事件2 ]5 q! E2 N1 i' y/ E5 [
  20.     function onmarked( type, result ) {
    / W+ y  c# E- @* e. ?% t0 C
  21.         var text = '未知: ';. Y' P$ l+ R. W- F2 v
  22.         switch(type){, I9 P( [' U' {/ S
  23.             case plus.barcode.QR:8 O, Q- \. I/ k  I! p8 l0 ]0 ]
  24.             text = 'QR: '; // 二维码- a- p! _! j2 [+ F- X8 M
  25.             break;
    7 [/ }. w- T0 ^3 ^) E7 \
  26.             case plus.barcode.EAN13:
      R3 t4 t4 r# B; ]* c2 k
  27.             text = 'EAN13: ';2 b, c$ s' P* ]
  28.             break;
    . g6 O+ ?' M# ~
  29.             case plus.barcode.EAN8:
    / Y0 G8 [' K, O' k$ Y4 I
  30.             text = 'EAN8: ';0 U( N+ f: z/ s+ P( @
  31.             break;5 R# {/ f" T6 S0 N/ Z2 L
  32.         }- N+ a. g3 `  q! ~/ l
  33.         alert( text+result );+ g! |. Y) _2 `8 T
  34.     }
    2 c# U1 ]2 k6 o8 [/ L2 O
  35.     // 创建扫描控件' \. A/ E0 ~! |" Z( w
  36.     function startRecognize() {& j6 e; l. ^9 L, W7 w8 F! e
  37.         scan = new plus.barcode.Barcode('bcid');3 L  c0 R0 g3 F1 R6 ]
  38.         scan.onmarked = onmarked;   l6 ^7 ^2 Z4 K- S+ d
  39.     }
    % ?' p/ }! c" f/ T
  40.     // 开始扫描1 |! t7 y  P' A
  41.     document.getElementById("startScan").addEventListener('tap',function(){
    / M* }- ?8 {2 R: s% I5 |
  42.         startRecognize();" t: E7 j: a' ^# P+ R9 S" H
  43.         scan.start();
    1 y6 Y4 n  k  @" }0 l2 ~& w
  44.     }), x1 k9 T* p- w6 R/ N8 {
  45.     // 取消扫描
    & o0 N; z# o: u: S: l
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){
    7 x, G3 O+ w0 A  M% S/ f) M. U) d. `
  47.         startRecognize();& Z- q8 {5 C0 `' h( s
  48.         scan.cancel();2 I6 j7 a( S! Q9 v
  49.     })
    . k2 e; m: {* A8 f
  50.     //  开启和关闭闪光灯; s; ^9 c5 w6 M
  51.     document.getElementById("setFlash").addEventListener('tap',function(){
    7 T* |. A2 C' l$ E
  52.         startRecognize();
    / j) O6 `% d# X
  53.         isOpen = !isOpen;: G" D% x* a+ ~2 k) x
  54.         if(isOpen){
    6 e# J6 b3 z6 X: V" r* e
  55.             scan.setFlash(true);+ ?( S$ v7 }. Z. [$ o
  56.         }else{
    # N* c* M0 B& w8 s
  57.             scan.setFlash(false);- c4 v2 F9 w: [; r
  58.         }" O( l# ~; y3 H3 h$ M" v+ s
  59.     })
    ! t* J) n) Q- L* p5 h5 O7 t* G
  60. </script>
    0 |: E; T: u- f5 o) {2 V- S) T
复制代码
- u$ n# i7 N- I) t& T+ G
效果图什么的就不上了,和前面提到的文章中的效果图基本一样。$ ^, c8 K+ C6 K
2 `# J6 E) y  }9 b; \* c* {
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 21:40 , Processed in 0.106355 second(s), 19 queries .

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