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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。 $ G9 z5 J" I- X3 b; c& b- F' L! e
以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些:
' b5 k6 Q+ j* W" \2 c; T《【iOS】AVFoundation架构下的原生二维码和条形码扫描》
3 S# M- O1 e9 z3 t《【iOS】CoreImage原生二维码生成(一)》 ; ~8 E, M  O) C# T( I
《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》 ; Y4 }7 U/ V9 A( X
在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。 - e! Q1 y/ N% Y' m! K, ~
原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。
* c. T* U/ f" y4 v" G7 R直接上代码,注释都在代码里面了。0 a( v) D5 O. T, v! S2 Z5 A

, i: m8 F2 Y$ y1 ]
  1. <body >
    7 u0 L' ^+ z! _" b
  2.     <header class="mui-bar mui-bar-nav white">; [; Q5 \% I/ k0 G2 c, J5 r3 R
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
    ! S0 f) C  R" U2 `
  4.         <h1 class="mui-title">二维码扫描</h1>
    ! y2 g( ]3 [0 k6 U' u0 \/ X6 A
  5.     </header>! ~7 V. @3 _6 @- |, S
  6.     <div class="mui-content">
    - }5 A+ r0 P  r* G- p( G. U0 ]
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>
    - n8 o  N0 X2 j% a. j8 n
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>
    # [' @: u4 c# B6 H0 z
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>
    1 }: c3 h; \! l/ h" x, L2 ]9 S$ {
  10.         <div id= "bcid"></div>
    . x& e* k4 Y  j  ?
  11.     </div>
    ) u. u) y' u: s
  12. </body>
    ( v! F+ l" z3 I# X7 r
  13. <script>5 X8 l5 e6 @' [
  14.     mui.init({" M8 d. o2 l& f, X1 E3 h5 k" _
  15.         swipeBack:true //启用右滑关闭功能
    ! Q: e! i4 F3 S4 l
  16.     });$ ?% k8 j9 p, c# U; L+ X% z
  17.     var scan = null;, O8 k3 [2 ~1 a- z
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭3 k" P3 e4 e9 C: ?8 e. g1 Z4 U# h0 t
  19.     // 条码识别成功事件1 m) R/ ?6 z4 s
  20.     function onmarked( type, result ) {
    / W, f: n7 c3 {" d! `7 W5 k4 E
  21.         var text = '未知: ';3 t% Y: h4 }% D
  22.         switch(type){
    5 w3 f" C, `6 j) k! Q" P0 C
  23.             case plus.barcode.QR:8 ^1 _. v- [7 P5 `" [
  24.             text = 'QR: '; // 二维码
    3 F* j7 b& R3 Q0 g
  25.             break;3 R1 v+ A6 g# {; Y3 h4 |2 x
  26.             case plus.barcode.EAN13:
    + ]; Y2 a4 x; b) Y
  27.             text = 'EAN13: ';
    - y6 I. A6 K8 p. s# V: A1 y
  28.             break;, u8 V2 z, v- R: E4 l; ^" F! h
  29.             case plus.barcode.EAN8:0 m  P' m0 `7 N
  30.             text = 'EAN8: ';
    / i+ u, n8 ?  E( W
  31.             break;
    3 E. o/ ~0 T# a% `1 b: g# _- G; v" \
  32.         }/ c* F6 |; L0 o; l0 h
  33.         alert( text+result );% v5 M* F% t$ _2 m6 T2 d
  34.     }$ p* y" Z5 `. o! f! U# l0 ]6 B# X
  35.     // 创建扫描控件
    ! E+ R4 q! \8 l, }) T9 M! J
  36.     function startRecognize() {0 V$ d  }0 L8 Y# P7 l3 B; n/ R
  37.         scan = new plus.barcode.Barcode('bcid');
    ; l) I- g; u8 y7 G
  38.         scan.onmarked = onmarked; ! D0 V1 |6 Y2 A
  39.     }
    6 J2 |% e* h0 z* A- t7 D
  40.     // 开始扫描
    0 e3 y- t; j& t; f
  41.     document.getElementById("startScan").addEventListener('tap',function(){
    ( o! Z& V4 a' Q3 q3 V- |
  42.         startRecognize();% P+ Z% n0 w5 f+ y$ I" |" u
  43.         scan.start();
    1 U, h4 Y5 O6 S1 Z( J4 N* ^' d+ `
  44.     })
    * k! F. K1 e% A) X
  45.     // 取消扫描
    2 K# Z! {4 Y5 x1 v! t: Z7 |, `" z- ?
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){
    & f& e* W; W8 H4 i& @
  47.         startRecognize();
    3 t- m* `& T. K2 {
  48.         scan.cancel();- @8 q! E1 e# K) S* j
  49.     })
    # g! Z  s1 L3 Q+ r" h- C( `$ B
  50.     //  开启和关闭闪光灯/ ?) {7 ~4 u' {8 X& F
  51.     document.getElementById("setFlash").addEventListener('tap',function(){( Q7 r/ T- w5 V* L6 e/ `
  52.         startRecognize();* m) `' X! f2 j: o2 C0 m
  53.         isOpen = !isOpen;
    + K; W8 m, Q! M) x% F* t
  54.         if(isOpen){# v* J7 ^3 j$ a
  55.             scan.setFlash(true);
    + I3 }2 z! z" \) ~9 P2 p- B. c6 Y
  56.         }else{  c/ n3 o: {! Z. c
  57.             scan.setFlash(false);! Y; F4 a, p4 x8 F/ {5 F
  58.         }
    ! Y7 X# r: A, q
  59.     })
    7 F1 g8 w, v2 W
  60. </script>
    $ {0 p0 U5 m2 r, y
复制代码

7 n- W: S1 R5 e1 d  ~& E效果图什么的就不上了,和前面提到的文章中的效果图基本一样。
# E9 ^2 [: ]) H5 y
7 z2 |6 K9 h/ |/ @3 l# B% O) ~$ e2 g
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-4-25 18:29 , Processed in 0.131929 second(s), 21 queries .

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