setBarcodeFormats (Barcode.QR_CODE) не работает - PullRequest
1 голос
/ 11 апреля 2019

Я использую Google Play Vision API для определения кодов QR.Меня не интересуют другие форматы, поэтому я пытаюсь использовать этот вызов API для ускорения обнаружения.Он работает нормально, если я называю его setBarcodeFormats(Barcode.ALL_FORMATS), он обнаруживает коды qr в формате 256 (QR_CODE), но если я инициализирую его как setBarcodeFormats(Barcode.QR_CODE), он ничего не обнаруживает.Вот некоторые фрагменты кода:

override fun onCreate(savedInstanceState: Bundle?) {
    ...
    barcodeDetector = BarcodeDetector.Builder(applicationContext).setBarcodeFormats(Barcode.ALL_FORMATS).build()
    ...


private inner class ImageReaderOnImageAvailableListenerImpl : ImageReader.OnImageAvailableListener {
    override fun onImageAvailable(reader: ImageReader) {
        val image = reader.acquireNextImage()
        val buffer = image.planes[0].buffer;
        val bitmap: Bitmap? = if (buffer.hasArray()) {
            BitmapFactory.decodeByteArray(buffer.array(), buffer.arrayOffset(), buffer.remaining(), null);
        } else {
            val byteArray = ByteArray(buffer.remaining())
            buffer.get(byteArray)
            BitmapFactory.decodeByteArray(byteArray, 0, byteArray.size, null);
        }

        val barcodes = barcodeDetector.detect(Frame.Builder().setBitmap(bitmap).build())
        image.close()
        this@QrCodeCaptureActivity.imageView.setImageBitmap(bitmap)

        if (barcodes.size() > 0) {
            for (index in 0 until barcodes.size()) {
                val barcode = barcodes.valueAt(index)
                logd("barcode $index: ${barcode.format} ${barcode.valueFormat} ${barcode.rawValue}")
            }
        } else {
            logd("no barcodes (${image.width}x${image.height})")
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...