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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。 / t* j) R+ k) v$ N3 b* V" r
以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些: ; _# P. u. ]* B5 X& w  Q
《【iOS】AVFoundation架构下的原生二维码和条形码扫描》 6 t  Z, }" v* W, I9 O8 |: c
《【iOS】CoreImage原生二维码生成(一)》 ) P( A: U# V1 T( Y% n* c! y
《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》 ! ?+ G  ~6 C7 ~
在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。
1 @& E" n, G0 L3 P3 U' F" G原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。
( T2 I* v  I; v5 B+ x* }/ e' N直接上代码,注释都在代码里面了。
$ {0 g! k# e9 n' G0 W( O5 b4 S7 [
  1. <body >7 e1 `- f* z* S+ k, y
  2.     <header class="mui-bar mui-bar-nav white">5 ^7 g- p6 q' K5 o( Z, \3 ?
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>3 j6 `0 Z. g: w4 P+ m
  4.         <h1 class="mui-title">二维码扫描</h1>
    7 U( g8 `2 w& ]* l
  5.     </header>! s+ r0 ?  x; k# m) V' R
  6.     <div class="mui-content">+ a: P  W* J' n3 H
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>
    2 U4 T5 |3 r! h  A' U4 \
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>" O* E" W' f% v( j- e
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>* W0 k, y0 Z: q4 \0 z  n, i1 |
  10.         <div id= "bcid"></div>
    ( F. i" q* w% O9 `
  11.     </div>
    + h0 A. ]8 F- v3 U  M2 s
  12. </body># U) ]5 w+ s/ ^% M
  13. <script>
    & {7 M2 L; }5 X$ w
  14.     mui.init({
    4 V$ s/ `7 Q" m0 K
  15.         swipeBack:true //启用右滑关闭功能1 M/ M/ `) G8 G4 a/ B# ^, O2 x
  16.     });
    ) O6 z  l) [$ `3 \0 ^, m7 A+ D
  17.     var scan = null;# k/ n: |- X; Y: r% h  a6 [
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭' e2 ^7 Z$ x  R3 n3 k9 U9 `
  19.     // 条码识别成功事件1 g# @& S/ m, K; d* ]) x" G  }
  20.     function onmarked( type, result ) {' B# a. _$ s' S/ t2 {  j
  21.         var text = '未知: ';8 W: m. F1 g: g9 ]
  22.         switch(type){. M. D! ^- l* t6 c% K7 A
  23.             case plus.barcode.QR:
    3 R5 r% i9 r* T& K6 v! C! A  R2 z' I- e
  24.             text = 'QR: '; // 二维码
    6 d) P! V/ ^& e' Q- ~; c
  25.             break;& ]" g6 c& ?( _6 j7 D
  26.             case plus.barcode.EAN13:
    7 M) G" L! s6 w/ {1 r/ V. x
  27.             text = 'EAN13: ';: o6 |7 D9 ]( y' U! p% l  r6 ]
  28.             break;, P% o' u( y, R% `+ S. o: {
  29.             case plus.barcode.EAN8:
    0 ^- ~9 z5 P5 D; p
  30.             text = 'EAN8: ';
    ( x7 c5 [1 E. d8 I7 t( X
  31.             break;+ K/ F0 I+ K( L6 c: S. _
  32.         }
    / P5 W, b* l1 p. R( K# R/ I* I
  33.         alert( text+result );
    % S1 u( w. h+ m) u" w" o! Z
  34.     }: L9 k7 @" V; \; f9 q- t
  35.     // 创建扫描控件
    " q$ _$ Q$ }, I9 W
  36.     function startRecognize() {
    ! K1 ?" j2 b: s
  37.         scan = new plus.barcode.Barcode('bcid');
    ! ?3 m. P, W# M7 Y* I
  38.         scan.onmarked = onmarked;
    & s7 `: {* j6 K
  39.     }
    & J, j: e/ X; v( r
  40.     // 开始扫描6 t$ Q, o0 e$ x0 }
  41.     document.getElementById("startScan").addEventListener('tap',function(){
    - u2 c+ N" A5 [) E. y6 ^5 v
  42.         startRecognize();7 O' E  R5 h% ^5 i+ s! y
  43.         scan.start();
    - L0 [" G( H# L! [  k1 s" }; P
  44.     })4 \" p6 g8 Q% p; w
  45.     // 取消扫描3 N1 i1 E/ M, g- |9 b8 c, `4 f0 F1 J
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){
    2 d) y4 |: W. {/ A, g
  47.         startRecognize();# c- }4 h3 `' z/ B0 ?7 x' }
  48.         scan.cancel();0 S8 A! G2 v( F4 j1 F/ m
  49.     })
    1 t, f' z0 k5 t9 k9 c) K3 P/ @& J( F
  50.     //  开启和关闭闪光灯
    & P! ?- _# Y% ]8 p* w+ D, o; G3 D
  51.     document.getElementById("setFlash").addEventListener('tap',function(){+ s; h/ P1 N% Y) A
  52.         startRecognize();) _# _- S$ C' n0 _% A# o
  53.         isOpen = !isOpen;- I2 T( E  W4 [( x
  54.         if(isOpen){
    ; G( X2 s; k* n" ]( R
  55.             scan.setFlash(true);: J' ~# \+ D$ ]3 c6 {% x
  56.         }else{
    2 Q4 K0 T- T  [- m
  57.             scan.setFlash(false);
    8 D. d  p0 Z% v) b4 @* p7 p
  58.         }4 K- [) A: {" L/ {4 i
  59.     }): m# J) F6 u4 ?7 b
  60. </script>
    3 ?4 Z5 \; J- P
复制代码

. \0 a" C2 v3 ^+ x6 l效果图什么的就不上了,和前面提到的文章中的效果图基本一样。+ E  W$ L7 c1 q0 T! R+ M

/ a( i- X7 \# O9 q3 H
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-8-4 10:54 , Processed in 0.054331 second(s), 20 queries .

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