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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。 8 q* I, C5 W% L  x
以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些: 5 t% |! \4 `* ?
《【iOS】AVFoundation架构下的原生二维码和条形码扫描》
2 n" j9 V8 B) q6 D《【iOS】CoreImage原生二维码生成(一)》 : d' W, Y( `  g# l4 F2 A8 v4 M* M
《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》   `5 h' Z/ M8 P" z
在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。 7 r+ X5 v: g1 N: @
原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。 2 |' r( K' W: _2 U! H
直接上代码,注释都在代码里面了。! ]" O' I, y: p5 I  L9 P
9 s: p! Q. A- S$ J8 I9 r# ^5 h
  1. <body >
    + d% {% B6 F% |; N! x( j
  2.     <header class="mui-bar mui-bar-nav white">
    , a: C3 R+ x" |) R7 b& ]1 j
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>2 F& J* P& V* }6 t
  4.         <h1 class="mui-title">二维码扫描</h1>
    1 \2 G( R* y5 C
  5.     </header>
    ) W6 N5 p' b0 v. b6 l  f3 A+ v% H, T7 z
  6.     <div class="mui-content">+ Y  K2 Q- Z7 x: |
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>
    % i6 `; X& b8 Q" r! t
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>6 P6 g1 Z& H! k$ h
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>
    ( Y% t0 o% K7 R7 z& Z1 W
  10.         <div id= "bcid"></div>
      J3 R% S' a' ?& F
  11.     </div>+ `8 O2 U% O0 z6 f' y% R( F
  12. </body>
    ! z/ R4 `- Y/ L' M
  13. <script>
    3 o- s+ h2 z4 T6 C3 T; u# \8 T
  14.     mui.init({0 E% T7 b9 M, N4 s5 p& o) e
  15.         swipeBack:true //启用右滑关闭功能( `' G& ~7 Y* ^' S
  16.     });4 g4 B+ m, Z+ }% S
  17.     var scan = null;
    : B& Z1 `5 D- J6 L
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭9 q' {0 P) q3 h$ `. }" d6 E
  19.     // 条码识别成功事件
    7 F7 B, i8 J* [. x: S
  20.     function onmarked( type, result ) {
    5 g% x0 D- z- P' V+ M7 G: i
  21.         var text = '未知: ';
    $ q8 Z9 J) C# x
  22.         switch(type){% \( K8 J2 q* H* ]/ Z
  23.             case plus.barcode.QR:+ u/ R1 j# S- o! `
  24.             text = 'QR: '; // 二维码! n+ s/ j" o" g+ x4 Q
  25.             break;( G' b. O6 o& [) ~' ?: a
  26.             case plus.barcode.EAN13:
    ! W5 n9 j8 Y; c/ O: g
  27.             text = 'EAN13: ';6 i, P6 f+ S  y7 G- v9 F
  28.             break;: v2 x: a) e* Y& g9 B8 f' I
  29.             case plus.barcode.EAN8:
    ' h; {" k$ _. k; s
  30.             text = 'EAN8: ';
    5 I4 `$ {- O* ~/ }) D
  31.             break;
    " e9 [4 j0 n! E- N4 F
  32.         }
    ) n, R" }/ C6 C) `$ r" d
  33.         alert( text+result );6 R( R, q  o0 z7 Z. F% v9 g
  34.     }+ L$ e6 \* j% K0 K& Y( l: i9 [
  35.     // 创建扫描控件6 T( f& W* E# N8 T9 h
  36.     function startRecognize() {" @" ]4 X* O2 W; R( h* r, o
  37.         scan = new plus.barcode.Barcode('bcid');
    " T, [* F& k. m: p4 G6 K* h
  38.         scan.onmarked = onmarked; 9 [  s3 `- h$ }- |
  39.     }
    - H# |' U5 s/ z
  40.     // 开始扫描
    3 K: e* C3 z5 T/ U) H$ m
  41.     document.getElementById("startScan").addEventListener('tap',function(){
    ) t* z- U- x8 u( Y( s: L
  42.         startRecognize();4 R9 e+ b4 V- t9 n: v, C
  43.         scan.start();
    1 w/ E+ r9 h; q) N' l) p
  44.     }): m4 l4 F3 r/ b5 T+ k8 H
  45.     // 取消扫描) z# x2 e; _! {$ d" d2 r: n# l8 ]* R9 ?
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){
    1 q: }; S% O0 R1 U1 l
  47.         startRecognize();
    8 ?; n0 i9 t- U. S5 S
  48.         scan.cancel();: n) k: u* e0 a/ F# ?
  49.     })" {$ O5 V: e7 t( @3 |, j
  50.     //  开启和关闭闪光灯
    ( f. t, {" A: X6 T9 @2 [
  51.     document.getElementById("setFlash").addEventListener('tap',function(){: f8 h" E4 {7 H" G
  52.         startRecognize();
    # c7 D, J( E) Z9 J4 B8 S3 }2 ~
  53.         isOpen = !isOpen;+ V$ r0 A( b# P
  54.         if(isOpen){
    ' D! y: a8 o" d6 N
  55.             scan.setFlash(true);
    : i0 P& I" _7 ^: O. ~9 a6 R
  56.         }else{0 U, G5 S1 `, @% J  x4 g8 N
  57.             scan.setFlash(false);0 X7 S* R& \' Z  `. J! f
  58.         }
    # ?/ ^) P5 J" @: p
  59.     }), [8 h1 `0 R: I7 x8 b
  60. </script>
    4 F6 A. o: ]' {: O( T0 _; `
复制代码
! y7 b! O9 q7 {/ X& M2 @2 t8 I4 \
效果图什么的就不上了,和前面提到的文章中的效果图基本一样。9 `6 Q% ]. A- o; s1 e7 a+ |

4 n" l8 R+ F2 I* m7 B" F! u2 X, S
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 21:35 , Processed in 0.152143 second(s), 19 queries .

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