Я три, чтобы реализовать камеру с набор ML для сканирования QR, но я понятия не имею, что делать, мои сомнения связаны с следующими: < /p>
Как допустить ошибку с хорошей ручкой с помощью ViewModel < /li>
Если я хочу сделать ошибку, обрабатывающую к камере: Camera_Initiation_failded. Должен ли я создать пользовательский класс для этого? И если это то, что я должен реализовать ViewModel для ошибок < /li>
Текущий анализатор имеет хорошую реализацию? Достаточно ли это быть в ViewModel или просто передавать обратный вызов. < /Li>
< /ol>
Прошу прощения за мое объяснение.@Composable
fun QrScannerScreen(
onBack: () -> Boolean,
) {
val context = LocalContext.current
val lifecycleOwner = LocalLifecycleOwner.current
var preview by remember { mutableStateOf(null) }
LaunchedEffect(
// TODO Some viewmodel stateFlow
) {
// TODO Handle the actions like Success, Error, Loading
}
AndroidView(
factory = { ctx ->
PreviewView(ctx).apply {
scaleType = PreviewView.ScaleType.FILL_CENTER
}
},
update = { previewView ->
val cameraSelector = CameraSelector.DEFAULT_BACK_CAMERA
val cameraProviderFuture = ProcessCameraProvider.getInstance(context)
cameraProviderFuture.addListener({
val cameraProvider = cameraProviderFuture.get()
val barcodeAnalyzer = BarcodeAnalyzer(
// TODO Maybe make a callback to the viewModel to hold the state
)
val imageAnalysis = ImageAnalysis.Builder()
.setBackpressureStrategy(ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST)
.build()
.also {
it.setAnalyzer(ContextCompat.getMainExecutor(context), barcodeAnalyzer)
}
preview = Preview.Builder().build().also {
it.surfaceProvider = previewView.surfaceProvider
}
cameraProvider.unbindAll()
cameraProvider.bindToLifecycle(lifecycleOwner, cameraSelector, preview, imageAnalysis)
}, ContextCompat.getMainExecutor(context))
}
)
< /code>
Это мой Imageanalysis.analyzer: < /p>
class BarcodeAnalyzer( /* TODO Callback to the viewModel to hold the state */ ) : ImageAnalysis.Analyzer {
private val scanner = BarcodeScanning.getClient()
private var hasRead = false
@OptIn(ExperimentalGetImage::class)
override fun analyze(imageProxy: ImageProxy) {
val mediaImage = imageProxy.image ?: return
val image = InputImage.fromMediaImage(mediaImage, imageProxy.imageInfo.rotationDegrees)
scanner.process(image)
.addOnSuccessListener { barcodes ->
barcodes.forEach { barcode ->
barcode.rawValue?.let {
hasRead = true
// TODO Handle success QR
} // TODO Handle empty QR
}
}
.addOnFailureListener {
Log.e("QRScanner", "Error scanning QR code: $it")
// TODO Handle qr read failed
}
.addOnCompleteListener { imageProxy.close() }
}
fun resetAnalyzer() {
hasRead = false
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... -practices
Как внедрить камеры и ML Kit (Google) с лучшими практиками ⇐ Android
Форум для тех, кто программирует под Android
-
Anonymous
1754535049
Anonymous
Я три, чтобы реализовать камеру с набор ML для сканирования QR, но я понятия не имею, что делать, мои сомнения связаны с следующими: < /p>
Как допустить ошибку с хорошей ручкой с помощью ViewModel < /li>
Если я хочу сделать ошибку, обрабатывающую к камере: Camera_Initiation_failded. Должен ли я создать пользовательский класс для этого? И если это то, что я должен реализовать ViewModel для ошибок < /li>
Текущий анализатор имеет хорошую реализацию? Достаточно ли это быть в ViewModel или просто передавать обратный вызов. < /Li>
< /ol>
Прошу прощения за мое объяснение.@Composable
fun QrScannerScreen(
onBack: () -> Boolean,
) {
val context = LocalContext.current
val lifecycleOwner = LocalLifecycleOwner.current
var preview by remember { mutableStateOf(null) }
LaunchedEffect(
// TODO Some viewmodel stateFlow
) {
// TODO Handle the actions like Success, Error, Loading
}
AndroidView(
factory = { ctx ->
PreviewView(ctx).apply {
scaleType = PreviewView.ScaleType.FILL_CENTER
}
},
update = { previewView ->
val cameraSelector = CameraSelector.DEFAULT_BACK_CAMERA
val cameraProviderFuture = ProcessCameraProvider.getInstance(context)
cameraProviderFuture.addListener({
val cameraProvider = cameraProviderFuture.get()
val barcodeAnalyzer = BarcodeAnalyzer(
// TODO Maybe make a callback to the viewModel to hold the state
)
val imageAnalysis = ImageAnalysis.Builder()
.setBackpressureStrategy(ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST)
.build()
.also {
it.setAnalyzer(ContextCompat.getMainExecutor(context), barcodeAnalyzer)
}
preview = Preview.Builder().build().also {
it.surfaceProvider = previewView.surfaceProvider
}
cameraProvider.unbindAll()
cameraProvider.bindToLifecycle(lifecycleOwner, cameraSelector, preview, imageAnalysis)
}, ContextCompat.getMainExecutor(context))
}
)
< /code>
Это мой Imageanalysis.analyzer: < /p>
class BarcodeAnalyzer( /* TODO Callback to the viewModel to hold the state */ ) : ImageAnalysis.Analyzer {
private val scanner = BarcodeScanning.getClient()
private var hasRead = false
@OptIn(ExperimentalGetImage::class)
override fun analyze(imageProxy: ImageProxy) {
val mediaImage = imageProxy.image ?: return
val image = InputImage.fromMediaImage(mediaImage, imageProxy.imageInfo.rotationDegrees)
scanner.process(image)
.addOnSuccessListener { barcodes ->
barcodes.forEach { barcode ->
barcode.rawValue?.let {
hasRead = true
// TODO Handle success QR
} // TODO Handle empty QR
}
}
.addOnFailureListener {
Log.e("QRScanner", "Error scanning QR code: $it")
// TODO Handle qr read failed
}
.addOnCompleteListener { imageProxy.close() }
}
fun resetAnalyzer() {
hasRead = false
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79728010/how-to-implement-camerax-and-ml-kit-google-with-best-practices[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия