首页 > 其他分享 >[uniapp] 扫码功能

[uniapp] 扫码功能

时间:2024-11-18 17:23:13浏览次数:1  
标签:uniapp 扫码 调用 错误 title 功能 uni 摄像头

APP、微信小程序 (原生扫码功能)

<!-- 在 'manifest.json' 中允许打开摄像头权限 -->

<template>
	<button @click="scanQRcodes">扫码</button>
</template>

<script setup>
// 扫码
const scanQRcodes = () => {
	uni.scanCode({
		success: (res) => {
			if (res.result) {
				console.log('扫描结果:', res.result);
			} else {
				uni.showToast({
					title: '扫描失败',
					icon: 'none'
				});
			}
		},
		fail: (err) => {
			if (err.errMsg.includes('cancel')) {
				uni.showToast({
					title: '扫描已取消',
					icon: 'none'
				});
			} else {
				uni.showToast({
					title: '调用相机失败',
					icon: 'none'
				});
			}
		}
	});
};
</script>

h5(扫码功能插件)

  1. 导入插件(两种方式,选其一)

    (1)HBuilder 创建的项目:从应用市场导入 mumu-getQrcode 到uniapp项目中

    (2)脚手架创建的 uni 项目:需要自行安装 jsQR 依赖,并且修改组件中源码中的引入。

    # 安装 jsQR
    npm install jsqr --save
    
    # 修改组件源码对 jsQR 依赖
    import jsQR from "jsqr"
    
  2. 新建页面 scan-qrcode,作为扫码页面。

    <template>
    	<view class="container">
    		<mumu-get-qrcode @success='qrcodeSucess' @error="qrcodeError"></mumu-get-qrcode>
    	</view>
    </template>
     
    <script>
    	import mumuGetQrcode from '@/uni_modules/mumu-getQrcode/components/mumu-getQrcode/mumu-getQrcode.vue'
        
    	export default {
    		components: {
    			mumuGetQrcode  //注册
    		},
    		data() {
    			return {
    			}
    		},
    		name: 'Qrcode',
    		methods: {
    			qrcodeSucess(data) { //扫码成功
    				 console.log(data)
                  // 确认弹窗(若不需要可以去除)
    				 uni.showModal({
    				 	title: '成功',
    				 	content: data,
    				 	success: () => { // 确认弹窗后的操作 }
    				 })
    			},
    			qrcodeError(err) {  //扫码失败
    				uni.showModal({
    					title: '摄像头授权失败',
    					content: '摄像头授权失败,请检测当前浏览器是否有摄像头权限。',
    					success: () => {
    						uni.navigateBack({})  //返回到上一页
    					}
    				})
    			}
    		}
    	};
    </script>
    
  3. 在需要调用扫码功能的页面进行 页面跳转

    uni.navigateTo({
        url: '/pages/scan-qrcode/scan-qrcode'
    });
    
  4. 相关API

    可传属性(Props)
    参数 说明 类型 默认值
    continue 是否连续获取。false 监听一次 true 持续监听 Boolean false
    exact 选调用摄像头。environment 后摄像头 user 前摄像头 String environment
    size 扫码屏幕大小。whole 全屏 balf 半屏 String whole
    definition 调用摄像头清晰度。fasle 正常 true 高清 Boolean false
    事件(Events)
    事件名 说明 回调参数
    success 检测到图中有二维码并读取到数据是回调 二维码数据
    error 组件内部发送错误,通常是摄像头没有调用成功 错误信息,详情见下

    常见的错误信息:

    • AbortError[中止错误]

      尽管用户和操作系统都授予了访问设备硬件的权利,而且未出现可能抛出NotReadableError异常的硬件问题,但仍然有一些问题的出现导致了设备无法被使用。

    • NotAllowedError[拒绝错误]

      用户拒绝了当前的浏览器实例的访问请求;或者用户拒绝了当前会话的访问;或者用户在全局范围内拒绝了所有媒体访问请求。

    • NotFoundError[找不到错误]

      找不到满足请求参数的媒体类型。

    • NotReadableError[无法读取错误]

      尽管用户已经授权使用相应的设备,操作系统上某个硬件、浏览器或者网页层面发生的错误导致设备无法被访问。

    • OverconstrainedError[无法满足要求错误]

      指定的要求无法被设备满足,此异常是一个类型为OverconstrainedError的对象,拥有一个constraint属性,这个属性包含了当前无法被满足的constraint对象,还拥有一个message属性,包含了阅读友好的字符串用来说明情况。

    • SecurityError[安全错误]

      getUserMedia() 被调用的 Document 上面,使用设备媒体被禁止。这个机制是否开启或者关闭取决于单个用户的偏好设置。

    • TypeError[类型错误]

      constraints 对象未设置[空],或者都被设置为false

    插槽 (slot)
    插槽名称 说明 默认值
    error 当发送错误时,在页面上显示的内容 相机权限被拒绝提示

标签:uniapp,扫码,调用,错误,title,功能,uni,摄像头
From: https://www.cnblogs.com/Marimo-z/p/18553175

相关文章

  • 网页前端/node端实现图片旋转功能
    网页前端方式//图片旋转rotateImg(url,degree){returnnewPromise((resolve,reject)=>{constsuffix=url.match(/[^\.]+$/)[0]constname=url.replace(/(.*\/)*([^.]+).*/ig,'$2').replace(/-\S+/,'')constfileName=`${......
  • VK36E4 ESSOP10触摸驱动IC/4个触摸按键/4路直接输出功能/具有高电源电压抑制比
    产品品牌:永嘉微电/VINKA产品型号:VK36E4封装形式:ESSOP10概述VK36E4具有4个触摸按键,可用来检测外部触摸按键上人手的触摸动作。该芯片具有较高的集成度,仅需极少的外部组件便可实现触摸按键的检测。提供了4路直接输出功能。芯片内部采用特殊的集成电路,具有高电源电压抑制比,可......
  • spring cloud内容汇总(各个功能模块,启动,部署)
    SpringCloud是一套基于SpringBoot的框架集合,用于构建分布式微服务架构。它提供了一系列工具和库,帮助开发者更轻松地管理分布式系统中的关键问题,比如服务注册与发现、负载均衡、分布式配置管理、熔断与降级、链路追踪等。下图展示了微服务架构中每个主要功能模块的常用解决方......
  • 京准电钟:NTP网络时间服务器是什么?功能是什么?
    京准电钟:NTP网络时间服务器是什么?功能是什么?京准电钟:NTP网络时间服务器是什么?功能是什么?京准电钟官微——ahjzszHR-901GB系列ntp网络时间服务器是一款专为国产信创设计的高精度北斗卫星授时设备,其核心功能是为网络设备、计算机终端、服务器等提供精确、稳定且安全的时钟基准。......
  • uniapp 使用pinpa 持续化更新
    安装依赖npmipinianpmipinia-plugin-persistedstate新建index.ts import{createPinia}from'pinia'import{createPersistedState}from'pinia-plugin-persistedstate'//数据持久化conststore=createPinia()store.use(createP......
  • 视频号直播自动回复功能,浏览器自动化插件vx llike620
    视频号直播后台:https://channels.weixin.qq.com/platform/live/home开启直播以后,一定要在视频号助手后台,有直播管理页面下,就是那个展示评论和能发送评论框的页面,启动插件。要把自己主播的昵称屏蔽掉,否则会捕获到自己回复的,造成死循环视频号后台循环发送话术和回复,回复频率......
  • Unity实现鼠标框选功能
    usingSystem;usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;usingUnityEngine.UI;publicclassDrawRect:MonoBehaviour{publicstaticDrawRectInstance;publicDrawRect(){Instance=this;}......
  • 探寻优雅之法:实现高效在线人数统计功能
    探寻优雅之法:实现高效在线人数统计功能前言实现步骤如何认定用户是否在线?zadd命令添加在线用户zadd命令介绍添加在线用户标识到有序集合中zrangeByScore命令查询在线人数zrangeByScore命令介绍查询当前所有的在线用户zremrangeByScore命令定时清除在线用户zremrangeByS......
  • UNIAPP设置消息推送(v1.0),自定义铃声功能
    目前项目需要开发一个物联网APP进行设备绑定、警情查看、统计分析、设备操作、自定义报警铃声等相关功能采用的uniapp进行开发,功能其实都很简单就是调用SDK进行设备关联、数据的增删改查,逻辑清晰明了,没想到问题出在了消息推送这块,消息推送-因为是uniapp进行开发所以采用的uni-pu......
  • 界面控件DevExpress WinForms v24.2新功能预览 - 支持.NET 9
    DevExpressWinForms 拥有180+组件和UI库,能为WindowsForms平台创建具有影响力的业务解决方案。DevExpressWinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任!获取DevExpressWinFormsv24.1正式版下载DevEx......