mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-25 11:20:47 +01:00
Update add linked devices screen.
This commit is contained in:
@@ -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)
|
||||
}
|
||||
|
||||
@@ -8,4 +8,6 @@ import androidx.lifecycle.LifecycleOwner
|
||||
interface ScannerView {
|
||||
fun start(lifecycleOwner: LifecycleOwner)
|
||||
fun toggleCamera()
|
||||
fun resume()
|
||||
fun destroy()
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user