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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。
" n5 V; Q5 k' U# B2 T1 x3 a5 ?' W* ?以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些:
, x+ B* r4 o8 X* n* o7 W8 h《【iOS】AVFoundation架构下的原生二维码和条形码扫描》 ! x1 y0 i6 k: x( p7 g# {
《【iOS】CoreImage原生二维码生成(一)》
2 Q' {" M4 B: P& p! @《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》 + i7 y0 z6 Y7 u- p
在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。
# }. g8 p# A# l$ O& T  K原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。 6 K2 q, O( \% |
直接上代码,注释都在代码里面了。" H/ u2 [2 X  {4 a
3 D+ x" t6 u5 [# _
  1. <body >
    # R0 r  `4 V' W. ~- Y$ C3 l9 q
  2.     <header class="mui-bar mui-bar-nav white">
    ; K$ k9 {. R3 T* Z
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a># _; N" U6 G! I! |/ z
  4.         <h1 class="mui-title">二维码扫描</h1>8 s7 e8 w" _8 U* P9 L7 t  u& d
  5.     </header>
    ) I+ }3 I9 \# N2 w4 B# ^" n. ]
  6.     <div class="mui-content">& R* q! a" r4 B5 X
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>
    7 c. b0 |+ y% \! m
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>
    ' J4 A* }- v/ U( {; b5 ~
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>4 U1 Q1 i/ o. u; Y+ @
  10.         <div id= "bcid"></div>1 U+ X/ M/ G' b$ Y
  11.     </div>
    9 X) C8 g6 p. o( e) h; f3 C
  12. </body>1 m# i: ]0 c, ]0 @$ V1 \- m  a
  13. <script>, G2 Q" Y8 @% P: o0 \
  14.     mui.init({
    + E  J8 v" C4 F% N! G* d
  15.         swipeBack:true //启用右滑关闭功能
    8 U3 V. p# f/ f2 B* H( A
  16.     });" s( Z4 _' e" x- Z
  17.     var scan = null;4 G' g, O9 K0 C$ ~6 J
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭
    % q, O0 F7 r: W* p4 F6 q% c
  19.     // 条码识别成功事件/ ?# Q. i% f# o* G; e
  20.     function onmarked( type, result ) {
    ) B; l+ `% N; M' @6 y' ?
  21.         var text = '未知: ';
    . n' b6 Y" x" m3 W; x7 E+ E9 l9 q
  22.         switch(type){
    3 R6 L8 z/ }* D" M0 ^2 D
  23.             case plus.barcode.QR:
    8 Y) K" p  ^4 u$ ^, _8 ?, Q- S
  24.             text = 'QR: '; // 二维码9 s+ i# N4 f3 ^3 I% E7 A- ]
  25.             break;. a& T# c) ~6 q1 y1 p  z9 R
  26.             case plus.barcode.EAN13:* f. R" `! w! f7 t1 Z* n9 `. k1 v* Q
  27.             text = 'EAN13: ';: ]6 o4 d5 o# _
  28.             break;
    8 w9 n( `; p' J+ r2 ?! b
  29.             case plus.barcode.EAN8:- |; P4 r- C9 i8 }
  30.             text = 'EAN8: ';. L6 d1 q% X/ P4 e0 c& D
  31.             break;: }$ V9 j* l) L* v7 }9 v/ t& `* @
  32.         }
    . S. V2 b, K' R3 {: E( K2 c5 s
  33.         alert( text+result );
    / h7 U" k. Z- H9 ^
  34.     }; c" h# r* S. |# }
  35.     // 创建扫描控件
    5 U5 ~0 j; [3 t0 f' j; z5 d: J
  36.     function startRecognize() {" l$ |- k& @, i9 W% ]7 ~
  37.         scan = new plus.barcode.Barcode('bcid');
    + U9 ^9 X  V3 E  P
  38.         scan.onmarked = onmarked; . ?# m. V2 q% O, f2 p
  39.     }4 B3 U/ F+ P7 L
  40.     // 开始扫描8 `( u$ t, ?) |! v5 N$ ?
  41.     document.getElementById("startScan").addEventListener('tap',function(){& m2 s) M+ e, M! _" n/ c
  42.         startRecognize();
    / i6 ~* k% M1 ]
  43.         scan.start();6 c# i0 u' ~  T
  44.     })% q: t+ i1 \1 c4 L
  45.     // 取消扫描+ b& }) Y! c" V( D' y
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){
    " j1 i, u, j) i9 n; }  p) e
  47.         startRecognize();
    : m. n$ s$ s7 w
  48.         scan.cancel();
    ) F' w. f1 Z" l; y% Y7 ?
  49.     })+ I6 [1 Y" k. Q1 ?* k2 F
  50.     //  开启和关闭闪光灯
    * l9 C6 U8 ^4 b) }
  51.     document.getElementById("setFlash").addEventListener('tap',function(){
    5 ^# X: g# Y5 C" n* N& g+ |% Z
  52.         startRecognize();
    4 z, H7 X, F. |; Y! ~. a
  53.         isOpen = !isOpen;
    8 w; s4 l; e0 }: t3 m' N: u
  54.         if(isOpen){; [$ _0 v" L( n% e  n% @0 o9 E
  55.             scan.setFlash(true);
    ! @( u. j7 A% Y* c2 y. w* e
  56.         }else{
    3 s: n+ V0 a  g( ]: m
  57.             scan.setFlash(false);. I& A: I. l1 b2 W
  58.         }: C. H- z4 T( Q" [
  59.     })
    0 n( i* g4 W, a& b, ~' z0 Z
  60. </script>
    ) n, j& m$ K+ o' z. W5 i
复制代码
2 H" |) l: D! ~4 ?1 C# ~5 b
效果图什么的就不上了,和前面提到的文章中的效果图基本一样。5 _  t) q. f1 l7 N$ c! z
' n7 y7 ^. J4 f" J- k" r0 I; i+ C
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-9-21 04:18 , Processed in 0.052298 second(s), 19 queries .

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