В kotlin, это хороший ответ, когда мы снимаем изображение с камеры, но если я хочу отсканировать qr-код с изображения, которое мы выбираем из галереи, он не работает.Я применяю тот же код, с той же логикой, которую я реализовал в коде захвата изображения камерой.Выбор изображения из галереи не работает.Пожалуйста, помогите мне.Заранее спасибо.
код, который я реализую, когда получил imagepath галереи.Он всегда идет к исключительной части, потому что не загружает изображение.
if (requestCode == IDEA_ATTACHMENTS && resultCode == Activity.RESULT_OK) {
val mediaScanIntent = Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE)
mediaScanIntent.data = imagePath
launchMediaScanIntent(mediaScanIntent)
try {
val bitmap = decodeBitmapUri(this, imagePath)
if (detector!!.isOperational && bitmap != null) {
val frame = Frame.Builder().setBitmap(bitmap).build()
val barcodes = detector!!.detect(frame)
for (index in 0 until barcodes.size()) {
val code = barcodes.valueAt(index)
scanResults!!.text = scanResults!!.text.toString() + code.displayValue
System.out.println("Satyendra=scanresult"+scanResults!!.text)
Toast.makeText(this, scanResults!!.text, Toast.LENGTH_LONG).show()
val type = barcodes.valueAt(index).valueFormat
when (type) {
Barcode.CONTACT_INFO -> Log.i(LOG_TAG, code.contactInfo.title)
Barcode.EMAIL -> Log.i(LOG_TAG, code.email.address)
Barcode.ISBN -> Log.i(LOG_TAG, code.rawValue)
Barcode.PHONE -> Log.i(LOG_TAG, code.phone.number)
Barcode.PRODUCT -> Log.i(LOG_TAG, code.rawValue)
Barcode.SMS -> Log.i(LOG_TAG, code.sms.message)
Barcode.TEXT -> Log.i(LOG_TAG, code.rawValue)
Barcode.URL -> Log.i(LOG_TAG, "url: " + code.url.url)
Barcode.WIFI -> Log.i(LOG_TAG, code.wifi.ssid)
Barcode.GEO -> Log.i(LOG_TAG, code.geoPoint.lat.toString() + ":" + code.geoPoint.lng)
Barcode.CALENDAR_EVENT -> Log.i(LOG_TAG, code.calendarEvent.description)
Barcode.DRIVER_LICENSE -> Log.i(LOG_TAG, code.driverLicense.licenseNumber)
else -> Log.i(LOG_TAG, code.rawValue)
}
}
if (barcodes.size() == 0) {
scanResults!!.text = "Scan Failed "
}
} else {
scanResults!!.text = "Could not set up the Barcode detector!"
}
} catch (e: Exception) {
Toast.makeText(this, "Failed to load Image", Toast.LENGTH_SHORT)
.show()
Log.e(LOG_TAG, e.toString())
}