feat: Code Scanner API (#1912)

* feat: CodeScanner JS API

* feat: iOS

* Use guard

* Format

* feat: Android base

* fix: Attach Surfaces

* Use isBusy var

* fix: Use separate Queue

* feat: Finish iOS types

* feat: Implement all other code types on Android

* fix: Call JS event

* fix: Pass codetypes on Android

* fix: iOS use Preview coordinate system

* docs: Add comments

* chore: Format code

* Update CameraView+AVCaptureSession.swift

* docs: Add Code Scanner docs

* docs: Update

* feat: Use lazily downloaded model on Android

* Revert changes in CameraPage

* Format

* fix: Fix empty QR codes

* Update README.md
This commit is contained in:
Marc Rousavy
2023-10-04 12:53:52 +02:00
committed by GitHub
parent 2c08e5ae78
commit 6640b72a00
36 changed files with 763 additions and 29 deletions

View File

@@ -0,0 +1,94 @@
//
// AVMetadataObject.ObjectType+descriptor.swift
// VisionCamera
//
// Created by Marc Rousavy on 03.10.23.
// Copyright © 2023 mrousavy. All rights reserved.
//
import AVFoundation
import Foundation
extension AVMetadataObject.ObjectType {
init(withString string: String) throws {
switch string {
case "code-128":
self = .code128
return
case "code-39":
self = .code39
return
case "code-93":
self = .code93
return
case "codabar":
if #available(iOS 15.4, *) {
self = .codabar
} else {
throw CameraError.codeScanner(.codeTypeNotSupported(codeType: string))
}
return
case "ean-13":
self = .ean13
return
case "ean-8":
self = .ean8
return
case "itf":
self = .itf14
return
case "upc-e":
self = .upce
return
case "qr":
self = .qr
return
case "pdf-417":
self = .pdf417
return
case "aztec":
self = .aztec
return
case "data-matrix":
self = .dataMatrix
return
default:
throw EnumParserError.invalidValue
}
}
var descriptor: String {
if #available(iOS 15.4, *) {
if self == .codabar {
return "codabar"
}
}
switch self {
case .code128:
return "code-128"
case .code39:
return "code-39"
case .code93:
return "code-93"
case .ean13:
return "ean-13"
case .ean8:
return "ean-8"
case .itf14:
return "itf"
case .upce:
return "upce"
case .qr:
return "qr"
case .pdf417:
return "pdf-417"
case .aztec:
return "aztec"
case .dataMatrix:
return "data-matrix"
default:
return "unknown"
}
}
}