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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。
) U- A* j: t- }3 p. b以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些: ' \0 U; r- J: A3 X) s3 q
《【iOS】AVFoundation架构下的原生二维码和条形码扫描》 8 j0 u. [$ n8 J
《【iOS】CoreImage原生二维码生成(一)》
( k( g% u8 g- \+ r! I! k0 n- x3 u: d《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》
' e  L: ]& s: m$ M. ~4 K在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。 + t4 z* e9 N) d) [9 [3 {
原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。
% O2 q, t0 l/ d1 Z3 V+ u. f3 {2 p# o  [* w直接上代码,注释都在代码里面了。
% t! x. L" F7 C
. U$ U5 z+ a- E: n8 \
  1. <body >
    5 O$ B6 P/ t3 Z5 I+ z, Z6 T3 z
  2.     <header class="mui-bar mui-bar-nav white">9 h6 F& e1 {0 o
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
    & P: o& K9 {( i% T$ ~( ]5 x
  4.         <h1 class="mui-title">二维码扫描</h1>
    % }% b: j% K5 [" x- u
  5.     </header>
    . t& N8 C0 ^! l6 g; m
  6.     <div class="mui-content">5 r; ?3 z/ c/ K8 T* g2 `9 N0 ^3 r( L
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>
    ! B6 f5 n( P( t" O8 a
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>6 R- J, o+ ]% N) E; h- a- {
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>
    0 }8 q1 A- [3 q- M" Q; c
  10.         <div id= "bcid"></div>) g  e% ^) R' y) J9 d% M
  11.     </div>
    5 b- q% Q0 h: C& S7 g! T
  12. </body>
    ( a2 c# H1 s/ d; \5 O" A1 b: M! q
  13. <script>% `5 A- W' P/ ^& C
  14.     mui.init({
    3 n* u; y. Y3 ^# n1 `
  15.         swipeBack:true //启用右滑关闭功能
    6 y  R- _. V; A, m( B' q
  16.     });6 e& d. L* ~) }- h( m- l$ `7 j
  17.     var scan = null;; W" N4 H+ R7 q6 \
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭/ e7 @! e) y) R: B7 _
  19.     // 条码识别成功事件
    5 D0 W- r* m; m# V  l9 b
  20.     function onmarked( type, result ) {
    - N& ]5 u. g# x" O7 X! M
  21.         var text = '未知: ';. q7 l7 n1 Y: X" k4 ~- o
  22.         switch(type){
    5 \/ j' R6 B: ?4 W' Y
  23.             case plus.barcode.QR:
    6 e( o: _% k( W  n# }
  24.             text = 'QR: '; // 二维码5 I' l) C" [4 ^4 i2 G
  25.             break;' w* d, |$ z; F. q0 `% r5 p& a, x: N
  26.             case plus.barcode.EAN13:
    6 N; N+ o: t" o/ s! P* ~! M
  27.             text = 'EAN13: ';
    0 b$ a1 a% L2 ?. K4 |
  28.             break;- r5 L0 L1 K1 N. P
  29.             case plus.barcode.EAN8:- h, C! V' }; ^2 u- t, o% L
  30.             text = 'EAN8: ';1 ^0 G9 z+ s5 u
  31.             break;
    1 H* B- _! @* ^# I
  32.         }
    6 \9 i5 u3 d; V' O1 g
  33.         alert( text+result );% i, k& f. o- w# T2 D; w, \
  34.     }
    3 V) Y! H" |' @* E# N8 E
  35.     // 创建扫描控件
    * J2 F) j6 E; X* w  q
  36.     function startRecognize() {4 i9 g/ M( d) }- L
  37.         scan = new plus.barcode.Barcode('bcid');$ h3 K) i' x0 _& _+ e6 z
  38.         scan.onmarked = onmarked; 1 q1 D% ]1 h9 e2 `, Z4 K
  39.     }
      w! L2 }  b  Z* C- J! S
  40.     // 开始扫描) y8 ]0 y) ~+ c
  41.     document.getElementById("startScan").addEventListener('tap',function(){
    ( u! s1 H$ P4 c
  42.         startRecognize();
    1 a7 z6 A5 `+ C7 ~0 [
  43.         scan.start();* X* n. u, M8 }( Y6 f9 A
  44.     })
    4 K, b, E# ?9 f7 u! R
  45.     // 取消扫描" E/ }  l8 C7 v0 I
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){
    # }) p1 ]6 }# s
  47.         startRecognize();; e: P' Y5 \4 g* q. L% G5 t
  48.         scan.cancel();
    & W$ T* U7 b1 g# `: ?
  49.     })
    * h, N) T- G8 n" b
  50.     //  开启和关闭闪光灯
    ) x' r/ n4 `  j
  51.     document.getElementById("setFlash").addEventListener('tap',function(){2 w  A# J* V" |+ \$ r
  52.         startRecognize();1 ?. L+ \3 P) s0 B: }: r# N8 o
  53.         isOpen = !isOpen;, q  r! ?+ b( _2 T7 |
  54.         if(isOpen){
    / Q9 {. D: Z" i  q
  55.             scan.setFlash(true);* I, k& |3 w6 Y& Q
  56.         }else{
    : D" B5 b1 L* A+ Z, _
  57.             scan.setFlash(false);
    ( P4 A: |2 J! d0 t# k
  58.         }+ C9 {5 n) h7 T. `, t$ j
  59.     }): X2 v* x3 O2 C
  60. </script>
    ' B& ]# d3 n) p2 T
复制代码

9 ?/ q5 T$ e1 j' k6 t6 k3 z效果图什么的就不上了,和前面提到的文章中的效果图基本一样。3 x+ v* H/ y6 j# d
5 {( y9 ^# g) D* D; Y  I( U
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 18:01 , Processed in 0.110146 second(s), 20 queries .

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