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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。 5 o# [) H0 I/ M3 t: E( G3 n9 l
以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些:
- E9 n5 }* o  F/ t# H7 P7 r《【iOS】AVFoundation架构下的原生二维码和条形码扫描》 & k/ L: N4 {2 E+ ~% {# r: U! P
《【iOS】CoreImage原生二维码生成(一)》 9 B/ `! ~6 a( f3 ^8 Y( \; Y, y# y* r
《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》 + t8 Q4 G3 I% i5 C
在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。 # g7 |$ n* i; s5 U% d
原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。
: A2 d; X1 r* j直接上代码,注释都在代码里面了。
( o2 |9 I; g2 ~' K
8 J% O* _+ o1 ]: c# }, j
  1. <body >
      a0 a% g* T  c+ T4 J
  2.     <header class="mui-bar mui-bar-nav white">/ x# R0 @' C2 [7 ]* k( ]
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>; o8 K0 |/ N% w* m
  4.         <h1 class="mui-title">二维码扫描</h1>0 f* H5 \& e/ q2 T$ K4 U/ _& ]
  5.     </header>) a+ Y" n; Y5 D! t- ?
  6.     <div class="mui-content">7 E# B3 I: t3 L( z8 X7 }
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>1 d1 e. F5 q- I; o" [4 g. Y
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>
    8 Y& h! x+ d4 X( {
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>
    + c+ Y6 }1 _2 e+ B, j
  10.         <div id= "bcid"></div>8 F- l) ?; X( P. F" O
  11.     </div>/ q1 D& J' M, s
  12. </body>
    1 `- h5 W. H9 p: o2 j) X2 E7 Z8 ?( A# f
  13. <script>
    1 S9 s! }! h1 W- J3 \
  14.     mui.init({
    ) y) p) d6 A5 z
  15.         swipeBack:true //启用右滑关闭功能
    1 d6 f' F1 _; g9 J  E( j% Q( h+ k" r
  16.     });' B, `$ d& g+ \& v: M+ |
  17.     var scan = null;3 T! ~2 u; w" p) }7 y! G- }8 E
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭) O6 \+ @' e1 b
  19.     // 条码识别成功事件
    ! t3 d# B+ l  \" m7 ~" Z+ l
  20.     function onmarked( type, result ) {
    ( R0 p7 d0 ?8 ]* c
  21.         var text = '未知: ';: i: n. U) f. ?/ g! O3 p% I
  22.         switch(type){
    & U  @+ A7 K( ]# ^" E, K; `! ]
  23.             case plus.barcode.QR:
    9 f3 w' J' R- B
  24.             text = 'QR: '; // 二维码
    ' g& b. L  m4 D* x( L) B
  25.             break;& l4 [8 I9 Q4 t
  26.             case plus.barcode.EAN13:
    ; [. K& ]; p/ p. S" t# d
  27.             text = 'EAN13: ';# I# r: T2 e/ c, O% t9 \; c
  28.             break;
    4 i; r, G/ k" b5 X
  29.             case plus.barcode.EAN8:
    4 t; ~2 y- H: N; U, H& H1 \. |, L9 b
  30.             text = 'EAN8: ';; T, x. _  X: V: L
  31.             break;
    & j, h* X( `* K' w( a
  32.         }9 i2 @$ \- b, j5 w+ [
  33.         alert( text+result );
    ; V  [4 C/ ~3 Q, O* d9 t3 B
  34.     }. [8 W, n5 o9 I/ }4 x1 m
  35.     // 创建扫描控件
    ) B7 V5 v9 ~6 X3 d& A9 C
  36.     function startRecognize() {4 j8 o, p, l# s- J+ ^* Q
  37.         scan = new plus.barcode.Barcode('bcid');. `( {$ x& X# |/ p* ?, `! F% S
  38.         scan.onmarked = onmarked;
    - r8 y2 j: r. G
  39.     }
    6 T$ q/ E' g! [' R8 J# I: G: P9 _
  40.     // 开始扫描
    ) b# D7 h+ E7 x7 K. x6 O
  41.     document.getElementById("startScan").addEventListener('tap',function(){
    0 o9 x6 H9 F2 L( m6 z# `* o
  42.         startRecognize();  H; e1 M, |2 E7 W7 Z2 i) X
  43.         scan.start();
    # O+ I( `8 \0 r' p( u6 V  U
  44.     })
    ; L( ?+ a1 R) n+ T$ y! m
  45.     // 取消扫描7 L/ q, E6 e. `4 s2 v" z& Y. L4 d
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){
    , V* E: d( F1 F3 z0 x7 D
  47.         startRecognize();: e6 j1 W- a  S% _) D/ g& {
  48.         scan.cancel();. E  r4 X  w' ^
  49.     })7 W+ f( c8 f" r: A( i9 M0 t
  50.     //  开启和关闭闪光灯( Q. P1 |) _9 [! S/ s; j! g/ Y
  51.     document.getElementById("setFlash").addEventListener('tap',function(){/ m- r: F' _( Z3 P. k8 f* M
  52.         startRecognize();& L) l. V8 V$ N7 C* ~
  53.         isOpen = !isOpen;
    9 g2 k2 }9 B" J" {
  54.         if(isOpen){
    , M, f% a; j# U
  55.             scan.setFlash(true);
    3 v& o3 S, d) G* V: Q. d; D! ~$ `+ M
  56.         }else{6 h& @; G( Y' G+ I
  57.             scan.setFlash(false);
    - r5 b5 l' R  @% p& E
  58.         }
    8 j* f+ C5 a8 q$ J# G5 B# |
  59.     })
    8 s4 t3 I! k  D3 x1 k
  60. </script>7 J, F& y7 k( ^
复制代码
, q2 r  N/ s, _) a
效果图什么的就不上了,和前面提到的文章中的效果图基本一样。( d9 X! T+ j6 A- x
+ F6 G& l. |0 _4 s1 y
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-7-19 15:48 , Processed in 0.054243 second(s), 19 queries .

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