Hello Guys! In this article we will dive in to Bar Code & Qr Code Scanner App. Here we doing both code scanning in single App.
Apple introduced Av Foundation from iOS 7 to support reading bar codes. Apple supports all types of following codes:
AVMetadataObjectTypeUPCECode
AVMetadataObjectTypeCode39Code
AVMetadataObjectTypeCode39Mod43Code
AVMetadataObjectTypeEAN13Code
AVMetadataObjectTypeEAN8Code
AVMetadataObjectTypeCode93Code
AVMetadataObjectTypeCode128Code
AVMetadataObjectTypePDF417Code
AVMetadataObjectTypeQRCode
AVMetadataObjectTypeAztecCode
swift barcode scanner github
avfoundation barcode tutorial
ios barcode scanner sdk open source
barcode scanner ios github
swift barcode generator
swift qr code scanner
swift 3 qr code reader
Building a Barcode and QR Code Reader in Swift 3 and Xcode 8
Barcode Scanning in iOS8 With Swift AVFoundation Class
Build and Run, we see camera. Then focus on the barcode, the scanned code will be at the bottom.
You can create your own barcode from here.
Download sample project with example :
Apple introduced Av Foundation from iOS 7 to support reading bar codes. Apple supports all types of following codes:
AVMetadataObjectTypeUPCECode
AVMetadataObjectTypeCode39Code
AVMetadataObjectTypeCode39Mod43Code
AVMetadataObjectTypeEAN13Code
AVMetadataObjectTypeEAN8Code
AVMetadataObjectTypeCode93Code
AVMetadataObjectTypeCode128Code
AVMetadataObjectTypePDF417Code
AVMetadataObjectTypeQRCode
AVMetadataObjectTypeAztecCode
This Article Covers Following Related questions :
xcode barcode scanner tutorialswift barcode scanner github
avfoundation barcode tutorial
ios barcode scanner sdk open source
barcode scanner ios github
swift barcode generator
swift qr code scanner
swift 3 qr code reader
Building a Barcode and QR Code Reader in Swift 3 and Xcode 8
Barcode Scanning in iOS8 With Swift AVFoundation Class
Getting Started :
Create a new project -> open Xcode -> File -> New -> Project -> Single View App, then tap next button. Type product name as 'BarCode&QRCode' then tap next and select the folder to save project.
Firstly for scanning code we need to access device camera's. For that open info.plist and add "Privacy - Camera Usage Description" key with a description "To read BarCode & QRCode".
Firstly for scanning code we need to access device camera's. For that open info.plist and add "Privacy - Camera Usage Description" key with a description "To read BarCode & QRCode".
Next import the following framework:
Add the following properties before viewDidLoad() function :
Add the following two methods:
First method is for adding camera and second is for displaying scanned text.
Call the above methods in viewDidLoad() as follow :
Add the following delegate to ViewController.swift.
AVCaptureMetadataOutputObjectsDelegate
Add the following methods for starting and stopping captureSession.
Then finally add the delegate method as following:
The above method will perform scanning operation and generate the code from the BarCode & QRCodes.
import AVFoundation
Add the following properties before viewDidLoad() function :
var videoCaptureDevice: AVCaptureDevice = AVCaptureDevice.defaultDevice(withMediaType: AVMediaTypeVideo) var device = AVCaptureDevice.defaultDevice(withMediaType: AVMediaTypeVideo) var output = AVCaptureMetadataOutput() var previewLayer: AVCaptureVideoPreviewLayer? var captureSession = AVCaptureSession() var code: String? var scannedCode = UILabel()
Add the following two methods:
private func setupCamera() { let input = try? AVCaptureDeviceInput(device: videoCaptureDevice) if self.captureSession.canAddInput(input) { self.captureSession.addInput(input) } self.previewLayer = AVCaptureVideoPreviewLayer(session: captureSession) if let videoPreviewLayer = self.previewLayer { videoPreviewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill videoPreviewLayer.frame = self.view.bounds view.layer.addSublayer(videoPreviewLayer) } let metadataOutput = AVCaptureMetadataOutput() if self.captureSession.canAddOutput(metadataOutput) { self.captureSession.addOutput(metadataOutput) metadataOutput.setMetadataObjectsDelegate(self, queue: DispatchQueue.main) metadataOutput.metadataObjectTypes = [AVMetadataObjectTypeUPCECode, AVMetadataObjectTypeCode39Code, AVMetadataObjectTypeCode39Mod43Code, AVMetadataObjectTypeEAN13Code, AVMetadataObjectTypeEAN8Code, AVMetadataObjectTypeCode93Code, AVMetadataObjectTypeCode128Code, AVMetadataObjectTypePDF417Code, AVMetadataObjectTypeQRCode, AVMetadataObjectTypeAztecCode] } else { print("Could not add metadata output") } } private func addLabelForDisplayingCode() { view.addSubview(scannedCode) scannedCode.translatesAutoresizingMaskIntoConstraints = false scannedCode.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: -20.0).isActive = true scannedCode.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 20.0).isActive = true scannedCode.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -20.0).isActive = true scannedCode.heightAnchor.constraint(equalToConstant: 50).isActive = true scannedCode.font = UIFont.preferredFont(forTextStyle: .title2) scannedCode.backgroundColor = UIColor.black.withAlphaComponent(0.5) scannedCode.textAlignment = .center scannedCode.textColor = UIColor.white scannedCode.text = "Scanning...." }
First method is for adding camera and second is for displaying scanned text.
Call the above methods in viewDidLoad() as follow :
self.setupCamera() self.addLabelForDisplayingCode()
Add the following delegate to ViewController.swift.
AVCaptureMetadataOutputObjectsDelegate
Add the following methods for starting and stopping captureSession.
override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) if (captureSession.isRunning == false) { captureSession.startRunning(); } } override func viewWillDisappear(_ animated: Bool) { super.viewWillDisappear(animated) if (captureSession.isRunning == true) { captureSession.stopRunning(); } }
Then finally add the delegate method as following:
func captureOutput(_ captureOutput: AVCaptureOutput!, didOutputMetadataObjects metadataObjects: [Any]!, from connection: AVCaptureConnection!) { // This is the delegate'smethod that is called when a code is readed print(metadataObjects) for metadata in metadataObjects { let readableObject = metadata as! AVMetadataMachineReadableCodeObject let code = readableObject.stringValue scannedCode.text = code } }
The above method will perform scanning operation and generate the code from the BarCode & QRCodes.
Build and Run, we see camera. Then focus on the barcode, the scanned code will be at the bottom.
You can create your own barcode from here.
Download sample project with example :
Yeah its an amazing qr code for Android. Please i need Lightning QR Code Reader app code. I hope anyone will give me.
ReplyDeleteThank your dude.
ReplyDelete