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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。   q* l5 A! e# j7 {  y3 t8 A5 n
以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些:
! P" _* e% H& \0 K6 {/ G! G《【iOS】AVFoundation架构下的原生二维码和条形码扫描》
# H) k8 M! ~: C5 B2 C《【iOS】CoreImage原生二维码生成(一)》
3 W7 C4 M$ x% ]& K1 q% o% [, x; b《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》
3 q$ G/ b" a3 C+ {( e# h在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。
2 B: R6 q/ g& i4 [; l9 y原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。 - r$ |6 N! x8 j. z1 X
直接上代码,注释都在代码里面了。- b& e! d& E* }
  T+ I1 Q- D- n$ M
  1. <body >0 l" }6 u# f0 t1 j" S0 H1 c
  2.     <header class="mui-bar mui-bar-nav white">7 R+ P* h  Z! s  h/ E
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
    7 m+ C  w4 g7 e2 t. v* T5 [
  4.         <h1 class="mui-title">二维码扫描</h1>, ?. J# m: M9 |8 z; _
  5.     </header>' |7 F1 H" ?! J: g" |. N5 a
  6.     <div class="mui-content">
    7 n' H, ]' x5 o4 u6 o2 P' C
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>. R$ k4 Q3 R, y8 W/ v  P* C* x
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>; C! g0 S- F' D) N8 M7 l, L
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>. W6 s7 O" X1 K
  10.         <div id= "bcid"></div>9 z3 l! r" p( i3 [* R
  11.     </div>; V0 e1 w) n8 B' r/ |0 A0 _  h
  12. </body>0 q: ?& @$ N" v! |; n. c
  13. <script>
    - _  Y: j$ Z, E4 v7 a( D
  14.     mui.init({+ M$ R9 @' r# n: z
  15.         swipeBack:true //启用右滑关闭功能
    . g1 i$ o% r3 f
  16.     });, ?* t: Z$ e& O1 u( g
  17.     var scan = null;
    4 [! D2 j- M. D3 V. o2 J
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭* X* V, d1 t( V) s# r9 u; ?
  19.     // 条码识别成功事件
    + }0 M! E& ^' f
  20.     function onmarked( type, result ) {" I2 M# F- }' P' K# m$ {+ v
  21.         var text = '未知: ';' C; y! V; _% I. E+ o$ X
  22.         switch(type){
    5 G. Z+ B0 t2 t1 I1 d3 E; P
  23.             case plus.barcode.QR:
    , ^; q* B, }2 T, k  Y4 @
  24.             text = 'QR: '; // 二维码, I6 L4 U, u/ F$ z+ ^# K
  25.             break;1 O! m, p! P# U0 {* @
  26.             case plus.barcode.EAN13:
    * O5 U1 e/ r- Q
  27.             text = 'EAN13: ';
    ( C. H7 E; \8 K! A9 I
  28.             break;8 x+ H' v5 f; R$ F4 A( q& h( h0 \
  29.             case plus.barcode.EAN8:
    1 G8 N1 X3 R! d! h
  30.             text = 'EAN8: ';
    7 |  z; X" y; u" x5 x/ {
  31.             break;. L0 Y/ o1 P, _/ s3 H* \$ V
  32.         }) |$ _1 ]& x  D( o: Q* N
  33.         alert( text+result );% e2 @. G; q3 j4 C2 Q* d
  34.     }
    + k# n# ]( @  A  x7 d
  35.     // 创建扫描控件
    " g2 N, D6 W/ G9 X; @3 ]( N
  36.     function startRecognize() {* w0 r( i+ o9 s+ g/ t! _  Q( v$ p
  37.         scan = new plus.barcode.Barcode('bcid');, D6 ~4 S; l+ N2 P/ T- K
  38.         scan.onmarked = onmarked;
    ; l( g, L9 L! R! {
  39.     }# b' N  n7 N2 F( e  i' N1 @# Q
  40.     // 开始扫描: Y3 u/ U6 @/ _+ @/ a
  41.     document.getElementById("startScan").addEventListener('tap',function(){
      c( X% s2 B* g
  42.         startRecognize();3 K, {' y1 p9 x8 n) X
  43.         scan.start();
    9 Y! Y) i% W6 y
  44.     }): z& [! O/ c; ?, P- D
  45.     // 取消扫描
    9 b! t+ ]+ `' [$ L( ?
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){( l" ^1 ?6 S. C& W
  47.         startRecognize();) ]# h2 S/ @1 |5 U7 |0 _5 w% g, W
  48.         scan.cancel();
    $ Q4 b, v$ M( t
  49.     })7 }6 P3 ~7 {  W1 {
  50.     //  开启和关闭闪光灯' ~3 V) z9 C( g5 L) G3 o& G# `
  51.     document.getElementById("setFlash").addEventListener('tap',function(){+ M; F8 X" t; A3 X3 s+ N: S# A
  52.         startRecognize();4 m% F+ G: C+ W% P- Q
  53.         isOpen = !isOpen;
    9 r$ }  q) n& T% G( ^
  54.         if(isOpen){
    1 J* K4 m% {- O2 J9 Q
  55.             scan.setFlash(true);
    & E- G: E- |3 ?. L
  56.         }else{
    5 e7 r: a2 ]0 \2 G7 s3 T
  57.             scan.setFlash(false);3 ~' R% b, B% ?3 k9 k0 b" q# ?
  58.         }
    ( c7 H( v" T' `' w0 i/ D( h
  59.     })8 W0 h# d+ h' W: ]! ~% h" i
  60. </script>: K% I6 ~# D6 ]' [
复制代码
* D7 ^( n5 b  W
效果图什么的就不上了,和前面提到的文章中的效果图基本一样。
: x" s6 M+ h# Z  }, K/ x0 V9 f* B& ^, V
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-23 01:35 , Processed in 0.110299 second(s), 21 queries .

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