В kotlin QR Code сканировать изображение, которое выбирается из галереи, нормально работает через камеру, но не с изображением галереи? - PullRequest
0 голосов
/ 05 декабря 2018

В 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())
                }
...