UROVO Android SDK/Kotlin

UROVO ScanManager Kotlin пример и контрольный список проверки

В этом проекте реализации утвержденный UROVO ScanManager API адаптируется к небольшому примеру действия Kotlin. Это пример кода для проверки, а не обещание совместимости с каждой UROVO моделью или прошивкой.

16 минута чтенияРассмотрено: 2026-08-10Разработчики Android интегрируют оборудование для штрихкодирования UROVO
Просмотр функции UROVO DT66 для интеграции Android ScanManager
SDK — образец, основанный на ссылке / не проверенный для каждой целевой конфигурации

Проверенные отправные точки

API базовый уровеньUROVO Android SDK v4.1.0326

Используйте утвержденный пакет и запишите контрольную сумму артефакта.

Декодировать каналТрансляция ScanManager.ACTION_DECODE

Чтение документированных данных, строк, длины и дополнительных типов.

Жизненный циклОткройте и зарегистрируйтесь; остановить, отменить регистрацию и закрыть

Сопоставьте владение с архитектурой приложения.

СовместимостьТочное устройство + ОС + прошивка + SDK + сборка приложения

Наличие API само по себе не является пройденной проверкой.

Правило реализации

Рассматривайте ScanManager как аппаратный ресурс с явным владельцем. Откройте его, выберите предполагаемый режим вывода, зарегистрируйте приемник декодирования, проверьте каждую полезную нагрузку, затем отмените регистрацию и детерминированно закройте. Подтвердите поведение метода на образце производственного намерения.

01

Подготовьте воспроизводимый базовый уровень SDK

Упакуйте одобренный артефакт SDK посредством контролируемого процесса загрузки разработчика. Запишите его версию и SHA-256 вместе со сборкой приложения и записью устройства.

Храните API-интерфейсы поставщиков за адаптером сканера, чтобы бизнес-логику можно было тестировать без аппаратного обеспечения и можно было заменить другую реализацию захвата.

  • Только утвержденный источник SDK
  • Хеш артефакта записан
  • Определена граница адаптера
  • Матрица устройств создана
02

Один раз стать обладателем жизненного цикла сканера

Справочные документы API документируют openScanner, closeScanner, startDecode, stopDecode и функции режима вывода. Решите, будут ли эти вызовы принадлежать действию, службе переднего плана или другому компоненту области приложения.

Избегайте независимого открытия сканера на нескольких экранах. Сделайте остановку и закрытие безопасными для повторения и отображайте ошибочные возвращаемые значения в состоянии диагностики без регистрации полезных данных штрих-кода.

  • Один владелец ресурса
  • Идемпотентная очистка
  • Возвращаемые значения наблюдаются
  • Нет полезной нагрузки в обычных логах
03

Проверка полезной нагрузки широковещательной передачи

Успешная трансляция декодирования может включать в себя необработанные данные, декодированную строку, длину и тип штрих-кода. Прежде чем доставлять событие домена, проверьте действие, допустимость значений NULL и длину.

Выберите одно авторитетное представление. Если кодировка имеет значение, сохраняйте необработанные байты и декодируйте их с использованием явной кодировки вместо того, чтобы предполагать, что каждый штрих-код представляет собой простой ASCII.

  • Действие точно соответствует
  • Длина соответствует полезной нагрузке
  • Политика кодирования документирована
  • Дублирующая защита событий
04

Переход от демонстрации к доказательствам

Успех компиляции подтверждает только совместимость исходного кода. Запустите приложение на каждой предполагаемой модели, ОС и прошивке с репрезентативными метками и сценариями жизненного цикла.

Запишите настройки сканера и режим вывода после настройки. Регрессионный тест после изменения прошивки, SDK, приложения или политики MDM.

  • Репрезентативный корпус сканирования
  • Циклы сна и возобновления
  • Случаи быстрого и длинного кода
  • Версионная тестовая запись
Матрица решений

Карта состояний жизненного цикла ScanManager

Обеспечьте соответствие вызовов ресурсов наблюдаемому состоянию приложения.

ГосударствоТребуемое действиеРеакция на отказ
НачалоСоздайте ScanManager и откройте сканер.Блокировать захват и показывать диагностическое состояние
ГотовоУстановите режим вывода и зарегистрируйте приемникПрочтите или сообщите об ошибке конфигурации.
ЗахватНачать декодирование или принять триггерные событияТайм-аут, остановка и разрешение контролируемой повторной попытки
ПриостановленоОстановить декодирование и отменить регистрацию, как задумано.Запретить доставку в неактивный рабочий процесс
РазрушенЗакройте сканер один разЗапишите результат очистки без конфиденциальных данных
SDK

Пример Kotlin с минимальным жизненным циклом

Проверьте константы режима вывода, флаги получателя Android и владение жизненным циклом на соответствие точному SDK, целевому API и архитектуре приложения.

UrovoScannerActivity.kt
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.device.ScanManager
import androidx.appcompat.app.AppCompatActivity

class UrovoScannerActivity : AppCompatActivity() {
    private val scanner = ScanManager()
    private var receiverRegistered = false

    private val decodeReceiver = object : BroadcastReceiver() {
        override fun onReceive(context: Context, intent: Intent) {
            if (intent.action != ScanManager.ACTION_DECODE) return
            val raw = intent.getByteArrayExtra(ScanManager.DECODE_DATA_TAG) ?: return
            val declaredLength = intent.getIntExtra(ScanManager.BARCODE_LENGTH_TAG, raw.size)
            val type = intent.getByteExtra(ScanManager.BARCODE_TYPE_TAG, 0)
            val value = intent.getStringExtra(ScanManager.BARCODE_STRING_TAG)
                ?: raw.copyOf(declaredLength.coerceIn(0, raw.size)).toString(Charsets.UTF_8)
            onValidatedScan(value, type)
        }
    }

    override fun onStart() {
        super.onStart()
        check(scanner.openScanner()) { "Scanner could not be opened" }
        // Confirm the broadcast-output constant in the SDK version you ship.
        check(scanner.switchOutputMode(0)) { "Output mode could not be set" }
        registerReceiver(decodeReceiver, IntentFilter(ScanManager.ACTION_DECODE))
        receiverRegistered = true
    }

    override fun onStop() {
        scanner.stopDecode()
        if (receiverRegistered) unregisterReceiver(decodeReceiver)
        receiverRegistered = false
        scanner.closeScanner()
        super.onStop()
    }

    private fun onValidatedScan(value: String, type: Byte) {
        // Route a sanitized domain event; do not log sensitive barcode values.
    }
}
Контрольный список проекта

Контрольный список проверки ScanManager

Прикрепите эту запись к утвержденному базовому состоянию приложения и устройства.

  1. 01

    Версия SDK и SHA-256 записаны

  2. 02

    Устройство SKU, записанная ОС и прошивка

  3. 03

    Сканер неоднократно открывается и закрывается

  4. 04

    Режим вывода прочитан или подтвержден

  5. 05

    Жизненный цикл получателя соответствует активному пользовательскому интерфейсу

  6. 06

    Проверены дополнительные параметры необработанных данных, строк, длины и типа.

  7. 07

    Все необходимые символы проверены

  8. 08

    Проверено длительное, поврежденное и быстрое сканирование

  9. 09

    Спящий режим, перезагрузка и режим киоска MDM протестированы.

  10. 10

    Конфиденциальные данные штрих-кода не сохраняются

FAQ

Часто задаваемые вопросы

Что означает переключательOutputMode(0)?

В справочном документе API описано переключение режима вывода, но константы и поведение необходимо проверять в конкретной версии SDK и встроенном ПО устройства. Не копируйте константу выборки в производство без проверки.

Должен ли сканер закрываться в режиме onPause или onStop?

Выберите владение жизненным циклом в зависимости от архитектуры приложения и возможности продолжения сканирования при частичном скрытии. Важным требованием является один владелец, детерминированная очистка и проверенное поведение.

Можно ли использовать этот образец на каждом устройстве UROVO ?

Нет. Это схема проверки, основанная на ScanManager v4.1.0326. Скомпилируйте и запустите его на каждой предполагаемой модели, ОС и прошивке перед выпуском.

Доказательства и ограничения

SDK — образец, основанный на ссылке / не проверенный для каждой целевой конфигурации

Код носит иллюстративный характер и намеренно вызывает константы, специфичные для версии, и политику приемника Android для проверки.

Рассмотрено: 2026-08-10

Исходный регистр
  • UROVO Android SDK v4.1.0326 Ссылка на ScanManager API
  • UROVO Пример проекта ScanManager в утвержденном экспорте SDK
  • Android документация по жизненному циклу приложения и приемника вещания

Превратите это руководство в проектное решение

Запросить проверку приложения

Поделитесь моделью, прошивкой, базовой версией SDK и рабочим процессом сканирования. RuggedLayer будет охватывать план проверки воспроизводимого устройства.

Запросить проверку приложения