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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-31 02:06:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没有写《HBuilder webApp App开发》这个专栏了。这周的这两天暂时比骄没事,就对着官方文档barcode写了这个二维码扫描的Demo。
* F4 D2 m: K4 [- S5 T  \以前做原生开发的时候,关于二维码扫描、识别图片中的二维码、和二维码生成都写过。具体可以看这些: 3 K* t# z4 E/ J" I
《【iOS】AVFoundation架构下的原生二维码和条形码扫描》
, s7 B5 `( y& d* e/ \* B《【iOS】CoreImage原生二维码生成(一)》 * y; P. ~$ t) g1 c
《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》 * T9 L3 E4 n, l# U
在做H5的APP的时候,之前也写过《HBuilder webApp开发(十一)二维码生成》。   @5 A/ X1 N( ?, i9 p  o5 K9 |
原生开发和H5的开发都写过,发现还是H5的开发代码量会少一点,但是这个就看项目是原生开发还是H5开发了。总体感觉做二维码扫描和生成不难,认真看文档,理清思路,修改官方Demo,然后测试就好了。 . b; L1 k* @2 O
直接上代码,注释都在代码里面了。& i5 x, Y& m! O% u$ y8 }

0 Z0 g: a4 {& o# Q- ]  p/ p
  1. <body >
    ) ]4 y' x6 u$ Q& h2 R2 n
  2.     <header class="mui-bar mui-bar-nav white">2 i% z% J8 |) }4 e1 `3 R6 b1 y
  3.         <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>, E/ h+ d4 x% m; {
  4.         <h1 class="mui-title">二维码扫描</h1>
    " ~6 E6 T. O# K- ^0 U
  5.     </header># t+ W- y7 R8 M/ H; o( v
  6.     <div class="mui-content">
    8 @0 G& I6 j7 ~" T; U( n
  7.         <button id="startScan" class="mui-btn mui-btn-success">开始扫描</button>% C6 R  V& C* x2 R1 n& L
  8.         <button id="cancelScan" class="mui-btn mui-btn-success">取消扫描</button>8 H4 ?4 l4 I8 A
  9.         <button id="setFlash" class="mui-btn mui-btn-success">开启/关闭闪光灯</button>
    ) ?) O" h7 I( p
  10.         <div id= "bcid"></div>
    ' j- [- L: b- C4 I
  11.     </div>
    4 p% D4 |+ Y2 T( e. \- g  K3 h
  12. </body>% y* L" y( f" J. m
  13. <script>. J# ]# A/ i' ~- _
  14.     mui.init({* k) F: ]$ x% H- L+ _% V$ F
  15.         swipeBack:true //启用右滑关闭功能
    " {- h. ~: i; x6 G- `8 r
  16.     });8 I* j9 n# D0 P/ P! @% C
  17.     var scan = null;
    / @/ C: R) B0 U: [$ W3 K  x
  18.     var isOpen = false; // 闪光灯是否开始标志 true:闪光灯已经开启 false:闪光灯关闭
      w% f# B2 [+ r$ R! Q
  19.     // 条码识别成功事件$ k7 z! D& t5 d! A& t- `1 n5 C
  20.     function onmarked( type, result ) {
    " f  N! u# C: W( g1 X7 ]6 ~
  21.         var text = '未知: ';5 D8 }$ t. A) h7 X5 m
  22.         switch(type){
    - i: @4 X' r/ e( Q
  23.             case plus.barcode.QR:" o) K! p; `# `
  24.             text = 'QR: '; // 二维码
    1 T# s$ s% t; V  B3 f, ^
  25.             break;
    : `" Z8 h( u/ Z: Q3 k; ~
  26.             case plus.barcode.EAN13:
    ! c5 w$ D* g- K4 U/ b
  27.             text = 'EAN13: ';* o, `3 t8 o- K$ B/ C, W0 z; T
  28.             break;+ ~4 C3 C+ F' d$ S
  29.             case plus.barcode.EAN8:5 l. f: {! \: X7 k! Z0 W0 P4 }3 z
  30.             text = 'EAN8: ';
    ! y+ ~3 ?3 m) {& c, s4 R
  31.             break;
    5 s/ w5 o" B  q2 z6 H7 L! Y. M
  32.         }
    " Y0 P4 _; k. o) _& x
  33.         alert( text+result );
    8 m: e9 n6 g0 e) V4 n
  34.     }2 d6 k6 y$ P; k( `
  35.     // 创建扫描控件! d- m# N6 p3 e: M3 [8 l
  36.     function startRecognize() {
    - p9 [  ]5 q7 B' w5 M% S9 [
  37.         scan = new plus.barcode.Barcode('bcid');
      V$ Z% g4 X5 w! [6 u
  38.         scan.onmarked = onmarked; 6 X0 ?; F% o# p; e
  39.     }
    4 x* f( K' F, G5 I6 ]5 {
  40.     // 开始扫描
    7 s& ]2 `0 P' J" L
  41.     document.getElementById("startScan").addEventListener('tap',function(){5 e- l3 F5 S. a8 X
  42.         startRecognize();4 X5 t) v: m: H. Y5 R
  43.         scan.start();2 p2 d4 o" D9 l9 a9 M
  44.     })
    1 K% h% ~9 Y; i* j1 |
  45.     // 取消扫描2 C* N% x* u9 ?4 x9 o
  46.     document.getElementById("cancelScan").addEventListener('tap',function(){
    - A  l1 ]5 R2 D1 B
  47.         startRecognize();
    2 ]! c7 t- T6 f& X
  48.         scan.cancel();
    1 h9 s/ L0 j& {. W; e. Z0 `& t
  49.     })  G& V+ W% G* D: {" y) ~. u3 j
  50.     //  开启和关闭闪光灯' R0 R" J$ K5 z* S. f
  51.     document.getElementById("setFlash").addEventListener('tap',function(){9 v0 i1 d; f: J: P
  52.         startRecognize();
    3 {% c6 K7 p' w' w* o3 y8 L
  53.         isOpen = !isOpen;5 C( R% @% @# o" c& d. q+ q; |; {! A' a7 y
  54.         if(isOpen){( [5 N+ }' v3 k' T  _1 l5 b
  55.             scan.setFlash(true);
    # S; t& ], h8 `6 d( ~
  56.         }else{
    , f" M9 ]: E9 z  t, y9 G
  57.             scan.setFlash(false);
    " Y8 R+ I9 B6 f6 k$ E* n8 z
  58.         }+ Q7 g# v) B0 c0 N; V2 f3 D+ I
  59.     })# F( k; t  y4 b
  60. </script>. M* \2 k  S* ]# z9 a& ~  F
复制代码

- ]4 f, m% T5 c0 T3 N/ O2 |效果图什么的就不上了,和前面提到的文章中的效果图基本一样。6 G! ^' B7 @7 k! ?2 `; h1 ]) a
* a( \8 S# S# H/ \6 \
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-2 18:00 , Processed in 0.127118 second(s), 19 queries .

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