Advertisement
skaramicke

Icke fungerande QR-kodscanner

Mar 1st, 2023
953
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 3.15 KB | None | 0 0
  1. import Foundation
  2. import AVFoundation
  3.  
  4. @objc(CodeScannerViewManager)
  5. class CodeScannerViewManager: RCTViewManager {
  6.  
  7.   @objc
  8.   override func view() -> UIView! {
  9.     let captureView = CodeScannerViewController()
  10.     return captureView.view
  11.   }
  12.  
  13.   @objc
  14.   override static func requiresMainQueueSetup() -> Bool {
  15.     return true
  16.   }
  17.  
  18. }
  19.  
  20. @objc(CodeScannerViewController)
  21. class CodeScannerViewController: UIViewController {
  22.  
  23.   var captureSession = AVCaptureSession()
  24.   var videoPreviewLayer: AVCaptureVideoPreviewLayer?
  25.  
  26.   @objc
  27.   override func viewDidLoad() {
  28.     super.viewDidLoad()
  29.    
  30.     print("viewDidLoad")
  31.    
  32.     let discoverySession = AVCaptureDevice.DiscoverySession(deviceTypes: [.builtInDualCamera], mediaType: .video, position: .back)
  33.    
  34.     guard let captureDevice = discoverySession.devices.first else {
  35.         print("No device found")
  36.         return
  37.     }
  38.    
  39.     do {
  40.         let input = try AVCaptureDeviceInput(device: captureDevice)
  41.         captureSession.addInput(input)
  42.        
  43.         let videoMetaDataOutput = AVCaptureMetadataOutput()
  44.         captureSession.addOutput(videoMetaDataOutput)
  45.        
  46.         videoMetaDataOutput.setMetadataObjectsDelegate(self, queue: DispatchQueue.main)
  47.        
  48.         videoMetaDataOutput.metadataObjectTypes = [.qr]
  49.        
  50.         videoPreviewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
  51.         videoPreviewLayer?.videoGravity = .resizeAspectFill
  52.         videoPreviewLayer?.frame = view.layer.bounds
  53.        
  54.         view.layer.addSublayer(videoPreviewLayer!)
  55.        
  56.         captureSession.startRunning()
  57.        
  58.         print("all done!")
  59.        
  60.     } catch {
  61.         print(error)
  62.         return
  63.     }
  64.    
  65.   }
  66.  
  67.  
  68. //
  69. //  override func viewWillAppear(_ animated: Bool) {
  70. //    super.viewWillAppear(animated)
  71. //
  72. //    if (session?.isRunning == false) {
  73. //      DispatchQueue.global(qos: .userInitiated).async {
  74. //        self.session.startRunning()
  75. //      }
  76. //    }
  77. //  }
  78. //
  79. //  override func viewWillDisappear(_ animated: Bool) {
  80. //    super.viewWillDisappear(animated)
  81. //
  82. //    if (session?.isRunning == true) {
  83. //      DispatchQueue.global(qos: .userInitiated).async {
  84. //        self.session.stopRunning()
  85. //      }
  86. //    }
  87. //  }
  88. //
  89. //  override var prefersStatusBarHidden: Bool {
  90. //    return true
  91. //  }
  92. //
  93. //  override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
  94. //    return .portrait
  95. //  }
  96. //
  97. //  override func viewDidAppear(_ animated: Bool) {
  98. //    super.viewDidAppear(animated)
  99. //    DispatchQueue.global(qos: .userInitiated).async {
  100. //      self.session.startRunning()
  101. //    }
  102. //  }
  103. //
  104. //  override func viewDidDisappear(_ animated: Bool) {
  105. //    super.viewWillDisappear(animated)
  106. //    DispatchQueue.global(qos: .userInitiated).async {
  107. //      self.session.stopRunning()
  108. //    }
  109. //  }
  110. }
  111.  
  112. @objc
  113. extension CodeScannerViewController: AVCaptureMetadataOutputObjectsDelegate {
  114.   @objc
  115.   func metadataOutput(_ output: AVCaptureMetadataOutput, didOutput metadataObjects: [AVMetadataObject], from connection: AVCaptureConnection) {
  116.     print("Count: \(metadataObjects.count)")
  117.   }
  118. }
  119.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement