Обрабатывать намерения после обнаружения штрих-кода с Kotlin - PullRequest
0 голосов
/ 28 сентября 2019

Я сканирую штрих-код и отправляю его другому действию с намерением в receiveDetections (обнаружения :), например, так:

detector.setProcessor(object : Detector.Processor<Barcode> {
        override fun release() {}

        override fun receiveDetections(detections: Detector.Detections<Barcode>?) {

            val barcodes = detections?.detectedItems
            if (barcodes!!.size() > 0) {

                Log.d("Scanned barcode:", barcodes.valueAt(0).displayValue)

                val barcode = barcodes.valueAt(0).displayValue

                detector.release()

                // Send the barcode to ResultsActivity
                val intent = Intent(this@ScannerActivity, ResultActivity::class.java)
                intent.putExtra("barcodeFromScanner", barcode)
                startActivity(intent)

            }
        }
    })

По возвращении в ScannerActivity (кнопка «Назад», нажатая на ResultsActivity) намерениенемедленно выполняется снова, без сканирования.Я предполагаю, что это потому, что есть намерения, «ожидающие» выполнения, так как детектор продолжает обнаруживать штрих-коды даже после того, как он получает первое обнаружение ...?

Я пытался предотвратить это, вызывая release () на детекторе, но, похоже, это не помогло.

Есть ли какие-либо предложения о том, как я могу "убить" детектор при первом сканировании?

1 Ответ

0 голосов
/ 29 сентября 2019

Я решил свою проблему, прекратив работу сканера после намерения ResultActivity.Затем я перезаписываю onBackPressed () в ResultActivity, чтобы снова запустить сканер.Похоже на обходной путь.Я оставляю вопрос открытым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...