微信小程序最近非常火热,小编最近做了一个新项目,使用小程序开发考试系统,在使用应用参加考试的时候调用摄像头抓拍用户是否作弊,在开发过程中遇到点问题,下面小编把问题描述和解决方法分享给大家,具体内容如下:
今天小编遇到了这么个问题,就是在用户使用应用参加考试的时候调用摄像头抓拍用户是否作弊,其实这也没什么,关键在于不能打扰用户考试,不能被用户发现什么时候抓拍的,也不能给用户查看图片,只有考完是后才能查看。这系统相当于考驾照时的上机答题部分。开始经理的要求是调用小程序外部的手机拍摄功能,这要可把我吓的够呛。
遇到这种问题肯定要先找下官网的帮助文档,于是找到了调用摄像头的这么一个模块
相机组件控制(wx.createCameraContext)
说明:
创建并返回相机上下文cameraContext对象,cameraContext与页面的摄像头组件绑定,一个页面只能有一个相机,通过它可以操作对应的& lt;相机/比;组件。在自定义组件下,第一个参数传入组件实例,以操作组件内& lt;相机/比;组件
cameraContext对象的方法列表:
takePhoto 对象 拍的照,可指定质量,成功则返回图片 startRecord 对象 开始录像 stopRecord 对象 结束录像,成功则返回封面与视频
takePhoto的对象参数列表:
质量 字符串 否 成像质量,值为高,正常,低,默认正常 成功 函数 否 接口调用成功的回调函数,res={tempImagePath} 失败 函数 否 接口调用失败的回调函数 完整的 函数 否 接口调用结束的回调函数(调用成功,失败都会执行)
这不是有个拍照功能的模块吗,于是去找了一下官网所给的代码研究了一下:
官网代码:
<强> wxml代码:强>
& lt;视图类=皃age-body”比; & lt;视图类=皃age-body-wrapper”比; & lt;相机device-position=胺祷亍眆lash=肮乇铡眀inderror=按砦蟆弊4? lt;/camera> & lt;视图类=癰tn-area”比; & lt;按钮类型=爸鳌眀indtap=皌akePhoto”在拍照& lt;/button> & lt;/view> & lt;视图类=癰tn-area”比; & lt;按钮类型=爸鳌眀indtap=皊tartRecord”在开始录像& lt;/button> & lt;/view> & lt;视图类=癰tn-area”比; & lt;按钮类型=爸鳌眀indtap=皊topRecord祝辞结束录像& lt;/button> & lt;/view> & lt;视图类=" preview-tips "祝辞预览& lt;/view> & lt;图像wx:如果=" {{src}}”模式=皐idthFix src=" https://www.yisu.com/zixun/{{src}}”祝辞& lt;/image> & lt;视频wx:如果=" {{videoSrc}}”类="视频" src=" https://www.yisu.com/zixun/{{videoSrc}}”祝辞& lt;/video> & lt;/view> & lt;/view>
js代码:
页面({ onLoad () { 这一点。ctx=wx.createCameraContext () }, takePhoto () { this.ctx.takePhoto ({ 质量:“高”, 成功:(res)=比;{ this.setData ({ src: res.tempImagePath }) } }) }, startRecord () { this.ctx.startRecord ({ 成功:(res)=比;{ console.log (“startRecord”) } }) }, stopRecord () { this.ctx.stopRecord ({ 成功:(res)=比;{ this.setData ({ src: res.tempThumbPath, videoSrc: res.tempVideoPath }) } }) }, 错误(e) { console.log (e.detail) } })
wxcss代码:
.preview-tips { 保证金:20 rpx 0; } .video { 保证金:50 px汽车; 宽度:100%; 身高:300 px; }
这代码修改还是可以的只是不是我想要的那种,我要的是隐藏没有摄像头的,和自动抓拍功能的,
官网代码分析:
<代码> & lt;相机device-position=胺祷亍眆lash=肮乇铡眀inderror=按砦蟆弊4? lt;/camera> 代码>
这是摄像头模块,这模块只要不是隐藏,宽高不为0,都可以正常使用拍照功能
<代码>。ctx=wx.createCameraContext()