@@ -4,26 +4,34 @@ import android.util.Log
44import androidx.compose.foundation.layout.*
55import androidx.compose.runtime.*
66import androidx.compose.ui.Modifier
7+ import androidx.compose.ui.platform.LocalContext
78import androidx.compose.ui.viewinterop.AndroidView
89import com.google.zxing.BarcodeFormat
910import com.google.zxing.ResultPoint
1011import com.journeyapps.barcodescanner.BarcodeCallback
1112import com.journeyapps.barcodescanner.BarcodeResult
1213import com.journeyapps.barcodescanner.DecoratedBarcodeView
1314import com.journeyapps.barcodescanner.DefaultDecoderFactory
15+ import tech.httptoolkit.android.Constants
16+ import tech.httptoolkit.android.R
17+
18+ private const val TAG = " QRScanScreen"
1419
1520@Composable
1621fun QRScanScreen (
1722 onQRCodeScanned : (String ) -> Unit ,
1823 modifier : Modifier = Modifier
1924) {
25+ val context = LocalContext .current
26+
2027 AndroidView (
21- factory = { context ->
28+ factory = { ctx ->
2229 var lastScannedText: String? = null
2330
24- DecoratedBarcodeView (context ).apply {
31+ DecoratedBarcodeView (ctx ).apply {
2532 barcodeView.decoderFactory = DefaultDecoderFactory (listOf (BarcodeFormat .QR_CODE ))
26- setStatusText(" Scan HTTP Toolkit QR code to connect" )
33+ setStatusText(context.getString(R .string.qr_scan_prompt))
34+ contentDescription = context.getString(R .string.cd_camera_view)
2735
2836 // Add extra padding to the status text to ensure it's well clear of the nav bar
2937 statusView?.setPadding(0 , 0 , 0 , 48 )
@@ -37,9 +45,9 @@ fun QRScanScreen(
3745 }
3846
3947 lastScannedText = resultText
40- Log .i(" QRScanScreen " , " Scanned: $resultText " )
48+ Log .i(TAG , " Scanned: $resultText " )
4149
42- if (resultText.startsWith(" https://android.httptoolkit.tech/connect/ " )) {
50+ if (resultText.startsWith(Constants . QR_CODE_URL_PREFIX )) {
4351 onQRCodeScanned(resultText)
4452 }
4553 }
0 commit comments