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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。
; ?+ v; p9 i% Y; l& J* r( U( K以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些:
# B. M5 m  b$ _3 q# F( g《【iOS】AVFoundation架构下的原生二维码和条形码扫描》 ' w  s2 u- s; ^0 S$ s! E
《【iOS】CoreImage原生二维码生成(一)》
* q4 L+ ]9 G5 W* p1 Z《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》 1 S) x' v- ]3 q; F$ {/ J
在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。
- `# T, a( Z0 X4 v9 y/ w% z, @9 w原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。 8 r5 G) g+ u  i! k# U2 B! n: K* y
直接上代码,注释都在代码里面了。! P; m( H% c$ O) X

8 s- s3 c- M% A4 t
  1. <body >
    5 H, W- E8 ]5 j' \
  2.     <header class="mui-bar mui-bar-nav white">
      |+ N, }- Z: W; H; T* O$ G
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>+ l! U. b& X- R, a: ^
  4.         <h1 class="mui-title">二维码扫描</h1>5 z+ D2 Y1 \. k1 P8 Z$ O. s
  5.     </header>% A& I5 J, ]2 f. k
  6.     <div class="mui-content">- s9 p% W% K2 M  Q  h/ K
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>
    0 Z$ z; {/ Z' p
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>1 M& y8 K; J4 n
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>2 ^- P2 z5 ?' f4 G) B' F* r5 U6 a
  10.         <div id= "bcid"></div>' I% u: D) A9 T& W% Q
  11.     </div>( m2 K7 T% @, D8 u
  12. </body>
    5 M( W" {% v* K1 W$ L; K
  13. <script>+ h! w  |# V1 D5 [8 r' o/ M8 _
  14.     mui.init({) r# ~8 D; C6 J; X' @& z
  15.         swipeBack:true //启用右滑关闭功能, x+ @. `/ K9 R2 o
  16.     });( v! R( I- o) f  q% S$ V5 s  ^
  17.     var scan = null;
    5 T! K6 P6 T7 B. \# M. J. a, ~
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭: l* d- N; H$ j8 `1 G. B: |- W  A
  19.     // 条码识别成功事件
    & u" g( \: {( Q! u
  20.     function onmarked( type, result ) {
    3 l, @; h7 j# t% E, M) q8 ?, H- k
  21.         var text = '未知: ';
    : e% N/ r6 ]! v- T
  22.         switch(type){
    # S2 Z4 x9 H) s6 n
  23.             case plus.barcode.QR:
    . X. C# G: I( @; G
  24.             text = 'QR: '; // 二维码
    $ O# v) }5 A5 x" M/ r, h
  25.             break;
    / C9 _7 Z9 e( y
  26.             case plus.barcode.EAN13:
    * `. M, r' b* \" N1 _: ]. U
  27.             text = 'EAN13: ';# l  t: r' l& _7 \  i
  28.             break;( R+ }1 i5 k, K3 X7 @
  29.             case plus.barcode.EAN8:1 ^6 Q8 O% d5 ?) }' V# m
  30.             text = 'EAN8: ';
    9 `+ `. R% D! A
  31.             break;9 o* I1 L$ W- F  f) e* m: I% V/ G
  32.         }
    & @4 w7 |- x% ]5 j& V
  33.         alert( text+result );
    / Q4 N9 S6 Q6 T9 i
  34.     }! {  M! o: m' c( F9 D/ J0 ^
  35.     // 创建扫描控件* B( P* K+ {0 P$ O8 H, [  n
  36.     function startRecognize() {
    - j! R2 K# ]/ D; `7 _9 Z; ^) Z
  37.         scan = new plus.barcode.Barcode('bcid');
    % R5 C+ t  u+ t1 p9 ]  }
  38.         scan.onmarked = onmarked;
    : t9 f, ^. O" p# s/ ?
  39.     }) v8 D- Q6 s& v9 ?" O
  40.     // 开始扫描
    + P- S# }( ^/ I. J. ]
  41.     document.getElementById("startScan").addEventListener('tap',function(){8 t, N, d: V. p$ r0 }- {; h% I
  42.         startRecognize();+ E: {4 C( k2 N) u5 l
  43.         scan.start();% U# E2 M- H% Q
  44.     })" v6 A- u  {) ^1 ?8 `$ Q- ]
  45.     // 取消扫描
    ! ?+ S8 T! O+ O5 E6 N# V4 d9 I
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){
    ' J3 a/ }$ d! }, C
  47.         startRecognize();
    1 z; Y6 B" T' v6 ?( K
  48.         scan.cancel();$ r) S9 m0 c% d+ ?+ x  V: n1 K1 j
  49.     })
    9 ~6 G9 z6 j% `0 s, {- @( B1 b. M( u
  50.     //  开启和关闭闪光灯
    + v  e; Y7 J9 d$ e
  51.     document.getElementById("setFlash").addEventListener('tap',function(){9 N9 M2 M/ {1 ]- y1 L; a
  52.         startRecognize();) s, K6 e' N6 t2 p; k
  53.         isOpen = !isOpen;0 g6 z9 {1 [& n9 g' t
  54.         if(isOpen){
      P$ [- a# K, Z+ j. z: E) t: Z
  55.             scan.setFlash(true);; h, w1 f# @$ g( h& p
  56.         }else{
    , h5 M2 a& s  @: q4 Y. }
  57.             scan.setFlash(false);
    3 |( S% |4 U* N1 ?! B+ J$ i* d
  58.         }
    ( I. ?( Q% ?2 r! f" o
  59.     })0 w+ m7 M6 U1 ~( h" j
  60. </script>
    ( E; y, J1 @' h* z" ~1 Y& I) ~
复制代码

9 ~9 p- |2 h3 R% r$ ?" |8 x效果图什么的就不上了,和前面提到的文章中的效果图基本一样。
7 I, F; p/ C$ {8 T/ R  `' J7 ?8 S9 m, N2 Y& C
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-1-30 16:25 , Processed in 0.059049 second(s), 19 queries .

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