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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。 ; `- Y5 e0 p0 p# y4 _, w
以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些: " Y3 O! k) ?8 R
《【iOS】AVFoundation架构下的原生二维码和条形码扫描》 8 D# g. B; g7 c3 \4 ^! v
《【iOS】CoreImage原生二维码生成(一)》
8 ], ^0 j  p- W* `# r3 d# \《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》
0 e3 G+ h  [, j1 N! x2 ~5 G在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。
, o; _- I; v% e8 D4 K原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。
, E$ v3 t# H$ A- `直接上代码,注释都在代码里面了。
. j5 u* f3 j* i" @$ y& U' j! U: q2 x6 n; ~4 }
  1. <body >4 U1 l# G3 h. Y0 [% |
  2.     <header class="mui-bar mui-bar-nav white">: r8 l8 n# I& D' b
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
    ' Y! e& c4 q! D* O
  4.         <h1 class="mui-title">二维码扫描</h1>1 B: L/ M2 F: Q) i, w
  5.     </header>; H6 n/ g. Q( Y+ d! V
  6.     <div class="mui-content">
    8 F- W6 m/ }9 V) i% `9 i' A
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>
    7 ]/ h/ ]/ C, S5 h0 f& R+ j
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>
    " e, }% e# ?- r
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>
    ) _& k- x: e+ p/ G; x
  10.         <div id= "bcid"></div>9 T/ ?1 _7 E8 x
  11.     </div>
    3 Q% \9 w& s4 X, Y5 _6 q
  12. </body>
    9 _! ~3 m1 o% I1 V
  13. <script>7 w3 G( x4 c5 j' w: T8 ~
  14.     mui.init({/ {/ ~; p7 p1 m1 N4 O
  15.         swipeBack:true //启用右滑关闭功能
    " R# a% X: y9 V5 D/ A$ G# M6 z
  16.     });* ^7 k. ~7 O# N  Y6 m# u$ _2 B
  17.     var scan = null;# {9 ]; v4 L, ?. t: j- P
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭( h# \) \7 I, c# p, g1 B6 X0 `
  19.     // 条码识别成功事件
    ! L7 I/ p9 e0 A# {- X
  20.     function onmarked( type, result ) {2 {( d# i" d& s
  21.         var text = '未知: ';0 T" e/ h( G0 p) [6 v8 b+ Z
  22.         switch(type){3 D1 _+ o+ R. N& J: F7 p/ a, d+ F
  23.             case plus.barcode.QR:
    + G, u, \# r5 N; }" t
  24.             text = 'QR: '; // 二维码
    & p8 I3 Z$ j$ l5 A# w) r* L
  25.             break;2 d3 E6 J8 B, K7 V- _
  26.             case plus.barcode.EAN13:
    8 W( e3 X" K/ J1 O
  27.             text = 'EAN13: ';
    ) l4 k3 \& k. U" F1 J; Z9 F: A
  28.             break;
    . R. F4 }" _$ L& z2 ]% ~
  29.             case plus.barcode.EAN8:
    , m7 u* `( z. V
  30.             text = 'EAN8: ';3 O3 Z1 r7 F3 Y, g
  31.             break;: ?& F1 \" o  I5 ]
  32.         }" U$ S; {# X* s
  33.         alert( text+result );+ Y, r* _  {* C4 V" p
  34.     }: h, _% _9 V/ ^
  35.     // 创建扫描控件
    * O8 k7 X2 |( X4 {* f7 x  h
  36.     function startRecognize() {
    ( G7 I7 s' ^5 J9 S+ l
  37.         scan = new plus.barcode.Barcode('bcid');$ a! Z/ y& y) t& W/ j
  38.         scan.onmarked = onmarked;
    8 Z8 d6 c( ^* i+ s
  39.     }- D! z" \! ?) i/ }0 s7 O8 m
  40.     // 开始扫描
    7 C7 X* o& C; a+ s* s: C) K* \& d4 [8 x
  41.     document.getElementById("startScan").addEventListener('tap',function(){
    2 D2 v. P2 W( I3 H
  42.         startRecognize();% T, [# s7 W+ }( ~
  43.         scan.start();
    0 f# [8 t/ V& _/ ?/ L9 e' @. ~
  44.     })
    - u8 j7 u' J; |- b1 |# U  ]
  45.     // 取消扫描
    . T+ T" {0 v: v% W  K
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){  V9 s" P+ I% q4 \4 E
  47.         startRecognize();3 b% D  g$ X0 _6 \; K3 ~: ]5 @
  48.         scan.cancel();
    8 K7 s9 c+ N$ S- n7 I. D
  49.     }): Q" }. k2 B# i( t: {
  50.     //  开启和关闭闪光灯& F. Y/ l' @* w
  51.     document.getElementById("setFlash").addEventListener('tap',function(){
    * A5 s/ V6 z; Z  E  C& D% J6 V2 C6 B
  52.         startRecognize();9 @# R- W; d4 `
  53.         isOpen = !isOpen;; h6 g$ Z: c1 V1 w
  54.         if(isOpen){
    ( w; Q8 y) ?9 e, c$ Z6 m: T3 {: Z
  55.             scan.setFlash(true);5 G* ]8 O) ^4 K3 U- W
  56.         }else{: I* v4 n. M5 H( u" {
  57.             scan.setFlash(false);" }( i' j  Q$ ~6 h0 J" }( S- @2 M
  58.         }+ j" J$ o% a' F5 F
  59.     })
    7 h! x* F9 C/ ^$ w
  60. </script>: m3 l2 a9 Z! L' c
复制代码

" R9 l) b% E" O: v3 N% v; H效果图什么的就不上了,和前面提到的文章中的效果图基本一样。0 L& n6 D1 i2 Z1 b, a: I( A0 H
4 a4 m3 K) q+ C) I( H; S+ L
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-4-30 23:48 , Processed in 0.054419 second(s), 22 queries .

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