小程序相机组件授权拒绝后重新授权后相机无法调起

小程序相机组件刚进入页面的时候会获取相机权限,如果拒绝了之后再次授权,返回当前页面发现无法重新调用摄像头,原因是页面渲染camera问题,当用户进入页面拒绝或者允许授权时这个标签都已经被渲染,所以当用户重新允许这个标签也是不会重新加载渲染。

解决方法,使用v-if来让camera组件动态渲染。
在这里插入图片描述

onShow() {
		let that = this
		wx.getSetting({
		      success(res) {
		        if (!res.authSetting['scope.camera']){
		          that.isShow = false
		        }else{
					that.isShow = true
				}
		      }
		    })

	},
------
error(e) {
			console.log(e.detail);
			
			wx.showModal({
				title: '提示',
				showCancel: false,
				confirmText: '授权',
				content: '请确认授权,否则无法进行人脸识别功能',
				success: function(tip) {
					if (tip.confirm) {
						wx.openSetting();
					}
				}
			});
		}

再次授权,进入授权设置页后返回相机页面,会再次进去onshow函数里面,这样能再次调起摄像头,但是会有一秒左右的白底然后才会切换成摄像头,这个没能秒开摄像头,用户体验不是很好,有更好的方法请告知

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
要在企业小程序里自定义扫码页面,需要使用相机组件实现扫码功能,可以按照以下步骤进行操作: 1. 在需要使用扫码功能的页面中引入相机组件: ``` <camera id="camera" device-position="{{cameraPosition}}" flash="{{flash}}" binderror="onCameraError" bindstop="onCameraStop" bindinitdone="onCameraInitDone" /> ``` 其中,`device-position` 表示摄像头的位置,可以设置为 `back` 或 `front`;`flash` 表示闪光灯状态,可以设置为 `auto`、`on` 或 `off`;`binderror`、`bindstop`、`bindinitdone` 分别表示相机出错、停止、初始化完成时的回调函数。 2. 在页面的 `onLoad` 函数中初始化相机: ``` onLoad: function () { this.cameraContext = wx.createCameraContext(); this.cameraContext.onCameraFrame((frame) => { // 处理相机帧数据 }); }, ``` 其中,`wx.createCameraContext()` 用于创建相机上下文,可以通过 `this.cameraContext` 引用相机上下文对象。可以使用 `onCameraFrame` 方法监听相机帧数据,然后进行处理。 3. 在需要扫码的时候,调用相机的 `takePhoto` 方法拍照并返回图片路径: ``` this.cameraContext.takePhoto({ quality: 'high', success: (res) => { this.setData({ imagePath: res.tempImagePath }); // 调用扫码接口识别二维码 wx.scanCode({ success(res) { console.log(res); }, fail: (res) => { console.log(res); } }); }, fail: (res) => { console.log(res); } }); ``` 其中,`takePhoto` 方法用于拍照并返回图片路径,可以设置图片质量。拍照成功后,可以将图片路径保存在页面数据中,然后调用 `wx.scanCode` 方法识别二维码。 需要注意的是,相机组件需要在真机上才能使用,因此需要使用企业微信开发者工具进行调试或者在企业微信中安装小程序进行测试。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值