微信小程序实现自定义扫码功能

这篇具有很好参考价值的文章主要介绍了微信小程序实现自定义扫码功能。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

微信小程序提供了调取相机直接扫码的功能,但是扫描界面只是一个全屏的相机,且无法添加其他功能。通过微信小程序的camera组件,即系统相机,可以帮助我们实现自定义扫码功能。(注:扫码二维码功能,需升级微信客户端至6.7.3。)

实现流程

  • 使用camera组件,使用扫码模式,绑定扫码成功以及失败事件,官网API:https://developers.weixin.qq.com/miniprogram/dev/component/camera.html
<camera style="width: 100%; height: 100%;" mode="scanCode" bindscancode="scancode" binderror="scanError"></camera>

mode:应用模式,只在初始化时有效,不能动态变更,可选值:normal(默认,相机模式)/ scanCode(扫码模式);
bindscancode:在扫码识别成功时触发,仅在 mode=”scanCode” 时生效;
binderror:用户不允许使用摄像头时触发

  • xwml中添加页面中要显示的模块
<!-- 导航 -->
<view class="nav" style="height: {{systemInfo.statusBarHeight + 44}}px;">
    <view class="nav-content">
        <image class="icon icon-back" src="../../images/back.svg" bindtap="goBack"></image>
        <view>扫描序列码</view>
    </view>
</view>

<!-- 上下扫描的效果 -->
<view class="scan"></view>

<!-- 输入框 -->
<view class="bottom">
    <view class="bottom-tip" hidden="{{typing}}">扫描设备序列号条形码</view>
    <view class="bottom-action" hidden="{{!typing}}">
        <text bindtap="cancel">取消</text>
        <text class="bottom-action-submit" bindtap="submit">确定</text>
    </view>
    <view class="bottom-inputBox">
        <van-field model:value="{{deviceSerialNo}}" center clearable placeholder="手动输入序列号" border="{{false}}" bind:confirm="confirm" focus="{{typing}}" bind:focus="bindfocus" bind:blur="bindblur" class="bottom-input" custom-style=" background: #F6F6F6;border-radius: 8px;" placeholder-style="color:#000;text-align: center;"></van-field>
    </view>
</view>

<!-- 扫码成功时码位置的蓝色标记 -->
<view class="position" hidden="{{!position.length}}" style="left:{{position[0] + (position[2] / 2)}}px;top:{{position[1] + (position[3] / 2)}}px;">
    <view></view>
</view>

<!-- 失败提示 -->
<view class="fail" hidden="{{!showFail}}">
    <view>
        <view class="fail-title">扫描失败</view>
        <view>{{errMsg}}</view>
    </view>
</view>
  • 扫码页面的导航根据自己的需求来,该案例中导航没有使用的默认导航,需要在对应的json文件添加"navigationStyle": “custom”,添加后将不显示默认导航,可进行自定义。自定义导航的位置一般是在状态栏下方,每种型号的手机的状态栏高度等参数不同,微信小程序提供了获取系统信息的APIwx.getSystemInfo,调用成功后会返回状态栏高度等信息,以便我们进行调整。

  • 上下扫描的效果,写对应的CSS样式即可

scan{
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 80%;
  height: 280rpx;
  background-image: radial-gradient(circle at 49% 1.8%, rgba(33,150,243,0.28) 0%, rgba(33,150,243,0.00) 102%);
}
.scan::after {
  content: '';
  width: 100%;
  border: 1rpx solid;
  border-color: rgba(33,150,243,0.28);
  position: absolute;
  animation: animate_scan 3s infinite;
}
  • 扫码成功触发事件。camera组件提供了扫描成功事件bindscancode,可以拿到扫描结果、扫描位置等。注意,若相机一直对着码扫,会不停触发,我们在扫码成功后,给个标识,停止处理业务逻辑。
scancode (e) {
  console.log(e)
  // 若扫描成功,不进行后续处理
  if (this.data.hasScan) {
      return
  }
  // 播放扫描提示音
  this.playMusic()
  this.setData({
      position: e.detail.scanArea, // 扫码位置
      hasScan: true
  })
  // 拿到扫描结果
  let str = e.detail.result
  // 处理业务逻辑...
}

播放音频:

playMusic () {
  const innerAudioContext = wx.createInnerAudioContext()
  innerAudioContext.autoplay = true
  innerAudioContext.src = '/images/提示音.mp3' /**本地的需要用绝对地址 */
  innerAudioContext.play()
}
补充

微信小程序提供了扫码的apiwx.scanCode(Object object)可直接调用相机进行扫码以及选择图片进行扫码(图片扫码需先打开相机)。示例:文章来源地址https://www.toymoban.com/news/detail-464027.html

wx.scanCode({
  onlyFromCamera: false, // 是否只能从相机扫码,不允许从相册选择图片,默认是false
  success (res) {
      console.log(res)
  }
})

到了这里,关于微信小程序实现自定义扫码功能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序自定义扫码界面

    因扫码功能需支持自定义输入,调用微信 scanCode 无法自定义界面补充输入框,所以使用原生组件 camera。 小程序自定义扫码演示 1、调用摄像头扫码 将媒体组件 camera 应用模式设置为 scanCode ,并绑定扫码识别成功方法 2、模拟扫码动画 为提升体验,模拟扫码动画 JS 代码 wxml

    2024年02月16日
    浏览(42)
  • Java后台实现网站微信扫码登录功能,获取用户openid,及微信用户信息(小程序码方案),关联微信小程序(个人主体小程序也可以)

    目录 前言 下面展示操作流程 注册微信小程序 通过后台获取小程序码 前端处理 时序图理解 方案实现步骤 前言 很多业务场景之下我们需要实现  微信扫码登录  的需求,如: 同步网站与小程序的用户数据 。 需要获取用户微信相关基本信息,如头像、id等 实例:小程序上的

    2024年02月02日
    浏览(58)
  • 微信小程序调起扫码功能

    场景:在微信小程序中使用扫码功能,对扫描的物品进行识别处理 1、先随便定义一个点击调起扫码的元素 2、在JS中编写调起扫码功能 以上就是实现微信小程序调起扫码功能,并识别出来结果

    2024年02月13日
    浏览(45)
  • 微信小程序扫码连接wifi功能

    店铺出示二维码,用户扫码之后自动连接店铺wifi而后跳转至我们小程序首页 1、小程序appid: 微信小程序的appid获取地址:https://mp.weixin.qq.com/wxamp/basicprofile/index,设置页面拉到最下面。 2、小程序appKey: 密钥获取地址:打开微信公众平台官网, 扫码登录,左侧菜单【开发 - 开

    2024年01月22日
    浏览(54)
  • 微信小程序嵌套H5页面,调用微信小程序扫码功能,并将结果传回H5页面

    实现方式: 小程序嵌套h5页面,点击h5页面的扫码按钮跳转到小程序的扫码页面,进入之后会立即扫码,拿到扫码结果后,跳转到小程序定义好的webview页面,再由webview页面进入h5页面。 缺点:为了唤起扫码,会进入一个空白的扫码页面 1、小程序嵌套h5页面方法 在小程序中,创

    2024年02月12日
    浏览(52)
  • 如何为微信小程序添加扫码支付和二维码收款功能

    微信小程序是一种轻量级的应用程序,它可以在微信客户端内运行。微信小程序支持扫码支付和二维码收款功能,以方便用户进行支付和收款。 本文将针对微信小程序的扫码支付和二维码收款功能进行详细的讲解,并提供相应的代码案例,帮助开发者了解如何为微信小程序添

    2024年02月04日
    浏览(59)
  • 网站使用微信小程序扫码登录的实现方法

    传统网站一般都会使用账号密码登录,但这种方式总有用户会忘记密码,找回密码需要一系列验证,也挺麻烦的,于是学习了一下扫码登录,这种方式不仅不会有忘记密码的烦恼,登录还十分快捷。用户体验较好. 网站端点击小程序图片,弹出小程序码 小程序端授权页面 1、

    2024年02月16日
    浏览(52)
  • 微信小程序实现的网页扫码授权登录(完全免费)

    微信小程序实现的网页扫码授权登录,无论是个人小程序还是企业小程序,都可以调用wx.login接口获取到openid实现微信鉴权快速扫码登录! 现如今,扫码登录已经在网站普遍应用,其中微信扫码登录极其普遍。但是微信扫码登录的实现方法有多种,大多数都是具有一些门槛的

    2024年02月05日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包