@@ -47,9 +47,12 @@ import com.duckduckgo.sync.impl.ui.qrcode.SquareDecoratedBarcodeViewModel.Comman
47
47
import com.duckduckgo.sync.impl.ui.qrcode.SquareDecoratedBarcodeViewModel.Command.OpenSettings
48
48
import com.duckduckgo.sync.impl.ui.qrcode.SquareDecoratedBarcodeViewModel.Command.RequestPermissions
49
49
import com.duckduckgo.sync.impl.ui.qrcode.SquareDecoratedBarcodeViewModel.ViewState
50
+ import com.google.zxing.BarcodeFormat.QR_CODE
51
+ import com.google.zxing.client.android.BeepManager
52
+ import com.journeyapps.barcodescanner.DefaultDecoderFactory
53
+ import com.journeyapps.barcodescanner.camera.CameraSettings
50
54
import dagger.android.support.AndroidSupportInjection
51
55
import javax.inject.Inject
52
- import kotlinx.coroutines.cancel
53
56
import kotlinx.coroutines.flow.launchIn
54
57
import kotlinx.coroutines.flow.onEach
55
58
@@ -86,9 +89,20 @@ constructor(
86
89
ViewModelProvider (findViewTreeViewModelStoreOwner()!! , viewModelFactory)[SquareDecoratedBarcodeViewModel ::class .java]
87
90
}
88
91
92
+ private var beepManager: BeepManager
93
+ private val cameraSettings = CameraSettings ().apply {
94
+ isAutoFocusEnabled = true
95
+ isContinuousFocusEnabled = true
96
+ }
97
+
89
98
private val conflatedStateJob = ConflatedJob ()
90
99
private val conflatedCommandJob = ConflatedJob ()
91
100
101
+ init {
102
+ beepManager = BeepManager (getActivity())
103
+ initQRScanner()
104
+ }
105
+
92
106
override fun onAttachedToWindow () {
93
107
AndroidSupportInjection .inject(this )
94
108
super .onAttachedToWindow()
@@ -110,6 +124,11 @@ constructor(
110
124
}
111
125
}
112
126
127
+ private fun initQRScanner () {
128
+ binding.barcodeView.cameraSettings = cameraSettings
129
+ binding.barcodeView.decoderFactory = DefaultDecoderFactory (listOf (QR_CODE ))
130
+ }
131
+
113
132
override fun onDetachedFromWindow () {
114
133
conflatedStateJob.cancel()
115
134
conflatedCommandJob.cancel()
@@ -135,6 +154,7 @@ constructor(
135
154
136
155
fun decodeSingle (onQrCodeRead : (String ) -> Unit ) {
137
156
binding.barcodeView.decodeSingle {
157
+ beepManager.playBeepSoundAndVibrate()
138
158
onQrCodeRead(it.text)
139
159
}
140
160
}
0 commit comments