Open
Description
it.setAnalyzer(cameraExecutor, LuminosityAnalyzer { luma, image ->
getCardDetails(image,rotation)
})
private fun getCardDetails(imageProxy: ImageProxy, rotation: Int) {
val mediaImage = imageProxy.image
val planes = mediaImage!!.planes
if (planes.size >= 3) {
val image = mediaImage?.let { FirebaseVisionImage.fromMediaImage(it, getRotationConstant(rotation)) }
//val image = mediaImage?.let { FirebaseVisionImage.fromByteArray(dataYUV, metadata) }
val firebaseVisionTextDetector = FirebaseVision.getInstance().onDeviceTextRecognizer
if (image != null) {
firebaseVisionTextDetector.processImage(image)
.addOnSuccessListener {
val words = it.text.split("\n")
Toast.makeText(context, words.get(0), Toast.LENGTH_LONG).show()
}
.addOnFailureListener {
Toast.makeText(context, "Sorry, something went wrong!", Toast.LENGTH_SHORT).show()
}
}
}
}
private fun getRotationConstant(rotation: Int): Int {
return when (rotation) {
90 -> FirebaseVisionImageMetadata.ROTATION_90
180 -> FirebaseVisionImageMetadata.ROTATION_180
270 -> FirebaseVisionImageMetadata.ROTATION_270
else -> FirebaseVisionImageMetadata.ROTATION_0
}
}
// Error
Process: com.demo, PID: 24383
java.nio.BufferUnderflowException
at java.nio.DirectByteBuffer.get(DirectByteBuffer.java:240)
at com.google.android.gms.internal.firebase_ml.zzsc.zza(com.google.firebase:firebase-ml-vision@@24.0.3:42)
at com.google.firebase.ml.vision.common.FirebaseVisionImage.fromMediaImage(com.google.firebase:firebase-ml-vision@@24.0.3:20)
at com.demo.ui.gift_shop.fragment.ScanPayFragment.getCardDetails(ScanPayFragment.kt:529)
at com.demo.ui.gift_shop.fragment.ScanPayFragment.access$getCardDetails(ScanPayFragment.kt:54)
at com.demo.ui.gift_shop.fragment.ScanPayFragment$bindCameraUseCases$1$$special$$inlined$also$lambda$1.invoke(ScanPayFragment.kt:271)
at com.demo.ui.gift_shop.fragment.ScanPayFragment$bindCameraUseCases$1$$special$$inlined$also$lambda$1.invoke(ScanPayFragment.kt:54)
at com.demo.ui.gift_shop.fragment.ScanPayFragment$LuminosityAnalyzer.analyze(ScanPayFragment.kt:383)
at androidx.camera.core.ImageAnalysisAbstractAnalyzer.lambda$analyzeImage$0$ImageAnalysisAbstractAnalyzer(ImageAnalysisAbstractAnalyzer.java:87)
at androidx.camera.core.-$$Lambda$ImageAnalysisAbstractAnalyzer$V6Gtux2-h8spda8vf4wFnIZntYI.run(Unknown Source:8)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:764)