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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。 1 U& E) e" @" o& `, M
以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些:
) A9 C6 T7 p  _9 y《【iOS】AVFoundation架构下的原生二维码和条形码扫描》
) M7 D- ]: ~' A+ U9 A  N7 k" K4 M《【iOS】CoreImage原生二维码生成(一)》 4 Q- N  {  {4 w6 I9 _9 j. j( I
《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》 5 J/ l5 j  ?5 d9 D7 k1 Z
在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。
  d6 |7 V% r: S6 Q2 n- V9 f原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。
; L2 _6 Y! H4 p' O; G. h/ s" F直接上代码,注释都在代码里面了。
/ R# S# G& R. _( l5 X5 m0 {3 J
/ s- I1 q9 W, m8 R. s, N
  1. <body >' C3 S4 L- z: F) h$ X
  2.     <header class="mui-bar mui-bar-nav white">
    . Y3 I$ _6 L7 o( G% k0 c& t8 V4 g
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>  M  y. P$ c, L4 k5 W
  4.         <h1 class="mui-title">二维码扫描</h1>/ s3 u% r8 _5 y
  5.     </header>& `# Y% f9 i1 Y: B
  6.     <div class="mui-content">
    5 E& I1 p# @$ i
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>
    3 t" n6 F3 c* [3 ]$ `* H
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>8 ?; y. f) G1 U2 d1 Q2 m
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>0 S1 b; _  J. T2 C
  10.         <div id= "bcid"></div>3 r* h% y5 |' Y( V8 _! J
  11.     </div>6 [! y! d# ^$ o$ }* h; W8 Q
  12. </body># A2 u5 ~! f1 m( l8 O
  13. <script>$ |0 ]6 _6 T+ _9 {8 R6 J
  14.     mui.init({
    ; Z! S+ c* w/ J/ b( }
  15.         swipeBack:true //启用右滑关闭功能! N; `, H- P+ h  n6 X5 B, _" n
  16.     });! A. A, T) o5 q0 O' W
  17.     var scan = null;
    ( T" Q/ F$ {. S( v" X0 l
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭
    8 E. u3 ^1 v2 S
  19.     // 条码识别成功事件
    % A6 G7 L. w; Q: I/ `7 S) r# ?
  20.     function onmarked( type, result ) {
    + K1 R! {' S; N+ t0 Y( {
  21.         var text = '未知: ';
    * B) w" w1 t; P: w7 u5 a  R4 t# y
  22.         switch(type){- V. ?7 k+ q1 y0 ?
  23.             case plus.barcode.QR:8 H! x% n4 ^6 L2 c; l3 m& f
  24.             text = 'QR: '; // 二维码
    / o4 Y0 h9 L9 C! {
  25.             break;9 I( r7 }" Z0 M
  26.             case plus.barcode.EAN13:
    7 N2 a0 ]; U. l8 W5 R+ w/ H! c  A
  27.             text = 'EAN13: ';: `+ P1 K6 |; [) i- m1 l/ m
  28.             break;
    2 w' D6 O/ Z0 V  Y" ~
  29.             case plus.barcode.EAN8:0 Q( I5 e8 y( J9 D
  30.             text = 'EAN8: ';
    , @5 [+ Y' h1 X! G, ^( y5 }
  31.             break;- ]! ^# G/ r( [8 K" D2 X
  32.         }5 \8 [# g0 G! E9 @
  33.         alert( text+result );
    1 n' V' j9 e: ?( a
  34.     }- M  s7 o5 F, b4 C9 \
  35.     // 创建扫描控件* z9 f8 i5 g  @8 v& ]
  36.     function startRecognize() {% h- {7 d1 ~0 K- S8 H0 W# D
  37.         scan = new plus.barcode.Barcode('bcid');7 A3 A( R5 Z2 q: R9 ]3 {
  38.         scan.onmarked = onmarked; 1 L2 ^* c4 s  N" B) O' o
  39.     }, x( A0 z, N$ s' K$ l% R3 g( g
  40.     // 开始扫描
    5 ?, [/ T# Y% O/ l: [1 m& j/ N
  41.     document.getElementById("startScan").addEventListener('tap',function(){" @3 U; b8 z* c: s5 C( c1 f1 w# w; w
  42.         startRecognize();
    ) h; W, r- B. K7 P" L# m
  43.         scan.start();
    / V6 D. }& C! l' G
  44.     })
    8 ^) g8 g; W8 O( A2 C* t
  45.     // 取消扫描
    2 f  A( n: _3 s$ g. {  ?
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){
    * C5 X. t+ ?- n# W7 Z- x
  47.         startRecognize();( o6 l+ f3 l  o- M( ?
  48.         scan.cancel();6 F' g4 z9 U, D
  49.     })
    ( G- ]$ c+ o! J! F8 k$ T
  50.     //  开启和关闭闪光灯8 z* ^( i* ]7 b1 s, {
  51.     document.getElementById("setFlash").addEventListener('tap',function(){
    9 k: f: @; ]& o9 j+ k, O6 {
  52.         startRecognize();
    4 |, O# ~" P( A+ y) U% p' e; E
  53.         isOpen = !isOpen;  `; C# _- E. w9 H- K8 x
  54.         if(isOpen){) o# H# J) `' j) A
  55.             scan.setFlash(true);
    0 M- Q1 h! _7 d4 h9 C9 C' V) D
  56.         }else{
    " h6 r/ o+ b+ X1 _- U6 z* ^: Q
  57.             scan.setFlash(false);
    / i; E, {) ?0 f- W! K
  58.         }- l6 u% M$ M, ^1 @: _
  59.     })
    # y4 k8 W% r+ c* _- x
  60. </script>" u+ Z! R% W8 n! @+ }+ H( L
复制代码

% Z. Y1 S  k+ G# @效果图什么的就不上了,和前面提到的文章中的效果图基本一样。
6 d2 M/ ]' ~5 U' a/ r6 A% \/ U! T5 D& V0 b
" w! `% ^* m) r8 j
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-1-30 16:06 , Processed in 0.055282 second(s), 19 queries .

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