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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。
, ?1 \" K  `. H以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些: / b5 Z6 {* F, q, a
《【iOS】AVFoundation架构下的原生二维码和条形码扫描》
( D2 U, U; A' t# V《【iOS】CoreImage原生二维码生成(一)》 & i' s2 s2 M$ D1 B" X
《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》 ) v; p/ F, t6 A5 R' r
在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。 . A6 j  F5 `# U: M6 m
原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。 / C  o1 [5 W! x2 K# w
直接上代码,注释都在代码里面了。: H  N. {6 l- |

1 v$ q9 O) f9 b
  1. <body >
    0 e4 w, x3 ?% z- h$ w# C
  2.     <header class="mui-bar mui-bar-nav white">
    , J: P' p1 n* e, f$ k5 P% x
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>" K% _- l: T3 h: @& C5 b
  4.         <h1 class="mui-title">二维码扫描</h1>! [# p0 n0 j3 C; s
  5.     </header>
    ' l% Q! G5 P' K8 E! T" [
  6.     <div class="mui-content">! ?: {7 q" ~4 i) ^/ `7 V1 g
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>, |) |3 X3 \8 U  K4 X
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>
    3 D/ }1 c5 B* @4 T
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>( |3 I3 R& G2 r
  10.         <div id= "bcid"></div>
    6 {+ Y2 B0 E9 I  l( f- l2 {( O
  11.     </div>
    ' c# J% x) c( [
  12. </body>0 w3 w. a( Z* S* E$ H
  13. <script>
    : V4 y* [  d! X& Z& x- `. ~
  14.     mui.init({
    & w9 W' v2 {; A& f  }2 k* m3 q
  15.         swipeBack:true //启用右滑关闭功能! r8 m( K. a% o5 p: `
  16.     });
    ; Y$ M/ G" \9 X$ ]. O; u
  17.     var scan = null;
    5 ?; ~5 U  J! D9 O2 \9 {
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭
    % K9 S: i# u2 B9 S% b
  19.     // 条码识别成功事件
    , P+ L& ?) @  r; ]% D, ?
  20.     function onmarked( type, result ) {. B0 ~5 W" G4 E3 O- P* D
  21.         var text = '未知: ';
    2 Y( n  _$ r) ^6 P% a
  22.         switch(type){
    : T( c( a% G" }3 q. J4 q# E
  23.             case plus.barcode.QR:; {& L, j# X: c7 |
  24.             text = 'QR: '; // 二维码
    ; @: t5 e- d/ P" {
  25.             break;
      g) y* G" v) x$ H) W6 }8 b
  26.             case plus.barcode.EAN13:
    4 x" {. Q" @5 g% C& q4 M
  27.             text = 'EAN13: ';% u& @9 p. @! g1 h: ^) r. A
  28.             break;4 u! t+ @6 M$ G; r/ u0 B
  29.             case plus.barcode.EAN8:
    , k5 Q1 f& h( P& M& N
  30.             text = 'EAN8: ';/ V+ a1 i: E4 z: X1 |3 ^
  31.             break;9 Y$ ]. @$ {9 I7 I+ c
  32.         }
    " X! Z. |, w( v/ ~- o$ d
  33.         alert( text+result );
    8 a4 V) Z* A- Y2 E0 G
  34.     }# O4 I/ ]4 ]% z7 j- N
  35.     // 创建扫描控件# j6 _* ^# L8 E( w5 W7 Y( r  r- g
  36.     function startRecognize() {
    7 w9 V& N1 |& X! s7 Y7 s; X
  37.         scan = new plus.barcode.Barcode('bcid');
    ( ?: t6 N& z( N; q/ D
  38.         scan.onmarked = onmarked;
    6 @% P8 x2 _. ~' n- g( m3 z. u
  39.     }3 t1 O. C# o" D
  40.     // 开始扫描
    ' `) I; I" ]& c0 C
  41.     document.getElementById("startScan").addEventListener('tap',function(){. a9 i/ t! \; J) X1 ~! n0 D: r3 Q
  42.         startRecognize();; m. ^0 S! p! t6 D% d0 e0 Z
  43.         scan.start();
    + m6 G0 e6 O% t- V" q( x5 {: Z
  44.     })
    ! W- A* X! ]. }2 |+ v
  45.     // 取消扫描/ C' e1 C* W+ Y2 A3 H8 M( z* M7 x
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){
    4 ]1 q5 M( G0 M& R4 H1 _
  47.         startRecognize();, n$ _4 H( e% i7 ~, ?. j  E
  48.         scan.cancel();1 C4 D/ f- t, h; p, E6 L
  49.     })
    1 h% k2 ~7 A7 Y
  50.     //  开启和关闭闪光灯
    ! ^! {6 n3 G- K* V
  51.     document.getElementById("setFlash").addEventListener('tap',function(){5 {% Z+ A% R# N  v0 m) f
  52.         startRecognize();
    9 w2 z$ X# Y$ @' F( E
  53.         isOpen = !isOpen;5 _+ N& v3 G$ e- T
  54.         if(isOpen){
    % b4 v8 j3 ~3 M% b0 \2 M
  55.             scan.setFlash(true);: m4 O* G% z# A6 I
  56.         }else{& l: s; G. S' [) o
  57.             scan.setFlash(false);
    ( w1 N' A  U! O
  58.         }
    ; y7 q. M  S2 W& [4 q
  59.     })
      D; E2 G& E3 M, I
  60. </script>& a9 J; ?( b: U& I0 p! A% J/ o
复制代码

: X6 g/ H! N' L" J  m! X, h& p  O效果图什么的就不上了,和前面提到的文章中的效果图基本一样。
' o1 V8 K# X) H/ p3 n/ E7 p% O5 x( U
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-9-21 02:07 , Processed in 0.064729 second(s), 19 queries .

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