Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import Foundation
- import AVFoundation
- @objc(CodeScannerViewManager)
- class CodeScannerViewManager: RCTViewManager {
- @objc
- override func view() -> UIView! {
- let captureView = CodeScannerViewController()
- return captureView.view
- }
- @objc
- override static func requiresMainQueueSetup() -> Bool {
- return true
- }
- }
- @objc(CodeScannerViewController)
- class CodeScannerViewController: UIViewController {
- var captureSession = AVCaptureSession()
- var videoPreviewLayer: AVCaptureVideoPreviewLayer?
- @objc
- override func viewDidLoad() {
- super.viewDidLoad()
- print("viewDidLoad")
- let discoverySession = AVCaptureDevice.DiscoverySession(deviceTypes: [.builtInDualCamera], mediaType: .video, position: .back)
- guard let captureDevice = discoverySession.devices.first else {
- print("No device found")
- return
- }
- do {
- let input = try AVCaptureDeviceInput(device: captureDevice)
- captureSession.addInput(input)
- let videoMetaDataOutput = AVCaptureMetadataOutput()
- captureSession.addOutput(videoMetaDataOutput)
- videoMetaDataOutput.setMetadataObjectsDelegate(self, queue: DispatchQueue.main)
- videoMetaDataOutput.metadataObjectTypes = [.qr]
- videoPreviewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
- videoPreviewLayer?.videoGravity = .resizeAspectFill
- videoPreviewLayer?.frame = view.layer.bounds
- view.layer.addSublayer(videoPreviewLayer!)
- captureSession.startRunning()
- print("all done!")
- } catch {
- print(error)
- return
- }
- }
- //
- // override func viewWillAppear(_ animated: Bool) {
- // super.viewWillAppear(animated)
- //
- // if (session?.isRunning == false) {
- // DispatchQueue.global(qos: .userInitiated).async {
- // self.session.startRunning()
- // }
- // }
- // }
- //
- // override func viewWillDisappear(_ animated: Bool) {
- // super.viewWillDisappear(animated)
- //
- // if (session?.isRunning == true) {
- // DispatchQueue.global(qos: .userInitiated).async {
- // self.session.stopRunning()
- // }
- // }
- // }
- //
- // override var prefersStatusBarHidden: Bool {
- // return true
- // }
- //
- // override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
- // return .portrait
- // }
- //
- // override func viewDidAppear(_ animated: Bool) {
- // super.viewDidAppear(animated)
- // DispatchQueue.global(qos: .userInitiated).async {
- // self.session.startRunning()
- // }
- // }
- //
- // override func viewDidDisappear(_ animated: Bool) {
- // super.viewWillDisappear(animated)
- // DispatchQueue.global(qos: .userInitiated).async {
- // self.session.stopRunning()
- // }
- // }
- }
- @objc
- extension CodeScannerViewController: AVCaptureMetadataOutputObjectsDelegate {
- @objc
- func metadataOutput(_ output: AVCaptureMetadataOutput, didOutput metadataObjects: [AVMetadataObject], from connection: AVCaptureConnection) {
- print("Count: \(metadataObjects.count)")
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement