* 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
36 lines
987 B
Kotlin
36 lines
987 B
Kotlin
package com.mrousavy.camera
|
|
|
|
import android.os.Handler
|
|
import android.os.HandlerThread
|
|
import java.util.concurrent.Executor
|
|
import kotlinx.coroutines.CoroutineDispatcher
|
|
import kotlinx.coroutines.android.asCoroutineDispatcher
|
|
import kotlinx.coroutines.asExecutor
|
|
|
|
class CameraQueues {
|
|
companion object {
|
|
val cameraQueue = CameraQueue("mrousavy/VisionCamera.main")
|
|
val videoQueue = CameraQueue("mrousavy/VisionCamera.video")
|
|
val codeScannerQueue = CameraQueue("mrousavy/VisionCamera.codeScanner")
|
|
}
|
|
|
|
class CameraQueue(name: String) {
|
|
val handler: Handler
|
|
private val thread: HandlerThread
|
|
val executor: Executor
|
|
val coroutineDispatcher: CoroutineDispatcher
|
|
|
|
init {
|
|
thread = HandlerThread(name)
|
|
thread.start()
|
|
handler = Handler(thread.looper)
|
|
coroutineDispatcher = handler.asCoroutineDispatcher(name)
|
|
executor = coroutineDispatcher.asExecutor()
|
|
}
|
|
|
|
protected fun finalize() {
|
|
thread.quitSafely()
|
|
}
|
|
}
|
|
}
|