Update add linked devices screen.

This commit is contained in:
Michelle Tang
2024-06-05 18:14:17 -07:00
committed by Alex Hart
parent ac52b5b992
commit d3eb480d31
19 changed files with 1429 additions and 28 deletions

View File

@@ -23,6 +23,7 @@ class QrScannerView @JvmOverloads constructor(
private var scannerView: ScannerView? = null
private val qrDataPublish: PublishSubject<String> = PublishSubject.create()
private var forceLegacy: Boolean = false
val qrData: Observable<String> = qrDataPublish
@@ -37,12 +38,14 @@ class QrScannerView @JvmOverloads constructor(
addView(scannerView)
this.scannerView = (scannerView as ScannerView)
this.forceLegacy = forceLegacy
}
@JvmOverloads
fun start(lifecycleOwner: LifecycleOwner, forceLegacy: Boolean = false) {
if (scannerView != null) {
Log.w(TAG, "Attempt to start scanning that has already started")
scannerView?.resume()
return
}
@@ -61,6 +64,14 @@ class QrScannerView @JvmOverloads constructor(
scannerView?.toggleCamera()
}
// Biometrics require use of camera so we disable when needed
fun destroy() {
scannerView?.destroy()
if (!forceLegacy) {
scannerView = null
}
}
companion object {
private val TAG = Log.tag(QrScannerView::class.java)
}

View File

@@ -8,4 +8,6 @@ import androidx.lifecycle.LifecycleOwner
interface ScannerView {
fun start(lifecycleOwner: LifecycleOwner)
fun toggleCamera()
fun resume()
fun destroy()
}

View File

@@ -59,4 +59,16 @@ internal class ScannerView19 constructor(
lifecycleObserver.onResume(it)
}
}
override fun resume() {
lifecycleOwner?.let {
lifecycleObserver.onResume(it)
}
}
override fun destroy() {
lifecycleOwner?.let {
lifecycleObserver.onPause(it)
}
}
}

View File

@@ -36,6 +36,7 @@ internal class ScannerView21 constructor(
private val lifecycleObserver: DefaultLifecycleObserver = object : DefaultLifecycleObserver {
override fun onDestroy(owner: LifecycleOwner) {
cameraProvider?.unbindAll()
cameraProvider = null
camera = null
analyzerExecutor.shutdown()
@@ -78,6 +79,14 @@ internal class ScannerView21 constructor(
lifecycleOwner.lifecycle.addObserver(lifecycleObserver)
}
override fun resume() = Unit
override fun destroy() {
lifecyleOwner?.let {
lifecycleObserver.onDestroy(it)
}
}
private fun onCameraProvider(lifecycle: LifecycleOwner, cameraProvider: ProcessCameraProvider?) {
if (cameraProvider == null) {
Log.w(TAG, "Camera provider is null")