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