二维码扫描自动打开闪光灯

  let videoDataOutput = AVCaptureVideoDataOutput()

            videoDataOutput.setSampleBufferDelegate(self,queue:DispatchQueue.main)

//AVCaptureVideoDataOutputSampleBufferDelegate

 

func captureOutput(_ output: AVCaptureOutput, didOutput sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection) {

        

        let metadataDict = CMCopyDictionaryOfAttachments(nil,sampleBuffer, kCMAttachmentMode_ShouldPropagate);

        let  metadata = metadataDict as![String:Any]

 

        let  exifMetadata = metadata[kCGImagePropertyExifDictionary as String] as? [String:Any]

 

        let brightnessValue = exifMetadata![kCGImagePropertyExifBrightnessValue as String]

        print(brightnessValue as Any)

        let valueStr = (brightnessValue as AnyObject).description

        let valueNSStr = NSString.init(string: valueStr!)

        if (valueStr?.contains("-"))! {

            guard self.device?.hasTorch == true else{

                //提示光度不够

                MyAlertLabel.initWith(CGSize.init(width: 100, height: 35), andMessage: "亮度太暗", andViewController: self)

                return

            }

            if  self.device?.torchMode != .on {

                self.session.beginConfiguration()

                try? self.device?.lockForConfiguration()

                try? self.device?.setTorchModeOn(level:0.7)

                self.device?.unlockForConfiguration()

                self.session.commitConfiguration()

            }

        }else if valueNSStr.character(at: 0) == NSString.init(string: "0").character(at: 0){

            guard self.device?.hasTorch == true else{

                //提示光度不够

                MyAlertLabel.initWith(CGSize.init(width: 100, height: 35), andMessage: "亮度太暗", andViewController: self)

                return

            }

            if  self.device?.torchMode != .on {

                self.session.beginConfiguration()

                try? self.device?.lockForConfiguration()

                try? self.device?.setTorchModeOn(level:0.7)

                self.device?.unlockForConfiguration()

                self.session.commitConfiguration()

            }

        }

    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现Vue扫描二维码自动打开某个页面,可以使用以下步骤: 1. 确保Vue项目已经成功创建并配置好。 2. 在Vue项目的根目录下,通过命令行安装`qrcode-reader`库,该库将用于解析二维码数据。可以使用以下命令进行安装: ``` npm install qrcode-reader ``` 3. 在Vue项目的某个组件中,引入该库,并创建一个方法用于解析二维码数据和打开页面。可以参考以下代码: ```vue <template> <div> <!-- 二维码扫描按钮 --> <button @click="scanQRCode">扫描二维码</button> </div> </template> <script> // 引入qrcode-reader库 const QrCode = require('qrcode-reader'); const qrCode = new QrCode(); export default { methods: { scanQRCode() { // 调用浏览器的摄像头进行扫描 navigator.mediaDevices.getUserMedia({ video: { facingMode: 'environment' } }).then((stream) => { const video = document.createElement('video'); video.srcObject = stream; video.setAttribute('playsinline', true); // 解决部分安卓手机不播放摄像头视频的问题 video.play(); // 摄像头视频播放成功后,开始解析二维码数据 video.addEventListener('canplay', () => { const canvas = document.createElement('canvas'); const context = canvas.getContext('2d'); const canvasWidth = video.videoWidth; const canvasHeight = video.videoHeight; canvas.width = canvasWidth; canvas.height = canvasHeight; // 绘制摄像头视频到canvas上 context.drawImage(video, 0,0, canvasWidth, canvasHeight); // 解析二维码数据 qrCode.decode(canvas.toDataURL(), (err, result) => { if (err) return console.error(err); if (result && result.result) { // 根据解析到的二维码数据打开相应页面 window.open(result.result); } }); }); }).catch((error) => { console.error(error); }); }, }, }; </script> ``` 4. 在需要扫描二维码的页面中,引入该组件,并在合适的位置使用`<scan-qr-code></scan-qr-code>`标签来调用该组件。 以上步骤可以使Vue项目能够在用户扫描二维码自动打开相应页面。在代码中,我们使用了`qrcode-reader`库来解析二维码数据,通过调用浏览器的摄像头进行扫描扫描成功后,通过解析得到的二维码数据,使用`window.open()`方法打开相应的页面。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值