Какие знаешь способы интегрирования распознавания QR-кодов

«Какие знаешь способы интегрирования распознавания QR-кодов» — вопрос из категории Android компоненты, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Android есть несколько способов распознавания QR-кодов:

  1. ML Kit от Google (рекомендуемый способ):
val scanner = BarcodeScanning.getClient()
val image = InputImage.fromBitmap(bitmap, 0)
scanner.process(image)
    .addOnSuccessListener { barcodes -> 
        barcodes.firstOrNull()?.rawValue?.let { qrContent -> 
            // обработка результата
        }
    }
  1. ZXing Library (популярная сторонняя библиотека):
val reader = MultiFormatReader()
val hints = mapOf(DecodeHintType.POSSIBLE_FORMATS to listOf(BarcodeFormat.QR_CODE))
reader.setHints(hints)
  1. CameraX + ML Kit (для обработки в реальном времени):
val analysisUseCase = ImageAnalysis.Builder()
    .setTargetResolution(Size(1280, 720))
    .build()
    .also { 
        it.setAnalyzer(executor, BarcodeAnalyzer { qrContent -> 
            // обработка
        }) 
    }
  1. Нативные API (Android 9+ через Barcode API):
val barcodeDetector = BarcodeScanning.getClient(context)

Основные различия: ML Kit работает оффлайн, ZXing легковеснее, CameraX лучше для live-сканирования. Для большинства случаев лучше использовать ML Kit.