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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。 5 c0 `! K; c1 M
以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些:
2 j4 {1 G* k5 I6 r《【iOS】AVFoundation架构下的原生二维码和条形码扫描》 * ]% J2 @" b  Z( n9 Y8 I* n
《【iOS】CoreImage原生二维码生成(一)》
8 }& F, O. r4 A. |2 ^《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》
* x0 ]. j! |0 f, ~在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。
: Y, }- w, J5 Y# b9 Z( t原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。 % H3 O/ _( {5 p7 s* {: L  s
直接上代码,注释都在代码里面了。& k# W& E6 q. T0 s. u- d: Q) P
2 C( g# \& @* @6 L, C
  1. <body >
    ! t% m- Y7 M, Z; y* @0 `& u
  2.     <header class="mui-bar mui-bar-nav white">
    2 C1 M: z4 N( v, W& x  g, h
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>" S2 O+ B5 Z( K2 d# b' B* f
  4.         <h1 class="mui-title">二维码扫描</h1>
    % G& h" M# V+ e% H
  5.     </header>
    4 l& }' c) v, d+ n9 s4 A2 W
  6.     <div class="mui-content">
    - ~" |/ O0 u0 B( ~
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>/ o7 \* h) m5 |
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>) F' I- h% g8 g, G* n  n
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>
    8 R6 y# @' {' n: p
  10.         <div id= "bcid"></div>) ^. p+ V# m9 E0 p, m- c
  11.     </div>
    $ a! x4 F3 R7 \; d0 j( v: z% j
  12. </body>' H/ Q/ Y6 q5 x
  13. <script>
    7 i: Y  @( D9 T% T* L7 m
  14.     mui.init({
    ! Q- F" {; W& i/ _8 Y0 w
  15.         swipeBack:true //启用右滑关闭功能6 e1 K) Q6 Q7 s
  16.     });& D) i" a' v* ^7 N+ c$ ?
  17.     var scan = null;
    " ]8 p$ j9 f. B
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭$ ~5 I; k' @2 d
  19.     // 条码识别成功事件" _% L2 f' r; W& n0 a5 q/ \9 p; i
  20.     function onmarked( type, result ) {
    : V3 Y3 K% v7 c: W% @1 x+ U
  21.         var text = '未知: ';
    / \6 v, U+ b$ h! x& a; _  z! W  }: K
  22.         switch(type){
      K! J/ G* G# T# Y6 A5 v7 f
  23.             case plus.barcode.QR:
      B! ]  @! Q8 A
  24.             text = 'QR: '; // 二维码
    4 l, O8 l- }0 r/ Y* ~. Y# P; ]
  25.             break;
    ; T$ m6 p$ _) X- B$ X5 y3 C
  26.             case plus.barcode.EAN13:
    ; @) @. l$ {: e6 ^
  27.             text = 'EAN13: ';* b% e9 ^# K3 M; J
  28.             break;
    3 N2 K. ^1 b* Q0 ^. z  @" H* X6 N$ s
  29.             case plus.barcode.EAN8:1 i  V1 _( U1 W4 K
  30.             text = 'EAN8: ';* U1 M" T. J5 W( k8 `
  31.             break;
    2 j/ {7 k' ]! t. ^
  32.         }
    ) `. i' [5 D# o" b' `, ~* C
  33.         alert( text+result );9 L9 y; u/ p' A. K* {" s( j
  34.     }
    # }  D8 I6 i% u  B
  35.     // 创建扫描控件
    5 [% K9 \- Y* k, G
  36.     function startRecognize() {+ X, O7 o1 ^& S  @3 S, D0 ~
  37.         scan = new plus.barcode.Barcode('bcid');  M! `7 d0 D/ F/ E0 z
  38.         scan.onmarked = onmarked;
    ! r$ b8 h; t: y
  39.     }0 y8 _7 O+ V, l+ B
  40.     // 开始扫描
    , f( u. }8 B4 n3 `/ {" C
  41.     document.getElementById("startScan").addEventListener('tap',function(){
    ' ^0 G9 e2 G! i7 S( E
  42.         startRecognize();( X& I- \& s3 U% A8 r
  43.         scan.start();7 K2 o* `7 e* Q" z+ |# o5 s
  44.     })
    4 s! L- k* H; U
  45.     // 取消扫描; c) n# s( q0 W% x4 G
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){, }0 ?$ p4 s6 _8 ~- ?+ q4 T8 Z
  47.         startRecognize();; N, R. ^; q9 h
  48.         scan.cancel();6 _$ B; B5 Z: J4 Y# e
  49.     })1 R# S1 U8 ]2 U) D) _* H$ v, @/ T( Y
  50.     //  开启和关闭闪光灯
    ' v3 {" ]. ^# a6 ?- W2 u& \
  51.     document.getElementById("setFlash").addEventListener('tap',function(){
    6 {4 _, w- X% {
  52.         startRecognize();' E; X* m7 x$ I* n
  53.         isOpen = !isOpen;
    0 t8 I8 G, O! k1 b  I
  54.         if(isOpen){
    2 ?% A5 m/ U: W: \
  55.             scan.setFlash(true);6 v, G) |) n$ w/ b. o% p% }1 {
  56.         }else{
    + C$ ^6 H* ?; Q  h/ |* d; P
  57.             scan.setFlash(false);
    * ]$ B" s3 g) m8 n/ E
  58.         }+ T- }0 Z. f2 N1 F+ z- Z" b& {$ W
  59.     }), {4 {. _5 @/ I8 t1 R
  60. </script>( i# Z' B  L( H) L# U+ p
复制代码
; h6 m1 `4 q/ y) j8 X# ]
效果图什么的就不上了,和前面提到的文章中的效果图基本一样。
. p8 d, i9 o/ x+ z
! L1 p' W$ w* j/ ]  I! [) n
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-4-30 21:46 , Processed in 0.056255 second(s), 20 queries .

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